diff options
author | Artur Signell <artur@vaadin.com> | 2016-08-22 13:24:19 +0300 |
---|---|---|
committer | Artur Signell <artur@vaadin.com> | 2016-08-22 13:06:44 +0000 |
commit | a6873053f005c195c5e43211761c5f936be14a4e (patch) | |
tree | 2e29f966b48d592402f0e20b5a87330a201bb841 /compatibility-server/src | |
parent | c6b44ac8adc9b2ffd6290c98643a633f405dd6c6 (diff) | |
download | vaadin-framework-a6873053f005c195c5e43211761c5f936be14a4e.tar.gz vaadin-framework-a6873053f005c195c5e43211761c5f936be14a4e.zip |
Move ProgressBar/ProgressIndicator to compatibility package
Change-Id: I9d8ef17fc4bd903ad6c4e258b800b72029e507fd
Diffstat (limited to 'compatibility-server/src')
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); + } + +} |