diff org.eclipse.equinox.common/src/org/eclipse/core/runtime/IProgressMonitor.d @ 12:bc29606a740c

Added dwt-addons in original directory structure of eclipse.org
author Frank Benoit <benoit@tionex.de>
date Sat, 14 Mar 2009 18:23:29 +0100
parents
children 8594250b1d1c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.eclipse.equinox.common/src/org/eclipse/core/runtime/IProgressMonitor.d	Sat Mar 14 18:23:29 2009 +0100
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ * Port to the D programming language:
+ *     Frank Benoit <benoit@tionex.de>
+ *******************************************************************************/
+module org.eclipse.core.runtime.IProgressMonitor;
+
+import java.lang.all;
+
+/**
+ * The <code>IProgressMonitor</code> interface is implemented
+ * by objects that monitor the progress of an activity; the methods
+ * in this interface are invoked by code that performs the activity.
+ * <p>
+ * All activity is broken down into a linear sequence of tasks against
+ * which progress is reported. When a task begins, a <code>beginTask(String, int)
+ * </code> notification is reported, followed by any number and mixture of
+ * progress reports (<code>worked()</code>) and subtask notifications
+ * (<code>subTask(String)</code>).  When the task is eventually completed, a
+ * <code>done()</code> notification is reported.  After the <code>done()</code>
+ * notification, the progress monitor cannot be reused;  i.e., <code>
+ * beginTask(String, int)</code> cannot be called again after the call to
+ * <code>done()</code>.
+ * </p>
+ * <p>
+ * A request to cancel an operation can be signaled using the
+ * <code>setCanceled</code> method.  Operations taking a progress
+ * monitor are expected to poll the monitor (using <code>isCanceled</code>)
+ * periodically and abort at their earliest convenience.  Operation can however
+ * choose to ignore cancelation requests.
+ * </p>
+ * <p>
+ * Since notification is synchronous with the activity itself, the listener should
+ * provide a fast and robust implementation. If the handling of notifications would
+ * involve blocking operations, or operations which might throw uncaught exceptions,
+ * the notifications should be queued, and the actual processing deferred (or perhaps
+ * delegated to a separate thread).
+ * </p><p>
+ * This interface can be used without OSGi running.
+ * </p><p>
+ * Clients may implement this interface.
+ * </p>
+ */
+public interface IProgressMonitor {
+
+    /** Constant indicating an unknown amount of work.
+     */
+    public static const int UNKNOWN = -1;
+
+    /**
+     * Notifies that the main task is beginning.  This must only be called once
+     * on a given progress monitor instance.
+     *
+     * @param name the name (or description) of the main task
+     * @param totalWork the total number of work units into which
+     *  the main task is been subdivided. If the value is <code>UNKNOWN</code>
+     *  the implementation is free to indicate progress in a way which
+     *  doesn't require the total number of work units in advance.
+     */
+    public void beginTask(String name, int totalWork);
+
+    /**
+     * Notifies that the work is done; that is, either the main task is completed
+     * or the user canceled it. This method may be called more than once
+     * (implementations should be prepared to handle this case).
+     */
+    public void done();
+
+    /**
+     * Internal method to handle scaling correctly. This method
+     * must not be called by a client. Clients should
+     * always use the method </code>worked(int)</code>.
+     *
+     * @param work the amount of work done
+     */
+    public void internalWorked(double work);
+
+    /**
+     * Returns whether cancelation of current operation has been requested.
+     * Long-running operations should poll to see if cancelation
+     * has been requested.
+     *
+     * @return <code>true</code> if cancellation has been requested,
+     *    and <code>false</code> otherwise
+     * @see #setCanceled(bool)
+     */
+    public bool isCanceled();
+
+    /**
+     * Sets the cancel state to the given value.
+     *
+     * @param value <code>true</code> indicates that cancelation has
+     *     been requested (but not necessarily acknowledged);
+     *     <code>false</code> clears this flag
+     * @see #isCanceled()
+     */
+    public void setCanceled(bool value);
+
+    /**
+     * Sets the task name to the given value. This method is used to
+     * restore the task label after a nested operation was executed.
+     * Normally there is no need for clients to call this method.
+     *
+     * @param name the name (or description) of the main task
+     * @see #beginTask(java.lang.String, int)
+     */
+    public void setTaskName(String name);
+
+    /**
+     * Notifies that a subtask of the main task is beginning.
+     * Subtasks are optional; the main task might not have subtasks.
+     *
+     * @param name the name (or description) of the subtask
+     */
+    public void subTask(String name);
+
+    /**
+     * Notifies that a given number of work unit of the main task
+     * has been completed. Note that this amount represents an
+     * installment, as opposed to a cumulative amount of work done
+     * to date.
+     *
+     * @param work a non-negative number of work units just completed
+     */
+    public void worked(int work);
+}