001: //The contents of this file are subject to the Mozilla Public License Version 1.1
002: //(the "License"); you may not use this file except in compliance with the
003: //License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
004: //
005: //Software distributed under the License is distributed on an "AS IS" basis,
006: //WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
007: //for the specific language governing rights and
008: //limitations under the License.
009: //
010: //The Original Code is "The Columba Project"
011: //
012: //The Initial Developers of the Original Code are Frederik Dietz and Timo
013: // Stich.
014: //Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
015: //
016: //All Rights Reserved.
017: package org.columba.core.command;
018:
019: import org.columba.api.command.IStatusObservable;
020: import org.columba.api.command.IWorkerStatusController;
021:
022: /**
023: *
024: * Represents the clue between the gui and all the folders which want to notify
025: * the statusbar.
026: *
027: * <p>
028: * We want the folders to be independent from the gui code. So, the folders
029: * should communicate with the Observable, whereas the status observers with the
030: * Observable.
031: *
032: * </p>
033: * This makes it necessary of course to register as Observer.
034: *
035: * </p>
036: * This implementation of <class>StatusObserver </class> encapsulates a
037: * <class>Worker </class>, which is more tightly coupled to the gui in Columba.
038: *
039: * @author fdietz
040: */
041: public class StatusObservableImpl implements IStatusObservable {
042: /**
043: * encapsulated worker
044: */
045: private IWorkerStatusController worker;
046:
047: public StatusObservableImpl() {
048: // nothing to do
049: }
050:
051: public StatusObservableImpl(IWorkerStatusController theWorker) {
052: this .worker = theWorker;
053: }
054:
055: /**
056: * Sets the current value of the progress bar.
057: *
058: * @param i
059: * New current value of progress bar
060: */
061: public void setCurrent(int i) {
062: if (worker != null) {
063: worker.setProgressBarValue(i);
064: }
065: }
066:
067: /**
068: * Sets the maximum value for the progress bar.
069: *
070: * @param i
071: * New max. value for progress bar
072: */
073: public void setMax(int i) {
074: if (worker != null) {
075: worker.setProgressBarMaximum(i);
076: }
077: }
078:
079: /**
080: * Sets the progress bar value to zero, i.e. clears the progress bar.
081: * This is the same as calling setCurrent(0)
082: */
083: public void resetCurrent() {
084: setCurrent(0);
085: }
086:
087: /**
088: * Set the text to be displayed in the status bar
089: *
090: * @param string
091: * Text to display in status bar
092: */
093: public void setMessage(String string) {
094: if (worker != null) {
095: worker.setDisplayText(string);
096: }
097: }
098:
099: /**
100: * Clears the text displayed in the status bar.
101: */
102: public void clearMessage() {
103: if (worker != null) {
104: worker.clearDisplayText();
105: }
106: }
107:
108: /**
109: * Clears the text displayed in the status bar - with a given delay. The
110: * delay used is 500 ms. <br>
111: * If a new text is set within this delay, the text is not cleared.
112: */
113: public void clearMessageWithDelay() {
114: if (worker != null) {
115: worker.clearDisplayTextWithDelay();
116: }
117: }
118:
119: /**
120: * Returns the encapsulated worker object
121: *
122: * @return
123: */
124: public IWorkerStatusController getWorker() {
125: return worker;
126: }
127:
128: /**
129: * Sets the encapsulated worker object
130: *
131: * @param theWorker
132: */
133: public void setWorker(IWorkerStatusController theWorker) {
134: this .worker = theWorker;
135: }
136:
137: /*
138: * (non-Javadoc)
139: *
140: * @see org.columba.api.command.IStatusObservable#getCancelled()
141: */
142: public boolean isCancelled() {
143: return worker.cancelled();
144: }
145:
146: public void cancel(boolean b) {
147: if (b) {
148: worker.cancel();
149: }
150: }
151:
152: }
|