+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);
+ }
+
+}