]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/reporting/SCLReportingHandler.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.runtime / src / org / simantics / scl / runtime / reporting / SCLReportingHandler.java
diff --git a/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/reporting/SCLReportingHandler.java b/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/reporting/SCLReportingHandler.java
new file mode 100755 (executable)
index 0000000..a535956
--- /dev/null
@@ -0,0 +1,48 @@
+package org.simantics.scl.runtime.reporting;
+
+/**
+ * <p>An interface that is used to handle printing commands from SCL 
+ * such as Prelude.print. This interface is typically stored to 
+ * SCLContext with name {@link SCLReportingHandler#REPORTING_HANDLER}.
+ * 
+ * <p>A convenient way to call the methods of this interface in 
+ * arbitrary evaluation context is to use class {@link SCLReporting}
+ * 
+ * @author Hannu Niemist&ouml;
+ */
+public interface SCLReportingHandler {
+    public static final String REPORTING_HANDLER = "reportingHandler";
+    
+    public void print(String text);
+    public void printError(String error);
+    public void printCommand(String command);
+    public void didWork(double amount);
+
+    public static final SCLReportingHandler DEFAULT = new AbstractSCLReportingHandler() {
+        @Override
+        public void print(String text) {
+            System.out.println(text);
+        }
+
+        @Override
+        public void printError(String error) {
+            System.err.println(error);
+        }
+    };
+    
+    public static final SCLReportingHandler DEFAULT_WITHOUT_ECHO = new AbstractSCLReportingHandler() {
+        @Override
+        public void print(String text) {
+            System.out.println(text);
+        }
+
+        @Override
+        public void printError(String error) {
+            System.err.println(error);
+        }
+
+        @Override
+        public void printCommand(String command) {
+        }
+    };
+}