Commit 679b8054 authored by Adam Knapp's avatar Adam Knapp
Browse files

Launch shortcut for Titan Native Java launcher



Change-Id: I1f4425357e578f372c94a52fcb128f17625ae30a
Signed-off-by: default avatarAdam Knapp <adam.knapp@sigmatechnology.se>
parent ca89090c
......@@ -17,7 +17,10 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.core.expressions,
org.eclipse.titan.common;bundle-version="7.2.0",
org.eclipse.titan.designer;bundle-version="7.2.0",
org.eclipse.titan.runtime;bundle-version="7.2.0"
org.eclipse.titan.runtime;bundle-version="7.2.0",
org.eclipse.jdt.core;bundle-version="3.10.2",
org.eclipse.jdt.debug.ui;bundle-version="3.10.2",
org.eclipse.jdt.launching;bundle-version="3.10.2"
Bundle-ActivationPolicy: lazy
Eclipse-LazyStart: true
Bundle-Vendor: Eclipse Titan Project
......
......@@ -31,6 +31,7 @@ public final class GeneralConstants {
public static final String CONFIGFILEPATH = PLUGIN_ID + ".configurationFilePath";
public static final String SHORTCUTEXECUTION = PLUGIN_ID + ".executeStartedFromShortCut";
public static final String EXECUTECONFIGFILEONLAUNCH = PLUGIN_ID + ".executeConfigurationFileOnLaunch";
public static final String SINGLEMODEJAVAEXECUTOR = PLUGIN_ID + ".singleModeJavaExecutor";
public static final String HOSTNAMES = PLUGIN_ID + ".hostNames";
public static final String HOSTWORKINGDIRECTORIES = PLUGIN_ID + ".hostWorkingDirectories";
public static final String HOSTEXECUTABLES = PLUGIN_ID + ".hostExecutables";
......
......@@ -7,10 +7,18 @@
******************************************************************************/
package org.eclipse.titan.executor.executors.java_mctr;
import static org.eclipse.titan.executor.GeneralConstants.SINGLEMODEJAVAEXECUTOR;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.titan.executor.Activator;
import org.eclipse.titan.executor.executors.LaunchConfigurationUtil;
import org.eclipse.titan.executor.executors.TitanLaunchConfigurationDelegate;
/**
......@@ -19,11 +27,28 @@ import org.eclipse.titan.executor.executors.TitanLaunchConfigurationDelegate;
*/
public final class LaunchConfigurationDelegate extends TitanLaunchConfigurationDelegate {
private static final String MISSING_LINKED_LAUNCH_CONFIG = "Unable to locate the launch configuration for single mode";
@Override
public void launch(final ILaunchConfiguration arg0, final String arg1, final ILaunch arg2, final IProgressMonitor arg3) throws CoreException {
showExecutionPerspective();
final boolean singleMode = arg0.getAttribute(SINGLEMODEJAVAEXECUTOR, false);
if (singleMode) {
List<String> list = LaunchConfigurationUtil.getLinkedLaunchConfigurations(arg0);
if (list == null || list.size() != 1) {
final IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.OK, MISSING_LINKED_LAUNCH_CONFIG, null);
throw new CoreException(status);
}
ILaunchConfiguration singleConfig = LaunchConfigurationUtil.findJavaAppLaunchConfigurationByName(list.get(0));
if (singleConfig == null) {
final IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.OK, MISSING_LINKED_LAUNCH_CONFIG, null);
throw new CoreException(status);
}
singleConfig.launch(arg1, null);
return;
}
final NativeJavaExecutor executor = new NativeJavaExecutor(arg0);
executor.startSession(arg2);
}
}
......@@ -7,19 +7,28 @@
******************************************************************************/
package org.eclipse.titan.executor.executors.java_mctr;
import static org.eclipse.titan.executor.GeneralConstants.SINGLEMODEJAVAEXECUTOR;
import java.util.ArrayList;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.titan.executor.executors.LaunchConfigurationUtil;
import org.eclipse.titan.executor.tabpages.maincontroller.NativeJavaMainControllerTab;
import org.eclipse.titan.executor.views.executormonitor.ExecutorMonitorView;
/**
* @author Kristof Szabados
* @author Adam Knapp
* */
public final class LaunchShortcut extends org.eclipse.titan.executor.executors.LaunchShortcut {
@Override
/** {@inheritDoc} */
protected String getConfigurationId() {
return "org.eclipse.titan.executor.executors.java_mctr.LaunchConfigurationDelegate";
return ExecutorMonitorView.NATIVE_JAVA_LAUNCHCONFIGURATION_ID;
}
@Override
......@@ -31,7 +40,41 @@ public final class LaunchShortcut extends org.eclipse.titan.executor.executors.L
@Override
/** {@inheritDoc} */
protected String getLaunchConfigurationType() {
return "Parallel-Java";
return "MC-Java";
}
@Override
/** {@inheritDoc} */
protected void performLaunch(ILaunchConfiguration configuration, final String mode) throws CoreException {
ILaunchConfigurationWorkingCopy wc = null;
if (configuration.isWorkingCopy()) {
wc = (ILaunchConfigurationWorkingCopy)configuration;
} else {
wc = configuration.getWorkingCopy();
}
final boolean singleMode = wc.getAttribute(SINGLEMODEJAVAEXECUTOR, false);
ArrayList<String> list = new ArrayList<String>(2);
if (singleMode) {
final ILaunchConfiguration confSingle = LaunchConfigurationUtil.createJavaAppLaunchConfiguration(wc);
if (confSingle == null) {
return;
}
list.add(confSingle.getName());
LaunchConfigurationUtil.setLinkedLaunchConfigurations(wc, list);
configuration = wc.doSave();
configuration.launch(mode, null);
return;
}
final ILaunchConfiguration confHC = LaunchConfigurationUtil.createJavaAppLaunchConfiguration(wc);
final ILaunchConfiguration confGroup = LaunchConfigurationUtil.createGroupLaunchConfiguration(wc, confHC);
if (confHC == null || confGroup == null) {
return;
}
list.add(confHC.getName());
list.add(confGroup.getName());
LaunchConfigurationUtil.setLinkedLaunchConfigurations(wc, list);
configuration = wc.doSave();
//confGroup.launch(mode, null);
}
@Override
......@@ -40,5 +83,4 @@ public final class LaunchShortcut extends org.eclipse.titan.executor.executors.L
return NativeJavaMainControllerTab.initLaunchConfiguration(configuration, project, configFilePath);
}
}
......@@ -7,18 +7,27 @@
******************************************************************************/
package org.eclipse.titan.executor.executors.java_mctr;
import static org.eclipse.titan.executor.GeneralConstants.SINGLEMODEJAVAEXECUTOR;
import java.util.ArrayList;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.titan.executor.executors.LaunchConfigurationUtil;
import org.eclipse.titan.executor.tabpages.maincontroller.NativeJavaMainControllerTab;
import org.eclipse.titan.executor.views.executormonitor.ExecutorMonitorView;
/**
* @author Kristof Szabados
* @author Adam Knapp
* */
public final class LaunchShortcutConfig extends org.eclipse.titan.executor.executors.LaunchShortcutConfig {
@Override
/** {@inheritDoc} */
protected String getConfigurationId() {
return "org.eclipse.titan.executor.executors.java_mctr.LaunchConfigurationDelegate";
return ExecutorMonitorView.NATIVE_JAVA_LAUNCHCONFIGURATION_ID;
}
@Override
......@@ -30,7 +39,41 @@ public final class LaunchShortcutConfig extends org.eclipse.titan.executor.execu
@Override
/** {@inheritDoc} */
protected String getLaunchConfigurationType() {
return "Parallel-Java";
return "MC-Java";
}
@Override
/** {@inheritDoc} */
protected void performLaunch(ILaunchConfiguration configuration, final String mode) throws CoreException {
ILaunchConfigurationWorkingCopy wc = null;
if (configuration.isWorkingCopy()) {
wc = (ILaunchConfigurationWorkingCopy)configuration;
} else {
wc = configuration.getWorkingCopy();
}
final boolean singleMode = wc.getAttribute(SINGLEMODEJAVAEXECUTOR, false);
ArrayList<String> list = new ArrayList<String>(2);
if (singleMode) {
final ILaunchConfiguration confSingle = LaunchConfigurationUtil.createJavaAppLaunchConfiguration(wc);
if (confSingle == null) {
return;
}
list.add(confSingle.getName());
LaunchConfigurationUtil.setLinkedLaunchConfigurations(wc, list);
configuration = wc.doSave();
configuration.launch(mode, null);
return;
}
final ILaunchConfiguration confHC = LaunchConfigurationUtil.createJavaAppLaunchConfiguration(wc);
final ILaunchConfiguration confGroup = LaunchConfigurationUtil.createGroupLaunchConfiguration(wc, confHC);
if (confHC == null || confGroup == null) {
return;
}
list.add(confHC.getName());
list.add(confGroup.getName());
LaunchConfigurationUtil.setLinkedLaunchConfigurations(wc, list);
configuration = wc.doSave();
//confGroup.launch(mode, null);
}
@Override
......@@ -38,4 +81,5 @@ public final class LaunchShortcutConfig extends org.eclipse.titan.executor.execu
public boolean initLaunchConfiguration(final ILaunchConfigurationWorkingCopy configuration, final IProject project, final String configFilePath) {
return NativeJavaMainControllerTab.initLaunchConfiguration(configuration, project, configFilePath);
}
}
......@@ -11,6 +11,7 @@ import static org.eclipse.titan.executor.GeneralConstants.CONFIGFILEPATH;
import static org.eclipse.titan.executor.GeneralConstants.EXECUTABLEFILEPATH;
import static org.eclipse.titan.executor.GeneralConstants.EXECUTECONFIGFILEONLAUNCH;
import static org.eclipse.titan.executor.GeneralConstants.PROJECTNAME;
import static org.eclipse.titan.executor.GeneralConstants.SINGLEMODEJAVAEXECUTOR;
import static org.eclipse.titan.executor.GeneralConstants.WORKINGDIRECTORYPATH;
import java.io.File;
......@@ -22,6 +23,7 @@ import java.util.Map;
import org.eclipse.core.filesystem.URIUtil;
import org.eclipse.core.resources.ICommand;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IResource;
......@@ -32,6 +34,7 @@ import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.ILaunchConfigurationTabGroup;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.window.Window;
......@@ -52,16 +55,20 @@ import org.eclipse.titan.common.fieldeditors.TITANResourceLocator;
import org.eclipse.titan.common.logging.ErrorReporter;
import org.eclipse.titan.common.parsers.cfg.ConfigFileHandler;
import org.eclipse.titan.common.path.TITANPathUtilities;
import org.eclipse.titan.designer.core.TITANJavaBuilder;
import org.eclipse.titan.designer.productUtilities.ProductConstants;
import org.eclipse.titan.designer.properties.data.ProjectFileHandler;
import org.eclipse.titan.executor.designerconnection.DesignerHelper;
import org.eclipse.titan.executor.designerconnection.DynamicLinkingHelper;
import org.eclipse.titan.executor.designerconnection.EnvironmentHelper;
import org.eclipse.titan.executor.executors.LaunchConfigurationUtil;
import org.eclipse.titan.executor.graphics.ImageCache;
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
import org.eclipse.ui.model.WorkbenchLabelProvider;
/**
* @author Kristof Szabados
* @author Adam Knapp
* */
public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab {
protected static final String EMPTY = "";
......@@ -71,7 +78,8 @@ public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab
"This field is required.\n" +
"When an existing project is selected and the Designer plug-in is also present the working directory " +
"and executable fields are filled out automatically\n with the values set as project properties.";
private static final String CONFIGFILE = "Configuration file (REQUIRED):";
private static final String CONFIGFILE = " Configuration file:";
private static final String CONFIGFILE_REQUIRED = "Configuration file (REQUIRED):";
private static final String CONFIGFILE_TOOLTIP = "This field is required.\n" +
"The runtime configuration file used to describe the runtime behaviour of the executable test program.";
private static final String BROWSE_WORKSPACE = "Browse Workspace..";
......@@ -117,6 +125,7 @@ public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab
private Group configFileGroup;
private Button projectSelectionButton;
private Button automaticExecuteSectionExecution;
private Button singleModeExecutionCheckBox;
protected boolean projectIsValid;
private boolean projectIsJava;
protected boolean configurationFileIsValid;
......@@ -131,6 +140,14 @@ public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab
configurationFileIsValid = false;
}
protected void addListeners() {
projectNameText.addModifyListener(generalListener);
projectSelectionButton.addSelectionListener(generalListener);
configurationFileText.getTextControl(configFileGroup).addModifyListener(generalListener);
automaticExecuteSectionExecution.addSelectionListener(generalListener);
singleModeExecutionCheckBox.addSelectionListener(generalListener);
}
@Override
public final void createControl(final Composite parent) {
final Composite pageComposite = new Composite(parent, SWT.NONE);
......@@ -166,37 +183,70 @@ public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab
if (!temp.equals(projectNameText.getText())) {
projectNameText.setText(temp);
}
addListeners();
temp = configuration.getAttribute(CONFIGFILEPATH, EMPTY);
if (!temp.equals(configurationFileText.getStringValue())) {
configurationFileText.setStringValue(temp);
}
final boolean tempBoolean = configuration.getAttribute(EXECUTECONFIGFILEONLAUNCH, false);
boolean tempBoolean = configuration.getAttribute(EXECUTECONFIGFILEONLAUNCH, false);
if (tempBoolean != automaticExecuteSectionExecution.getSelection()) {
automaticExecuteSectionExecution.setSelection(tempBoolean);
}
tempBoolean = configuration.getAttribute(SINGLEMODEJAVAEXECUTOR, false);
if (tempBoolean != singleModeExecutionCheckBox.getSelection()) {
singleModeExecutionCheckBox.setSelection(tempBoolean);
}
final IProject project = getProject();
if (project == null) {
return;
}
final String projectPath = project.getLocation().toOSString(); //TODO should use URI based addresses
configurationFileText.setRootPath(projectPath);
} catch (CoreException e) {
ErrorReporter.logExceptionStackTrace(e);
}
}
@Override
public final void performApply(final ILaunchConfigurationWorkingCopy configuration) {
configuration.setAttribute(PROJECTNAME, projectNameText.getText());
configuration.setAttribute(CONFIGFILEPATH, configurationFileText.getStringValue());
final String configFileName = configurationFileText.getStringValue();
configuration.setAttribute(CONFIGFILEPATH, configFileName);
configuration.setAttribute(EXECUTECONFIGFILEONLAUNCH, automaticExecuteSectionExecution.getSelection());
final boolean singleMode = singleModeExecutionCheckBox.getSelection();
configuration.setAttribute(SINGLEMODEJAVAEXECUTOR, singleMode);
final IProject project = getProject();
configuration.setMappedResources(new IResource[] {project});
IFile configFile = null;
if (project != null) {
configFile = project.getFile(configFileName);
}
configuration.setMappedResources(new IResource[] {project, configFile});
ArrayList<String> list = new ArrayList<String>(2);
try {
if (singleMode) {
final ILaunchConfiguration confSingle = LaunchConfigurationUtil.createJavaAppLaunchConfiguration(configuration);
if (confSingle == null) {
return;
}
LaunchConfigurationUtil.disableHCinGroupLaunchConfiguration(configuration);
list.add(confSingle.getName());
LaunchConfigurationUtil.setLinkedLaunchConfigurations(configuration, list);
return;
}
final ILaunchConfiguration confHC = LaunchConfigurationUtil.createJavaAppLaunchConfiguration(configuration);
final ILaunchConfiguration confGroup = LaunchConfigurationUtil.createGroupLaunchConfiguration(configuration, confHC);
if (confHC == null || confGroup == null) {
return;
}
list.add(confHC.getName());
list.add(confGroup.getName());
LaunchConfigurationUtil.setLinkedLaunchConfigurations(configuration, list);
} catch (CoreException e) {
ErrorReporter.logExceptionStackTrace(e);
}
}
@Override
......@@ -206,6 +256,7 @@ public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab
configuration.setAttribute(EXECUTABLEFILEPATH, EMPTY);
configuration.setAttribute(CONFIGFILEPATH, EMPTY);
configuration.setAttribute(EXECUTECONFIGFILEONLAUNCH, false);
configuration.setAttribute(SINGLEMODEJAVAEXECUTOR, false);
configuration.setMappedResources(new IResource[0]);
}
......@@ -224,15 +275,13 @@ public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab
gd = new GridData(GridData.FILL_HORIZONTAL);
projectNameText.setLayoutData(gd);
projectNameText.setFont(font);
projectNameText.addModifyListener(generalListener);
projectSelectionButton = createPushButton(group, BROWSE_WORKSPACE, null);
projectSelectionButton.addSelectionListener(generalListener);
}
protected final void createConfigurationEditor(final Composite parent) {
final Font font = parent.getFont();
configFileGroup = new Group(parent, SWT.NONE);
configFileGroup.setText(CONFIGFILE);
configFileGroup.setText(CONFIGFILE_REQUIRED);
configFileGroup.setToolTipText(CONFIGFILE_TOOLTIP);
final GridData gd = new GridData(GridData.FILL_HORIZONTAL);
configFileGroup.setLayoutData(gd);
......@@ -248,14 +297,18 @@ public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab
configurationFileText = new TITANResourceLocator(CONFIGFILE, configFileGroup, IResource.FILE, getProject().getLocation().toOSString());
}
configurationFileText.getLabelControl(configFileGroup).setToolTipText(CONFIGFILE_TOOLTIP);
configurationFileText.getTextControl(configFileGroup).addModifyListener(generalListener);
automaticExecuteSectionExecution = new Button(configFileGroup, SWT.CHECK);
automaticExecuteSectionExecution.setText("Execute automatically");
automaticExecuteSectionExecution.setToolTipText("Execute the `EXECUTE' section of the configuration file automatically when launched");
automaticExecuteSectionExecution.setSelection(false);
automaticExecuteSectionExecution.addSelectionListener(generalListener);
automaticExecuteSectionExecution.setEnabled(true);
singleModeExecutionCheckBox = new Button(configFileGroup, SWT.CHECK);
singleModeExecutionCheckBox.setText("Execute in single mode");
singleModeExecutionCheckBox.setToolTipText("Executes the Titan Java project in single mode");
singleModeExecutionCheckBox.setSelection(false);
singleModeExecutionCheckBox.setEnabled(true);
}
/**
......@@ -266,12 +319,13 @@ public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab
final ILabelProvider labelProvider = new WorkbenchLabelProvider();
final ElementListSelectionDialog dialog = new ElementListSelectionDialog(getShell(), labelProvider);
dialog.setTitle("Project selection");
dialog.setMessage("Select a project to constrain your search.");
dialog.setMessage("Assign a project to the run configuration");
final IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
final List<IProject> availableProjects = new ArrayList<IProject>(projects.length);
for (final IProject project : projects) {
try {
if (project.isAccessible() && project.hasNature(DesignerHelper.NATURE_ID)) {
if (project.isAccessible() && project.hasNature(DesignerHelper.NATURE_ID)
&& TITANJavaBuilder.isBuilderEnabled(project)) {
availableProjects.add(project);
}
} catch (CoreException e) {
......@@ -279,6 +333,13 @@ public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab
}
}
if (availableProjects.isEmpty()) {
ErrorReporter.parallelErrorDisplayInMessageDialog(
"Error while searching for projects in the workspace",
"No proper project was found in the workspace for this run configuration type");
return;
}
dialog.setElements(availableProjects.toArray(new IProject[availableProjects.size()]));
if (dialog.open() == Window.OK) {
final String projectName = ((IProject) dialog.getFirstResult()).getName();
......@@ -314,6 +375,24 @@ public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab
projectIsValid = true;
final String projectPath = project.getLocation().toOSString();
configurationFileText.setRootPath(projectPath);
final List<IFile> cfgFiles = ProjectFileHandler.getCfgFiles(project);
if (cfgFiles.size() == 1) {
configurationFileText.setStringValue(cfgFiles.get(0).getProjectRelativePath().toOSString());
} else if (cfgFiles.size() > 1) {
final ILabelProvider labelProvider = DebugUITools.newDebugModelPresentation();
final ElementListSelectionDialog dialog = new ElementListSelectionDialog(null, labelProvider);
dialog.setTitle("Config File Selection");
dialog.setMessage("Select existing cfg file:");
dialog.setElements(cfgFiles.toArray(new IFile[cfgFiles.size()]));
if (dialog.open() == Window.OK) {
configurationFileText.setStringValue(
((IFile) dialog.getFirstResult()).getProjectRelativePath().toOSString());
}
}
checkJavaBuilder(project);
}
......@@ -345,6 +424,7 @@ public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab
protected final void handleConfigurationModified() {
if (EMPTY.equals(configurationFileText.getStringValue())) {
automaticExecuteSectionExecution.setEnabled(false);
singleModeExecutionCheckBox.setEnabled(false);
return;
}
......@@ -380,6 +460,7 @@ public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab
if (exceptions.isEmpty()) {
configurationFileIsValid = true;
automaticExecuteSectionExecution.setEnabled(true);
singleModeExecutionCheckBox.setEnabled(true);
return;
}
}
......@@ -387,6 +468,7 @@ public class NativeJavaMainControllerTab extends AbstractLaunchConfigurationTab
exceptions.clear();
exceptions.add(new Exception("The path `" + URIUtil.toPath(uri) + "' does not seem to be correct."));
automaticExecuteSectionExecution.setEnabled(false);
singleModeExecutionCheckBox.setEnabled(false);
}
/**
......
......@@ -7,6 +7,8 @@
******************************************************************************/
package org.eclipse.titan.executor.views.executormonitor;
import static org.eclipse.titan.executor.GeneralConstants.SINGLEMODEJAVAEXECUTOR;
import java.util.Iterator;
import org.eclipse.core.runtime.CoreException;
......@@ -571,8 +573,11 @@ public final class ExecutorMonitorView extends ViewPart {
return false;
}
try {
return NATIVE_JAVA_LAUNCHCONFIGURATION_TYPE.equals(launchConfiguration.getType())
|| JNI_LAUNCHCONFIGURATION_TYPE.equals(launchConfiguration.getType())
// TODO: this extra filter should be removed if Titan Java executor is properly implemented
if (NATIVE_JAVA_LAUNCHCONFIGURATION_TYPE.equals(launchConfiguration.getType())) {
return !launchConfiguration.getAttribute(SINGLEMODEJAVAEXECUTOR, false);
}
return JNI_LAUNCHCONFIGURATION_TYPE.equals(launchConfiguration.getType())
|| SINGLE_LAUNCHCONFIGURATION_TYPE.equals(launchConfiguration.getType())
|| MCTR_CLI_LAUNCHCONFIGURATION_TYPE.equals(launchConfiguration.getType());
} catch (CoreException e) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment