Class PanelProperty

java.lang.Object
ca.corbett.extras.properties.AbstractProperty
ca.corbett.extras.properties.PanelProperty

public class PanelProperty extends AbstractProperty
This property wraps an empty PanelField and allows you to add subfields dynamically to it when the property's FormField is created.

Example usage:

 // Create a PanelProperty:
 PanelProperty panelProp = new PanelProperty("propId", new BorderLayout());

 // Register a FormFieldGenerationListener to populate it with something:
 panelProp.addFormFieldGenerationListener((prop, formField) -> {
   PanelField panelField = (PanelField) formField;
   panelField.setShouldExpand(true); // use the width of the parent form panel if you wish
   panelField.getPanel().setBorder(BorderFactory.createLoweredBevelBorder()); // add border if you wish
   FormPanel subForm = new FormPanel();
   subForm.add(new LabelField("Additional help text goes here."));
   subForm.add(new LabelField("You can add whatever static fields you like."));
   subForm.add(new LabelField("Images, help text, whatever."));
   subForm.add(new LabelField("Just be aware that nothing here gets saved to properties."));
   panelField.getPanel().add(subForm, BorderLayout.CENTER);
 });

 // Now add panelProp to your application properties with the rest of your properties.
 // It will get rendered on the application properties dialog automatically!
 
Since:
swing-extras 2.6
Author:
scorbo2
  • Constructor Details

    • PanelProperty

      public PanelProperty(String id)
    • PanelProperty

      public PanelProperty(String id, LayoutManager layoutManager)
  • Method Details

    • isAllowsUserInput

      public boolean isAllowsUserInput()
      Most properties generate FormField instances that allow user input, but we do not:
      Overrides:
      isAllowsUserInput in class AbstractProperty
      Returns:
      false, to indicate that we are effectively read-only.
    • getLayoutManager

      public LayoutManager getLayoutManager()
    • setLayoutManager

      public PanelProperty setLayoutManager(LayoutManager layoutManager)
    • saveToProps

      public void saveToProps(Properties props)
      Description copied from class: AbstractProperty
      Saves the current value(s) of this property to the given Properties instance.
      Specified by:
      saveToProps in class AbstractProperty
      Parameters:
      props - Any Properties instance which will receive the value(s) of this property.
    • loadFromProps

      public void loadFromProps(Properties props)
      Description copied from class: AbstractProperty
      Loads the value(s) for this property from the given Properties instance, overwriting any current value. The current value of this property will be used as a default value in the event that this property does not exist in the given Properties instance.
      Specified by:
      loadFromProps in class AbstractProperty
      Parameters:
      props - Any Properties instance which contains value(s) for this property.
    • generateFormFieldImpl

      protected FormField generateFormFieldImpl()
      Description copied from class: AbstractProperty
      Descendant classes must implement this method to generate a FormField associated with this property. The generateFormField() method in this class will call this abstract method to create the FormField, which will then be augmented with our fully qualified name, read-only state, help text, and extra attributes.
      Specified by:
      generateFormFieldImpl in class AbstractProperty
      Returns:
      A FormField associated with this property.
    • loadFromFormField

      public void loadFromFormField(FormField field)
      Description copied from class: AbstractProperty
      Populates this Property's value(s) from the given form field, assuming the field is of the correct type.
      Specified by:
      loadFromFormField in class AbstractProperty
      Parameters:
      field - The FormField containing a value for this property.