Class AbstractButtonPanelBuilder<B extends AbstractButtonPanelBuilder<B>>

java.lang.Object
com.jgoodies.forms.internal.AbstractBuilder<B>
com.jgoodies.forms.internal.AbstractButtonPanelBuilder<B>
Type Parameters:
B - the type of the builder, e.g. ButtonBarBuilder
Direct Known Subclasses:
ButtonBarBuilder, ButtonStackBuilder

public abstract class AbstractButtonPanelBuilder<B extends AbstractButtonPanelBuilder<B>> extends AbstractBuilder<B>
The abstract superclass for ButtonBarBuilder and ButtonStackBuilder. Provides a cell cursor for traversing the button bar/stack while components are added. It also offers convenience methods to append logical columns and rows.
Since:
1.2
Version:
$Revision: 1.11 $
  • Field Details

    • leftToRight

      private boolean leftToRight
      Specifies if we fill the grid from left to right or right to left. This value is initialized during the construction from the layout container's component orientation.
      See Also:
    • focusGrouped

      protected boolean focusGrouped
      Indicates whether a focus group has been built in build(). Reset to false whenever a component is added.
  • Constructor Details

    • AbstractButtonPanelBuilder

      protected AbstractButtonPanelBuilder(FormLayout layout, JPanel container)
      Constructs an AbstractButtonPanelBuilder for the given FormLayout and layout container.
      Parameters:
      layout - the FormLayout to use
      container - the layout container
      Throws:
      NullPointerException - if layout or container is null
  • Method Details

    • build

      public final JPanel build()
      Returns the panel used to build the form and lazily builds a focus traversal group for all contained AbstractButtons.
      Specified by:
      build in class AbstractBuilder<B extends AbstractButtonPanelBuilder<B>>
      Returns:
      the panel used by this builder to build the form
    • setBackground

      @Deprecated public final void setBackground(Color background)
      Deprecated.
      Sets the panel's background color and makes the panel opaque.
      Parameters:
      background - the color to set as new background
      See Also:
    • setBorder

      @Deprecated public final void setBorder(Border border)
      Deprecated.
      Sets the panel's border.
      Parameters:
      border - the border to set
      See Also:
    • setOpaque

      @Deprecated public final void setOpaque(boolean b)
      Deprecated.
      Sets the panel's opaque state.
      Parameters:
      b - true for opaque, false for non-opaque
      Since:
      1.1
      See Also:
    • isLeftToRight

      public final boolean isLeftToRight()
      Returns whether this builder fills the form left-to-right or right-to-left. The initial value of this property is set during the builder construction from the layout container's componentOrientation property.
      Returns:
      true indicates left-to-right, false indicates right-to-left
      See Also:
    • setLeftToRight

      public final void setLeftToRight(boolean b)
      Sets the form fill direction to left-to-right or right-to-left. The initial value of this property is set during the builder construction from the layout container's componentOrientation property.
      Parameters:
      b - true indicates left-to-right, false right-to-left
      See Also:
    • nextColumn

      protected final void nextColumn()
      Moves to the next column, does the same as #nextColumn(1).
    • nextColumn

      private void nextColumn(int columns)
      Moves to the next column.
      Parameters:
      columns - number of columns to move
    • getColumn

      protected final int getColumn()
    • getRow

      protected final int getRow()
      Returns the cursor's row.
      Returns:
      the cursor's row
    • nextRow

      protected final void nextRow()
      Increases the row by one; does the same as #nextRow(1).
    • nextRow

      private void nextRow(int rows)
      Increases the row by the specified rows.
      Parameters:
      rows - number of rows to move
    • appendColumn

      protected final void appendColumn(ColumnSpec columnSpec)
      Appends the given column specification to the builder's layout.
      Parameters:
      columnSpec - the column specification object to append
    • appendGlueColumn

      protected final void appendGlueColumn()
      Appends a glue column.
      See Also:
    • appendRelatedComponentsGapColumn

      protected final void appendRelatedComponentsGapColumn()
      Appends a column that is the default gap for related components.
      See Also:
    • appendUnrelatedComponentsGapColumn

      protected final void appendUnrelatedComponentsGapColumn()
      Appends a column that is the default gap for unrelated components.
      See Also:
    • appendRow

      protected final void appendRow(RowSpec rowSpec)
      Appends the given row specification to the builder's layout.
      Parameters:
      rowSpec - the row specification object to append
    • appendGlueRow

      protected final void appendGlueRow()
      Appends a glue row.
      See Also:
    • appendRelatedComponentsGapRow

      protected final void appendRelatedComponentsGapRow()
      Appends a row that is the default gap for related components.
      See Also:
    • appendUnrelatedComponentsGapRow

      protected final void appendUnrelatedComponentsGapRow()
      Appends a row that is the default gap for unrelated components.
      See Also:
    • add

      protected final Component add(Component component)
      Adds a component to the container using the default cell constraints. Note that when building from left to right, this method won't adjust the cell constraints if the column span is larger than 1.
      Parameters:
      component - the component to add
      Returns:
      the added component
    • addButton

      protected abstract AbstractButtonPanelBuilder addButton(JComponent button)
    • addButton

      protected AbstractButtonPanelBuilder addButton(JComponent... buttons)
      Adds one or many sequences of related buttons. A new sequence starts when a button is null. The next sequence is separated by an unrelated gap. Each button has the minimum width as specified by LayoutStyle.getDefaultButtonWidth(). The gap width between the buttons is LayoutStyle.getRelatedComponentsPadX().

      Although JButtons are expected, general JComponents are accepted to allow custom button component types.

      Examples:

       builder.addButtons(newButton, editButton, deleteButton);
       builder.addButtons(newButton, editButton, deleteButton, null, printButton);
       
      Parameters:
      buttons - the buttons to add
      Returns:
      this builder
      Throws:
      NullPointerException - if buttons is null
      IllegalArgumentException - if buttons is empty
      See Also:
    • addButton

      protected AbstractButtonPanelBuilder addButton(Action... actions)
      Constructs an array of JButtons from the given Action array, and adds them as a sequence of related buttons separated by a default gap.
      Parameters:
      actions - an array of buttons to add
    • addRelatedGap

      protected abstract AbstractButtonPanelBuilder addRelatedGap()
      Adds the standard gap for related components.
    • addUnrelatedGap

      protected abstract AbstractButtonPanelBuilder addUnrelatedGap()
      Adds the standard gap for unrelated components.
    • createButton

      protected JButton createButton(Action action)
      Creates and returns a button that is bound to the given Action. This is a hook that allows to return customized buttons. For example, the JGoodies JGButton configures the accessible name and accessible description from Actions that provide these information.

      This default implementation delegates the button creation to this builder's component factory, see ComponentFactory.createButton(Action)).

      Parameters:
      action - provides bound visual properties for the button
      Returns:
      the created button
      Since:
      1.4
    • getColumnIncrementSign

      private int getColumnIncrementSign()
      Returns the sign (-1 or 1) used to increment the cursor's column when moving to the next column.
      Returns:
      -1 for right-to-left, 1 for left-to-right