com.google.gwt.demos.sliderbar.client.SliderBarDemo.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gwt.demos.sliderbar.client.SliderBarDemo.java

Source

/*
 * Copyright 2007 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.demos.sliderbar.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.widgetideas.client.ResizableWidgetCollection;
import com.google.gwt.widgetideas.client.SliderBar;
import com.google.gwt.widgetideas.client.SliderBar.LabelFormatter;

/**
 * Entry point classes define <code>onModuleLoad()</code>.
 */
public class SliderBarDemo implements EntryPoint {
    /**
     * A boolean indicating whether or not we should use custom text.
     */
    private boolean useCustomText = true;

    /**
     * The first example at the bottom of the page.
     */
    private SliderBar exampleBar1 = new SliderBar(0.0, 1.0);

    /**
     * The second example at the bottom of the page.
     */
    private SliderBar exampleBar2 = new SliderBar(0.0, 25.0, new LabelFormatter() {
        public String formatLabel(SliderBar slider, double value) {
            return ((char) ('a' + value)) + "";
        }
    });

    /**
     * The main slider bar at the top of the page.
     */
    private SliderBar mainSliderBar = new SliderBar(0.0, 100.0, new LabelFormatter() {
        public String formatLabel(SliderBar slider, double value) {
            if (useCustomText) {
                return (int) value + "s";
            } else {
                return (int) (10 * value) / 10.0 + "";
            }
        }
    });

