KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > lucane > client > util > DefaultWindowManager


1 /*
2  * Lucane - a collaborative platform
3  * Copyright (C) 2004 Vincent Fiack <vfiack@mail15.com>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  */

19
20 package org.lucane.client.util;
21
22 import java.awt.event.KeyListener JavaDoc;
23 import java.awt.event.WindowListener JavaDoc;
24 import java.beans.PropertyChangeEvent JavaDoc;
25 import java.util.ArrayList JavaDoc;
26 import java.util.HashMap JavaDoc;
27 import java.util.Iterator JavaDoc;
28
29 import javax.swing.JFrame JavaDoc;
30 import javax.swing.SwingUtilities JavaDoc;
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 JavaDoc windows = new HashMap JavaDoc();
38     
39     private void init(ManagedWindow window)
40     {
41         JFrame JavaDoc f = new JFrame JavaDoc();
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 JavaDoc widgets = window.getManagedWidgets();
61             while(widgets.hasNext())
62                 WidgetState.restore(window.getOwner().getLocalConfig(), widgets.next());
63         }
64         
65         //window listener
66
Iterator JavaDoc listeners = window.getWindowListeners();
67         while(listeners.hasNext())
68             f.addWindowListener((WindowListener JavaDoc)listeners.next());
69         
70         //key listener
71
listeners = window.getKeyListeners();
72         while(listeners.hasNext())
73             f.addKeyListener((KeyListener JavaDoc)listeners.next());
74     }
75     
76     public void show(ManagedWindow window)
77     {
78         if(!windows.containsKey(window))
79             init(window);
80         
81         final JFrame JavaDoc f = (JFrame JavaDoc)windows.get(window);
82         SwingUtilities.invokeLater(new Runnable JavaDoc() {
83             public void run() {
84                 f.show();
85             }
86         });
87     }
88     
89     public void hide(ManagedWindow window)
90     {
91         final JFrame JavaDoc f = (JFrame JavaDoc)windows.get(window);
92         SwingUtilities.invokeLater(new Runnable JavaDoc() {
93             public void run() {
94                 f.hide();
95             }
96         });
97     }
98     
99     public boolean isVisible(ManagedWindow window)
100     {
101         JFrame JavaDoc f = (JFrame JavaDoc)windows.get(window);
102         return f.isVisible();
103     }
104     
105     public void dispose(ManagedWindow window)
106     {
107         JFrame JavaDoc f = (JFrame JavaDoc)windows.get(window);
108         
109         if(!window.discardWidgetState())
110         {
111             WidgetState.save(window.getOwner().getLocalConfig(), f);
112             Iterator JavaDoc 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 JavaDoc getAllWindows()
125     {
126         return windows.keySet().iterator();
127     }
128     
129     public Iterator JavaDoc getWindowsFor(Plugin plugin)
130     {
131         ArrayList JavaDoc list = new ArrayList JavaDoc();
132         Iterator JavaDoc 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 JavaDoc pce)
144     {
145         //TODO handle these events
146
}
147 }
148
Popular Tags