| /* | 
 |  * Copyright 2006 Google Inc. | 
 |  *  | 
 |  * Licensed under the Apache License, Version 2.0 (the "License"); you may not | 
 |  * use this file except in compliance with the License. You may obtain a copy of | 
 |  * the License at | 
 |  *  | 
 |  * http://www.apache.org/licenses/LICENSE-2.0 | 
 |  *  | 
 |  * Unless required by applicable law or agreed to in writing, software | 
 |  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | 
 |  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | 
 |  * License for the specific language governing permissions and limitations under | 
 |  * the License. | 
 |  */ | 
 | package com.google.gwt.examples; | 
 |  | 
 | import com.google.gwt.core.client.EntryPoint; | 
 | import com.google.gwt.event.dom.client.ClickEvent; | 
 | import com.google.gwt.event.dom.client.ClickHandler; | 
 | import com.google.gwt.user.client.ui.CheckBox; | 
 | import com.google.gwt.user.client.ui.Composite; | 
 | import com.google.gwt.user.client.ui.RootPanel; | 
 | import com.google.gwt.user.client.ui.TextBox; | 
 | import com.google.gwt.user.client.ui.VerticalPanel; | 
 |  | 
 | 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); | 
 |   } | 
 | } |