From 915fba3645ebe16fd404f7dfae000b3b2d648819 Mon Sep 17 00:00:00 2001 From: Marcel Kronfeld Date: Wed, 22 Sep 2010 13:42:38 +0000 Subject: [PATCH] Allow setting "close all frames on client close" --- src/eva2/client/EvAClient.java | 1 + src/eva2/gui/JEFrame.java | 13 ++++++++++++- src/eva2/gui/JEFrameRegister.java | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/eva2/client/EvAClient.java b/src/eva2/client/EvAClient.java index 388d2e0d..9dc9b68d 100644 --- a/src/eva2/client/EvAClient.java +++ b/src/eva2/client/EvAClient.java @@ -367,6 +367,7 @@ public class EvAClient implements RemoteStateListener, Serializable { if (withGUI ) { m_Frame = new JEFrame(EvAInfo.productName + " workbench"); + m_Frame.setCloseAllOnClosed(true); m_Frame.setName(this.getClass().getSimpleName()); // the name is set to recognize the client window BasicResourceLoader loader = BasicResourceLoader.instance(); diff --git a/src/eva2/gui/JEFrame.java b/src/eva2/gui/JEFrame.java index 1836d545..8d545db2 100644 --- a/src/eva2/gui/JEFrame.java +++ b/src/eva2/gui/JEFrame.java @@ -18,7 +18,8 @@ import java.awt.event.*; import java.awt.*; public class JEFrame extends JFrame { - + private boolean closeAllOnClose=false; + public JEFrame() { super(); init(); @@ -29,6 +30,15 @@ public class JEFrame extends JFrame { init(); } + /** + * Set to true if all registered JEFrames should be closed if this frame is closed. + * + * @param c + */ + public void setCloseAllOnClosed(boolean c) { + closeAllOnClose=c; + } + @Override public void addWindowListener(WindowListener l) { super.addWindowListener(l); @@ -42,6 +52,7 @@ public class JEFrame extends JFrame { public void windowClosed(WindowEvent e) { super.windowClosed(e); JEFrameRegister.unregister((JEFrame) e.getWindow()); + if (closeAllOnClose) JEFrameRegister.closeAll(); // ((JFrame) e.getWindow()).dispose(); } @Override diff --git a/src/eva2/gui/JEFrameRegister.java b/src/eva2/gui/JEFrameRegister.java index 70b3c3a4..5a3be06c 100644 --- a/src/eva2/gui/JEFrameRegister.java +++ b/src/eva2/gui/JEFrameRegister.java @@ -68,10 +68,24 @@ public class JEFrameRegister { return prefixes.toArray(new String[prefixes.size()]); } + /** + * Close (dispose) all frames whose title starts with a given prefix. + * + * @param prefix + */ public static void closeAllByPrefix(String prefix) { for (int i=0; i