2002/08/16 23:39:03
[org.ibex.core.git] / src / org / xwt / plat / Java14.java
1 // Copyright 2002 Adam Megacz, see the COPYING file for licensing [GPL]
2 package org.xwt.plat;
3
4 import java.awt.*;
5 import java.awt.event.*;
6 import java.awt.image.*;
7 import java.awt.datatransfer.*;
8 import java.net.*;
9 import java.io.*;
10 import java.util.*;
11 import org.xwt.util.*;
12 import org.xwt.*;
13
14 /** Platform class for most reasonable Java1.4+ JVMs */
15 public class Java14 extends Java12 {
16
17     protected String getDescriptiveName() { return "Java 1.4+ JVM"; }
18     protected boolean _supressDirtyOnResize() { return false; }
19
20     public Java14() {
21         java.awt.Toolkit.getDefaultToolkit().setDynamicLayout(true);
22     }
23
24     protected Surface _createSurface(final Box root, final boolean framed) {
25         return (Surface)java.security.AccessController.doPrivileged(new java.security.PrivilegedAction() {
26                 public Object run() { return new Java14Surface(root, framed); }
27             });
28     }
29
30     protected static class Java14Surface extends Java12Surface implements WindowStateListener {
31         public Java14Surface(Box root, boolean framed) {
32             super(root, true);
33             // JDK1.4 doesn't like java.lang.Window's...
34             if (!framed) ((Frame)window).setUndecorated(true);
35             window.addWindowStateListener(this);
36             window.setVisible(true);
37         }
38
39         protected void makeVisible() { }
40         
41         protected void _setMaximized(boolean m) {
42             if (frame == null) {
43                 if (Log.on) Log.log(this, "JDK 1.4 can only maximize frames, not windows");
44                 return;
45             }
46             frame.setExtendedState(m ? Frame.MAXIMIZED_BOTH : (minimized ? Frame.ICONIFIED : Frame.NORMAL));
47         }
48         protected void _setMinimized(boolean m) {
49             if (frame == null) {
50                 if (Log.on) Log.log(this, "JDK 1.4 can only minimize frames, not windows");
51                 return;
52             }
53             frame.setExtendedState(m ? Frame.ICONIFIED : (maximized ? Frame.MAXIMIZED_BOTH : Frame.NORMAL));
54         }
55         public void windowStateChanged(WindowEvent e) {
56             if (e.getOldState() != e.getNewState()) {
57                 if ((e.getNewState() & Frame.MAXIMIZED_BOTH) != 0) Maximized(true);
58                 else if (((e.getOldState() & Frame.MAXIMIZED_BOTH) != 0) && (e.getNewState() & Frame.MAXIMIZED_BOTH) == 0)
59                     Maximized(false);
60             }
61         }
62     }
63         
64 }