com.jgoodies.forms.builder
Class AbstractI15dPanelBuilder

java.lang.Object
  extended by com.jgoodies.forms.builder.AbstractFormBuilder
      extended by com.jgoodies.forms.builder.PanelBuilder
          extended by com.jgoodies.forms.builder.AbstractI15dPanelBuilder
Direct Known Subclasses:
I15dPanelBuilder

public abstract class AbstractI15dPanelBuilder
extends PanelBuilder

An abstract panel builder class that uses the FormLayout to lay out JPanels. In addition to its superclass PanelBuilder this class provides convenience behavior to map resource keys to their associated internationalized (i15d) strings when adding labels, titles and titled separators.

The localized texts used in methods #addI15dLabel and #addI15dTitle can contain an optional mnemonic marker. The mnemonic and mnemonic index are indicated by a single ampersand (&). For example "&Save", or "Save &as". To use the ampersand itself, duplicate it, for example "Look&&Feel".

For debugging purposes you can automatically set a tooltip for the created labels that show its resource key. In case of an inproper resource localization, the label will show the wrong text, and the tooltip will help you identify the resource key with the broken localization. This feature can be enabled by calling setDebugToolTipsEnabled. If you want to enable it in a deployed application, you can set the system parameter I15dPanelBuilder.debugToolTipsEnabled to "true".

Subclasses must implement the conversion from resource key to the localized string in #getI15dString(String). For example class I15dPanelBuilder gets a ResourceBundle on construction, and requests strings from that bundle.

Since:
1.1
Version:
$Revision: 1.8 $
Author:
Karsten Lentzsch

Constructor Summary
protected AbstractI15dPanelBuilder(FormLayout layout)
          Constructs an AbstractI15dPanelBuilder for the given layout.
protected AbstractI15dPanelBuilder(FormLayout layout, javax.swing.JPanel panel)
          Constructs an AbstractI15dPanelBuilder for the given FormLayout and layout container.
 
Method Summary
 javax.swing.JLabel addI15dLabel(java.lang.String resourceKey, CellConstraints constraints)
          Adds an internationalized (i15d) textual label to the form using the specified constraints.
 javax.swing.JLabel addI15dLabel(java.lang.String resourceKey, CellConstraints labelConstraints, java.awt.Component component, CellConstraints componentConstraints)
          Adds an internationalized (i15d) label and component to the panel using the given cell constraints.
 javax.swing.JLabel addI15dLabel(java.lang.String resourceKey, java.lang.String encodedConstraints)
          Adds an internationalized (i15d) textual label to the form using the specified constraints.
 javax.swing.JLabel addI15dROLabel(java.lang.String resourceKey, CellConstraints constraints)
          Adds an internationalized (i15d) textual label to the form using the specified constraints that is intended to label a read-only component.
 javax.swing.JLabel addI15dROLabel(java.lang.String resourceKey, CellConstraints labelConstraints, java.awt.Component component, CellConstraints componentConstraints)
          Adds an internationalized (i15d) label and component to the panel using the given cell constraints.
 javax.swing.JLabel addI15dROLabel(java.lang.String resourceKey, java.lang.String encodedConstraints)
          Adds an internationalized (i15d) textual label to the form using the specified constraints that is intended to label a read-only component.
 javax.swing.JComponent addI15dSeparator(java.lang.String resourceKey, CellConstraints constraints)
          Adds an internationalized (i15d) titled separator to the form using the specified constraints.
 javax.swing.JComponent addI15dSeparator(java.lang.String resourceKey, java.lang.String encodedConstraints)
          Adds an internationalized (i15d) titled separator to the form using the specified constraints.
 javax.swing.JLabel addI15dTitle(java.lang.String resourceKey, CellConstraints constraints)
          Adds a title to the form using the specified constraints.
 javax.swing.JLabel addI15dTitle(java.lang.String resourceKey, java.lang.String encodedConstraints)
          Adds a title to the form using the specified constraints.
protected abstract  java.lang.String getI15dString(java.lang.String resourceKey)
          Looks up and returns the internationalized (i15d) string for the given resource key from the ResourceMap.
static boolean isDebugToolTipsEnabled()
          Returns whether the debug tool tips are enabled or not.
static void setDebugToolTipsEnabled(boolean b)
          Enables or disables the debug tool tips.
 
