01: /*
02:
03: This software is OSI Certified Open Source Software.
04: OSI Certified is a certification mark of the Open Source Initiative.
05:
06: The license (Mozilla version 1.0) can be read at the MMBase site.
07: See http://www.MMBase.org/license
08:
09: */
10: package org.mmbase.util.externalprocess;
11:
12: /**
13: * The <code>IProgressMonitor</code> interface is implemented
14: * by objects that monitor the progress of a external process;
15: * the methods in this interface are invoked by code that performs the external
16: * process handling.
17: * <p>
18: * A request to cancel the external process can be signaled using the
19: * <code>setCanceled</code> method. Operations taking a progress monitor are
20: * expected to poll the monitor (using <code>isCanceled</code>) periodically and
21: * abort at their earliest convenience. Operation can however choose to ignore
22: * cancelation requests.
23: * </p>
24: * <p>
25: * Since notification is synchronous with the external process itself, the
26: * listener should provide a fast and robust implementation. If the handling of
27: * notifications would involve blocking operations, or operations which might
28: * throw uncaught exceptions, the notifications should be queued, and the actual
29: * processing deferred (or perhaps delegated to a separate thread).
30: * </p>
31: * <p>
32: * Clients may implement this interface.
33: * </p>
34: *
35: * @author Nico Klasens (Finalist IT Group)
36: * @version $Id: IProgressMonitor.java,v 1.3 2003/05/12 13:10:48 kees Exp $
37: * @since MMBase-1.6
38: */
39: public interface IProgressMonitor {
40:
41: /**
42: * Notifies that the processing is beginning. This must only be called once
43: * on a given progress monitor instance.
44: */
45: public void begin();
46:
47: /**
48: * Notifies that the work is done; that is, either the external process is
49: * completed or the user canceled it.
50: */
51: public void done();
52:
53: /**
54: * Returns whether cancelation of current operation has been requested.
55: * Long-running operations should poll to see if cancelation
56: * has been requested.
57: *
58: * @return <code>true</code> if cancellation has been requested,
59: * and <code>false</code> otherwise
60: * @see #setCanceled
61: */
62: public boolean isCanceled();
63:
64: /**
65: * Sets the cancel state to the given value.
66: *
67: * @param value <code>true</code> indicates that cancelation has
68: * been requested (but not necessarily acknowledged);
69: * <code>false</code> clears this flag
70: *
71: * @see #isCanceled
72: */
73: public void setCanceled(boolean value);
74:
75: /**
76: * Notifies that some work of the external process has been completed.
77: */
78: public void worked();
79: }
|