Class DefaultComponentFactory

  • All Implemented Interfaces:
    ComponentFactory

    public class DefaultComponentFactory
    extends java.lang.Object
    implements ComponentFactory
    A singleton implementation of the ComponentFactory interface that creates UI components as required by the FormBuilder, ListViewBuilder, and other builders.

    The texts used in methods #createLabel(String) and #createTitle(String) 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".

    Version:
    $Revision: 1.21 $
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      javax.swing.JButton createButton​(javax.swing.Action action)
      Creates and returns a button that is bound to the given Action.
      javax.swing.JLabel createHeaderLabel​(java.lang.String markedText)
      Creates and returns a label intended for pane headers that uses a larger font than the control font and a special foreground color.
      javax.swing.JLabel createLabel​(java.lang.String textWithMnemonic)
      Creates and returns a label with an optional mnemonic.
      javax.swing.JLabel createReadOnlyLabel​(java.lang.String textWithMnemonic)
      Creates and returns a label with an optional mnemonic that is intended to label a read-only component.
      javax.swing.JComponent createSeparator​(java.lang.String textWithMnemonic)
      Creates and returns a labeled separator with the label in the left-hand side.
      javax.swing.JComponent createSeparator​(java.lang.String textWithMnemonic, int alignment)
      Creates and returns a labeled separator.
      javax.swing.JComponent createSeparator​(javax.swing.JLabel label)
      Creates and returns a labeled separator.
      javax.swing.JLabel createTitle​(java.lang.String textWithMnemonic)
      Creates and returns a title label that uses the foreground color and font of a TitledBorder.
      static DefaultComponentFactory getInstance()
      Returns the sole instance of this factory class.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DefaultComponentFactory

        public DefaultComponentFactory()
    • Method Detail

      • getInstance

        public static DefaultComponentFactory getInstance()
        Returns the sole instance of this factory class.
        Returns:
        the sole instance of this factory class
      • createLabel

        public javax.swing.JLabel createLabel​(java.lang.String textWithMnemonic)
        Creates and returns a label with an optional mnemonic.

         createLabel("Name");       // No mnemonic
         createLabel("N&ame");      // Mnemonic is 'a'
         createLabel("Save &as");   // Mnemonic is the second 'a'
         createLabel("Look&&Feel"); // No mnemonic, text is Look&Feel
         
        Specified by:
        createLabel in interface ComponentFactory
        Parameters:
        textWithMnemonic - the label's text - may contain an ampersand (&) to mark a mnemonic
        Returns:
        an label with optional mnemonic
      • createReadOnlyLabel

        public javax.swing.JLabel createReadOnlyLabel​(java.lang.String textWithMnemonic)
        Creates and returns a label with an optional mnemonic that is intended to label a read-only component.

         createReadOnlyLabel("Name");       // No mnemonic
         createReadOnlyLabel("N&ame");      // Mnemonic is 'a'
         createReadOnlyLabel("Save &as");   // Mnemonic is the second 'a'
         createReadOnlyLabel("Look&&Feel"); // No mnemonic, text is Look&Feel
         
        Specified by:
        createReadOnlyLabel in interface ComponentFactory
        Parameters:
        textWithMnemonic - the label's text - may contain an ampersand (&) to mark a mnemonic
        Returns:
        an label with optional mnemonic intended for read-only components
        Since:
        1.3
      • createButton

        public javax.swing.JButton createButton​(javax.swing.Action action)
        Creates and returns a button that is bound to the given Action. Useful to return customized buttons, for example, the JGoodies JGButton is bound to some custom Action properties.

        This default implementation just returns a JButton.

        Specified by:
        createButton in interface ComponentFactory
        Parameters:
        action - provides [bound] visual properties for the button
        Returns:
        the created button
        Since:
        1.4
      • createTitle

        public javax.swing.JLabel createTitle​(java.lang.String textWithMnemonic)
        Creates and returns a title label that uses the foreground color and font of a TitledBorder.

         createTitle("Name");       // No mnemonic
         createTitle("N&ame");      // Mnemonic is 'a'
         createTitle("Save &as");   // Mnemonic is the second 'a'
         createTitle("Look&&Feel"); // No mnemonic, text is Look&Feel
         
        Specified by:
        createTitle in interface ComponentFactory
        Parameters:
        textWithMnemonic - the label's text - may contain an ampersand (&) to mark a mnemonic
        Returns:
        an emphasized title label
      • createHeaderLabel

        public javax.swing.JLabel createHeaderLabel​(java.lang.String markedText)
        Description copied from interface: ComponentFactory
        Creates and returns a label intended for pane headers that uses a larger font than the control font and a special foreground color. For example, on the Windows platform this method may use the font, size, and color of the TaskDialog main instruction as described by the MS User Experience Guide.

        If the label text is marked with the mnemonic marker '&', the mnemonic and mnemonic index will be configured. For example if markedText is "&Charge Codes", the text will be set to "Charge Codes", the mnemonic is 'C', and the mnemonic index is 0.

        A simple implementation may just delegate to ComponentFactory.createTitle(String).

        Specified by:
        createHeaderLabel in interface ComponentFactory
        Parameters:
        markedText - the label text with optional mnemonic marker
        Returns:
        a label intended for pane headers
      • createSeparator

        public javax.swing.JComponent createSeparator​(java.lang.String textWithMnemonic)
        Creates and returns a labeled separator with the label in the left-hand side. Useful to separate paragraphs in a panel; often a better choice than a TitledBorder.

         createSeparator("Name");       // No mnemonic
         createSeparator("N&ame");      // Mnemonic is 'a'
         createSeparator("Save &as");   // Mnemonic is the second 'a'
         createSeparator("Look&&Feel"); // No mnemonic, text is Look&Feel
         
        Parameters:
        textWithMnemonic - the label's text - may contain an ampersand (&) to mark a mnemonic
        Returns:
        a title label with separator on the side
      • createSeparator

        public javax.swing.JComponent createSeparator​(java.lang.String textWithMnemonic,
                                                      int alignment)
        Creates and returns a labeled separator. Useful to separate paragraphs in a panel, which is often a better choice than a TitledBorder.

         final int LEFT = SwingConstants.LEFT;
         createSeparator("Name",       LEFT); // No mnemonic
         createSeparator("N&ame",      LEFT); // Mnemonic is 'a'
         createSeparator("Save &as",   LEFT); // Mnemonic is the second 'a'
         createSeparator("Look&&Feel", LEFT); // No mnemonic, text is Look&Feel
         
        Specified by:
        createSeparator in interface ComponentFactory
        Parameters:
        textWithMnemonic - the label's text - may contain an ampersand (&) to mark a mnemonic
        alignment - text alignment, one of SwingConstants.LEFT, SwingConstants.CENTER, SwingConstants.RIGHT
        Returns:
        a separator with title label
      • createSeparator

        public javax.swing.JComponent createSeparator​(javax.swing.JLabel label)
        Creates and returns a labeled separator. Useful to separate paragraphs in a panel, which is often a better choice than a TitledBorder.

        The label's position is determined by the label's horizontal alignment, which must be one of: SwingConstants.LEFT, SwingConstants.CENTER, SwingConstants.RIGHT.

        TODO: Since this method has been marked public in version 1.0.6, we need to precisely describe the semantic of this method.

        TODO: Check if we can relax the constraint for the label alignment and also accept LEADING and TRAILING.

        Parameters:
        label - the title label component
        Returns:
        a separator with title label
        Throws:
        java.lang.NullPointerException - if the label is null
        java.lang.IllegalArgumentException - if the label's horizontal alignment is not one of: SwingConstants.LEFT, SwingConstants.CENTER, SwingConstants.RIGHT.
        Since:
        1.0.6