aboutsummaryrefslogtreecommitdiffstats
path: root/server/src/main
diff options
context:
space:
mode:
authorAleksi Hietanen <aleksi@vaadin.com>2016-08-25 19:06:30 +0300
committerVaadin Code Review <review@vaadin.com>2016-08-26 08:23:40 +0000
commit0c8f57d60aba5f4dbad10cf818ae98dc9cb8d47a (patch)
tree1746dcf20199bac3dedf462dbacb876ea9acedf4 /server/src/main
parent4a6a632b1f57a1ddbb437036cb5d17f98f827b47 (diff)
downloadvaadin-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.java123
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);
+ }
+}