diff options
author | Scott Gilbertson <scottg@mantatest.com> | 2003-01-15 22:47:04 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2003-01-15 22:47:04 +0000 |
commit | 09d096a8d7f2822f73cb60fae6748df3e76b2835 (patch) | |
tree | 1ef6f13214c6c7217c9ba4c936bcf38313b7b5fe /libjava/java/awt | |
parent | 3dd5fc583b47c22a4dfe37a0287403ea0e3ad5d9 (diff) | |
download | gcc-09d096a8d7f2822f73cb60fae6748df3e76b2835.zip gcc-09d096a8d7f2822f73cb60fae6748df3e76b2835.tar.gz gcc-09d096a8d7f2822f73cb60fae6748df3e76b2835.tar.bz2 |
CardLayout.java (show): Rewrote.
2003-01-15 Scott Gilbertson <scottg@mantatest.com>
* java/awt/CardLayout.java (show): Rewrote.
(gotoComponent): Removed `target' argument. Simplified code.
Don't pre-compute `choice' unless `what' is FIRST or LAST.
Changed all callers.
(NONE): Removed.
From-SVN: r61357
Diffstat (limited to 'libjava/java/awt')
-rw-r--r-- | libjava/java/awt/CardLayout.java | 47 |
1 files changed, 26 insertions, 21 deletions
diff --git a/libjava/java/awt/CardLayout.java b/libjava/java/awt/CardLayout.java index 10ffa2e..1900a60 100644 --- a/libjava/java/awt/CardLayout.java +++ b/libjava/java/awt/CardLayout.java @@ -1,6 +1,6 @@ // CardLayout.java - Card-based layout engine -/* Copyright (C) 1999, 2000, 2002 Free Software Foundation +/* Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation This file is part of GNU Classpath. @@ -110,7 +110,7 @@ public class CardLayout implements LayoutManager2, Serializable */ public void first (Container parent) { - gotoComponent (parent, FIRST, null); + gotoComponent (parent, FIRST); } /** Return this layout manager's horizontal gap. */ @@ -154,7 +154,7 @@ public class CardLayout implements LayoutManager2, Serializable */ public void last (Container parent) { - gotoComponent (parent, LAST, null); + gotoComponent (parent, LAST); } /** @@ -210,7 +210,7 @@ public class CardLayout implements LayoutManager2, Serializable */ public void next (Container parent) { - gotoComponent (parent, NEXT, null); + gotoComponent (parent, NEXT); } /** Get the preferred layout size of the container. @@ -228,7 +228,7 @@ public class CardLayout implements LayoutManager2, Serializable */ public void previous (Container parent) { - gotoComponent (parent, PREV, null); + gotoComponent (parent, PREV); } /** Remove the indicated component from this layout manager. @@ -273,7 +273,21 @@ public class CardLayout implements LayoutManager2, Serializable { Object target = tab.get (name); if (target != null) - gotoComponent (parent, NONE, (Component) target); + { + int num = parent.ncomponents; + // This is more efficient than calling getComponents(). + Component[] comps = parent.component; + for (int i = 0; i < num; ++i) + { + if (comps[i].isVisible()) + { + if (target == comps[i]) + return; + comps[i].setVisible (false); + } + } + ((Component) target).setVisible (true); + } } /** @@ -286,9 +300,11 @@ public class CardLayout implements LayoutManager2, Serializable return getClass ().getName () + "[" + hgap + "," + vgap + "]"; } - // This implements first(), last(), next(), and previous(). - private void gotoComponent (Container parent, int what, - Component target) + /** This implements first(), last(), next(), and previous(). + * @param parent The parent container + * @param what The type of goto: FIRST, LAST, NEXT or PREV + */ + private void gotoComponent (Container parent, int what) { synchronized (parent.getTreeLock ()) { @@ -301,19 +317,9 @@ public class CardLayout implements LayoutManager2, Serializable choice = 0; else if (what == LAST) choice = num - 1; - else if (what >= 0) - choice = what; for (int i = 0; i < num; ++i) { - // If TARGET is set then we are looking for a specific - // component. - if (target != null) - { - if (target == comps[i]) - choice = i; - } - if (comps[i].isVisible ()) { if (what == NEXT) @@ -335,7 +341,7 @@ public class CardLayout implements LayoutManager2, Serializable return; } comps[i].setVisible (false); - + if (choice >= 0) break; } @@ -403,7 +409,6 @@ public class CardLayout implements LayoutManager2, Serializable private int LAST = 1; private int NEXT = 2; private int PREV = 3; - private int NONE = 4; // These constants are used by the private getSize method. private int MIN = 0; |