]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.history/src/org/simantics/history/util/ProgressMonitor.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.history / src / org / simantics / history / util / ProgressMonitor.java
diff --git a/bundles/org.simantics.history/src/org/simantics/history/util/ProgressMonitor.java b/bundles/org.simantics.history/src/org/simantics/history/util/ProgressMonitor.java
new file mode 100644 (file)
index 0000000..e4b48a1
--- /dev/null
@@ -0,0 +1,94 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2012 Association for Decentralized Information Management in\r
+ * Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+package org.simantics.history.util;\r
+\r
+/**\r
+ * A custom progress monitor interface for long operations (not using\r
+ * Eclipse IProgressMonitor to avoid dependency on Eclipse runtime plug-ins).\r
+ * \r
+ * @author Tuukka Lehtonen\r
+ */\r
+public interface ProgressMonitor {\r
+\r
+    /**\r
+     * Notifies that the main task is beginning.  This must only be called once\r
+     * on a given progress monitor instance.\r
+     * \r
+     * @param name the name (or description) of the main task\r
+     * @param totalWork the total number of work units into which\r
+     *  the main task is been subdivided. If the value is <code>UNKNOWN</code> \r
+     *  the implementation is free to indicate progress in a way which \r
+     *  doesn't require the total number of work units in advance.\r
+     */\r
+    public void beginTask(String name, int totalWork);\r
+\r
+    /**\r
+     * Returns whether cancelation of current operation has been requested.\r
+     * Long-running operations should poll to see if cancelation\r
+     * has been requested.\r
+     *\r
+     * @return <code>true</code> if cancellation has been requested,\r
+     *    and <code>false</code> otherwise\r
+     */\r
+    public boolean isCanceled();\r
+\r
+    /**\r
+     * Sets the task name to the given value. This method is used to \r
+     * restore the task label after a nested operation was executed. \r
+     * Normally there is no need for clients to call this method.\r
+     *\r
+     * @param name the name (or description) of the main task\r
+     * @see #beginTask(java.lang.String, int)\r
+     */\r
+    public void setTaskName(String name);\r
+\r
+    /**\r
+     * Notifies that a subtask of the main task is beginning.\r
+     * Subtasks are optional; the main task might not have subtasks.\r
+     *\r
+     * @param name the name (or description) of the subtask\r
+     */\r
+    public void subTask(String name);\r
+\r
+    /**\r
+     * Notifies that a given number of work unit of the main task\r
+     * has been completed. Note that this amount represents an\r
+     * installment, as opposed to a cumulative amount of work done\r
+     * to date.\r
+     *\r
+     * @param work a non-negative number of work units just completed\r
+     */\r
+    public void worked(int work);\r
+\r
+    /**\r
+     * @author Tuukka Lehtonen\r
+     */\r
+    public static class Stub implements ProgressMonitor {\r
+        @Override\r
+        public void beginTask(String name, int totalWork) {\r
+        }\r
+        @Override\r
+        public boolean isCanceled() {\r
+            return false;\r
+        }\r
+        @Override\r
+        public void setTaskName(String name) {\r
+        }\r
+        @Override\r
+        public void subTask(String name) {\r
+        }\r
+        @Override\r
+        public void worked(int work) {\r
+        }\r
+    }\r
+    \r
+}
\ No newline at end of file