1 19 20 package org.lucane.client.util; 21 22 import java.awt.event.KeyListener ; 23 import java.awt.event.WindowListener ; 24 import java.beans.PropertyChangeEvent ; 25 import java.util.ArrayList ; 26 import java.util.HashMap ; 27 import java.util.Iterator ; 28 29 import javax.swing.JFrame ; 30 import javax.swing.SwingUtilities ; 31 32 import org.lucane.client.Plugin; 33 import org.lucane.client.widgets.ManagedWindow; 34 35 public class DefaultWindowManager implements WindowManager 36 { 37 private HashMap windows = new HashMap (); 38 39 private void init(ManagedWindow window) 40 { 41 JFrame f = new JFrame (); 42 windows.put(window, f); 43 f.addWindowListener(new ManagedWindowListener(window)); 44 45 f.setName(window.getName()); 46 f.setContentPane(window.getContentPane()); 47 f.setIconImage(window.getIconImage()); 48 f.setJMenuBar(window.getJMenuBar()); 49 f.setTitle(window.getTitle()); 50 f.setResizable(window.isResizeable()); 51 52 if(window.getPreferredSize() == null) 53 f.pack(); 54 else 55 f.setSize(window.getPreferredSize()); 56 57 if(!window.discardWidgetState()) 58 { 59 WidgetState.restore(window.getOwner().getLocalConfig(), f); 60 Iterator widgets = window.getManagedWidgets(); 61 while(widgets.hasNext()) 62 WidgetState.restore(window.getOwner().getLocalConfig(), widgets.next()); 63 } 64 65 Iterator listeners = window.getWindowListeners(); 67 while(listeners.hasNext()) 68 f.addWindowListener((WindowListener )listeners.next()); 69 70 listeners = window.getKeyListeners(); 72 while(listeners.hasNext()) 73 f.addKeyListener((KeyListener )listeners.next()); 74 } 75 76 public void show(ManagedWindow window) 77 { 78 if(!windows.containsKey(window)) 79 init(window); 80 81 final JFrame f = (JFrame )windows.get(window); 82 SwingUtilities.invokeLater(new Runnable () { 83 public void run() { 84 f.show(); 85 } 86 }); 87 } 88 89 public void hide(ManagedWindow window) 90 { 91 final JFrame f = (JFrame )windows.get(window); 92 SwingUtilities.invokeLater(new Runnable () { 93 public void run() { 94 f.hide(); 95 } 96 }); 97 } 98 99 public boolean isVisible(ManagedWindow window) 100 { 101 JFrame f = (JFrame )windows.get(window); 102 return f.isVisible(); 103 } 104 105 public void dispose(ManagedWindow window) 106 { 107 JFrame f = (JFrame )windows.get(window); 108 109 if(!window.discardWidgetState()) 110 { 111 WidgetState.save(window.getOwner().getLocalConfig(), f); 112 Iterator widgets = window.getManagedWidgets(); 113 while(widgets.hasNext()) 114 WidgetState.save(window.getOwner().getLocalConfig(), widgets.next()); 115 } 116 117 windows.remove(window); 118 f.dispose(); 119 120 if(window.mustExitPluginOnClose()) 121 window.getOwner().exit(); 122 } 123 124 public Iterator getAllWindows() 125 { 126 return windows.keySet().iterator(); 127 } 128 129 public Iterator getWindowsFor(Plugin plugin) 130 { 131 ArrayList list = new ArrayList (); 132 Iterator windows = getAllWindows(); 133 while(windows.hasNext()) 134 { 135 ManagedWindow win = (ManagedWindow)windows.next(); 136 if(win.getOwner() == plugin) 137 list.add(win); 138 } 139 140 return list.iterator(); 141 } 142 143 public void propertyChange(PropertyChangeEvent pce) 144 { 145 } 147 } 148 | Popular Tags |