OSDN Git Service

2004-05-27 Michael Koch <konqueror@gmx.de>
[pf3gnuchains/gcc-fork.git] / libjava / javax / swing / JWindow.java
1 /* JWindow.java --
2    Copyright (C) 2002, 2003, 2004  Free Software Foundation, Inc.
3
4 This file is part of GNU Classpath.
5
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING.  If not, write to the
18 Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19 02111-1307 USA.
20
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library.  Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
25
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module.  An independent module is a module which is not derived from
33 or based on this library.  If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so.  If you do not wish to do so, delete this
36 exception statement from your version. */
37
38
39 package javax.swing;
40
41 import java.awt.BorderLayout;
42 import java.awt.Component;
43 import java.awt.Container;
44 import java.awt.Dimension;
45 import java.awt.Frame;
46 import java.awt.Graphics;
47 import java.awt.LayoutManager;
48 import java.awt.Window;
49 import java.awt.event.KeyEvent;
50 import java.awt.event.WindowEvent;
51
52 import javax.accessibility.Accessible;
53 import javax.accessibility.AccessibleContext;
54
55 /**
56  * Unlike JComponent derivatives, JWindow inherits from
57  * java.awt.Window. But also lets a look-and-feel component to its work.
58  *
59  * @author Ronald Veldema (rveldema@cs.vu.nl)
60  */
61 public class JWindow extends Window implements Accessible, RootPaneContainer
62 {
63     public final static int HIDE_ON_CLOSE        = 0;
64     public final static int EXIT_ON_CLOSE        = 1;
65     public final static int DISPOSE_ON_CLOSE     = 2;
66     public final static int DO_NOTHING_ON_CLOSE  = 3;
67
68     protected  AccessibleContext accessibleContext;
69
70     private int close_action = EXIT_ON_CLOSE;    
71     
72     
73     /***************************************************
74      *
75      *
76      *  constructors
77      *
78      *
79      *************/
80
81     public JWindow()
82     {      
83         super(null); // FIXME: This throws an exception.
84     }
85
86     // huuu ?
87     public JWindow(Frame f)
88     {
89         super(f);
90     }
91     
92     /***************************************************
93      *
94      *
95      *  methods, this part is shared with JDialog, JFrame
96      *
97      *
98      *************/
99
100   
101     private boolean checking;
102     protected  JRootPane         rootPane;
103
104     
105     protected  void frameInit()
106     {
107       super.setLayout(new BorderLayout(1, 1));
108       getRootPane(); // will do set/create
109     }
110   
111   public Dimension getPreferredSize()
112   {
113     Dimension d = super.getPreferredSize();
114     return d;
115   }
116
117     JMenuBar getJMenuBar()
118     {    return getRootPane().getJMenuBar();   }
119     
120     void setJMenuBar(JMenuBar menubar)
121     {    getRootPane().setJMenuBar(menubar); }
122     
123
124   public  void setLayout(LayoutManager manager)
125   {    super.setLayout(manager);  }
126
127     public void setLayeredPane(JLayeredPane layeredPane) 
128     {   getRootPane().setLayeredPane(layeredPane);   }
129   
130     public JLayeredPane getLayeredPane()
131     {   return getRootPane().getLayeredPane();     }
132   
133     public JRootPane getRootPane()
134     {
135         if (rootPane == null)
136             setRootPane(createRootPane());
137         return rootPane;          
138     }
139
140     public void setRootPane(JRootPane root)
141     {
142         if (rootPane != null)
143             remove(rootPane);
144             
145         rootPane = root; 
146         add(rootPane, BorderLayout.CENTER);
147     }
148
149     public JRootPane createRootPane()
150     {   return new JRootPane();    }
151
152     public Container getContentPane()
153     {    return getRootPane().getContentPane();     }
154
155     public void setContentPane(Container contentPane)
156     {    getRootPane().setContentPane(contentPane);    }
157   
158     public Component getGlassPane()
159     {    return getRootPane().getGlassPane();   }
160   
161     public void setGlassPane(Component glassPane)
162     {   getRootPane().setGlassPane(glassPane);   }
163
164     
165     protected  void addImpl(Component comp, Object constraints, int index)
166     {   super.addImpl(comp, constraints, index);    }
167
168
169     public void remove(Component comp)
170     {   getContentPane().remove(comp);  }
171   
172     protected  boolean isRootPaneCheckingEnabled()
173     {    return checking;        }
174
175
176     protected  void setRootPaneCheckingEnabled(boolean enabled)
177     { checking = enabled;  }
178
179
180     public void update(Graphics g)
181     {   paint(g);  }
182
183     protected  void processKeyEvent(KeyEvent e)
184     {   super.processKeyEvent(e);    }
185
186     /////////////////////////////////////////////////////////////////////////////////
187   
188     public AccessibleContext getAccessibleContext()
189     {    return null;  }
190   
191     int getDefaultCloseOperation()
192     {    return close_action;   }    
193     
194     protected  String paramString()
195     {   return "JWindow";     }
196
197
198     protected  void processWindowEvent(WindowEvent e)
199     {
200         //      System.out.println("PROCESS_WIN_EV-1: " + e);
201         super.processWindowEvent(e); 
202         //      System.out.println("PROCESS_WIN_EV-2: " + e);
203         switch (e.getID())
204             {
205             case WindowEvent.WINDOW_CLOSING:
206                 {
207                     switch(close_action)
208                         {
209                         case EXIT_ON_CLOSE:
210                             {
211                                 System.out.println("user requested exit on close");
212                                 System.exit(1);
213                                 break;
214                             }
215                         case DISPOSE_ON_CLOSE:
216                             {
217                                 System.out.println("user requested dispose on close");
218                                 dispose();
219                                 break;
220                             }
221                         case HIDE_ON_CLOSE:
222                             {
223                                 setVisible(false);
224                                 break;
225                             }
226                         case DO_NOTHING_ON_CLOSE:
227                             break;
228                         }
229                     break;
230                 }
231                 
232             case WindowEvent.WINDOW_CLOSED:
233             case WindowEvent.WINDOW_OPENED:
234             case WindowEvent.WINDOW_ICONIFIED:
235             case WindowEvent.WINDOW_DEICONIFIED:
236             case WindowEvent.WINDOW_ACTIVATED:
237             case WindowEvent.WINDOW_DEACTIVATED:
238                 break;
239             }
240     }   
241  
242
243     void setDefaultCloseOperation(int operation)
244     {  close_action = operation;   }
245
246 }