Methods inherited from class com.jgoodies.forms.builder.PanelBuilder
add, add, addLabel, addLabel, addLabel, addLabel, addROLabel, addROLabel, addROLabel, addROLabel, addSeparator, addSeparator, addSeparator, addSeparator, addTitle, addTitle, addTitle, getComponentFactory, getLabelForFeatureEnabledDefault, getPanel, isLabelForApplicable, isLabelForFeatureEnabled, setBackground, setBorder, setComponentFactory, setDefaultDialogBorder, setLabelFor, setLabelForFeatureEnabled, setLabelForFeatureEnabledDefault, setOpaque
 
Methods inherited from class com.jgoodies.forms.builder.AbstractFormBuilder
add, add, appendColumn, appendColumn, appendGlueColumn, appendGlueRow, appendLabelComponentsGapColumn, appendParagraphGapRow, appendRelatedComponentsGapColumn, appendRelatedComponentsGapRow, appendRow, appendRow, appendUnrelatedComponentsGapColumn, appendUnrelatedComponentsGapRow, cellConstraints, createLeftAdjustedConstraints, getColumn, getColumnCount, getColumnIncrementSign, getContainer, getLayout, getLeadingColumn, getRow, getRowCount, isLeftToRight, nextColumn, nextColumn, nextLine, nextLine, nextRow, nextRow, setAlignment, setBounds, setColumn, setColumnSpan, setExtent, setHAlignment, setLeftToRight, setOrigin, setRow, setRowSpan, setVAlignment
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractI15dPanelBuilder

protected AbstractI15dPanelBuilder(FormLayout layout)
Constructs an AbstractI15dPanelBuilder for the given layout. Uses an instance of JPanel as layout container.

Parameters:
layout - the FormLayout used to layout the container

AbstractI15dPanelBuilder

protected AbstractI15dPanelBuilder(FormLayout layout,
                                   javax.swing.JPanel panel)
Constructs an AbstractI15dPanelBuilder for the given FormLayout and layout container.

Parameters:
layout - the FormLayout used to layout the container
panel - the layout container
Method Detail

isDebugToolTipsEnabled

public static boolean isDebugToolTipsEnabled()
Returns whether the debug tool tips are enabled or not.

Returns:
true if debug tool tips are enabled, false if disabled

setDebugToolTipsEnabled

public static void setDebugToolTipsEnabled(boolean b)
Enables or disables the debug tool tips.

Parameters:
b - true to enable, false to disable

addI15dLabel

public final javax.swing.JLabel addI15dLabel(java.lang.String resourceKey,
                                             CellConstraints constraints)
Adds an internationalized (i15d) textual label to the form using the specified constraints.

Parameters:
resourceKey - the resource key for the label's text
constraints - the label's cell constraints
Returns:
the added label

addI15dLabel

public final javax.swing.JLabel addI15dLabel(java.lang.String resourceKey,
                                             java.lang.String encodedConstraints)
Adds an internationalized (i15d) textual label to the form using the specified constraints.

Parameters:
resourceKey - the resource key for the label's text
encodedConstraints - a string representation for the constraints
Returns:
the added label

addI15dLabel

public final javax.swing.JLabel addI15dLabel(java.lang.String resourceKey,
                                             CellConstraints labelConstraints,
                                             java.awt.Component component,
                                             CellConstraints componentConstraints)
Adds an internationalized (i15d) label and component to the panel using the given cell constraints. Sets the label as the component label using JLabel.setLabelFor(java.awt.Component).

Note: The CellConstraints objects for the label and the component must be different. Cell constraints are implicitly cloned by the FormLayout when added to the container. However, in this case you may be tempted to reuse a CellConstraints object in the same way as with many other builder methods that require a single CellConstraints parameter. The pitfall is that the methods CellConstraints.xy**(...) just set the coordinates but do not create a new instance. And so the second invocation of xy***(...) overrides the settings performed in the first invocation before the object is cloned by the FormLayout.

Wrong:

 builder.addI15dLabel("name.key",
             cc.xy(1, 7),         // will be modified by the code below
             nameField,
             cc.xy(3, 7)          // sets the single instance to (3, 7)
            );
 
Correct:
 builder.addI15dLabel("name.key",
             cc.xy(1, 7).clone(), // cloned before the next modification
             nameField,
             cc.xy(3, 7)          // sets this instance to (3, 7)
            );
 

Parameters:
resourceKey - the resource key for the label
labelConstraints - the label's cell constraints
component - the component to add
componentConstraints - the component's cell constraints
Returns:
the added label
Throws:
java.lang.IllegalArgumentException - if the same cell constraints instance is used for the label and the component
See Also:
JLabel.setLabelFor(java.awt.Component)

