diff options
author | Aleksi Hietanen <aleksi@vaadin.com> | 2016-08-25 19:06:30 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2016-08-26 08:23:40 +0000 |
commit | 0c8f57d60aba5f4dbad10cf818ae98dc9cb8d47a (patch) | |
tree | 1746dcf20199bac3dedf462dbacb876ea9acedf4 /server/src/main | |
parent | 4a6a632b1f57a1ddbb437036cb5d17f98f827b47 (diff) | |
download | vaadin-framework-0c8f57d60aba5f4dbad10cf818ae98dc9cb8d47a.tar.gz vaadin-framework-0c8f57d60aba5f4dbad10cf818ae98dc9cb8d47a.zip |
Implement new ProgressBar
Change-Id: Ie5c4b0f4d9bc65e484f08832343ba97fff61a9b6
Diffstat (limited to 'server/src/main')
-rw-r--r-- | server/src/main/java/com/vaadin/ui/ProgressBar.java | 123 |
1 files changed, 123 insertions, 0 deletions
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. + * <p> + * 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 <code>float</code> + * 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 <code>float</code> + * 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 + * <code>true</code> to set to indeterminate mode; otherwise + * <code>false</code> + */ + 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 <code>true</code> if set to indeterminate mode; otherwise + * <code>false</code> + */ + 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); + } +} |