Bug 578301: [NiConsole] Add command and button to relaunch an R session
Change-Id: I976b27dac853eaac86e42d5dc0089d3a896c60d9
diff --git a/r/org.eclipse.statet.nico.ui/icons/tool_16/relaunch_tool.png b/r/org.eclipse.statet.nico.ui/icons/tool_16/relaunch_tool.png
new file mode 100644
index 0000000..a859fcc
--- /dev/null
+++ b/r/org.eclipse.statet.nico.ui/icons/tool_16/relaunch_tool.png
Binary files differ
diff --git a/r/org.eclipse.statet.nico.ui/icons/tool_16/relaunch_tool@2x.png b/r/org.eclipse.statet.nico.ui/icons/tool_16/relaunch_tool@2x.png
new file mode 100644
index 0000000..c31166c
--- /dev/null
+++ b/r/org.eclipse.statet.nico.ui/icons/tool_16/relaunch_tool@2x.png
Binary files differ
diff --git a/r/org.eclipse.statet.nico.ui/plugin.properties b/r/org.eclipse.statet.nico.ui/plugin.properties
index fdc0b5c..13696d0 100644
--- a/r/org.eclipse.statet.nico.ui/plugin.properties
+++ b/r/org.eclipse.statet.nico.ui/plugin.properties
@@ -22,12 +22,14 @@
commands_CancelCurrentAndPause_name = Cancel and Pause
commands_CancelAll_name = Cancel All Tasks
commands_CancelCombi_name = Cancel
-commands_PauseEngine_name = Pause
+commands_PauseTool_name = Pause
-commands_DisconnectEngine_name = Disconnect
-commands_DisconnectEngine_description = Disconnects StatET console (client) from external engine (server)
-commands_ReconnectEngine_name = Reconnect
-commands_ReconnectEngine_description = Reconnects StatET console (client) to external engine (server)
+commands_DisconnectTool_name= Disconnect
+commands_DisconnectTool_description= Disconnects StatET console (client) from external tool (server)
+commands_ReconnectTool_name= Reconnect
+commands_ReconnectTool_description= Reconnects StatET console (client) to external tool (server)
+commands_RelaunchTool_name= Relaunch Tool
+commands_RelaunchTool_description= Terminates and relaunches the current tool session
commands_SearchHistoryOlder_name = Search History for Next Older Item
commands_SearchHistoryOlder_description = Searches through the history for closest older item starting with the text before the cursor.
diff --git a/r/org.eclipse.statet.nico.ui/plugin.xml b/r/org.eclipse.statet.nico.ui/plugin.xml
index 91256fe..822b2df 100644
--- a/r/org.eclipse.statet.nico.ui/plugin.xml
+++ b/r/org.eclipse.statet.nico.ui/plugin.xml
@@ -64,6 +64,30 @@
<extension
point="org.eclipse.ui.commands">
<command
+ id="org.eclipse.statet.nico.commands.DisconnectTool"
+ categoryId="org.eclipse.debug.ui.category.run"
+ name="%commands_DisconnectTool_name"
+ description="%commands_DisconnectTool_description">
+ </command>
+ <command
+ id="org.eclipse.statet.nico.commands.ReconnectTool"
+ categoryId="org.eclipse.debug.ui.category.run"
+ name="%commands_ReconnectTool_name"
+ description="%commands_ReconnectTool_description">
+ </command>
+ <command
+ id="org.eclipse.statet.nico.commands.RelaunchTool"
+ categoryId="org.eclipse.debug.ui.category.run"
+ name="%commands_RelaunchTool_name"
+ description="%commands_RelaunchTool_description">
+ </command>
+
+ <command
+ id="org.eclipse.statet.nico.commands.PauseTool"
+ categoryId="org.eclipse.debug.ui.category.run"
+ name="%commands_PauseTool_name">
+ </command>
+ <command
id="org.eclipse.statet.nico.commands.CancelCurrent"
categoryId="org.eclipse.debug.ui.category.run"
name="%commands_CancelCurrent_name">
@@ -78,23 +102,6 @@
categoryId="org.eclipse.debug.ui.category.run"
name="%commands_CancelAll_name">
</command>
- <command
- id="org.eclipse.statet.nico.commands.PauseEngine"
- categoryId="org.eclipse.debug.ui.category.run"
- name="%commands_PauseEngine_name">
- </command>
- <command
- id="org.eclipse.statet.nico.commands.DisconnectEngine"
- categoryId="org.eclipse.debug.ui.category.run"
- name="%commands_DisconnectEngine_name"
- description="%commands_DisconnectEngine_description">
- </command>
- <command
- id="org.eclipse.statet.nico.commands.ReconnectEngine"
- categoryId="org.eclipse.debug.ui.category.run"
- name="%commands_ReconnectEngine_name"
- description="%commands_ReconnectEngine_description">
- </command>
<command
id="org.eclipse.statet.nico.commands.SearchHistoryOlder"
@@ -137,8 +144,17 @@
<extension
point="org.eclipse.ui.handlers">
<handler
+ commandId="org.eclipse.statet.nico.commands.RelaunchTool"
+ class="org.eclipse.statet.internal.nico.ui.actions.RelaunchToolHandler$WorkbenchHandler">
+ <enabledWhen>
+ <with
+ variable="org.eclipse.statet.activeTool">
+ </with>
+ </enabledWhen>
+ </handler>
+ <handler
commandId="org.eclipse.statet.nico.commands.CancelCurrent"
- class="org.eclipse.statet.internal.nico.ui.actions.CancelRunnableScopeHandler$WorkbenchHandler">
+ class="org.eclipse.statet.internal.nico.ui.actions.CancelRunnableHandler$WorkbenchHandler">
<enabledWhen>
<with
variable="org.eclipse.statet.activeTool">
@@ -147,7 +163,7 @@
</handler>
<handler
commandId="org.eclipse.statet.nico.commands.CancelCurrentAndPause"
- class="org.eclipse.statet.internal.nico.ui.actions.CancelRunnableScopeHandler$WorkbenchHandler">
+ class="org.eclipse.statet.internal.nico.ui.actions.CancelRunnableHandler$WorkbenchHandler">
<enabledWhen>
<with
variable="org.eclipse.statet.activeTool">
@@ -156,7 +172,7 @@
</handler>
<handler
commandId="org.eclipse.statet.nico.commands.CancelAll"
- class="org.eclipse.statet.internal.nico.ui.actions.CancelRunnableScopeHandler$WorkbenchHandler">
+ class="org.eclipse.statet.internal.nico.ui.actions.CancelRunnableHandler$WorkbenchHandler">
<enabledWhen>
<with
variable="org.eclipse.statet.activeTool">
@@ -229,20 +245,20 @@
<extension
point="org.eclipse.ui.commandImages">
<image
+ commandId="org.eclipse.statet.nico.commands.RelaunchTool"
+ icon="icons/tool_16/relaunch_tool.png"/>
+ <image
+ commandId="org.eclipse.statet.nico.commands.PauseTool"
+ icon="icons/loctool_16/pause.png"
+ disabledIcon="icons/loctool_16_d/pause.png"/>
+ <image
commandId="org.eclipse.statet.nico.commands.CancelCurrent"
icon="icons/loctool_16/cancel.png"
- disabledIcon="icons/loctool_16_d/cancel.png">
- </image>
- <image
- commandId="org.eclipse.statet.nico.commands.PauseEngine"
- icon="icons/loctool_16/pause.png"
- disabledIcon="icons/loctool_16_d/pause.png">
- </image>
+ disabledIcon="icons/loctool_16_d/cancel.png"/>
<image
commandId="org.eclipse.statet.nico.commands.ClearOutput"
icon="icons/tool_16/clear_output.gif"
- disabledIcon="icons/tool_16_d/clear_output.gif">
- </image>
+ disabledIcon="icons/tool_16_d/clear_output.gif"/>
</extension>
<extension
point="org.eclipse.ui.services">
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/Messages.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/Messages.java
index 6a7e9f7..9723f11 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/Messages.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/Messages.java
@@ -56,6 +56,8 @@
public static String TerminatingMonitor_Force_error_message;
public static String TerminatingMonitor_WaitButton_label;
+ public static String RelaunchToolAction_tooltip;
+
public static String Tracking_Name_label;
public static String Tracking_Name_error_Missing_message;
public static String Tracking_Content_label;
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/Messages.properties b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/Messages.properties
index 87c7813..12edf55 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/Messages.properties
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/Messages.properties
@@ -53,6 +53,8 @@
TerminatingMonitor_Force_error_message = An error occurred when trying to kill the tool process.
TerminatingMonitor_CancelButton_label = Cancel (quit requests)
+RelaunchToolAction_tooltip= Relaunch Tool Session
+
Tracking_Name_label = Name:
Tracking_Name_error_Missing_message=Missing configuration name
Tracking_Content_label = Content
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/CancelRunnableScopeHandler.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/CancelRunnableHandler.java
similarity index 93%
rename from r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/CancelRunnableScopeHandler.java
rename to r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/CancelRunnableHandler.java
index 3cd7b78..19461f1 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/CancelRunnableScopeHandler.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/CancelRunnableHandler.java
@@ -39,7 +39,7 @@
* Handler to cancel tool tasks.
*/
@NonNullByDefault
-public class CancelRunnableScopeHandler extends AbstractToolScopeHandler<ToolProcess> {
+public class CancelRunnableHandler extends AbstractToolScopeHandler<ToolProcess> {
public static final String MENU_ID= "org.eclipse.statet.nico.menus.Cancel"; //$NON-NLS-1$
@@ -50,7 +50,7 @@
private final int options;
- public CancelRunnableScopeHandler(final Object scope, final String commandId) {
+ public CancelRunnableHandler(final Object scope, final String commandId) {
super(scope, commandId);
switch (commandId) {
@@ -115,7 +115,7 @@
@Override
protected AbstractScopeHandler createScopeHandler(final Object scope) {
final String commandId= nonNullAssert(getCommandId());
- return new CancelRunnableScopeHandler(scope, commandId);
+ return new CancelRunnableHandler(scope, commandId);
}
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/DisconnectEngineHandler.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/DisconnectEngineHandler.java
index 3d0f313..c78a667 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/DisconnectEngineHandler.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/DisconnectEngineHandler.java
@@ -22,6 +22,7 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.ui.progress.IProgressService;
import org.eclipse.ui.services.IServiceLocator;
import org.eclipse.ui.statushandlers.StatusManager;
@@ -47,17 +48,12 @@
private static class DisconnectJob extends Job {
- private static String createLabel(final ToolProcess process) {
- return "Disconnect " + process.getLabel();
- }
-
private final ToolController controller;
DisconnectJob(final ToolProcess process, final ToolController controller) {
- super(createLabel(process));
-
+ super(NLS.bind("Disconnect {0}", process.getLabel(ToolProcess.DEFAULT_LABEL)));
setUser(true);
setPriority(INTERACTIVE);
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/ReconnectEngineHandler.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/ReconnectEngineHandler.java
index b251eb5..4759919 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/ReconnectEngineHandler.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/ReconnectEngineHandler.java
@@ -91,10 +91,10 @@
return new IRunnableWithProgress() {
@Override
public void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- final ILaunch originallaunch= process.getLaunch();
- ILaunchConfiguration originalConfig= originallaunch.getLaunchConfiguration();
+ final var originalLaunch= process.getLaunch();
+ ILaunchConfiguration originalConfig= originalLaunch.getLaunchConfiguration();
if (originalConfig instanceof OverlayLaunchConfiguration) {
- originalConfig= ((OverlayLaunchConfiguration) originalConfig).getOriginal();
+ originalConfig= ((OverlayLaunchConfiguration)originalConfig).getOriginal();
}
final Map<String, Object> reconnect= new HashMap<>();
@@ -105,7 +105,7 @@
final ILaunchConfiguration reconnectConfig= new OverlayLaunchConfiguration(originalConfig, add);
try {
final ILaunch reconnectLaunch= reconnectConfig.launch(
- originallaunch.getLaunchMode(), monitor, false );
+ originalLaunch.getLaunchMode(), monitor, false );
// if (dispose != null) {
// final ILaunchManager launchManager= DebugPlugin.getDefault().getLaunchManager();
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/RelaunchToolHandler.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/RelaunchToolHandler.java
new file mode 100644
index 0000000..21753f5
--- /dev/null
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/internal/nico/ui/actions/RelaunchToolHandler.java
@@ -0,0 +1,198 @@
+/*=============================================================================#
+ # Copyright (c) 2022 Stephan Wahlbrink and others.
+ #
+ # This program and the accompanying materials are made available under the
+ # terms of the Eclipse Public License 2.0 which is available at
+ # https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
+ # which is available at https://www.apache.org/licenses/LICENSE-2.0.
+ #
+ # SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
+ #
+ # Contributors:
+ # Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
+ #=============================================================================*/
+
+package org.eclipse.statet.internal.nico.ui.actions;
+
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IExecutableExtension;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.commands.ICommandImageService;
+import org.eclipse.ui.commands.IElementUpdater;
+import org.eclipse.ui.progress.IProgressConstants;
+
+import org.eclipse.statet.jcommons.lang.NonNull;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+import org.eclipse.statet.jcommons.ts.core.Tool;
+
+import org.eclipse.statet.ecommons.debug.core.util.OverlayLaunchConfiguration;
+import org.eclipse.statet.ecommons.ui.actions.AbstractScopeHandler;
+import org.eclipse.statet.ecommons.ui.actions.WorkbenchScopingHandler;
+
+import org.eclipse.statet.nico.core.runtime.ToolProcess;
+import org.eclipse.statet.nico.ui.NicoUI;
+import org.eclipse.statet.nico.ui.actions.AbstractToolScopeHandler;
+
+
+@NonNullByDefault
+public class RelaunchToolHandler extends AbstractToolScopeHandler<ToolProcess> {
+
+
+ private static class RelaunchJob extends Job {
+
+
+ private final ToolProcess process;
+
+
+ public RelaunchJob(final ToolProcess process) {
+ super(NLS.bind("Relaunch {0}", process.getLabel(ToolProcess.DEFAULT_LABEL)));
+ setUser(false);
+ setPriority(SHORT);
+
+ final var commandImageService= nonNullAssert(PlatformUI.getWorkbench().getService(ICommandImageService.class));
+ final var imageDescriptor= commandImageService.getImageDescriptor(NicoUI.RELAUNCH_TOOL_COMMAND_ID);
+ if (imageDescriptor != null) {
+ setProperty(IProgressConstants.ICON_PROPERTY, imageDescriptor);
+ }
+
+ this.process= process;
+ }
+
+
+ @Override
+ public boolean belongsTo(final Object family) {
+ return (family == RelaunchJob.class);
+ }
+
+ @Override
+ protected IStatus run(final IProgressMonitor monitor) {
+ final SubMonitor m= SubMonitor.convert(monitor, 3 + 10);
+ try {
+ m.worked(1);
+
+ if (!this.process.isTerminated()) {
+ m.setBlocked(new Status(IStatus.INFO, NicoUI.BUNDLE_ID,
+ "Waiting for termination..." ));
+ try {
+ while (!this.process.isTerminated()) {
+ try {
+ Thread.sleep(100);
+
+ if (m.isCanceled()) {
+ return Status.CANCEL_STATUS;
+ }
+ }
+ catch (final InterruptedException e) {
+ }
+ }
+ }
+ finally {
+ m.clearBlocked();
+ }
+ }
+ m.worked(1);
+
+ final IFileStore workspaceDir= this.process.getWorkspaceData().getWorkspaceDir();
+
+ final var originalLaunch= this.process.getLaunch();
+ ILaunchConfiguration originalConfig= originalLaunch.getLaunchConfiguration();
+ if (originalConfig instanceof OverlayLaunchConfiguration) {
+ originalConfig= ((OverlayLaunchConfiguration)originalConfig).getOriginal();
+ }
+
+ final Map<String, Object> add= new HashMap<>();
+ if (workspaceDir != null && workspaceDir.fetchInfo().exists()) {
+ add.put("org.eclipse.statet.r/renv/WorkingDirectory", workspaceDir.toString());
+ }
+ m.worked(1);
+ if (m.isCanceled()) {
+ return Status.CANCEL_STATUS;
+ }
+
+ final ILaunchConfiguration relaunchConfig= new OverlayLaunchConfiguration(originalConfig, add);
+ @SuppressWarnings("unused")
+ final ILaunch relaunchLaunch= relaunchConfig.launch(
+ originalLaunch.getLaunchMode(), m.newChild(10), false );
+
+ return Status.OK_STATUS;
+ }
+ catch (final CoreException e) {
+ return e.getStatus();
+ }
+ finally {
+ m.done();
+ }
+ }
+
+ }
+
+
+ public RelaunchToolHandler(final Object scope) {
+ super(scope, NicoUI.RELAUNCH_TOOL_COMMAND_ID);
+ }
+
+
+ @Override
+ protected boolean isSupported(final Tool tool) {
+ return (tool instanceof ToolProcess);
+ }
+
+
+ @Override
+ public @Nullable Object execute(final ExecutionEvent event,
+ final ToolProcess tool, final IEvaluationContext evalContext)
+ throws ExecutionException {
+ try {
+ tool.terminate();
+
+ @NonNull Job[] jobs= Job.getJobManager().find(RelaunchJob.class);
+ for (final Job job : jobs) {
+ if (((RelaunchJob)job).process == tool) {
+ return null;
+ }
+ }
+ new RelaunchJob(tool).schedule();
+ }
+ catch (final DebugException e) {
+ }
+ return null;
+ }
+
+
+ public static class WorkbenchHandler extends WorkbenchScopingHandler
+ implements IElementUpdater, IExecutableExtension {
+
+
+ /** For instantiation via plugin.xml */
+ public WorkbenchHandler() {
+ }
+
+
+ @Override
+ protected AbstractScopeHandler createScopeHandler(final Object scope) {
+ return new RelaunchToolHandler(scope);
+ }
+
+
+ }
+
+}
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/NicoUI.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/NicoUI.java
index 894a1a1..81fe4a2 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/NicoUI.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/NicoUI.java
@@ -36,10 +36,12 @@
public static final String HISTORY_VIEW_ID= "org.eclipse.statet.nico.views.HistoryView"; //$NON-NLS-1$
public static final String QUEUE_VIEW_ID= "org.eclipse.statet.nico.views.QueueView"; //$NON-NLS-1$
- public static final String DISCONNECT_COMMAND_ID= "org.eclipse.statet.nico.commands.DisconnectEngine"; //$NON-NLS-1$
- public static final String RECONNECT_COMMAND_ID= "org.eclipse.statet.nico.commands.ReconnectEngine"; //$NON-NLS-1$
+ public static final String DISCONNECT_COMMAND_ID= "org.eclipse.statet.nico.commands.DisconnectTool"; //$NON-NLS-1$
+ public static final String RECONNECT_COMMAND_ID= "org.eclipse.statet.nico.commands.ReconnectTool"; //$NON-NLS-1$
- public static final String PAUSE_COMMAND_ID= "org.eclipse.statet.nico.commands.PauseEngine"; //$NON-NLS-1$
+ public static final String RELAUNCH_TOOL_COMMAND_ID= "org.eclipse.statet.nico.commands.RelaunchTool"; //$NON-NLS-1$
+
+ public static final String PAUSE_COMMAND_ID= "org.eclipse.statet.nico.commands.PauseTool"; //$NON-NLS-1$
public static final String CANCEL_CURRENT_COMMAND_ID= "org.eclipse.statet.nico.commands.CancelCurrent"; //$NON-NLS-1$
public static final String CANCEL_CURRENT_PAUSE_COMMAND_ID= "org.eclipse.statet.nico.commands.CancelCurrentAndPause"; //$NON-NLS-1$
public static final String CANCEL_ALL_COMMAND_ID= "org.eclipse.statet.nico.commands.CancelAll"; //$NON-NLS-1$
diff --git a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsolePage.java b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsolePage.java
index 6611980..c7a2cfb 100644
--- a/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsolePage.java
+++ b/r/org.eclipse.statet.nico.ui/src/org/eclipse/statet/nico/ui/console/NIConsolePage.java
@@ -23,6 +23,7 @@
import static org.eclipse.statet.nico.ui.NicoUI.CANCEL_ALL_COMMAND_ID;
import static org.eclipse.statet.nico.ui.NicoUI.CANCEL_CURRENT_COMMAND_ID;
import static org.eclipse.statet.nico.ui.NicoUI.CANCEL_CURRENT_PAUSE_COMMAND_ID;
+import static org.eclipse.statet.nico.ui.NicoUI.RELAUNCH_TOOL_COMMAND_ID;
import java.util.ArrayList;
import java.util.HashMap;
@@ -134,7 +135,8 @@
import org.eclipse.statet.internal.nico.ui.LocalTaskTransfer;
import org.eclipse.statet.internal.nico.ui.Messages;
import org.eclipse.statet.internal.nico.ui.NicoUIPlugin;
-import org.eclipse.statet.internal.nico.ui.actions.CancelRunnableScopeHandler;
+import org.eclipse.statet.internal.nico.ui.actions.CancelRunnableHandler;
+import org.eclipse.statet.internal.nico.ui.actions.RelaunchToolHandler;
import org.eclipse.statet.internal.nico.ui.console.OutputViewer;
import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfigurator;
@@ -688,11 +690,13 @@
this.removeAllAction= new ConsoleRemoveAllTerminatedAction();
this.terminateAction= new TerminateToolAction(this.console.getProcess());
this.pageHandlers.addActivate(CANCEL_CURRENT_COMMAND_ID,
- new CancelRunnableScopeHandler(this, CANCEL_CURRENT_COMMAND_ID) );
+ new CancelRunnableHandler(this, CANCEL_CURRENT_COMMAND_ID) );
this.pageHandlers.addActivate(CANCEL_CURRENT_PAUSE_COMMAND_ID,
- new CancelRunnableScopeHandler(this, CANCEL_CURRENT_PAUSE_COMMAND_ID) );
+ new CancelRunnableHandler(this, CANCEL_CURRENT_PAUSE_COMMAND_ID) );
this.pageHandlers.addActivate(CANCEL_ALL_COMMAND_ID,
- new CancelRunnableScopeHandler(this, CANCEL_ALL_COMMAND_ID) );
+ new CancelRunnableHandler(this, CANCEL_ALL_COMMAND_ID) );
+ this.pageHandlers.addActivate(RELAUNCH_TOOL_COMMAND_ID,
+ new RelaunchToolHandler(this) );
// Conflict with binding CTRL+Z (in console EOF)
// pageKeys.activateContext("org.eclipse.debug.ui.console"); //$NON-NLS-1$
@@ -800,10 +804,10 @@
toolBarManager.appendToGroup(IConsoleConstants.LAUNCH_GROUP, new HandlerContributionItem(
new CommandContributionItemParameter(serviceLocator,
- CancelRunnableScopeHandler.MENU_ID, CANCEL_CURRENT_COMMAND_ID, null,
+ CancelRunnableHandler.MENU_ID, CANCEL_CURRENT_COMMAND_ID, null,
null, null, null,
Messages.CancelAction_name, null, Messages.CancelAction_tooltip,
- HandlerContributionItem.STYLE_PULLDOWN, null, false),
+ HandlerContributionItem.STYLE_PULLDOWN, null, false ),
handlers ) {
// Workaround for E-Bug #366528
@Override
@@ -836,6 +840,13 @@
});
}
});
+ toolBarManager.appendToGroup(IConsoleConstants.LAUNCH_GROUP, new HandlerContributionItem(
+ new CommandContributionItemParameter(serviceLocator,
+ null, RELAUNCH_TOOL_COMMAND_ID, null,
+ null, null, null,
+ null, null, Messages.RelaunchToolAction_tooltip,
+ HandlerContributionItem.STYLE_PUSH, null, false ),
+ handlers ));
toolBarManager.appendToGroup(IConsoleConstants.LAUNCH_GROUP, this.terminateAction);
toolBarManager.appendToGroup(IConsoleConstants.LAUNCH_GROUP, this.removeAction);
toolBarManager.appendToGroup(IConsoleConstants.LAUNCH_GROUP, this.removeAllAction);