aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/ui/ProgressIndicator.java
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2007-01-02 12:19:11 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2007-01-02 12:19:11 +0000
commit1f8bea7f7fac8ea22d618a36a51cfd9df24bc244 (patch)
tree1efbb16747bd4d513b8d999e0b55c9dac322d19b /src/com/itmill/toolkit/ui/ProgressIndicator.java
parent7b7d3870a5e186d7a029ede345e264d1ee2580fd (diff)
downloadvaadin-framework-1f8bea7f7fac8ea22d618a36a51cfd9df24bc244.tar.gz
vaadin-framework-1f8bea7f7fac8ea22d618a36a51cfd9df24bc244.zip
new component ProgressIndicator and ajax version of chat that uses it
svn changeset:198/svn branch:toolkit
Diffstat (limited to 'src/com/itmill/toolkit/ui/ProgressIndicator.java')
-rw-r--r--src/com/itmill/toolkit/ui/ProgressIndicator.java210
1 files changed, 210 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/ui/ProgressIndicator.java b/src/com/itmill/toolkit/ui/ProgressIndicator.java
new file mode 100644
index 0000000000..22e85c5b15
--- /dev/null
+++ b/src/com/itmill/toolkit/ui/ProgressIndicator.java
@@ -0,0 +1,210 @@
+/* *************************************************************************
+
+ IT Mill Toolkit
+
+ Development of Browser User Intarfaces Made Easy
+
+ Copyright (C) 2000-2006 IT Mill Ltd
+
+ *************************************************************************
+
+ This product is distributed under commercial license that can be found
+ from the product package on license/license.txt. Use of this product might
+ require purchasing a commercial license from IT Mill Ltd. For guidelines
+ on usage, see license/licensing-guidelines.html
+
+ *************************************************************************
+
+ For more information, contact:
+
+ IT Mill Ltd phone: +358 2 4802 7180
+ Ruukinkatu 2-4 fax: +358 2 4802 7181
+ 20540, Turku email: info@itmill.com
+ Finland company www: www.itmill.com
+
+ Primary source for information and releases: www.itmill.com
+
+ ********************************************************************** */
+
+package com.itmill.toolkit.ui;
+
+import com.itmill.toolkit.data.Property;
+import com.itmill.toolkit.data.util.ObjectProperty;
+import com.itmill.toolkit.terminal.PaintException;
+import com.itmill.toolkit.terminal.PaintTarget;
+
+/**
+ * ProgressIndicator is component that shows user state of a prosess
+ * (like long computing or file upload)
+ *
+ * ProgressIndicator has two mainmodes. One for indeterminete prosesses and
+ * other (default) for prosesses which progress can be measured
+ *
+ * May view an other property that indicates progress 0...1
+ *
+ * @author IT Mill Ltd.
+ * @version @VERSION@
+ * @since 29122006
+ */
+public class ProgressIndicator
+ extends AbstractField
+ implements
+ Property,
+ Property.Viewer,
+ Property.ValueChangeListener {
+
+ /** Content mode, where the label contains only plain text. The getValue()
+ * result is coded to XML when painting.
+ */
+ public static final int CONTENT_TEXT = 0;
+
+ /** Content mode, where the label contains preformatted text.
+ */
+ public static final int CONTENT_PREFORMATTED = 1;
+
+ private boolean indeterminate;
+
+ private Property dataSource;
+
+ private int pollingInterval;
+
+ /** Creates an a new ProgressIndicator. */
+ public ProgressIndicator() {
+ setPropertyDataSource(new ObjectProperty(0, Float.class));
+ }
+
+ /** Creates a new instance of ProgressIndicator with given state. */
+ public ProgressIndicator(Float value) {
+ setPropertyDataSource(new ObjectProperty(value, Float.class));
+ }
+
+ /** Creates a new instance of ProgressIndicator with stae read from given datasource. */
+ public ProgressIndicator(Property contentSource) {
+ setPropertyDataSource(contentSource);
+ }
+
+ /** Get component UIDL tag.
+ * @return Component UIDL tag as string.
+ */
+ public String getTag() {
+ return "progressindicator";
+ }
+
+ /** Set the component to read-only.
+ * Readonly is not used in ProgressIndicator.
+ * @param readOnly True to enable read-only mode, False to disable it
+ */
+ public void setReadOnly(boolean readOnly) {
+ if (dataSource == null)
+ throw new IllegalStateException("Datasource must be se");
+ dataSource.setReadOnly(readOnly);
+ }
+
+ /** Is the component read-only ?
+ * Readonly is not used in ProgressIndicator - this returns allways false.
+ * @return True iff the component is in read only mode
+ */
+ public boolean isReadOnly() {
+ if (dataSource == null)
+ throw new IllegalStateException("Datasource must be se");
+ return dataSource.isReadOnly();
+ }
+
+ /** Paint the content of this component.
+ * @param event PaintEvent.
+ */
+ public void paintContent(PaintTarget target) throws PaintException {
+ target.addAttribute("indeterminate", indeterminate);
+ target.addAttribute("pollinginterval", pollingInterval);
+ target.addAttribute("state", this.getValue().toString());
+ }
+
+ /** Get the value of the ProgressIndicator.
+ * Value of the ProgressIndicator is Float between 0 and 1
+ * @return Value of the ProgressIndicator
+ */
+ public Object getValue() {
+ if (dataSource == null)
+ throw new IllegalStateException("Datasource must be se");
+ return dataSource.getValue();
+ }
+
+ /** Set the value of the ProgressIndicator.
+ * Value of the ProgressIndicator is the Float between 0 and 1
+ * @param newValue New value of the ProgressIndicator
+ */
+ public void setValue(Object newValue) {
+ if (dataSource == null)
+ throw new IllegalStateException("Datasource must be se");
+ this.dataSource.setValue(newValue);
+ }
+
+ public String toString() {
+ if (dataSource == null)
+ throw new IllegalStateException("Datasource must be se");
+ return dataSource.toString();
+ }
+
+ public Class getType() {
+ if (dataSource == null)
+ throw new IllegalStateException("Datasource must be se");
+ return dataSource.getType();
+ }
+
+ /** Get viewing data-source property. */
+ public Property getPropertyDataSource() {
+ return dataSource;
+ }
+
+ /** Set the property as data-source for viewing. */
+ public void setPropertyDataSource(Property newDataSource) {
+ // Stop listening the old data source changes
+ if (dataSource != null
+ && Property.ValueChangeNotifier.class.isAssignableFrom(
+ dataSource.getClass()))
+ ((Property.ValueChangeNotifier) dataSource).removeListener(this);
+
+ // Set the new data source
+ dataSource = newDataSource;
+
+ // Listen the new data source if possible
+ if (dataSource != null
+ && Property.ValueChangeNotifier.class.isAssignableFrom(
+ dataSource.getClass()))
+ ((Property.ValueChangeNotifier) dataSource).addListener(this);
+ }
+
+ /** Get the mode of ProgressIndicator.
+ *
+ * @return true if in indeterminate mode
+ */
+ public boolean getContentMode() {
+ return indeterminate;
+ }
+
+ /**
+ * Set ProgressIndicator to indeterminate mode
+ *
+ * @param newValue true to set to indeterminate mode
+ */
+ public void setIndeterminate(boolean newValue) {
+ indeterminate = newValue;
+ }
+
+ /**
+ * Set interval that compnent checks for progress
+ * @param newValue interval in milliseconds
+ */
+ public void setPollingInterval(int newValue) {
+ pollingInterval = newValue;
+ }
+
+ /**
+ * Get interval that component checks for progress
+ * @return interval in milliseconds
+ */
+ public int getPollingInterval() {
+ return pollingInterval;
+ }
+
+}