aboutsummaryrefslogtreecommitdiffstats
path: root/compatibility-server/src
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2016-08-22 13:24:19 +0300
committerArtur Signell <artur@vaadin.com>2016-08-22 13:06:44 +0000
commita6873053f005c195c5e43211761c5f936be14a4e (patch)
tree2e29f966b48d592402f0e20b5a87330a201bb841 /compatibility-server/src
parentc6b44ac8adc9b2ffd6290c98643a633f405dd6c6 (diff)
downloadvaadin-framework-a6873053f005c195c5e43211761c5f936be14a4e.tar.gz
vaadin-framework-a6873053f005c195c5e43211761c5f936be14a4e.zip
Move ProgressBar/ProgressIndicator to compatibility package
Change-Id: I9d8ef17fc4bd903ad6c4e258b800b72029e507fd
Diffstat (limited to 'compatibility-server/src')
-rw-r--r--compatibility-server/src/main/java/com/vaadin/v7/ui/ProgressBar.java187
-rw-r--r--compatibility-server/src/main/java/com/vaadin/v7/ui/ProgressIndicator.java107
-rw-r--r--compatibility-server/src/test/java/com/vaadin/v7/tests/server/component/progressbar/ProgressBarDeclarativeTest.java74
3 files changed, 368 insertions, 0 deletions
diff --git a/compatibility-server/src/main/java/com/vaadin/v7/ui/ProgressBar.java b/compatibility-server/src/main/java/com/vaadin/v7/ui/ProgressBar.java
new file mode 100644
index 0000000000..444724fcf8
--- /dev/null
+++ b/compatibility-server/src/main/java/com/vaadin/v7/ui/ProgressBar.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright 2000-2016 Vaadin Ltd.
+ *
+ * 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.vaadin.v7.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;
+import com.vaadin.v7.data.Property;
+import com.vaadin.v7.ui.AbstractField;
+
+/**
+ * Shows the current progress of a long running task.
+ * <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 7.1
+ * @author Vaadin Ltd
+ */
+public class ProgressBar extends AbstractField<Float>
+ implements Property.Viewer, Property.ValueChangeListener {
+
+ 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));
+ }
+
+ /**
+ * Creates a new progress bar bound to the given data source.
+ *
+ * @param dataSource
+ * the property to bind this progress bar to
+ */
+ public ProgressBar(Property<?> dataSource) {
+ setPropertyDataSource(dataSource);
+ }
+
+ @Override
+ public void beforeClientResponse(boolean initial) {
+ super.beforeClientResponse(initial);
+
+ // Update value in state even if the property hasn't fired any event
+ getState().state = getValue();
+ }
+
+ /**
+ * 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
+ */
+ @Override
+ public Float getValue() {
+ return super.getValue();
+ }
+
+ /**
+ * 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
+ */
+ @Override
+ public void setValue(Float newValue) {
+ super.setValue(newValue);
+ }
+
+ @Override
+ public Class<Float> getType() {
+ return Float.class;
+ }
+
+ @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;
+ }
+
+ /*
+ * Overridden to keep the shared state in sync with the LegacyAbstractField
+ * internal value. Should be removed once LegacyAbstractField is refactored
+ * to use shared state.
+ *
+ * See tickets #10921 and #11064.
+ */
+ @Override
+ protected void setInternalValue(Float newValue) {
+ super.setInternalValue(newValue);
+ if (newValue == null) {
+ newValue = Float.valueOf(0);
+ }
+ getState().state = newValue;
+ }
+
+ @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), false, true);
+ }
+ }
+
+ @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);
+ }
+
+ @Override
+ public void clear() {
+ setValue(DEFAULT_VALUE);
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return super.isEmpty() || getValue() == DEFAULT_VALUE;
+
+ }
+}
diff --git a/compatibility-server/src/main/java/com/vaadin/v7/ui/ProgressIndicator.java b/compatibility-server/src/main/java/com/vaadin/v7/ui/ProgressIndicator.java
new file mode 100644
index 0000000000..8a969f96c3
--- /dev/null
+++ b/compatibility-server/src/main/java/com/vaadin/v7/ui/ProgressIndicator.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2000-2016 Vaadin Ltd.
+ *
+ * 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.vaadin.v7.ui;
+
+import com.vaadin.shared.communication.PushMode;
+import com.vaadin.shared.ui.progressindicator.ProgressIndicatorServerRpc;
+import com.vaadin.shared.ui.progressindicator.ProgressIndicatorState;
+import com.vaadin.ui.UI;
+import com.vaadin.v7.data.Property;
+
+/**
+ * A {@link ProgressBar} which polls the server for updates.
+ * <p>
+ * Polling in this way is generally not recommended since there is no
+ * centralized management of when messages are sent to the server. Furthermore,
+ * polling might not be needed at all if {@link UI#setPushMode(PushMode)} or
+ * {@link UI#setPollInterval(int)} is used.
+ *
+ * @author Vaadin Ltd.
+ * @since 4
+ * @deprecated as of 7.1, use {@link ProgressBar} combined with
+ * {@link UI#setPushMode(PushMode)} or
+ * {@link UI#setPollInterval(int)} instead.
+ */
+@Deprecated
+@SuppressWarnings("serial")
+public class ProgressIndicator extends ProgressBar {
+
+ private ProgressIndicatorServerRpc rpc = new ProgressIndicatorServerRpc() {
+
+ @Override
+ public void poll() {
+ // Nothing to do.
+ }
+ };
+
+ /**
+ * Creates an a new ProgressIndicator.
+ */
+ public ProgressIndicator() {
+ this(0.0f);
+ }
+
+ /**
+ * Creates a new instance of ProgressIndicator with given state.
+ *
+ * @param value
+ */
+ public ProgressIndicator(float value) {
+ super(value);
+ registerRpc(rpc);
+ }
+
+ /**
+ * Creates a new instance of ProgressIndicator with state read from the
+ * given datasource.
+ *
+ * @param contentSource
+ */
+ public ProgressIndicator(Property contentSource) {
+ super(contentSource);
+ registerRpc(rpc);
+ }
+
+ @Override
+ protected ProgressIndicatorState getState() {
+ return (ProgressIndicatorState) super.getState();
+ }
+
+ @Override
+ protected ProgressIndicatorState getState(boolean markAsDirty) {
+ return (ProgressIndicatorState) super.getState(markAsDirty);
+ }
+
+ /**
+ * Sets the interval that component checks for progress.
+ *
+ * @param pollingInterval
+ * the interval in milliseconds.
+ */
+ public void setPollingInterval(int pollingInterval) {
+ getState().pollingInterval = pollingInterval;
+ }
+
+ /**
+ * Gets the interval that component checks for progress.
+ *
+ * @return the interval in milliseconds.
+ */
+ public int getPollingInterval() {
+ return getState(false).pollingInterval;
+ }
+}
diff --git a/compatibility-server/src/test/java/com/vaadin/v7/tests/server/component/progressbar/ProgressBarDeclarativeTest.java b/compatibility-server/src/test/java/com/vaadin/v7/tests/server/component/progressbar/ProgressBarDeclarativeTest.java
new file mode 100644
index 0000000000..6d551561af
--- /dev/null
+++ b/compatibility-server/src/test/java/com/vaadin/v7/tests/server/component/progressbar/ProgressBarDeclarativeTest.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2000-2016 Vaadin Ltd.
+ *
+ * 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.vaadin.v7.tests.server.component.progressbar;
+
+import org.junit.Test;
+
+import com.vaadin.tests.design.DeclarativeTestBase;
+import com.vaadin.v7.ui.ProgressBar;
+
+/**
+ * Test cases for reading the properties of selection components.
+ *
+ * @author Vaadin Ltd
+ */
+public class ProgressBarDeclarativeTest
+ extends DeclarativeTestBase<ProgressBar> {
+
+ public String getBasicDesign() {
+ return "<vaadin7-progress-bar value=0.5 indeterminate>";
+ }
+
+ public ProgressBar getBasicExpected() {
+ ProgressBar ns = new ProgressBar();
+ ns.setIndeterminate(true);
+ ns.setValue(0.5f);
+ return ns;
+ }
+
+ @Test
+ public void testReadBasic() {
+ testRead(getBasicDesign(), getBasicExpected());
+ }
+
+ @Test
+ public void testWriteBasic() {
+ testWrite(stripOptionTags(getBasicDesign()), getBasicExpected());
+ }
+
+ @Test
+ public void testReadEmpty() {
+ testRead("<vaadin7-progress-bar>", new ProgressBar());
+ }
+
+ @Test
+ public void testWriteEmpty() {
+ testWrite("<vaadin7-progress-bar>", new ProgressBar());
+ }
+
+ @Test
+ public void testReadOnlyValue() {
+ String design = "<vaadin7-progress-bar readonly value=0.5 indeterminate>";
+ ProgressBar progressBar = new ProgressBar();
+ progressBar.setIndeterminate(true);
+ progressBar.setValue(0.5f);
+ progressBar.setReadOnly(true);
+
+ testRead(design, progressBar);
+ testWrite(design, progressBar);
+ }
+
+}