| /*=============================================================================# |
| # Copyright (c) 2008, 2021 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.r.console.ui.launching; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.debug.core.ILaunchConfiguration; |
| |
| import org.eclipse.statet.jcommons.ts.core.ToolCommandHandler; |
| |
| import org.eclipse.statet.nico.core.runtime.HistoryOperationsHandler; |
| import org.eclipse.statet.nico.core.runtime.IToolEventHandler; |
| import org.eclipse.statet.nico.core.runtime.SubmitType; |
| import org.eclipse.statet.nico.core.runtime.ToolProcess; |
| import org.eclipse.statet.nico.ui.util.ChooseFileHandler; |
| import org.eclipse.statet.nico.ui.util.EclipseIDEOperationsHandler; |
| import org.eclipse.statet.nico.ui.util.QuitHandler; |
| import org.eclipse.statet.nico.ui.util.ReportStatusHandler; |
| import org.eclipse.statet.nico.ui.util.RunBlockingHandler; |
| import org.eclipse.statet.r.console.core.AbstractRController; |
| import org.eclipse.statet.r.core.RUtil; |
| import org.eclipse.statet.r.ui.dataeditor.ShowRElementCommandHandler; |
| import org.eclipse.statet.r.ui.graphics.RGraphicCommandHandler; |
| import org.eclipse.statet.r.ui.pkgmanager.RPkgUICommandHandler; |
| import org.eclipse.statet.r.ui.rhelp.RHelpUICommandHandler; |
| |
| |
| public class RConsoleLaunching { |
| |
| |
| public static final String R_CONSOLE_CONFIGURATION_TYPE_ID = "org.eclipse.statet.r.launchConfigurations.RConsole"; //$NON-NLS-1$ |
| public static final String R_REMOTE_CONSOLE_CONFIGURATION_TYPE_ID = "org.eclipse.statet.r.launchConfigurations.RRemoteConsole"; //$NON-NLS-1$ |
| |
| public static final String R_CONSOLE_PROCESS_TYPE = "R"+ToolProcess.PROCESS_TYPE_SUFFIX; //$NON-NLS-1$ |
| |
| |
| public static final String LOCAL_RTERM = "local.rterm"; //$NON-NLS-1$ |
| public static final String LOCAL_RJS = "local.rjs-rmi"; //$NON-NLS-1$ |
| public static final String REMOTE_RJS = "remote.rjs-rmi"; //$NON-NLS-1$ |
| public static final String REMOTE_RJS_RECONNECT = "remote.rjs-rmi-reconnect"; //$NON-NLS-1$ |
| public static final String REMOTE_RJS_SSH = "remote.rjs-rmi.ssh"; //$NON-NLS-1$ |
| |
| |
| static final String ATTR_ROOT= "org.eclipse.statet.r.debug/RConsole/"; //$NON-NLS-1$ |
| |
| /** |
| * Attribute key for R console type |
| */ |
| public static final String ATTR_TYPE = ATTR_ROOT+"type"; //$NON-NLS-1$ |
| |
| /** |
| * Attribute key for R startup arguments |
| */ |
| public static final String ATTR_OPTIONS = ATTR_ROOT+"arguments.options"; //$NON-NLS-1$ |
| |
| /** |
| * Attribute key for address, if required by console type |
| */ |
| public static final String ATTR_ADDRESS = ATTR_ROOT+"address"; //$NON-NLS-1$ |
| |
| /** |
| * Attribute key to pin console at startup |
| */ |
| public static final String ATTR_PIN_CONSOLE = ATTR_ROOT+"console.pin"; //$NON-NLS-1$ |
| |
| /** |
| * Attribute key for port number of SSH |
| */ |
| public static final String ATTR_SSH_PORT = ATTR_ROOT+"ssh.port"; //$NON-NLS-1$ |
| |
| /** |
| * Attribute key for SSH tunnel option |
| */ |
| public static final String ATTR_SSH_TUNNEL_ENABLED = ATTR_ROOT+"ssh.tunnel.enabled"; //$NON-NLS-1$ |
| |
| /** |
| * Attribute key for command to startup R |
| */ |
| public static final String ATTR_COMMAND = ATTR_ROOT+"command"; //$NON-NLS-1$ |
| |
| /** |
| * Attribute key for login (e.g. SSH) |
| */ |
| public static final String ATTR_LOGIN_NAME = ATTR_ROOT+"login.name"; |
| |
| /** |
| * Attribute key for init snippet (submitted after startup) |
| */ |
| public static final String ATTR_INIT_SCRIPT_SNIPPET = ATTR_ROOT+"init.script.snippet"; //$NON-NLS-1$ |
| |
| /** |
| * Attribute to enable object db |
| */ |
| public static final String ATTR_OBJECTDB_ENABLED = ATTR_ROOT+"objectdb.enabled"; //$NON-NLS-1$ |
| |
| public static final String ATTR_OBJECTDB_AUTOREFRESH_ENABLED = ATTR_ROOT+"objectdb.autorefresh.enabled"; //$NON-NLS-1$ |
| |
| public static final String ATTR_OBJECTDB_LISTS_MAX_LENGTH = ATTR_ROOT+"objectdb.lists.max_length"; //$NON-NLS-1$ |
| public static final String ATTR_OBJECTDB_ENVS_MAX_LENGTH = ATTR_ROOT+"objectdb.envs.max_length"; //$NON-NLS-1$ |
| |
| public static void registerDefaultHandlerTo(final AbstractRController controller) { |
| controller.addCommandHandler(IToolEventHandler.SCHEDULE_QUIT_EVENT_ID, new QuitHandler()); |
| controller.addCommandHandler(IToolEventHandler.RUN_BLOCKING_EVENT_ID, new RunBlockingHandler()); |
| controller.addCommandHandler(IToolEventHandler.REPORT_STATUS_EVENT_ID, new ReportStatusHandler()); |
| |
| { final ToolCommandHandler handler = new HistoryOperationsHandler(); |
| controller.addCommandHandler(HistoryOperationsHandler.LOAD_HISTORY_COMMAND_ID, handler); |
| controller.addCommandHandler(HistoryOperationsHandler.SAVE_HISTORY_COMMAND_ID, handler); |
| controller.addCommandHandler(HistoryOperationsHandler.ADDTO_HISTORY_COMMAND_ID, handler); |
| } |
| { final ToolCommandHandler handler= new ChooseFileHandler(); |
| controller.addCommandHandler(ChooseFileHandler.CHOOSE_FILE_COMMAND_ID, handler); |
| } |
| { final ToolCommandHandler handler = new EclipseIDEOperationsHandler(); |
| controller.addCommandHandler(EclipseIDEOperationsHandler.OPEN_FILE_COMMAND_ID, handler); |
| controller.addCommandHandler(EclipseIDEOperationsHandler.OPEN_FILE_COMMAND_OLD_ID, handler); |
| controller.addCommandHandler(EclipseIDEOperationsHandler.SHOW_HISTORY_COMMAND_ID, handler); |
| } |
| { final ToolCommandHandler handler = new ShowRElementCommandHandler(); |
| controller.addCommandHandler(ShowRElementCommandHandler.SHOW_ELEMENT_COMMAND_ID, handler); |
| controller.addCommandHandler(ShowRElementCommandHandler.SHOW_ELEMENT_COMMAND_OLD_ID, handler); |
| } |
| { final ToolCommandHandler handler = new RGraphicCommandHandler(); |
| controller.addCommandHandler(AbstractRController.INIT_RGRAPHIC_FACTORY_HANDLER_ID, handler); |
| } |
| { final ToolCommandHandler handler = new RHelpUICommandHandler(); |
| controller.addCommandHandler(RHelpUICommandHandler.SHOW_HELP_COMMAND_ID, handler); |
| controller.addCommandHandler(RHelpUICommandHandler.SHOW_HELP_COMMAND_OLD_ID, handler); |
| } |
| if (controller.getTool().getREnv() != null) { |
| final ToolCommandHandler handler = new RPkgUICommandHandler(); |
| controller.addCommandHandler(RPkgUICommandHandler.OPEN_PACKAGE_MANAGER_COMMAND_ID, handler); |
| } |
| } |
| |
| public static void scheduleStartupSnippet(final AbstractRController controller, final ILaunchConfiguration configuration) throws CoreException { |
| final String snippet = configuration.getAttribute(RConsoleLaunching.ATTR_INIT_SCRIPT_SNIPPET, (String) null); |
| if (snippet != null && snippet.length() > 0) { |
| final String[] lines = RUtil.LINE_SEPARATOR_PATTERN.split(snippet); |
| for (final String line : lines) { |
| controller.addStartupRunnable(controller.createCommandRunnable(line, SubmitType.TOOLS)); |
| } |
| } |
| } |
| } |