Java tutorial
/* * 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.progressbar.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.Button; 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.ProgressBar; import com.google.gwt.widgetideas.client.ResizableWidgetCollection; /** * Entry point classes define <code>onModuleLoad()</code>. */ public class ProgressBarDemo 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 ProgressBar exampleBar1 = new ProgressBar(); /** * The second example at the bottom of the page. */ private ProgressBar exampleBar2 = new ProgressBar(); /** * The main progress bar at the top of the page. */ private ProgressBar mainProgressBar = new ProgressBar(0.0, 2100.0, 0.0) { @Override protected String generateText(double curProgress) { if (useCustomText) { if (getPercent() >= 1.0) { return "File Uploaded"; } else { return kb2s(curProgress) + " out of " + kb2s(getMaxProgress()) + "(" + super.generateText(curProgress) + ") uploaded"; } } else { return super.generateText(curProgress); } } /** * Convert kilobytes to a string * * @param kb the number kilobytes * @return a string representation of the filesize */ private String kb2s(double kb) { if (kb > 1000) { return ((int) (kb / 1000 * 10)) / 10.0 + "Mb"; } else { return ((int) kb) + "kb"; } } }; /** * A timer used for simulations. */ private Timer simulationTimer = new Timer() { @Override public void run() { if (mainProgressBar.getPercent() >= 1.0) { cancel(); } else { mainProgressBar.setProgress(mainProgressBar.getProgress() + 123); exampleBar1.setProgress(100 * mainProgressBar.getPercent()); exampleBar2.setProgress(100 * mainProgressBar.getPercent()); } } }; /** * This is the entry point method. */ public void onModuleLoad() { // Setup the progress bars exampleBar2.setTextVisible(false); exampleBar2.addStyleName("gwt-ProgressBar-thin"); // Place everything in a nice looking grid Grid grid = new Grid(7, 3); grid.setBorderWidth(1); grid.setCellPadding(3); // Set the current progress final TextBox curBox = new TextBox(); curBox.setText("0.0"); grid.setWidget(0, 1, curBox); grid.setHTML(0, 2, "The current progress."); grid.setWidget(0, 0, new Button("Set Progress", new ClickListener() { public void onClick(Widget sender) { simulationTimer.cancel(); mainProgressBar.setProgress(new Float(curBox.getText()).floatValue()); } })); // Set the minimum progress final TextBox minBox = new TextBox(); minBox.setText(mainProgressBar.getMinProgress() + ""); grid.setWidget(1, 1, minBox); grid.setHTML(1, 2, "The minimum progress progress."); grid.setWidget(1, 0, new Button("Set Min Progress", new ClickListener() { public void onClick(Widget sender) { simulationTimer.cancel(); mainProgressBar.setMinProgress(new Float(minBox.getText()).floatValue()); } })); // Set the maximum progress final TextBox maxBox = new TextBox(); maxBox.setText(mainProgressBar.getMaxProgress() + ""); grid.setWidget(2, 1, maxBox); grid.setHTML(2, 2, "The maximum progress."); grid.setWidget(2, 0, new Button("Set Max Progress", new ClickListener() { public void onClick(Widget sender) { simulationTimer.cancel(); mainProgressBar.setMaxProgress(new Float(maxBox.getText()).floatValue()); } })); // Show or hide the text final HTML textVisibleLabel = new HTML("visible"); grid.setWidget(3, 1, textVisibleLabel); grid.setHTML(3, 2, "Show or hide the text in the progress bar."); grid.setWidget(3, 0, new Button("Toggle Text", new ClickListener() { public void onClick(Widget sender) { if (mainProgressBar.isTextVisible()) { textVisibleLabel.setHTML("hidden"); mainProgressBar.setTextVisible(false); } else { textVisibleLabel.setHTML("visible"); mainProgressBar.setTextVisible(true); } } })); // Add the default text option final HTML defaultTextLabel = new HTML("custom"); grid.setWidget(4, 1, defaultTextLabel); grid.setHTML(4, 2, "Override the format of the text with a custom" + "format."); grid.setWidget(4, 0, new Button("Toggle Custom Text", new ClickListener() { public void onClick(Widget sender) { if (useCustomText) { defaultTextLabel.setHTML("default"); useCustomText = false; mainProgressBar.setProgress(mainProgressBar.getProgress()); } else { defaultTextLabel.setHTML("custom"); useCustomText = true; mainProgressBar.setProgress(mainProgressBar.getProgress()); } } })); // Add static resize timer methods final HTML resizeCheckLabel = new HTML("enabled"); grid.setWidget(5, 1, resizeCheckLabel); grid.setHTML(5, 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(5, 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"); } } })); // 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 widget. 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) { mainProgressBar.setWidth(widthBox.getText()); } })); // Add all components to the page RootPanel.get().add(mainProgressBar); RootPanel.get().add(new HTML("<BR>")); RootPanel.get().add(grid); RootPanel.get().add(new HTML("<BR>Additional Progress Bars:<BR>")); RootPanel.get().add(exampleBar1); RootPanel.get().add(new HTML("<BR>")); RootPanel.get().add(exampleBar2); // Simulate progress over time simulateProgress(); } /** * Run an example timer that shows a progression of progress over time. */ private void simulateProgress() { simulationTimer.scheduleRepeating(200); } }