Files
i2p.itoopie/src/net/i2p/itoopie/gui/WindowHandler.java
zzz c3ad937523 Stop some of the threads on frame destroy
Kill the main frame on plugin exit
2022-01-12 07:25:07 -05:00

78 lines
1.5 KiB
Java

package net.i2p.itoopie.gui;
import java.util.HashSet;
import javax.swing.JFrame;
import net.i2p.itoopie.configuration.ConfigurationManager;
public class WindowHandler {
private final HashSet<JFrame> _frames = new HashSet<JFrame>();
private JFrame mainFrame;
private boolean areFramesShown;
private final ConfigurationManager _conf;
public WindowHandler(ConfigurationManager conf) {
_conf = conf;
}
public void register(JFrame frame){
_frames.add(frame);
}
public void registerMain(JFrame frame){
mainFrame = frame;
}
public void destroyMain() {
if (mainFrame != null) {
mainFrame.dispose();
_frames.remove(mainFrame);
mainFrame = null;
}
}
public void deRegister(JFrame frame){
// don't remove the main frame when
// the user clicks on the X, so we have the updated
// graph when the user clicks on the icon again
if (frame == mainFrame)
hideFrames();
else
_frames.remove(frame);
}
public void hideFrames(){
for (JFrame frame : _frames){
frame.setVisible(false);
}
if (mainFrame != null){
mainFrame.setVisible(false);
}
areFramesShown = false;
}
public void showFrames(){
for (JFrame frame : _frames){
frame.setVisible(true);
}
if (mainFrame != null){
mainFrame.setVisible(true);
}
areFramesShown = true;
}
public void toggleFrames(){
if (_frames.isEmpty()){
new Main(this, _conf);
} else {
if (areFramesShown){
hideFrames();
} else {
showFrames();
}
}
}
}