]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/console/SCLScriptConsoleView.java
Added SCL Script Output console view.
[simantics/platform.git] / bundles / org.simantics.scl.ui / src / org / simantics / scl / ui / console / SCLScriptConsoleView.java
diff --git a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/console/SCLScriptConsoleView.java b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/console/SCLScriptConsoleView.java
new file mode 100644 (file)
index 0000000..8df0caa
--- /dev/null
@@ -0,0 +1,76 @@
+package org.simantics.scl.ui.console;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.part.ViewPart;
+import org.simantics.scl.compiler.commands.SCLConsoleListener;
+import org.simantics.scl.runtime.reporting.SCLReportingHandler;
+
+/**
+ * @author Tuukka Lehtonen
+ * @since 1.31.0
+ */
+public class SCLScriptConsoleView extends ViewPart {
+
+    static class SCLOutputConsole extends SCLConsole {
+        public SCLOutputConsole(Composite parent, int style) {
+            super(parent, style, AbstractCommandConsole.HIDE_INPUT);
+        }
+
+        @Override
+        protected void addContributedListeners() {
+        }
+    }
+
+    SCLOutputConsole console;
+
+    @Override
+    public void createPartControl(Composite parent) {
+        this.console = new SCLOutputConsole(parent, SWT.NONE);
+
+        IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
+        Action interruptAction = ConsoleActions.createInterruptAction(console);
+        Action clearAction = ConsoleActions.createClearAction(console);
+        toolBarManager.add(interruptAction);
+        toolBarManager.add(clearAction);
+
+        console.addListener(new SCLConsoleListener() {
+            @Override
+            public void startedExecution() {
+                interruptAction.setEnabled(true);
+            }
+            @Override
+            public void finishedExecution() {
+                interruptAction.setEnabled(false);
+            }
+            @Override
+            public void consoleIsNotEmptyAnymore() {
+                clearAction.setEnabled(true);
+            }
+        });
+
+        toolBarManager.update(true);
+    }
+
+    @Override
+    public void setFocus() {
+        console.setFocus();
+    }
+
+    @Override
+    public void dispose() {
+        super.dispose();
+        console.dispose();
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T getAdapter(Class<T> adapter) {
+        if (adapter == SCLReportingHandler.class)
+            return (T) console.getHandler();
+        return super.getAdapter(adapter);
+    }
+
+}