Class Composite

  • All Implemented Interfaces:
    HasAttachHandlers, HasHandlers, EventListener, HasVisibility, IsRenderable, IsWidget
    Direct Known Subclasses:
    AbstractCellTree, AbstractHasData, AbstractPager, CaptionPanel, DateBox, DatePicker, DatePickerComponent, DisclosurePanel, NotificationMole, ResizeComposite, SuggestBox, TabBar, TabPanel, ValueBoxEditorDecorator, ValueListBox, ValuePicker

    public abstract class Composite
    extends Widget
    implements IsRenderable
    A type of widget that can wrap another widget, hiding the wrapped widget's methods. When added to a panel, a composite behaves exactly as if the widget it wraps had been added.

    The composite is useful for creating a single widget out of an aggregate of multiple other widgets contained in a single panel.

    Example

    public class CompositeExample implements EntryPoint {
    
      /**
       * A composite of a TextBox and a CheckBox that optionally enables it.
       */
      private static class OptionalTextBox extends Composite implements
          ClickHandler {
    
        private TextBox textBox = new TextBox();
        private CheckBox checkBox = new CheckBox();
    
        /**
         * Constructs an OptionalTextBox with the given caption on the check.
         * 
         * @param caption the caption to be displayed with the check box
         */
        public OptionalTextBox(String caption) {
          // Place the check above the text box using a vertical panel.
          VerticalPanel panel = new VerticalPanel();
          panel.add(checkBox);
          panel.add(textBox);
    
          // Set the check box's caption, and check it by default.
          checkBox.setText(caption);
          checkBox.setChecked(true);
          checkBox.addClickHandler(this);
    
          // All composites must call initWidget() in their constructors.
          initWidget(panel);
    
          // Give the overall composite a style name.
          setStyleName("example-OptionalCheckBox");
        }
    
        public void onClick(ClickEvent event) {
          if (event.getSource() == checkBox) {
            // When the check box is clicked, update the text box's enabled state.
            textBox.setEnabled(checkBox.isChecked());
          }
        }
    
        /**
         * Sets the caption associated with the check box.
         * 
         * @param caption the check box's caption
         */
        public void setCaption(String caption) {
          // Note how we use the use composition of the contained widgets to provide
          // only the methods that we want to.
          checkBox.setText(caption);
        }
    
        /**
         * Gets the caption associated with the check box.
         * 
         * @return the check box's caption
         */
        public String getCaption() {
          return checkBox.getText();
        }
      }
    
      public void onModuleLoad() {
        // Create an optional text box and add it to the root panel.
        OptionalTextBox otb = new OptionalTextBox("Check this to enable me");
        RootPanel.get().add(otb);
      }
    }