Class I15dPanelBuilder

  • Direct Known Subclasses:
    DefaultFormBuilder

    public class I15dPanelBuilder
    extends PanelBuilder
    A general purpose panel builder 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".

    Since:
    1.0.3
    Version:
    $Revision$
    Author:
    Karsten Lentzsch
    See Also:
    ResourceBundle
    • Constructor Detail

      • I15dPanelBuilder

        public I15dPanelBuilder​(FormLayout layout,
                                java.util.ResourceBundle bundle)
        Constructs an instance of I15dPanelBuilder for the given layout. Uses an instance of JPanel as layout container.
        Parameters:
        layout - the form layout used to layout the container
        bundle - the resource bundle used to lookup i15d strings
      • I15dPanelBuilder

        public I15dPanelBuilder​(FormLayout layout,
                                java.util.ResourceBundle bundle,
                                javax.swing.JPanel panel)
        Constructs an instance of I15dPanelBuilder for the given FormLayout and layout container.
        Parameters:
        layout - the FormLayout used to layout the container
        bundle - the ResourceBundle used to lookup i15d strings
        panel - the layout container
      • I15dPanelBuilder

        @Deprecated
        public I15dPanelBuilder​(javax.swing.JPanel panel,
                                FormLayout layout,
                                java.util.ResourceBundle bundle)
        Constructs an instance of I15dPanelBuilder for the given FormLayout and layout container.
        Parameters:
        panel - the layout container
        bundle - the ResourceBundle used to lookup i15d strings
        layout - the FormLayout used to layout the container
    • Method Detail

      • 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.add("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.add("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)
      • 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
      • add15dTitle

        public final javax.swing.JLabel add15dTitle​(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 java.lang.String getI15dString​(java.lang.String resourceKey)
        Looks up and returns the internationalized (i15d) string for the given resource key from the ResourceBundle.
        Parameters:
        resourceKey - the key to look for in the resource bundle
        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