--- /dev/null
+/*******************************************************************************\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