summaryrefslogtreecommitdiff
path: root/libjava/classpath/javax/swing/Box.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/classpath/javax/swing/Box.java')
-rw-r--r--libjava/classpath/javax/swing/Box.java290
1 files changed, 290 insertions, 0 deletions
diff --git a/libjava/classpath/javax/swing/Box.java b/libjava/classpath/javax/swing/Box.java
new file mode 100644
index 000000000..ce9cb8f20
--- /dev/null
+++ b/libjava/classpath/javax/swing/Box.java
@@ -0,0 +1,290 @@
+/* Box.java --
+ Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing;
+
+import java.awt.AWTError;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.LayoutManager;
+
+import javax.accessibility.Accessible;
+import javax.accessibility.AccessibleContext;
+import javax.accessibility.AccessibleRole;
+
+/**
+ * A component that uses a {@link BoxLayout} as Layout Manager.
+ *
+ * In addition to that, this class provides a set of static methods for
+ * creating some filler components ('struts' and 'glue') for use in
+ * containers that are laid out using BoxLayout.
+ *
+ * @author Ronald Veldema (rveldema@cs.vu.nl)
+ */
+public class Box extends JComponent implements Accessible
+{
+ private static final long serialVersionUID = 1525417495883046342L;
+
+ /**
+ * Provides accessibility support for <code>Box</code>es.
+ */
+ protected class AccessibleBox extends Container.AccessibleAWTContainer
+ {
+ private static final long serialVersionUID = -7775079816389931944L;
+
+ protected AccessibleBox()
+ {
+ // Nothing to do here.
+ }
+
+ public AccessibleRole getAccessibleRole()
+ {
+ return null;
+ }
+ }
+
+ /**
+ * A component that servers as a filler in BoxLayout controlled containers.
+ */
+ public static class Filler extends JComponent implements Accessible
+ {
+ private static final long serialVersionUID = -1204263191910183998L;
+
+ /**
+ * Provides accessibility support for <code>Box.Filler</code>.
+ */
+ protected class AccessibleBoxFiller
+ extends Component.AccessibleAWTComponent
+ {
+ private static final long serialVersionUID = 164963348357479321L;
+
+ protected AccessibleBoxFiller()
+ {
+ // Nothing to do here.
+ }
+
+ public AccessibleRole getAccessibleRole()
+ {
+ return null;
+ }
+ }
+
+ private transient Dimension min, pref, max;
+
+ /**
+ * Creates a new instance of Filler.
+ *
+ * @param min the minimum size of the filler.
+ * @param pref the preferred size of the filler.
+ * @param max the maximum size of the filler.
+ */
+ public Filler(Dimension min, Dimension pref, Dimension max)
+ {
+ changeShape(min, pref, max);
+ }
+
+ /**
+ * Changes the dimensions of this Filler.
+ *
+ * @param min the new minimum size of the filler.
+ * @param pref the new preferred size of the filler.
+ * @param max the new maximum size of the filler.
+ */
+ public void changeShape(Dimension min, Dimension pref, Dimension max)
+ {
+ this.min = min;
+ this.pref = pref;
+ this.max = max;
+ }
+
+ public AccessibleContext getAccessibleContext()
+ {
+ if (accessibleContext == null)
+ accessibleContext = new AccessibleBoxFiller();
+ return accessibleContext;
+ }
+
+ /**
+ * Returns the maximum size of this Filler.
+ *
+ * @return the maximum size of this Filler.
+ */
+ public Dimension getMaximumSize()
+ {
+ return max;
+ }
+
+ /**
+ * Returns the minimum size of this Filler.
+ *
+ * @return the minimum size of this Filler.
+ */
+ public Dimension getMinimumSize()
+ {
+ return min;
+ }
+
+ /**
+ * Returns the preferred size of this Filler.
+ *
+ * @return the preferred size of this Filler.
+ */
+ public Dimension getPreferredSize()
+ {
+ return pref;
+ }
+ }
+
+ /**
+ * Creates a new Box component, that lays out its children according
+ * to the <code>axis</code> parameter.
+ *
+ * @param axis the orientation of the BoxLayout.
+ *
+ * @see BoxLayout#X_AXIS
+ * @see BoxLayout#Y_AXIS
+ * @see BoxLayout#LINE_AXIS
+ * @see BoxLayout#PAGE_AXIS
+ */
+ public Box(int axis)
+ {
+ super.setLayout(new BoxLayout(this, axis));
+ }
+
+ /**
+ * Creates a filler component which acts as glue between components.
+ * It does not take space unless some extra space is available. If extra
+ * space is available, this component can expand in both X and Y directions.
+ *
+ * @return a glue-like filler component.
+ */
+ public static Component createGlue()
+ {
+ Filler glue = new Filler(new Dimension(0, 0), new Dimension(0, 0),
+ new Dimension(Short.MAX_VALUE, Short.MAX_VALUE));
+ return glue;
+ }
+
+ public static Box createHorizontalBox()
+ {
+ return new Box(BoxLayout.X_AXIS);
+ }
+
+ /**
+ * Creates a filler component which acts as glue between components.
+ * It does not take space unless some extra space is available. If extra
+ * space is available, this component can expand in the X direction.
+ *
+ * @return a glue-like filler component.
+ */
+ public static Component createHorizontalGlue()
+ {
+ Filler glue = new Filler(new Dimension(0, 0), new Dimension(0, 0),
+ new Dimension(Short.MAX_VALUE, 0));
+ return glue;
+ }
+
+ /**
+ * Creates a filler component which acts as strut between components.
+ * It will fill exactly the specified horizontal size.
+ *
+ * @param width the width of this strut in pixels.
+ *
+ * @return a strut-like filler component.
+ */
+ public static Component createHorizontalStrut(int width)
+ {
+ Filler strut = new Filler(new Dimension(width, 0),
+ new Dimension(width, 0),
+ new Dimension(width, Integer.MAX_VALUE));
+ return strut;
+ }
+
+ public static Component createRigidArea(Dimension d)
+ {
+ return new Filler(d, d, d);
+ }
+
+ public static Box createVerticalBox()
+ {
+ return new Box(BoxLayout.Y_AXIS);
+ }
+
+ /**
+ * Creates a filler component which acts as glue between components.
+ * It does not take space unless some extra space is available. If extra
+ * space is available, this component can expand in the Y direction.
+ *
+ * @return a glue-like filler component.
+ */
+ public static Component createVerticalGlue()
+ {
+ return createGlue();
+ }
+
+ /**
+ * Creates a filler component which acts as strut between components.
+ * It will fill exactly the specified vertical size.
+ *
+ * @param height the height of this strut in pixels.
+ *
+ * @return a strut-like filler component.
+ */
+ public static Component createVerticalStrut(int height)
+ {
+ Filler strut = new Filler(new Dimension(0, height),
+ new Dimension(0, height),
+ new Dimension(Integer.MAX_VALUE, height));
+ return strut;
+ }
+
+ public void setLayout(LayoutManager l)
+ {
+ throw new AWTError("Not allowed to set layout managers for boxes.");
+ }
+
+ public AccessibleContext getAccessibleContext()
+ {
+ if (accessibleContext == null)
+ accessibleContext = new AccessibleBox();
+ return accessibleContext;
+ }
+
+
+}