/[schmitzm]/trunk/src/skrueger/swing/DialogManager.java
ViewVC logotype

Diff of /trunk/src/skrueger/swing/DialogManager.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

branches/1.0-gt2-2.6/src/skrueger/swing/DialogManager.java revision 422 by alfonx, Fri Oct 2 00:47:48 2009 UTC trunk/src/skrueger/swing/DialogManager.java revision 960 by alfonx, Tue Aug 10 12:12:58 2010 UTC
# Line 11  import javax.swing.JDialog; Line 11  import javax.swing.JDialog;
11    
12  import org.apache.log4j.Logger;  import org.apache.log4j.Logger;
13    
14  public abstract class DialogManager<KEY, DIALOG extends JDialog> {  public abstract class DialogManager<KEY, DIALOG extends AtlasDialog> {
15          final static private Logger LOGGER = Logger.getLogger(DialogManager.class);          final static private Logger LOGGER = Logger.getLogger(DialogManager.class);
16    
17          public abstract class FactoryInterface {          public abstract class FactoryInterface {
18    
19                  public abstract DIALOG create();                  public abstract DIALOG create();
20    
21                    /** May be overridden to add Listeners **/
22                    public void afterCreation(DIALOG newInstance) {
23                    };
24    
25                    /** May be overridden to remove Listeners added earlier **/
26                    public void beforeDispose(DIALOG newInstance) {
27                    };
28    
29          }          }
30    
31          protected HashMap<KEY, DIALOG> dialogCache = new HashMap<KEY, DIALOG>();          protected HashMap<KEY, DIALOG> dialogCache = new HashMap<KEY, DIALOG>();
# Line 44  public abstract class DialogManager<KEY, Line 52  public abstract class DialogManager<KEY,
52                  return dialog;                  return dialog;
53          }          }
54    
55            /**
56             * Implementing this should have a <br/>
57             * <code>try { ... return ... } catch (Exception e) {
58                                    ExceptionDialog.show(owner, e);
59                                    return null;
60                            } </code> block.
61             *
62             * @param key
63             * @param owner
64             * @param constArgs
65             * @return a cached instance or creates a new instance. Instances are always
66             *         returned visible and toFront.
67             */
68          public abstract DIALOG getInstanceFor(final KEY key, final Component owner,          public abstract DIALOG getInstanceFor(final KEY key, final Component owner,
69                          final Object... constArgs);                          final Object... constArgs);
70    
# Line 72  public abstract class DialogManager<KEY, Line 93  public abstract class DialogManager<KEY,
93                  }                  }
94          }          }
95    
96          public boolean disposeInstanceFor(KEY chartId) {          public boolean disposeInstanceFor(KEY key) {
97                  synchronized (dialogCache) {                  synchronized (dialogCache) {
98    
99                          final DIALOG dialog = dialogCache.get(chartId);                          final DIALOG dialog = dialogCache.get(key);
100                          if (dialog != null) {                          if (dialog != null) {
101                                  dialog.dispose();                                  dialog.dispose();
102                                  dialogCache.remove(chartId);                                  dialogCache.remove(key);
103                                  return true;                                  return true;
104                          }                          }
105                          return false;                          return false;
# Line 96  public abstract class DialogManager<KEY, Line 117  public abstract class DialogManager<KEY,
117           * @return Always a visible and inFront instance of DIALOG for the given           * @return Always a visible and inFront instance of DIALOG for the given
118           *         key.           *         key.
119           */           */
120          public DIALOG getInstanceFor(final KEY key, FactoryInterface factory) {          public DIALOG getInstanceFor(final KEY key, final FactoryInterface factory) {
121                  DIALOG dialog;                  final DIALOG dialog;
122                  if (isVisibleFor(key)) {                  if (isVisibleFor(key)) {
123                          dialog = dialogCache.get(key);                          dialog = dialogCache.get(key);
124                  } else {                  } else {
125    
126                          dialog = factory.create();                          dialog = factory.create();
   
127                          dialogCache.put(key, dialog);                          dialogCache.put(key, dialog);
128                            dialog.setVisible(true);
129                            dialog.toFront();
130    
131                          dialog.addWindowListener(new WindowAdapter() {                          dialog.addWindowListener(new WindowAdapter() {
132                                  @Override                                  @Override
133                                  public void windowClosed(final WindowEvent e) {                                  public void windowClosed(final WindowEvent e) {
134                                          disposeInstanceFor(key);                                          dialogCache.remove(key);
135                                            factory.beforeDispose(dialog);
136                                    }
137    
138                                    @Override
139                                    public void windowClosing(final WindowEvent e) {
140                                  }                                  }
141                          });                          });
142    
143                            factory.afterCreation(dialog);
144                  }                  }
145    
146                  return dialog;                  return dialog;
147          }          }
148    
# Line 144  public abstract class DialogManager<KEY, Line 174  public abstract class DialogManager<KEY,
174                  return dialogCache.values();                  return dialogCache.values();
175          }          }
176    
   
177  }  }

Legend:
Removed from v.422  
changed lines
  Added in v.960

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26