From 0c8f57d60aba5f4dbad10cf818ae98dc9cb8d47a Mon Sep 17 00:00:00 2001 From: Aleksi Hietanen Date: Thu, 25 Aug 2016 19:06:30 +0300 Subject: Implement new ProgressBar Change-Id: Ie5c4b0f4d9bc65e484f08832343ba97fff61a9b6 --- .../src/main/java/com/vaadin/ui/ProgressBar.java | 123 +++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 server/src/main/java/com/vaadin/ui/ProgressBar.java (limited to 'server/src/main') diff --git a/server/src/main/java/com/vaadin/ui/ProgressBar.java b/server/src/main/java/com/vaadin/ui/ProgressBar.java new file mode 100644 index 0000000000..f06170f677 --- /dev/null +++ b/server/src/main/java/com/vaadin/ui/ProgressBar.java @@ -0,0 +1,123 @@ +package com.vaadin.ui; + +import org.jsoup.nodes.Element; + +import com.vaadin.shared.ui.progressindicator.ProgressBarState; +import com.vaadin.ui.declarative.DesignAttributeHandler; +import com.vaadin.ui.declarative.DesignContext; + +/** + * A component for displaying progress. + *

+ * The default mode is to show the current progress internally represented by a + * floating point value between 0 and 1 (inclusive). The progress bar can also + * be in an indeterminate mode showing an animation indicating that the task is + * running but without providing any information about the current progress. + * + * @since 8.0 + * @author Vaadin Ltd + */ +public class ProgressBar extends AbstractComponent { + + private static final float DEFAULT_VALUE = 0f; + + /** + * Creates a new progress bar initially set to 0% progress. + */ + public ProgressBar() { + this(DEFAULT_VALUE); + } + + /** + * Creates a new progress bar with the given initial value. + * + * @param progress + * the initial progress value + */ + public ProgressBar(float progress) { + setValue(Float.valueOf(progress)); + } + + /** + * Gets the value of this progress bar. The value is a float + * between 0 and 1 where 0 represents no progress at all and 1 represents + * fully completed. + * + * @return the current progress value + */ + public float getValue() { + return getState(false).state; + } + + /** + * Sets the value of this progress bar. The value is a float + * between 0 and 1 where 0 represents no progress at all and 1 represents + * fully completed. + * + * @param newValue + * the current progress value + */ + public void setValue(float newValue) { + getState().state = newValue; + } + + @Override + protected ProgressBarState getState() { + return (ProgressBarState) super.getState(); + } + + @Override + protected ProgressBarState getState(boolean markAsDirty) { + return (ProgressBarState) super.getState(markAsDirty); + } + + /** + * Sets whether or not this progress indicator is indeterminate. In + * indeterminate mode there is an animation indicating that the task is + * running but without providing any information about the current progress. + * + * @param indeterminate + * true to set to indeterminate mode; otherwise + * false + */ + public void setIndeterminate(boolean indeterminate) { + getState().indeterminate = indeterminate; + } + + /** + * Gets whether or not this progress indicator is indeterminate. In + * indeterminate mode there is an animation indicating that the task is + * running but without providing any information about the current progress. + * + * @return true if set to indeterminate mode; otherwise + * false + */ + public boolean isIndeterminate() { + return getState(false).indeterminate; + } + + @Override + public void readDesign(Element design, DesignContext designContext) { + super.readDesign(design, designContext); + if (design.hasAttr("value") && !design.attr("value").isEmpty()) { + setValue(DesignAttributeHandler.readAttribute("value", + design.attributes(), Float.class)); + } + } + + @Override + public void writeDesign(Element design, DesignContext designContext) { + super.writeDesign(design, designContext); + Float defaultValue = ((ProgressBar) designContext + .getDefaultInstance(this)).getValue(); + DesignAttributeHandler.writeAttribute("value", design.attributes(), + getValue(), defaultValue, Float.class); + } + + /** + * Resets the value of this component, effectively displaying zero progress. + */ + public void reset() { + setValue(DEFAULT_VALUE); + } +} -- cgit v1.2.3