    /**
     * This is the entry point method.
     */
    public void onModuleLoad() {
        // TextBox to display or set current value
        final TextBox curBox = new TextBox();

        // Setup the slider bars
        mainSliderBar.setStepSize(5.0);
        mainSliderBar.setCurrentValue(50.0);
        mainSliderBar.setNumTicks(10);
        mainSliderBar.setNumLabels(5);
        mainSliderBar.addChangeListener(new ChangeListener() {
            public void onChange(Widget sender) {
                curBox.setText(mainSliderBar.getCurrentValue() + "");
            }
        });
        exampleBar1.setStepSize(0.1);
        exampleBar1.setCurrentValue(0.5);
        exampleBar1.setNumTicks(10);
        exampleBar1.setNumLabels(10);
        exampleBar2.setStepSize(1.0);
        exampleBar2.setCurrentValue(13.0);
        exampleBar2.setNumTicks(25);
        exampleBar2.setNumLabels(25);

        // Place everything in a nice looking grid
        Grid grid = new Grid(9, 3);
        grid.setBorderWidth(1);
        grid.setCellPadding(3);

        // The type of text to display
        final HTML defaultTextLabel = new HTML("custom");

        // Set the current slider position
        curBox.setText("50.0");
        grid.setWidget(0, 1, curBox);
        grid.setHTML(0, 2, "The current value of the knob.");
        grid.setWidget(0, 0, new Button("Set Current Value", new ClickListener() {
            public void onClick(Widget sender) {
                mainSliderBar.setCurrentValue(new Float(curBox.getText()).floatValue());
            }
        }));

        // Set the minimum value
        final TextBox minBox = new TextBox();
        minBox.setText("0.0");
        grid.setWidget(1, 1, minBox);
        grid.setHTML(1, 2, "The lower bounds (minimum) of the range.");
        grid.setWidget(1, 0, new Button("Set Min Value", new ClickListener() {
            public void onClick(Widget sender) {
                mainSliderBar.setMinValue(new Float(minBox.getText()).floatValue());
            }
        }));

        // Set the maximum value
        final TextBox maxBox = new TextBox();
        maxBox.setText("100.0");
        grid.setWidget(2, 1, maxBox);
        grid.setHTML(2, 2, "The upper bounds (maximum) of the range.");
        grid.setWidget(2, 0, new Button("Set Max Value", new ClickListener() {
            public void onClick(Widget sender) {
                mainSliderBar.setMaxValue(new Float(maxBox.getText()).floatValue());
            }
        }));

        // Set the step size
        final TextBox stepSizeBox = new TextBox();
        stepSizeBox.setText("1.0");
        grid.setWidget(3, 1, stepSizeBox);
        grid.setHTML(3, 2, "The increments between each knob position.");
        grid.setWidget(3, 0, new Button("Set Step Size", new ClickListener() {
            public void onClick(Widget sender) {
                mainSliderBar.setStepSize(new Float(stepSizeBox.getText()).floatValue());
            }
        }));

        // Set the number of tick marks
        final TextBox numTicksBox = new TextBox();
        numTicksBox.setText("10");
        grid.setWidget(4, 1, numTicksBox);
        grid.setHTML(4, 2,
                "The vertical black lines along the range of value.  Note that the "
                        + "number of ticks is actually one more than the number you "
                        + "specify, so setting the number of ticks to one will display a "
                        + "tick at each end of the slider.");
        grid.setWidget(4, 0, new Button("Set Num Ticks", new ClickListener() {
            public void onClick(Widget sender) {
                mainSliderBar.setNumTicks(new Integer(numTicksBox.getText()).intValue());
            }
        }));

        // Set the number of labels
        final TextBox numLabelsBox = new TextBox();
        numLabelsBox.setText("5");
        grid.setWidget(5, 1, numLabelsBox);
        grid.setHTML(5, 2, "The labels above the ticks.");
        grid.setWidget(5, 0, new Button("Set Num Labels", new ClickListener() {
            public void onClick(Widget sender) {
                mainSliderBar.setNumLabels(new Integer(numLabelsBox.getText()).intValue());
            }
        }));

        // Create a form to set width of element
        final TextBox widthBox = new TextBox();
        widthBox.setText("50%");
        grid.setWidget(6, 1, widthBox);
        grid.setHTML(6, 2, "Set the width of the slider.  Use this to see how "
                + "resize checking detects the new dimensions and redraws the widget.");
        grid.setWidget(6, 0, new Button("Set Width", new ClickListener() {
            public void onClick(Widget sender) {
                mainSliderBar.setWidth(widthBox.getText());
            }
        }));

        // Add the default text option
        grid.setWidget(7, 1, defaultTextLabel);
        grid.setHTML(7, 2, "Override the format of the labels with a custom" + "format.");
        grid.setWidget(7, 0, new Button("Toggle Custom Text", new ClickListener() {
            public void onClick(Widget sender) {
                if (useCustomText) {
                    defaultTextLabel.setHTML("default");
                    useCustomText = false;
                    mainSliderBar.redraw();
                } else {
                    defaultTextLabel.setHTML("custom");
                    useCustomText = true;
                    mainSliderBar.redraw();
                }
            }
        }));

        // Add static resize timer methods
        final HTML resizeCheckLabel = new HTML("enabled");
        grid.setWidget(8, 1, resizeCheckLabel);
        grid.setHTML(8, 2,
                "When resize checking is enabled, a Timer will "
                        + "periodically check if the Widget's dimensions have changed.  If "
                        + "they change, the widget will be redrawn.");
        grid.setWidget(8, 0, new Button("Toggle Resize Checking", new ClickListener() {
            public void onClick(Widget sender) {
                if (ResizableWidgetCollection.get().isResizeCheckingEnabled()) {
                    ResizableWidgetCollection.get().setResizeCheckingEnabled(false);
                    resizeCheckLabel.setHTML("disabled");

                } else {
                    ResizableWidgetCollection.get().setResizeCheckingEnabled(true);
                    resizeCheckLabel.setHTML("enabled");
                }
            }
        }));

        // Add elements to page
        RootPanel.get().add(mainSliderBar);
        RootPanel.get().add(new HTML("<BR>"));
        RootPanel.get().add(grid);
        RootPanel.get().add(new HTML("<BR>Additional SliderBars:<BR>"));
        RootPanel.get().add(exampleBar1);
        RootPanel.get().add(new HTML("<BR>"));
        RootPanel.get().add(exampleBar2);
    }
}