]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.scl.ui.console;
2
3 import org.eclipse.jface.action.Action;
4 import org.eclipse.jface.action.IToolBarManager;
5 import org.eclipse.swt.SWT;
6 import org.eclipse.swt.widgets.Composite;
7 import org.eclipse.ui.part.ViewPart;
8 import org.simantics.scl.compiler.commands.SCLConsoleListener;
9 import org.simantics.scl.runtime.reporting.SCLReportingHandler;
10
11 /**
12  * @author Tuukka Lehtonen
13  * @since 1.31.0
14  */
15 public class SCLScriptConsoleView extends ViewPart {
16
17     static class SCLOutputConsole extends SCLConsole {
18         public SCLOutputConsole(Composite parent, int style) {
19             super(parent, style, AbstractCommandConsole.HIDE_INPUT);
20         }
21
22         @Override
23         protected void addContributedListeners() {
24         }
25     }
26
27     SCLOutputConsole console;
28
29     @Override
30     public void createPartControl(Composite parent) {
31         this.console = new SCLOutputConsole(parent, SWT.NONE);
32
33         IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
34         Action interruptAction = ConsoleActions.createInterruptAction(console);
35         Action clearAction = ConsoleActions.createClearAction(console);
36         toolBarManager.add(interruptAction);
37         toolBarManager.add(clearAction);
38
39         console.addListener(new SCLConsoleListener() {
40             @Override
41             public void startedExecution() {
42                 interruptAction.setEnabled(true);
43             }
44             @Override
45             public void finishedExecution() {
46                 interruptAction.setEnabled(false);
47             }
48             @Override
49             public void consoleIsNotEmptyAnymore() {
50                 clearAction.setEnabled(true);
51             }
52         });
53
54         toolBarManager.update(true);
55     }
56
57     @Override
58     public void setFocus() {
59         console.setFocus();
60     }
61
62     @Override
63     public void dispose() {
64         super.dispose();
65         console.dispose();
66     }
67
68     @SuppressWarnings("unchecked")
69     @Override
70     public <T> T getAdapter(Class<T> adapter) {
71         if (adapter == SCLReportingHandler.class)
72             return (T) console.getHandler();
73         return super.getAdapter(adapter);
74     }
75
76 }