/** * Copyright (c) Red Hat, Inc., contributors and others 2013 - 2014. All rights reserved * * Licensed under the Eclipse Public License version 1.0, available at * http://www.eclipse.org/legal/epl-v10.html */ package org.jboss.tools.forge.ui.internal.console; import java.beans.PropertyChangeEvent; import org.eclipse.jface.action.IAction; import org.eclipse.swt.widgets.Composite; import org.jboss.forge.addon.resource.Resource; import org.jboss.tools.aesh.core.console.Console; import org.jboss.tools.forge.core.runtime.ForgeRuntime; import org.jboss.tools.forge.core.runtime.ForgeRuntimeState; import org.jboss.tools.forge.ui.internal.actions.ClearAction; import org.jboss.tools.forge.ui.internal.actions.GoToAction; import org.jboss.tools.forge.ui.internal.actions.LinkAction; import org.jboss.tools.forge.ui.internal.actions.StartAction; import org.jboss.tools.forge.ui.internal.actions.StopAction; import org.jboss.tools.forge.ui.internal.viewer.F2TextViewer; import org.jboss.tools.forge.ui.internal.viewer.ForgeTextViewer; public class F2Console extends AbstractForgeConsole { private F2TextViewer textViewer; public F2Console(ForgeRuntime runtime) { super(runtime); } @Override public ForgeTextViewer createTextViewer(Composite parent) { return textViewer = new F2TextViewer(parent); } @Override public IAction[] createActions() { return new IAction[] { new StartAction(getRuntime()), new StopAction(getRuntime()), new GoToAction(getRuntime()), new ClearAction(getRuntime()), new LinkAction(getRuntime()) }; } @Override public void propertyChange(PropertyChangeEvent evt) { if (ForgeRuntimeState.RUNNING.equals(evt.getNewValue())) { getTextViewer().startConsole(); } if (ForgeRuntimeState.STOPPED.equals(evt.getNewValue())) { getTextViewer().stopConsole(); } } @Override public Resource<?> getCurrentResource() { Resource<?> currentResource = null; Console console = getConsole(); if (console != null) { currentResource = (Resource<?>) console.getCurrentResource(); } return currentResource; } @Override public void goToPath(String path) { Console console = getConsole(); if (console != null) console.sendInput("cd " + path.replaceAll(" ", "\\\\ ") + " " + System.lineSeparator()); } @Override public void clear() { Console console = getConsole(); if (console != null) console.sendInput("clear" + System.lineSeparator()); } private Console getConsole() { return (textViewer != null) ? textViewer.getConsole() : null; } }