3.8.3. Composite Control

Das Composite Control implementiert die Schnittstelle IControl und bietet ein IComposite als Content Pane zum Hinzufügen von Controls.

Die Klasse CompositeControl ist wie folgt implementiert:

  1  public class CompositeControl extends ControlWrapper implements IControl {
  2  
  3      public CompositeControl(final IContainer parent) {
  4          this(parent, BPF.composite(), null);
  5      }
  6  
  7      public CompositeControl(
  8          final IContainer parent, 
  9          final int index) {
 10          
 11          this(parent, index, BPF.composite(), null);
 12      }
 13  
 14      public CompositeControl(
 15          final IContainer parent, 
 16          final ICompositeDescriptor descriptor) {
 17          
 18          this(parent, descriptor, null);
 19      }
 20  
 21      public CompositeControl(
 22          final IContainer parent, 
 23          final int index, 
 24          final ICompositeDescriptor descriptor) {
 25         
 26          this(parent, index, descriptor, null);
 27      }
 28  
 29      public CompositeControl(
 30          final IContainer parent, 
 31          final Object layoutConstraints) {
 32         
 33          this(parent, BPF.composite(), layoutConstraints);
 34      }
 35  
 36      public CompositeControl(
 37          final IContainer parent, 
 38          final int index, 
 39          final Object layoutConstraints) {
 40          
 41          this(parent, index, BPF.composite(), layoutConstraints);
 42      }
 43  
 44      public CompositeControl(
 45          final IContainer parent, 
 46          final ICompositeDescriptor descriptor, 
 47          final Object layoutConstraints) {
 48         
 49          super(Assert.getParamNotNull(parent, "parent").add(
 50              descriptor, 
 51              layoutConstraints));
 52      }
 53  
 54      public CompositeControl(
 55          final IContainer parent,
 56          final int index,
 57          final ICompositeDescriptor descriptor,
 58          final Object layoutConstraints) {
 59          
 60          super(Assert.getParamNotNull(parent, "parent").add(
 61                  index, 
 62                  descriptor, 
 63                  layoutConstraints));
 64      }
 65  
 66      protected IComposite getComposite() {
 67          return (IComposite) super.getWidget();
 68      }
 69  
 70  }

Das BaseCompositeControlSnipped demonstriert die Verwendung der Klasse Dialog:

  1  public final class BaseCompositeControlSnipped implements IApplication {
  2  
  3      @Override
  4      public void start(final IApplicationLifecycle lifecycle) {
  5  
  6          final IFrame frame = new MyFrame();
  7  
  8          frame.addWindowListener(new WindowAdapter() {
  9              @Override
 10              public void windowClosed() {
 11                  lifecycle.finish();
 12              }
 13          });
 14  
 15          frame.setVisible(true);
 16      }
 17  
 18      private final class MyFrame extends Frame {
 19  
 20          public MyFrame() {
 21              super("Base composite control snipped");
 22  
 23              setMinPackSize(new Dimension(300, 0));
 24  
 25              setLayout(FillLayout.get());
 26  
 27              final MyControl control = new MyControl(this, "growx, growy");
 28              control.setText1("Hello");
 29              control.setText2("World");
 30          }
 31  
 32      }
 33  
 34      private final class MyControl extends CompositeControl {
 35  
 36          private final IInputField<String> field1;
 37          private final IInputField<String> field2;
 38  
 39          public MyControl(final IContainer parent, final Object layoutConstraints) {
 40              super(parent, layoutConstraints);
 41  
 42              final IComposite composite = getComposite();
 43  
 44              composite.setLayout(new MigLayoutDescriptor("wrap", "[][grow]", "[][]"));
 45  
 46              composite.add(BPF.textLabel("Label 1"));
 47              field1 = composite.add(BPF.inputFieldString(), "growx");
 48  
 49              composite.add(BPF.textLabel("Label 2"));
 50              field2 = composite.add(BPF.inputFieldString(), "growx");
 51          }
 52  
 53          public void setText1(final String text) {
 54              field1.setValue(text);
 55          }
 56  
 57          public void setText2(final String text) {
 58              field2.setValue(text);
 59          }
 60  
 61      }
 62  }

Siehe auch PDF Version dieses Dokuments, Jowidgets API Spezifikation