diff options
author | Matti Tahvonen <matti.tahvonen@itmill.com> | 2007-01-02 12:19:11 +0000 |
---|---|---|
committer | Matti Tahvonen <matti.tahvonen@itmill.com> | 2007-01-02 12:19:11 +0000 |
commit | 1f8bea7f7fac8ea22d618a36a51cfd9df24bc244 (patch) | |
tree | 1efbb16747bd4d513b8d999e0b55c9dac322d19b /src/com/itmill/toolkit/ui/ProgressIndicator.java | |
parent | 7b7d3870a5e186d7a029ede345e264d1ee2580fd (diff) | |
download | vaadin-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.java | 210 |
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; + } + +} |