/[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 435 by alfonx, Sun Oct 4 23:33:30 2009 UTC trunk/src/skrueger/swing/DialogManager.java revision 1041 by alfonx, Wed Sep 22 10:56:20 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 **/                  /** May be overridden to add Listeners **/
22                  public void appendListeners(DIALOG newInstance){};                  public void afterCreation(DIALOG newInstance) {
23                    };
24    
25                  /** May be overridden to remove Listeners added earlier **/                  /** May be overridden to remove Listeners added earlier **/
26                  public void removeListeners(DIALOG newInstance){};                  public void beforeDispose(DIALOG newInstance) {
27                    };
28    
29          }          }
30    
# Line 43  public abstract class DialogManager<KEY, Line 45  public abstract class DialogManager<KEY,
45           * @return           * @return
46           */           */
47          protected DIALOG bringup(DIALOG dialog) {          protected DIALOG bringup(DIALOG dialog) {
48                    if (dialog == null){
49                            // The dialog creation may have been cancelled
50                            return null;
51                    }
52                  if (!dialog.isVisible())                  if (!dialog.isVisible())
53                          dialog.setVisible(true);                          dialog.setVisible(true);
54                  dialog.toFront();                  dialog.toFront();
# Line 50  public abstract class DialogManager<KEY, Line 56  public abstract class DialogManager<KEY,
56                  return dialog;                  return dialog;
57          }          }
58    
59            /**
60             * Implementing this should have a <br/>
61             * <code>try { ... return ... } catch (Exception e) {
62                                    ExceptionDialog.show(owner, e);
63                                    return null;
64                            } </code> block.
65             *
66             * @param key
67             * @param owner
68             * @param constArgs
69             * @return a cached instance or creates a new instance. Instances are always
70             *         returned visible and toFront.
71             */
72          public abstract DIALOG getInstanceFor(final KEY key, final Component owner,          public abstract DIALOG getInstanceFor(final KEY key, final Component owner,
73                          final Object... constArgs);                          final Object... constArgs);
74    
# Line 78  public abstract class DialogManager<KEY, Line 97  public abstract class DialogManager<KEY,
97                  }                  }
98          }          }
99    
100          public boolean disposeInstanceFor(KEY chartId) {          public boolean disposeInstanceFor(KEY key) {
101                  synchronized (dialogCache) {                  synchronized (dialogCache) {
102    
103                          final DIALOG dialog = dialogCache.get(chartId);                          final DIALOG dialog = dialogCache.get(key);
104                          if (dialog != null) {                          if (dialog != null) {
105                                  dialog.dispose();                                  dialog.dispose();
106                                  dialogCache.remove(chartId);                                  dialogCache.remove(key);
107                                  return true;                                  return true;
108                          }                          }
109                          return false;                          return false;
# Line 109  public abstract class DialogManager<KEY, Line 128  public abstract class DialogManager<KEY,
128                  } else {                  } else {
129    
130                          dialog = factory.create();                          dialog = factory.create();
131                            if (dialog.isDisposed) {
132                                    // The creation of the Dialog may have been cancelled for some reason
133                                    return null;
134                            }
135                          dialogCache.put(key, dialog);                          dialogCache.put(key, dialog);
136                            dialog.setVisible(true);
137                            dialog.toFront();
138    
139                          dialog.addWindowListener(new WindowAdapter() {                          dialog.addWindowListener(new WindowAdapter() {
140                                  @Override                                  @Override
141                                  public void windowClosed(final WindowEvent e) {                                  public void windowClosed(final WindowEvent e) {
142                                          factory.removeListeners(dialog);                                          dialogCache.remove(key);
143                                          disposeInstanceFor(key);                                          factory.beforeDispose(dialog);
144                                    }
145    
146                                    @Override
147                                    public void windowClosing(final WindowEvent e) {
148                                  }                                  }
149                          });                          });
150                            
151                          factory.appendListeners(dialog);                          factory.afterCreation(dialog);
152                  }                  }
153                    
                 dialog.setVisible(true);  
                 dialog.toFront();  
                   
154                  return dialog;                  return dialog;
155          }          }
156    
# Line 157  public abstract class DialogManager<KEY, Line 182  public abstract class DialogManager<KEY,
182                  return dialogCache.values();                  return dialogCache.values();
183          }          }
184    
   
185  }  }

Legend:
Removed from v.435  
changed lines
  Added in v.1041

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26