addI15dROLabel

public final javax.swing.JLabel addI15dROLabel(java.lang.String resourceKey,
                                               CellConstraints constraints)
Adds an internationalized (i15d) textual label to the form using the specified constraints that is intended to label a read-only component.

Parameters:
resourceKey - the resource key for the label's text
constraints - the label's cell constraints
Returns:
the added label
Since:
1.3

addI15dROLabel

public final javax.swing.JLabel addI15dROLabel(java.lang.String resourceKey,
                                               java.lang.String encodedConstraints)
Adds an internationalized (i15d) textual label to the form using the specified constraints that is intended to label a read-only component.

Parameters:
resourceKey - the resource key for the label's text
encodedConstraints - a string representation for the constraints
Returns:
the added label
Since:
1.3

addI15dROLabel

public final javax.swing.JLabel addI15dROLabel(java.lang.String resourceKey,
                                               CellConstraints labelConstraints,
                                               java.awt.Component component,
                                               CellConstraints componentConstraints)
Adds an internationalized (i15d) label and component to the panel using the given cell constraints. Intended for read-only components. Sets the label as the component label using JLabel.setLabelFor(java.awt.Component).

Note: The CellConstraints objects for the label and the component must be different. Cell constraints are implicitly cloned by the FormLayout when added to the container. However, in this case you may be tempted to reuse a CellConstraints object in the same way as with many other builder methods that require a single CellConstraints parameter. The pitfall is that the methods CellConstraints.xy**(...) just set the coordinates but do not create a new instance. And so the second invocation of xy***(...) overrides the settings performed in the first invocation before the object is cloned by the FormLayout.

Wrong:

 builder.addI15dROLabel("name.key",
             cc.xy(1, 7),         // will be modified by the code below
             nameField,
             cc.xy(3, 7)          // sets the single instance to (3, 7)
            );
 
Correct:
 builder.addI15dROLabel("name.key",
             cc.xy(1, 7).clone(), // cloned before the next modification
             nameField,
             cc.xy(3, 7)          // sets this instance to (3, 7)
            );
 
Better:
 builder.addI15dROLabel("name.key",
             CC.xy(1, 7)          // creates a CellConstraints object
             nameField,
             CC.xy(3, 7)          // creates another CellConstraints object
            );
 

Parameters:
resourceKey - the resource key for the label
labelConstraints - the label's cell constraints
component - the component to add
componentConstraints - the component's cell constraints
Returns:
the added label
Throws:
java.lang.IllegalArgumentException - if the same cell constraints instance is used for the label and the component
Since:
1.3
See Also:
JLabel.setLabelFor(java.awt.Component)

addI15dSeparator

public final javax.swing.JComponent addI15dSeparator(java.lang.String resourceKey,
                                                     CellConstraints constraints)
Adds an internationalized (i15d) titled separator to the form using the specified constraints.

Parameters:
resourceKey - the resource key for the separator title
constraints - the separator's cell constraints
Returns:
the added titled separator

addI15dSeparator

public final javax.swing.JComponent addI15dSeparator(java.lang.String resourceKey,
                                                     java.lang.String encodedConstraints)
Adds an internationalized (i15d) titled separator to the form using the specified constraints.

Parameters:
resourceKey - the resource key for the separator title
encodedConstraints - a string representation for the constraints
Returns:
the added titled separator

addI15dTitle

public final javax.swing.JLabel addI15dTitle(java.lang.String resourceKey,
                                             CellConstraints constraints)
Adds a title to the form using the specified constraints.

Parameters:
resourceKey - the resource key for the separator title
constraints - the separator's cell constraints
Returns:
the added title label

addI15dTitle

public final javax.swing.JLabel addI15dTitle(java.lang.String resourceKey,
                                             java.lang.String encodedConstraints)
Adds a title to the form using the specified constraints.

Parameters:
resourceKey - the resource key for the separator title
encodedConstraints - a string representation for the constraints
Returns:
the added title label

getI15dString

protected abstract java.lang.String getI15dString(java.lang.String resourceKey)
Looks up and returns the internationalized (i15d) string for the given resource key from the ResourceMap.

Parameters:
resourceKey - the key to look for in the resource map
Returns:
the associated internationalized string, or the resource key itself in case of a missing resource
Throws:
java.lang.IllegalStateException - if no ResourceBundle has been set


Copyright © 2002-2009 JGoodies Karsten Lentzsch. All Rights Reserved.