diff options
author | Tom Tromey <tromey@cygnus.com> | 2000-07-31 02:03:51 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2000-07-31 02:03:51 +0000 |
commit | e0a339f785fd6673790ffe95448fa4375e4cc77f (patch) | |
tree | e4242f7fec5fd46deb2e127e632eaf9fc1aceb50 /libjava/java/awt/Container.java | |
parent | 911a71a72912cfa7bc2d762f35e76e2f58e3097c (diff) | |
download | gcc-e0a339f785fd6673790ffe95448fa4375e4cc77f.zip gcc-e0a339f785fd6673790ffe95448fa4375e4cc77f.tar.gz gcc-e0a339f785fd6673790ffe95448fa4375e4cc77f.tar.bz2 |
BorderLayout.java (BorderLayout()): New constructor.
* java/awt/BorderLayout.java (BorderLayout()): New constructor.
* java/awt/Frame.java (Frame): Pass `null' to Window constructor.
* java/awt/Window.java (addNotify): Wrote.
(addWindowListener): Wrote.
(getLocale): Wrote.
(getWarningString): Wrote.
(processEvent): Wrote.
(processWindowEvent): Wrote.
(removeWindowListener): Wrote.
(show): Call validate(), setVisible().
(toBack): Wrote.
(toFront): Wrote.
* java/awt/Toolkit.java (createWindow): Declare.
* java/awt/Frame.java (addNotify): Use getToolkit to find
toolkit.
* java/awt/Component.java (invalidate): Wrote.
(isValid): Wrote.
(getToolkit): Wrote.
* java/awt/Container.java (addContainerListener): Removed
unnecessary cast.
(removeContainerListener): Likewise.
(addImpl): Wrote.
(add(Component)): Use it.
(add(String,Component)): Likewise.
(add(Component,int)): Likewise.
(add(Component,Object)): Likewise.
(add(Component,Object,int)): Likewise.
(doLayout): Wrote.
(getAlignmentX): Wrote.
(getAlignmentY): Wrote.
(getComponentAt): Wrote.
(getMaximumSize): Wrote.
(invalidate): Wrote.
(list(PrintStream,int)): Wrote.
(list(PrintWriter,int)): Wrote.
(getMinimumSize): Wrote.
(getPreferredSize): Wrote.
(printComponents): Wrote.
(processContainerEvent): Look at containerListener, not
componentListener.
(remove): Added event processing and peer destruction.
(removeAll): Use remove.
(removeNotify): Wrote.
(validate): Wrote.
(validateTree): Wrote.
* java/awt/Scrollbar.java (addNotify): Do nothing if peer exists.
* java/awt/Label.java (addNotify): Do nothing if peer exists.
* java/awt/Container.java (addNotify): Don't create Container
peer.
* java/awt/Button.java (addNotify): Do nothing if peer exists.
From-SVN: r35361
Diffstat (limited to 'libjava/java/awt/Container.java')
-rw-r--r-- | libjava/java/awt/Container.java | 221 |
1 files changed, 160 insertions, 61 deletions
diff --git a/libjava/java/awt/Container.java b/libjava/java/awt/Container.java index 81a367b..7ebdc9c 100644 --- a/libjava/java/awt/Container.java +++ b/libjava/java/awt/Container.java @@ -29,7 +29,10 @@ public abstract class Container extends Component /* Anything else is non-serializable, and should be declared "transient". */ transient ContainerListener containerListener; - + + // Insets. + private transient Insets myInsets; + public Container() { } @@ -62,10 +65,9 @@ public abstract class Container extends Component public Insets getInsets() { - // FIXME - return null; + return myInsets; } - + /** @deprecated Use getInsets() instead. */ public Insets insets() { @@ -74,17 +76,50 @@ public abstract class Container extends Component public Component add (Component comp) { - return add (comp, -1); + addImpl (comp, null, -1); + return comp; } - - public Component add(String name, Component comp) + + public Component add (String name, Component comp) { - // FIXME - return null; + addImpl (comp, name, -1); + return comp; + } + + public Component add (Component comp, int index) + { + addImpl (comp, null, index); + return comp; + } + + public void add (Component comp, Object constraints) + { + addImpl (comp, constraints, -1); + } + + public void add (Component comp, Object constraints, int index) + { + addImpl (comp, constraints, index); } - public Component add(Component comp, int index) + protected void addImpl (Component comp, Object constraints, int index) { + if (index > ncomponents + || comp instanceof Window + || (comp instanceof Container + && ((Container) comp).isAncestorOf (this))) + throw new IllegalArgumentException (); + + // Reparent component, and make sure component is instantiated if + // we are. + if (comp.parent != this) + comp.parent.remove (comp); + comp.parent = this; + if (peer != null) + comp.addNotify (); + + invalidate (); + // This isn't the most efficient implementation. We could do less // copying when growing the array. It probably doesn't matter. if (ncomponents >= component.length) @@ -94,7 +129,6 @@ public abstract class Container extends Component System.arraycopy (component, 0, c, 0, ncomponents); component = c; } - if (index == -1) component[ncomponents++] = comp; else @@ -105,45 +139,69 @@ public abstract class Container extends Component ++ncomponents; } - return comp; - } - - public void add(Component comp, Object constraints) - { - // FIXME - } + // Notify the layout manager. + if (layoutMgr != null) + { + if (constraints != null && layoutMgr instanceof LayoutManager2) + { + LayoutManager2 lm2 = (LayoutManager2) layoutMgr; + lm2.addLayoutComponent (comp, constraints); + } + else + layoutMgr.addLayoutComponent ((String) constraints, comp); + } - public void add(Component comp, Object constraints, int index) - { - // FIXME - } + ContainerEvent ce = new ContainerEvent (this, + ContainerEvent.COMPONENT_ADDED, + comp); - protected void addImpl(Component comp, Object constraints, int index) - { - // FIXME + // FIXME: is this right? + dispatchEvent (ce); + if (containerListener != null) + containerListener.componentAdded (ce); } public void remove (int index) { + Component r = component[index]; + + r.removeNotify (); + System.arraycopy (component, index + 1, component, index, ncomponents - index - 1); component[--ncomponents] = null; + + invalidate (); + + if (layoutMgr != null) + layoutMgr.removeLayoutComponent (r); + + ContainerEvent ce = new ContainerEvent (this, + ContainerEvent.COMPONENT_REMOVED, + r); + + // FIXME: is this right? + dispatchEvent (ce); + if (containerListener != null) + containerListener.componentAdded (ce); } public void remove (Component comp) { for (int i = 0; i < ncomponents; ++i) - if (component[i] == comp) - { - remove (i); - break; - } + { + if (component[i] == comp) + { + remove (i); + break; + } + } } public void removeAll() { - while (ncomponents >= 0) - component[--ncomponents] = null; + while (ncomponents > 0) + remove (0); } public LayoutManager getLayout() @@ -159,7 +217,8 @@ public abstract class Container extends Component public void doLayout() { - // FIXME + if (layoutMgr != null) + layoutMgr.layoutContainer (this); } /** @deprecated Use doLayout() instead. */ @@ -170,17 +229,22 @@ public abstract class Container extends Component public void invalidate() { - // FIXME + super.invalidate (); } public void validate() { - // FIXME + if (! isValid ()) + { + doLayout (); + validateTree (); + } } protected void validateTree() { - // FIXME + for (int i = 0; i < ncomponents; ++i) + component[i].validate (); } public void setFont(Font f) @@ -190,8 +254,10 @@ public abstract class Container extends Component public Dimension getPreferredSize() { - // FIXME - return null; + if (layoutMgr != null) + return layoutMgr.preferredLayoutSize (this); + else + return super.getPreferredSize (); } /** @deprecated Use getPreferredSize() instead */ @@ -202,8 +268,10 @@ public abstract class Container extends Component public Dimension getMinimumSize() { - // FIXME - return null; + if (layoutMgr != null) + return layoutMgr.minimumLayoutSize (this); + else + return super.getMinimumSize (); } /** @deprecated Use getMinimumSize() instead */ @@ -214,20 +282,35 @@ public abstract class Container extends Component public Dimension getMaximumSize() { - // FIXME - return null; + if (layoutMgr != null && layoutMgr instanceof LayoutManager2) + { + LayoutManager2 lm2 = (LayoutManager2) layoutMgr; + return lm2.maximumLayoutSize (this); + } + else + return super.getMaximumSize (); } - + public float getAlignmentX() { - // FIXME - return 0; + if (layoutMgr instanceof LayoutManager2) + { + LayoutManager2 lm2 = (LayoutManager2) layoutMgr; + return lm2.getLayoutAlignmentX (this); + } + else + return CENTER_ALIGNMENT; } public float getAlignmentY() { - // FIXME - return 0; + if (layoutMgr instanceof LayoutManager2) + { + LayoutManager2 lm2 = (LayoutManager2) layoutMgr; + return lm2.getLayoutAlignmentY (this); + } + else + return CENTER_ALIGNMENT; } public void paint(Graphics g) @@ -252,7 +335,8 @@ public abstract class Container extends Component public void printComponents(Graphics g) { - // FIXME + for (int i = 0; i < ncomponents; ++i) + component[i].printAll (g); } void dispatchEventImpl(AWTEvent e) @@ -267,14 +351,12 @@ public abstract class Container extends Component public void addContainerListener(ContainerListener l) { - containerListener = (ContainerListener) - AWTEventMulticaster.add(containerListener, l); + containerListener = AWTEventMulticaster.add (containerListener, l); } public void removeContainerListener(ContainerListener l) { - containerListener = (ContainerListener) - AWTEventMulticaster.remove(containerListener, l); + containerListener = AWTEventMulticaster.remove(containerListener, l); } /** @since 1.3 */ @@ -294,7 +376,7 @@ public abstract class Container extends Component protected void processContainerEvent(ContainerEvent e) { - if (componentListener == null) + if (containerListener == null) return; switch (e.id) { @@ -313,9 +395,17 @@ public abstract class Container extends Component { } - public Component getComponentAt(int x, int y) + public Component getComponentAt (int x, int y) { - // FIXME + if (! contains (x, y)) + return null; + for (int i = 0; i < ncomponents; ++i) + { + int x2 = x - component[i].x; + int y2 = y - component[i].y; + if (component[i].contains (x2, y2)) + return component[i]; + } return null; } @@ -345,12 +435,13 @@ public abstract class Container extends Component { for (int i = ncomponents; --i >= 0; ) component[i].addNotify(); - peer = (ComponentPeer) getToolkit ().createContainer (this); } public void removeNotify() { - // FIXME + for (int i = 0; i < ncomponents; ++i) + component[i].removeNotify (); + // FIXME: remove our peer. } public boolean isAncestorOf (Component comp) @@ -370,13 +461,21 @@ public abstract class Container extends Component return "FIXME"; } - public void list(PrintStream out, int indent) + public void list (PrintStream out, int indent) { - // FIXME + for (int i = 0; i < indent; ++i) + out.print (' '); + out.println (toString ()); + for (int i = 0; i < ncomponents; ++i) + component[i].list (out, indent + 2); } - + public void list(PrintWriter out, int indent) { - // FIXME + for (int i = 0; i < indent; ++i) + out.print (' '); + out.println (toString ()); + for (int i = 0; i < ncomponents; ++i) + component[i].list (out, indent + 2); } } |