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 { private SCLConsole console; @Override public void createPartControl(Composite parent) { this.console = new SCLConsole(parent, SWT.NONE, AbstractCommandConsole.HIDE_INPUT | SCLConsole.EXCLUDE_CONTRIBUTED_LISTENERS); 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 getAdapter(Class adapter) { if (adapter == SCLReportingHandler.class) return (T) console.getHandler(); return super.getAdapter(adapter); } }