package com.limegroup.gnutella.gui; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.Border; /** * This is a convenience class that extends <tt>JPanel<tt> and gives the * panel a padded border and gives it a <tt>BoxLayout</tt> instead of the * default <tt>FlowLayout</tt>. */ //2345678|012345678|012345678|012345678|012345678|012345678|012345678|012345678| public class PaddedPanel extends JPanel { /** * Stores an internal reference to the optional title label, * whose text may be altered later by setTitle() */ private JLabel _titleLabel = null; /** * Constructor for a padded panel with the margins and the label text * specified as parameters. */ public PaddedPanel(String label, int top, int left, int bottom, int right) { BoxLayout layout = new BoxLayout(this, BoxLayout.Y_AXIS); Border border = BorderFactory.createEmptyBorder(top, left, bottom, right); setLayout(layout); setBorder(border); if(label != null && !label.equals("")) { JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); _titleLabel = new JLabel(label); panel.add(_titleLabel); panel.add(Box.createHorizontalGlue()); add(panel); } } /** * Constructor for a padded panel that allows you to specify the borders * on all sides with no label */ public PaddedPanel(int top, int left, int bottom, int right) { this("", top, left, bottom, right); } /** * The constructor defaults to BoxLayout oriented along the Y_AXIS. */ public PaddedPanel(int padding) { this(padding, padding, padding, padding); } /** * Creates a panel with the specified label and the specified padding * on all sides. */ public PaddedPanel(String label, int padding) { this(label, padding, padding, padding, padding); } /** * Convenience constructor that uses the default padding. */ public PaddedPanel() { this(GUIConstants.OUTER_MARGIN); } /** * Convenience constructor that adds a label to the top of the panel. */ public PaddedPanel(String label) { this(label, GUIConstants.OUTER_MARGIN); } /** * Sets the title for the <tt>PaddedPanel</tt>. * * @param title the title to add */ public void setTitle(String title) { if (_titleLabel == null) { BoxPanel panel = new BoxPanel(BoxPanel.X_AXIS); _titleLabel = new JLabel(title); panel.add(_titleLabel); panel.add(Box.createHorizontalGlue()); add(panel); } else { _titleLabel.setText(title); } } }