|  | /* | 
|  | * 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); | 
|  | } | 
|  | } |