|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.jgoodies.forms.builder.AbstractFormBuilder
com.jgoodies.forms.builder.PanelBuilder
com.jgoodies.forms.builder.ButtonBarBuilder
public final class ButtonBarBuilder
A non-visual builder that assists you in building consistent button bars
that comply with popular UI style guides. It utilizes the FormLayout
.
This class is in turn used by the
ButtonBarFactory
that provides
an even higher level of abstraction for building consistent button bars.
Buttons added to the builder are either gridded or fixed and may fill
their FormLayout cell or not. All gridded buttons get the same width,
while fixed buttons use their own size. Gridded buttons honor
the default minimum button width as specified by the current
LayoutStyle
.
You can set an optional hint for narrow margin for the fixed width buttons. This is useful if you want to lay out a button bar that includes a button with a long text. For example, in a bar with 'Copy to Clipboard', 'OK', 'Cancel' you may declare the clipboard button as a fixed size button with narrow margins, OK and Cancel as gridded. Gridded buttons are marked as narrow by default. Note that some look&feels do not support the narrow margin feature, and conversely, others have only narrow margins. The JGoodies look&feels honor the setting, the Mac Aqua l&f uses narrow margins all the time.
To honor the platform's button order (left-to-right vs. right-to-left)
this builder uses the leftToRightButtonOrder property.
It is initialized with the current LayoutStyle's button order,
which in turn is left-to-right on most platforms and right-to-left
on the Mac OS X. Builder methods that create sequences of buttons
(e.g. addGriddedButtons(JButton[])
honor the button order.
If you want to ignore the default button order, you can either
add add individual buttons, or create a ButtonBarBuilder instance
with the order set to left-to-right. For the latter see
createLeftToRightBuilder()
. Also see the button order
example below.
Example:
The following example builds a button bar with Help button on the
left-hand side and OK, Cancel, Apply buttons on the right-hand side.
private JPanel createHelpOKCancelApplyBar( JButton help, JButton ok, JButton cancel, JButton apply) { ButtonBarBuilder builder = new ButtonBarBuilder(); builder.addGridded(help); builder.addRelatedGap(); builder.addGlue(); builder.addGriddedButtons(new JButton[]{ok, cancel, apply}); return builder.getPanel(); }
Button Order Example:
The following example builds three button bars where one honors
the platform's button order and the other two ignore it.
public JComponent buildPanel() { FormLayout layout = new FormLayout("pref"); DefaultFormBuilder rowBuilder = new DefaultFormBuilder(layout); rowBuilder.setDefaultDialogBorder(); rowBuilder.append(buildButtonSequence(new ButtonBarBuilder())); rowBuilder.append(buildButtonSequence(ButtonBarBuilder.createLeftToRightBuilder())); rowBuilder.append(buildIndividualButtons(new ButtonBarBuilder())); return rowBuilder.getPanel(); } private Component buildButtonSequence(ButtonBarBuilder builder) { builder.addGriddedButtons(new JButton[] { new JButton("One"), new JButton("Two"), new JButton("Three") }); return builder.getPanel(); } private Component buildIndividualButtons(ButtonBarBuilder builder) { builder.addGridded(new JButton("One")); builder.addRelatedGap(); builder.addGridded(new JButton("Two")); builder.addRelatedGap(); builder.addGridded(new JButton("Three")); return builder.getPanel(); }
ButtonStackBuilder
,
ButtonBarFactory
,
LayoutStyle
Field Summary | |
---|---|
private static ColumnSpec[] |
COL_SPECS
Specifies the columns of the initial FormLayout used in constructors. |
private boolean |
leftToRight
Describes how sequences of buttons are added to the button bar: left-to-right or right-to-left. |
private static java.lang.String |
NARROW_KEY
The client property key used to indicate that a button shall get narrow margins on the left and right hand side. |
private static RowSpec[] |
ROW_SPECS
Specifies the FormLayout's the single button bar row. |
Constructor Summary | |
---|---|
ButtonBarBuilder()
Constructs an instance of ButtonBarBuilder on a
JPanel using a preconfigured FormLayout as layout manager. |
|
ButtonBarBuilder(javax.swing.JPanel panel)
Constructs an instance of ButtonBarBuilder on the given
panel using a preconfigured FormLayout as layout manager. |
Method Summary | |
---|---|
void |
addFixed(javax.swing.JComponent component)
Adds a fixed size component. |
void |
addFixedNarrow(javax.swing.JComponent component)
Adds a fixed size component with narrow margins. |
void |
addGlue()
Adds a glue that will be given the extra space, if this box is larger than its preferred size. |
void |
addGridded(javax.swing.JComponent component)
Adds a gridded component, i.e. a component that will get the same dimension as all other gridded components. |
void |
addGriddedButtons(javax.swing.JButton[] buttons)
Adds a sequence of related gridded buttons each separated by a default gap. |
void |
addGriddedGrowing(javax.swing.JComponent component)
Adds a gridded component that grows. |
void |
addGriddedGrowingButtons(javax.swing.JButton[] buttons)
Adds a sequence of gridded buttons that grow where each is separated by a default gap. |
void |
addRelatedGap()
Adds the standard gap for related components. |
void |
addStrut(ConstantSize size)
Adds a strut of a specified size. |
void |
addUnrelatedGap()
Adds the standard gap for unrelated components. |
static ButtonBarBuilder |
createLeftToRightBuilder()
Creates and returns a ButtonBarBuilder with
initialized with a left to right button order. |
boolean |
isLeftToRightButtonOrder()
Returns whether button sequences will be ordered from left to right or from right to left. |
void |
setDefaultButtonBarGapBorder()
Sets a default border that has a gap in the bar's north. |
void |
setLeftToRightButtonOrder(boolean newButtonOrder)
Sets the order for button sequences to either left to right, or right to left. |
Methods inherited from class com.jgoodies.forms.builder.PanelBuilder |
---|
add, addLabel, addLabel, addLabel, addLabel, addSeparator, addSeparator, addSeparator, addSeparator, addTitle, addTitle, addTitle, getComponentFactory, getPanel, setBorder, setComponentFactory, setDefaultDialogBorder |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static final ColumnSpec[] COL_SPECS
private static final RowSpec[] ROW_SPECS
private static final java.lang.String NARROW_KEY
This optional setting will be honored by all JGoodies Look&Feel implementations. The Mac Aqua l&f uses narrow margins only. Other look&feel implementations will likely ignore this key and so may render a wider button margin.
private boolean leftToRight
LayoutStyle
's button order. It is honored
only by builder methods that build sequences of button, for example
addGriddedButtons(JButton[])
, and ignored if you add
individual button, for example using addGridded(JComponent)
.
AbstractFormBuilder.isLeftToRight()
,
AbstractFormBuilder.setLeftToRight(boolean)
,
addGriddedButtons(JButton[])
,
addGriddedGrowingButtons(JButton[])
Constructor Detail |
---|
public ButtonBarBuilder()
ButtonBarBuilder
on a
JPanel
using a preconfigured FormLayout as layout manager.
public ButtonBarBuilder(javax.swing.JPanel panel)
ButtonBarBuilder
on the given
panel using a preconfigured FormLayout as layout manager.
panel
- the layout containerMethod Detail |
---|
public static ButtonBarBuilder createLeftToRightBuilder()
ButtonBarBuilder
with
initialized with a left to right button order.
public boolean isLeftToRightButtonOrder()
LayoutStyle.isLeftToRightButtonOrder()
public void setLeftToRightButtonOrder(boolean newButtonOrder)
newButtonOrder
- true if button sequences shall be ordered
from left to rightLayoutStyle.isLeftToRightButtonOrder()
public void setDefaultButtonBarGapBorder()
public void addGriddedButtons(javax.swing.JButton[] buttons)
buttons
- an array of buttons to addLayoutStyle
public void addGriddedGrowingButtons(javax.swing.JButton[] buttons)
buttons
- an array of buttons to addLayoutStyle
public void addFixed(javax.swing.JComponent component)
component
- the component to addpublic void addFixedNarrow(javax.swing.JComponent component)
component
- the component to addpublic void addGridded(javax.swing.JComponent component)
component
- the component to addpublic void addGriddedGrowing(javax.swing.JComponent component)
component
- the component to addpublic void addGlue()
public void addRelatedGap()
public void addUnrelatedGap()
public void addStrut(ConstantSize size)
size
- a ConstantSize
that describes the gap's size
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |