/******************************************************************************* * Copyright (c) 2013 Red Hat. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * *******************************************************************************/ package org.eclipse.linuxtools.systemtap.ui.consolelog; import org.eclipse.debug.core.model.IProcess; import org.eclipse.debug.ui.DebugUITools; import org.eclipse.debug.ui.contexts.DebugContextEvent; import org.eclipse.debug.ui.contexts.IDebugContextListener; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.linuxtools.internal.systemtap.ui.consolelog.actions.CloseStapConsoleAction; import org.eclipse.linuxtools.internal.systemtap.ui.consolelog.actions.SaveLogAction; import org.eclipse.linuxtools.internal.systemtap.ui.consolelog.actions.StopScriptAction; import org.eclipse.linuxtools.systemtap.structures.process.SystemTapRuntimeProcessFactory; import org.eclipse.linuxtools.systemtap.ui.consolelog.structures.ScriptConsole; import org.eclipse.ui.console.IConsole; import org.eclipse.ui.console.IConsoleConstants; import org.eclipse.ui.console.IConsolePageParticipant; import org.eclipse.ui.console.IConsoleView; import org.eclipse.ui.part.IPageBookViewPage; /** * This class is responsible for creating and initializing UI for a {@link ScriptConsole} * @since 2.0 */ public class ScriptConsolePageParticipant implements IConsolePageParticipant, IDebugContextListener { private IPageBookViewPage fPage; private IConsoleView fView; private ScriptConsole fConsole; @Override public <T> T getAdapter(Class<T> adapter) { return null; } @Override public void init(IPageBookViewPage page, IConsole iConsole) { if (!(iConsole instanceof ScriptConsole)){ return; } fPage = page; fConsole = (ScriptConsole) iConsole; fView = (IConsoleView) fPage.getSite().getPage().findView(IConsoleConstants.ID_CONSOLE_VIEW); StopScriptAction stopScriptAction = new StopScriptAction(fConsole); CloseStapConsoleAction closeConsoleAction = new CloseStapConsoleAction(fConsole); SaveLogAction saveLogAction = new SaveLogAction(fConsole); // contribute to toolbar IToolBarManager manager = fPage.getSite().getActionBars().getToolBarManager(); manager.appendToGroup(IConsoleConstants.LAUNCH_GROUP, stopScriptAction); manager.appendToGroup(IConsoleConstants.LAUNCH_GROUP, closeConsoleAction); manager.appendToGroup(IConsoleConstants.OUTPUT_GROUP, saveLogAction); //TODO if {@link ModifyParsingAction} is restored, it is to be used here, //in the same way stopScriptAction and saveLogAction are used. DebugUITools.getDebugContextManager().getContextService(fPage.getSite().getWorkbenchWindow()).addDebugContextListener(this); } @Override public void dispose() { DebugUITools.getDebugContextManager().getContextService(fPage.getSite().getWorkbenchWindow()).removeDebugContextListener(this); fConsole = null; } @Override public void activated() { } @Override public void deactivated() { } /** * @since 3.0 */ @Override public void debugContextChanged(DebugContextEvent event) { if ((event.getFlags() & DebugContextEvent.ACTIVATED) > 0) { if (fView != null && fConsole != null) { IProcess process = DebugUITools.getCurrentProcess(); if (process instanceof SystemTapRuntimeProcessFactory.SystemTapRuntimeProcess && ((SystemTapRuntimeProcessFactory.SystemTapRuntimeProcess) process) .matchesProcess(fConsole.getProcess())) { fView.display(fConsole); } } } } }