From b996061366563d9caec5e0b5513316d92873d6a4 Mon Sep 17 00:00:00 2001 From: Bryce McKinlay Date: Wed, 9 Aug 2000 14:01:44 +0100 Subject: [PATCH] Makefile.am: Move beans and applet classes to awt_java_source_files. 2000-08-09 Bryce McKinlay * Makefile.am: Move beans and applet classes to awt_java_source_files. * Makefile.in: Rebuilt. * java/awt/Color.java (getTransparency): New method. * java/awt/Component.java: Various updates. * java/awt/Container.java (removeNotify): Call super.removeNotify() after dealing with children. * java/awt/Toolkit.java (changeSupport): Renamed from pcsupport. * java/awt/Window.java: Various new methods and updates. * java/awt/color/ICC_Profile.java (getNumComponents): Cast profileID to int for switch. * java/awt/event/KeyEvent.java (paramString): Initialize `r'. * java/awt/event/WindowEvent.java (paramString): Ditto. * java/awt/geom/Dimension2D.java (clone): Wrap super call with try/catch block. * java/awt/geom/Point2D.java (clone): Ditto. * java/awt/geom/RectangularShape.java (clone): Ditto. * java/awt/image/ColorModel.java (bits, cspace, transparency, hasAlpha, isAlphaPremultiplied): Make package-private, not private. From-SVN: r35589 --- libjava/java/awt/Color.java | 8 + libjava/java/awt/Component.java | 117 ++++++------ libjava/java/awt/ComponentOrientation.java | 8 +- libjava/java/awt/Container.java | 2 +- libjava/java/awt/Toolkit.java | 8 +- libjava/java/awt/Window.java | 265 +++++++++++++++++++++++----- libjava/java/awt/color/ICC_Profile.java | 2 +- libjava/java/awt/event/KeyEvent.java | 2 +- libjava/java/awt/event/WindowEvent.java | 2 +- libjava/java/awt/geom/Dimension2D.java | 6 +- libjava/java/awt/geom/Point2D.java | 6 +- libjava/java/awt/geom/RectangularShape.java | 6 +- libjava/java/awt/image/ColorModel.java | 10 +- 13 files changed, 320 insertions(+), 122 deletions(-) diff --git a/libjava/java/awt/Color.java b/libjava/java/awt/Color.java index 1cc780a..9e1b53b 100644 --- a/libjava/java/awt/Color.java +++ b/libjava/java/awt/Color.java @@ -87,4 +87,12 @@ public class Color extends Object implements Paint, java.io.Serializable { return rgba; } + + public int getTransparency() + { + if (getAlpha() == 0xFF) + return Transparency.OPAQUE; + else + return Transparency.TRANSLUCENT; + } } diff --git a/libjava/java/awt/Component.java b/libjava/java/awt/Component.java index 5c61b91..a11c407 100644 --- a/libjava/java/awt/Component.java +++ b/libjava/java/awt/Component.java @@ -21,12 +21,15 @@ import java.beans.PropertyChangeSupport; import java.beans.PropertyChangeListener; // import javax.accessibility.AccessibleContext; -/* Status: Incomplete. The event dispatch mechanism is implemented. All - other methods defined in the J2SE 1.3 API javadoc exist, but are mostly - incomplete or only stubs; except for methods relating to the Drag and Drop, - Input Method, and Accessibility frameworks: These methods are present but - commented out. */ - +/** + * The root of all evil. + * + * Status: Incomplete. The event dispatch mechanism is implemented. All + * other methods defined in the J2SE 1.3 API javadoc exist, but are mostly + * incomplete or only stubs; except for methods relating to the Drag and Drop, + * Input Method, and Accessibility frameworks: These methods are present but + * commented out. + */ public abstract class Component implements ImageObserver, MenuContainer, java.io.Serializable { @@ -38,11 +41,11 @@ public abstract class Component implements ImageObserver, MenuContainer, RIGHT_ALIGNMENT = 1.0f, TOP_ALIGNMENT = 0.0f; - /* Make the treelock a String so that it can easily be identified - in debug dumps. We clone the String in order to avoid a conflict in - the unlikely event that some other package uses exactly the same string - as a lock object. */ - static Object treeLock = new String("AWT_TREE_LOCK"); + /* Make the treelock a String so that it can easily be identified + in debug dumps. We clone the String in order to avoid a conflict in + the unlikely event that some other package uses exactly the same string + as a lock object. */ + static Object treeLock = new String("AWT_TREE_LOCK"); /* Serialized fields from the serialization spec. */ // FIXME: Default values? @@ -140,7 +143,8 @@ public abstract class Component implements ImageObserver, MenuContainer, /** @since 1.3 */ public GraphicsConfiguration getGraphicsConfiguration() { - // FIXME + if (parent != null) + return parent.getGraphicsConfiguration(); return null; } @@ -166,8 +170,7 @@ public abstract class Component implements ImageObserver, MenuContainer, /** @since 1.2 */ public boolean isDisplayable() { - // FIXME - return false; + return (peer != null); } public boolean isVisible() @@ -225,28 +228,38 @@ public abstract class Component implements ImageObserver, MenuContainer, // FIXME } + /** @specnote Inspection by subclassing shows that Sun's implementation + calls show(boolean) which then calls show() or hide(). It is + the show() method that is overriden in subclasses like Window. + We do the same to preserve compatibility for subclasses. */ public void setVisible(boolean b) { - visible = true; - // FIXME + show (b); } /** @deprecated */ public void show() { - setVisible(true); + if (peer != null) + peer.setVisible(true); + this.visible = true; } /** @deprecated */ public void show(boolean b) { - setVisible(b); + if (b) + show(); + else + hide(); } /** @deprecated */ public void hide() { - setVisible(false); + if (peer != null) + peer.setVisible(false); + this.visible = false; } public Color getForeground() @@ -256,6 +269,8 @@ public abstract class Component implements ImageObserver, MenuContainer, public void setForeground(Color c) { + if (peer != null) + peer.setForeground(c); this.foreground = c; } @@ -266,6 +281,8 @@ public abstract class Component implements ImageObserver, MenuContainer, public void setBackground(Color c) { + if (peer != null) + peer.setBackground(c); this.background = c; } @@ -276,6 +293,8 @@ public abstract class Component implements ImageObserver, MenuContainer, public void setFont(Font f) { + if (peer != null) + peer.setFont(f); this.font = f; } @@ -633,7 +652,7 @@ public abstract class Component implements ImageObserver, MenuContainer, public int checkImage(Image image, ImageObserver observer) { // FIXME - return false; + return 0; } public int checkImage(Image image, int width, int height, ImageObserver observer) @@ -699,41 +718,6 @@ public abstract class Component implements ImageObserver, MenuContainer, { dispatchEventImpl(e); } - /* This code needs to be split up and put in to dispatchEventImpl() in the - appropriate Component subclasses: - - else if ((e.id <= WindowEvent.WINDOW_LAST - && e.id >= WindowEvent.WINDOW_FIRST) - && (windowListener != null - || eventMask & AWTEvent.WINDOW_EVENT_MASK != 0)) - processEvent(e); - else if ((e.id <= AdjustmentEvent.ADJUSTMENT_LAST - && e.id >= AdjustmentEvent.ADJUSTMENT_FIRST) - && (adjustmentListener != null - || eventMask & AWTEvent.ADJUSTMENT_EVENT_MASK != 0)) - processEvent(e); - else if ((e.id <= ItemEvent.ITEM_LAST - && e.id >= ItemEvent.ITEM_FIRST) - && (itemListener != null - || eventMask & AWTEvent.ITEM_EVENT_MASK != 0)) - processEvent(e); - else if ((e.id <= PaintEvent.PAINT_LAST - && e.id >= PaintEvent.PAINT_FIRST) - && (paintListener != null - || eventMask & AWTEvent.PAINT_EVENT_MASK != 0)) - processEvent(e); - else if ((e.id <= TextEvent.TEXT_LAST - && e.id >= TextEvent.TEXT_FIRST) - && (textListener != null - || eventMask & AWTEvent.TEXT_EVENT_MASK != 0)) - processEvent(e); - else if ((e.id <= InvocationEvent.INVOCATION_LAST - && e.id >= InvocationEvent.INVOCATION_FIRST) - && (invocationListener != null - || eventMask & AWTEvent.INVOCATION_EVENT_MASK != 0)) - processEvent(e); - } - */ void dispatchEventImpl(AWTEvent e) { @@ -1218,12 +1202,16 @@ public abstract class Component implements ImageObserver, MenuContainer, public void addNotify() { - // FIXME + if (peer == null) + peer = getToolkit().createComponent(this); } public void removeNotify() - { - // FIXME + { + if (peer != null) + peer.dispose(); + peer = null; + visible = false; } /** @deprecated */ @@ -1312,26 +1300,37 @@ public abstract class Component implements ImageObserver, MenuContainer, public void addPropertyChangeListener(PropertyChangeListener listener) { - + if (changeSupport == null) + changeSupport = new PropertyChangeSupport(this); + changeSupport.addPropertyChangeListener(listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { + if (changeSupport != null) + changeSupport.removePropertyChangeListener(listener); } public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { + if (changeSupport == null) + changeSupport = new PropertyChangeSupport(this); + changeSupport.addPropertyChangeListener(propertyName, listener); } public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { + if (changeSupport != null) + changeSupport.removePropertyChangeListener(propertyName, listener); } protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) { + if (changeSupport != null) + changeSupport.firePropertyChange(propertyName, oldValue, newValue); } public void setComponentOrientation(ComponentOrientation o) diff --git a/libjava/java/awt/ComponentOrientation.java b/libjava/java/awt/ComponentOrientation.java index 739db00..8cc0664 100644 --- a/libjava/java/awt/ComponentOrientation.java +++ b/libjava/java/awt/ComponentOrientation.java @@ -15,6 +15,10 @@ import java.util.ResourceBundle; public class ComponentOrientation implements java.io.Serializable { + // Here is a wild guess. + private static int HORIZONTAL_ID = 1 << 0, + LEFT_TO_RIGHT_ID = 1 << 1; + public static final ComponentOrientation LEFT_TO_RIGHT = new ComponentOrientation(HORIZONTAL_ID & LEFT_TO_RIGHT_ID); public static final ComponentOrientation RIGHT_TO_LEFT @@ -26,10 +30,6 @@ public class ComponentOrientation implements java.io.Serializable // correct values? int orientation; - // Here is a wild guess. - private static int HORIZONTAL_ID = 1 << 0, - LEFT_TO_RIGHT_ID = 1 << 1; - ComponentOrientation(int orientation) { this.orientation = orientation; diff --git a/libjava/java/awt/Container.java b/libjava/java/awt/Container.java index e1a70bf..a315f85 100644 --- a/libjava/java/awt/Container.java +++ b/libjava/java/awt/Container.java @@ -433,7 +433,7 @@ public abstract class Container extends Component { for (int i = 0; i < ncomponents; ++i) component[i].removeNotify (); - // FIXME: remove our peer. + super.removeNotify(); } public boolean isAncestorOf (Component comp) diff --git a/libjava/java/awt/Toolkit.java b/libjava/java/awt/Toolkit.java index b1cb286..d0bfcd8 100644 --- a/libjava/java/awt/Toolkit.java +++ b/libjava/java/awt/Toolkit.java @@ -21,7 +21,7 @@ public abstract class Toolkit { static Toolkit defaultToolkit; static EventQueue systemEventQueue = new EventQueue(); - PropertyChangeSupport pcsupport = new PropertyChangeSupport(this); + PropertyChangeSupport changeSupport = new PropertyChangeSupport(this); Hashtable desktopProperties = new Hashtable(); public static Toolkit getDefaultToolkit() @@ -216,7 +216,7 @@ public abstract class Toolkit { Object oldValue = getDesktopProperty(name); desktopProperties.put(name, newValue); - pcsupport.firePropertyChange(name, oldValue, newValue); + changeSupport.firePropertyChange(name, oldValue, newValue); } protected Object lazilyLoadDesktopProperty(String name) @@ -233,13 +233,13 @@ public abstract class Toolkit public void addPropertyChangeListener(String name, PropertyChangeListener pcl) { - pcsupport.addPropertyChangeListener(name, pcl); + changeSupport.addPropertyChangeListener(name, pcl); } public void removePropertyChangeListener(String name, PropertyChangeListener pcl) { - pcsupport.removePropertyChangeListener(name, pcl); + changeSupport.removePropertyChangeListener(name, pcl); } public void addAWTEventListener(AWTEventListener listener, long eventMask) diff --git a/libjava/java/awt/Window.java b/libjava/java/awt/Window.java index 463b67b..e8d0449 100644 --- a/libjava/java/awt/Window.java +++ b/libjava/java/awt/Window.java @@ -1,9 +1,9 @@ /* Copyright (C) 1999, 2000 Free Software Foundation - This file is part of libjava. + This file is part of libgcj. This software is copyrighted work licensed under the terms of the -Libjava License. Please consult the file "LIBJAVA_LICENSE" for +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for details. */ package java.awt; @@ -11,38 +11,167 @@ import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.awt.peer.WindowPeer; import java.awt.peer.ComponentPeer; +import java.util.EventListener; import java.util.Locale; +import java.util.ResourceBundle; -/* A very incomplete placeholder. */ +/* Status: partially implemented. */ public class Window extends Container { - public Window (Frame parent) + // Serialized fields, from Sun's serialization spec. + // private FocusManager focusMgr; // FIXME: what is this? + private String warningString = null; + private int state = 0; + private int windowSerializedDataVersion = 0; // FIXME + + private transient WindowListener windowListener; + private transient GraphicsConfiguration graphicsConfiguration; + + public Window(Frame owner) + { + this (owner, null); + } + + /** @since 1.2 */ + public Window(Window owner) { - this.parent = parent; + this (owner, null); + } + + /** @since 1.3 */ + public Window(Window owner, GraphicsConfiguration gc) + { + /* FIXME: Security check + SecurityManager.checkTopLevelWindow(...) + + if (gc != null + && gc.getDevice().getType() != GraphicsDevice.TYPE_RASTER_SCREEN) + throw new IllegalArgumentException ("gc must be from a screen device"); + + if (gc == null) + graphicsConfiguration = GraphicsEnvironment.getLocalGraphicsEnvironment() + .getDefaultScreenDevice() + .getDefaultConfiguration(); + else + */ + graphicsConfiguration = gc; + // FIXME: compiler bug // this.layoutMgr = new BorderLayout (); + + if (owner == null) + throw new IllegalArgumentException ("Owner can not be null"); + + this.parent = owner; + + // FIXME: add to owner's "owned window" list } - public void addNotify () + protected void finalize() throws Throwable + { + // FIXME: remove from owner's "owned window" list (Weak References) + } + + public void addNotify() { if (peer == null) + // FIXME: This cast should NOT be required. ??? Compiler bug ??? peer = (ComponentPeer) getToolkit ().createWindow (this); - super.addNotify (); } - public synchronized void addWindowListener (WindowListener listener) + /** @specnote pack() doesn't appear to be called internally by show(), so + we duplicate some of the functionality. */ + public void pack() { - windowListener = AWTEventMulticaster.add (windowListener, listener); + if (parent != null + && !parent.isDisplayable()) + parent.addNotify(); + if (peer == null) + addNotify(); + + // FIXME: do layout stuff here + + validate(); + } + + public void show () + { + if (isVisible()) + { + this.toFront(); + return; + } + + if (parent != null + && !parent.isDisplayable()) + parent.addNotify(); + if (peer == null) + addNotify (); + + validate (); + + super.show (); + + // FIXME: Is this call neccessary or do we assume the peer takes care of + // it? + // this.toFront(); + } + + public void hide() + { + // FIXME: call hide() on amy "owned" children here. + super.hide(); + } + + public void dispose() + { + // FIXME: first call removeNotify() on owned children + for (int i = 0; i < ncomponents; ++i) + component[i].removeNotify(); + this.removeNotify(); } - public void dispose () + public void toBack () { + if (peer != null) + { + WindowPeer wp = (WindowPeer) peer; + wp.toBack (); + } } - public Component getFocusOwner () + public void toFront () { - return null; // FIXME + if (peer != null) + { + WindowPeer wp = (WindowPeer) peer; + wp.toFront (); + } + } + + public Toolkit getToolkit() + { + // FIXME: why different from Component.getToolkit() ? + return super.getToolkit(); + } + + public final String getWarningString() + { + boolean secure = true; + /* boolean secure = SecurityManager.checkTopLevelWindow(...) */ + + if (!secure) + { + if (warningString != null) + return warningString; + else + { + String warning = System.getProperty("awt.appletWarning"); + return warning; + } + } + return null; } public Locale getLocale () @@ -50,20 +179,64 @@ public class Window extends Container return locale == null ? Locale.getDefault () : locale; } - public String getWarningString () + /* + /** @since 1.2 + public InputContext getInputContext() { - return warningString; + // FIXME } + */ - public void pack () + public void setCursor(Cursor cursor) { - addNotify (); - // FIXME + // FIXME: why different from Component.setCursor() ? + super.setCursor(cursor); + } + + public Window getOwner() + { + if (parent != null) + return (Window) parent; + else + return null; } - public boolean postEvent (Event evt) + /** @since 1.2 */ + public Window[] getOwnedWindows() { - return false; // FIXME + // FIXME: return array containing all the windows this window currently + // owns. + return null; + } + + public synchronized void addWindowListener (WindowListener listener) + { + windowListener = AWTEventMulticaster.add (windowListener, listener); + } + + public synchronized void removeWindowListener (WindowListener listener) + { + windowListener = AWTEventMulticaster.remove (windowListener, listener); + } + + /** @since 1.3 */ + public EventListener[] getListeners(Class listenerType) + { + if (listenerType == WindowListener.class) + return getListenersImpl(listenerType, windowListener); + else return super.getListeners(listenerType); + } + + void dispatchEventImpl(AWTEvent e) + { + // Make use of event id's in order to avoid multiple instanceof tests. + if (e.id <= WindowEvent.WINDOW_LAST + && e.id >= WindowEvent.WINDOW_FIRST + && (windowListener != null + || (eventMask & AWTEvent.WINDOW_EVENT_MASK) != 0)) + processEvent(e); + else + super.dispatchEventImpl(e); } protected void processEvent (AWTEvent evt) @@ -105,41 +278,47 @@ public class Window extends Container } } - public synchronized void removeWindowListener (WindowListener listener) + public Component getFocusOwner() { - windowListener = AWTEventMulticaster.remove (windowListener, listener); + // FIXME + return null; } - public void show () + public boolean postEvent(Event e) { - addNotify (); - validate (); - setVisible (true); - // FIXME: is there more to it? + // FIXME + return false; } - public void toBack () + public boolean isShowing() { - if (peer != null) - { - WindowPeer wp = (WindowPeer) peer; - wp.toBack (); - } + // FIXME: Also check if window is within the boundary of the screen? + return isVisible(); } - public void toFront () + /** @since 1.2 */ + public void applyResourceBundle(ResourceBundle rb) { - if (peer != null) - { - WindowPeer wp = (WindowPeer) peer; - wp.toFront (); - } + // FIXME } - // Serialized fields, from Sun's serialization spec. - // private FocusManager focusMgr; // FIXME: what is this? - private int state; - private String warningString; + /** @since 1.2 */ + public void applyResourceBundle(String rbName) + { + ResourceBundle rb = ResourceBundle.getBundle(rbName); + if (rb != null) + applyResourceBundle(rb); + } - private transient WindowListener windowListener; + /* + public AccessibleContext getAccessibleContext() + { + // FIXME + } + */ + + public GraphicsConfiguration getGraphicsConfiguration() + { + return graphicsConfiguration; + } } diff --git a/libjava/java/awt/color/ICC_Profile.java b/libjava/java/awt/color/ICC_Profile.java index 475aa55..34e92c7 100644 --- a/libjava/java/awt/color/ICC_Profile.java +++ b/libjava/java/awt/color/ICC_Profile.java @@ -24,7 +24,7 @@ public class ICC_Profile public int getNumComponents() { - switch (profileID) + switch ((int) profileID) { case ColorSpace.CS_sRGB: case ColorSpace.CS_LINEAR_RGB: diff --git a/libjava/java/awt/event/KeyEvent.java b/libjava/java/awt/event/KeyEvent.java index 3f6a14c..36e116f 100644 --- a/libjava/java/awt/event/KeyEvent.java +++ b/libjava/java/awt/event/KeyEvent.java @@ -251,7 +251,7 @@ public class KeyEvent extends InputEvent public String paramString () { - String r; + String r = ""; switch (id) { case KEY_PRESSED: diff --git a/libjava/java/awt/event/WindowEvent.java b/libjava/java/awt/event/WindowEvent.java index 675adec..28108f8 100644 --- a/libjava/java/awt/event/WindowEvent.java +++ b/libjava/java/awt/event/WindowEvent.java @@ -35,7 +35,7 @@ public class WindowEvent extends ComponentEvent public String paramString () { - String r; + String r = ""; switch (id) { case WINDOW_ACTIVATED: diff --git a/libjava/java/awt/geom/Dimension2D.java b/libjava/java/awt/geom/Dimension2D.java index 0814e03..f891bf0 100644 --- a/libjava/java/awt/geom/Dimension2D.java +++ b/libjava/java/awt/geom/Dimension2D.java @@ -31,6 +31,10 @@ public abstract class Dimension2D implements Cloneable public Object clone () { - return super.clone(); + try + { + return super.clone (); + } + catch (CloneNotSupportedException _) {return null;} } } diff --git a/libjava/java/awt/geom/Point2D.java b/libjava/java/awt/geom/Point2D.java index 93ed520..1e92adc 100644 --- a/libjava/java/awt/geom/Point2D.java +++ b/libjava/java/awt/geom/Point2D.java @@ -64,7 +64,11 @@ public abstract class Point2D implements Cloneable public Object clone() { - return super.clone(); + try + { + return super.clone (); + } + catch (CloneNotSupportedException _) {return null;} } public static class Double extends Point2D diff --git a/libjava/java/awt/geom/RectangularShape.java b/libjava/java/awt/geom/RectangularShape.java index 7143807..536dd28 100644 --- a/libjava/java/awt/geom/RectangularShape.java +++ b/libjava/java/awt/geom/RectangularShape.java @@ -170,7 +170,11 @@ public abstract class RectangularShape implements Shape, Cloneable public Object clone () { - return super.clone (); + try + { + return super.clone (); + } + catch (CloneNotSupportedException _) {return null;} } // This implements the PathIterator for all RectangularShape objects diff --git a/libjava/java/awt/image/ColorModel.java b/libjava/java/awt/image/ColorModel.java index ceee278..8e5ea3a 100644 --- a/libjava/java/awt/image/ColorModel.java +++ b/libjava/java/awt/image/ColorModel.java @@ -54,11 +54,11 @@ public abstract class ColorModel implements Transparency protected int pixel_bits; protected int transferType; - private int[] bits; - private ColorSpace cspace; - private int transparency; - private boolean hasAlpha; - private boolean isAlphaPremultiplied; + int[] bits; + ColorSpace cspace; + int transparency; + boolean hasAlpha; + boolean isAlphaPremultiplied; static int[] nArray(int value, int times) { -- 2.7.4