package org.limewire.ui.swing.components; import java.awt.Component; import java.awt.Dimension; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JComponent; import javax.swing.JPanel; /** * This class is simply a JPanel that uses a BoxLayout with the orientation * specified in the constructor. The default constructor creates a panel * oriented along the y axis. */ //2345678|012345678|012345678|012345678|012345678|012345678|012345678|012345678| public class BoxPanel extends JPanel { /** * Constant for specifying that the underlying <tt>BoxLayout</tt> should * be oriented along the x axis. */ public static final int X_AXIS = BoxLayout.X_AXIS; /** * Constant for specifying that the underlying <tt>BoxLayout</tt> should * be oriented along the y axis. */ public static final int Y_AXIS = BoxLayout.Y_AXIS; public static final Dimension HORIZONTAL_COMPONENT_GAP = new Dimension(6, 0); public static final Dimension VERTICAL_COMPONENT_GAP = new Dimension(0, 6); public static final Dimension LINE_GAP = new Dimension(0, 10); /** * Creates a default <tt>BoxPanel</tt> with a <tt>BoxLayout</tt> oriented * along the y axis. */ public BoxPanel() { setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); } /** * Creates a <tt>BoxPanel</tt> with a <tt>BoxLayout</tt> that uses the * specified orientation. * * @param orientation the orientation to use for the layout, which should * be either BoxPanel.X_AXIS or BoxPanel.Y_AXIS * * @throws IllegalArgumentException if the <tt>orientation</tt> is not * a valid <tt>BoxPanel</tt> orientation */ public BoxPanel(int orientation) { if (orientation != X_AXIS && orientation != Y_AXIS) throw new IllegalArgumentException("Illegal BoxPanel orientation"); setLayout(new BoxLayout(this, orientation)); } /** * Sets the orientation that the panel uses for laying out components. * * @param orientation the orientation to use for the layout, which should * be either BoxPanel.X_AXIS or BoxPanel.Y_AXIS * * @throws IllegalArgumentException if the <tt>orientation</tt> is not * a valid <tt>BoxPanel</tt> orientation */ public void setOrientation(int orientation) { if(orientation != X_AXIS && orientation != Y_AXIS) throw new IllegalArgumentException("Illegal BoxPanel orientation"); setLayout(new BoxLayout(this, orientation)); } public void addLineGap() { add(Box.createRigidArea(BoxPanel.LINE_GAP)); } public void addHorizontalComponentGap() { add(Box.createRigidArea(BoxPanel.HORIZONTAL_COMPONENT_GAP)); } public void addVerticalComponentGap() { add(Box.createRigidArea(BoxPanel.VERTICAL_COMPONENT_GAP)); } public void addLeft(JComponent component) { component.setAlignmentX(Component.RIGHT_ALIGNMENT); super.add(component); } public void addCenter(JComponent component) { component.setAlignmentX(Component.CENTER_ALIGNMENT); super.add(component); } public void addRight(JComponent component) { component.setAlignmentX(Component.LEFT_ALIGNMENT); super.add(component); } }