From 76267c7aa92f612af9ef687270d64a39e2de25da Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Sat, 30 May 2015 22:51:14 -0400 Subject: [PATCH] Adapt Arduino plug-ins to final LaunchBar API. Change-Id: Ib5d7738ad137566b7cf6f9b8c177f72c747b2d2b --- .../org.eclipse.cdt.arduino.core/plugin.xml | 10 +++++++ .../arduino/core/ArduinoProjectGenerator.java | 25 ++++++++---------- .../ArduinoLaunchConfigurationProvider.java | 26 +++++++++++++++++-- .../launch/ArduinoLaunchDescriptorType.java | 15 +++-------- 4 files changed, 48 insertions(+), 28 deletions(-) diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.xml b/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.xml index 59cbebfde7b..c7e4185a277 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.xml +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/plugin.xml @@ -112,6 +112,16 @@ class="org.eclipse.cdt.arduino.core.internal.launch.ArduinoLaunchDescriptorType" id="org.eclipse.cdt.arduino.core.descriptorType" priority="5"> + + + + + + connections = connectionType.getConnections(); @@ -108,7 +103,6 @@ public class ArduinoProjectGenerator { } createBuildConfiguration(cprojDesc, board); - CCorePlugin.getDefault().setProjectDescription(project, cprojDesc, true, monitor); // Generate files @@ -124,7 +118,7 @@ public class ArduinoProjectGenerator { generateFile(fmModel, fmConfig.getTemplate("arduino.mk"), project.getFile("arduino.mk")); //$NON-NLS-1$ //$NON-NLS-2$ sourceFile = project.getFile(project.getName() + ".cpp"); //$NON-NLS-1$ - generateFile(fmModel, fmConfig.getTemplate("arduino.cpp"), sourceFile); //$NON-NLS-1$ + generateFile(fmModel, fmConfig.getTemplate("arduino.cpp"), sourceFile); //$NON-NLS-1$ } catch (IOException e) { throw new CoreException(new Status(IStatus.ERROR, Activator.getId(), e.getLocalizedMessage(), e)); } catch (URISyntaxException e) { @@ -137,7 +131,8 @@ public class ArduinoProjectGenerator { project.build(IncrementalProjectBuilder.FULL_BUILD, monitor); } - private static void generateFile(Object model, Template template, final IFile outputFile) throws TemplateException, IOException, CoreException { + private static void generateFile(Object model, Template template, final IFile outputFile) + throws TemplateException, IOException, CoreException { final PipedInputStream in = new PipedInputStream(); PipedOutputStream out = new PipedOutputStream(in); final Writer writer = new OutputStreamWriter(out); @@ -165,11 +160,13 @@ public class ArduinoProjectGenerator { throw new CoreException(status); } - public static ICConfigurationDescription createBuildConfiguration(ICProjectDescription projDesc, Board board) throws CoreException { + public static ICConfigurationDescription createBuildConfiguration(ICProjectDescription projDesc, Board board) + throws CoreException { ManagedProject managedProject = new ManagedProject(projDesc); String configId = ManagedBuildManager.calculateChildId(AVR_TOOLCHAIN_ID, null); IToolChain avrToolChain = ManagedBuildManager.getExtensionToolChain(AVR_TOOLCHAIN_ID); - org.eclipse.cdt.managedbuilder.internal.core.Configuration newConfig = new org.eclipse.cdt.managedbuilder.internal.core.Configuration(managedProject, (ToolChain) avrToolChain, configId, board.getId()); + org.eclipse.cdt.managedbuilder.internal.core.Configuration newConfig = new org.eclipse.cdt.managedbuilder.internal.core.Configuration( + managedProject, (ToolChain) avrToolChain, configId, board.getId()); IToolChain newToolChain = newConfig.getToolChain(); IOption newOption = newToolChain.getOptionBySuperClassId(BOARD_OPTION_ID); ManagedBuildManager.setOption(newConfig, newToolChain, newOption, board.getId()); diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationProvider.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationProvider.java index 2ad8bddfa32..63459835a5e 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationProvider.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationProvider.java @@ -10,16 +10,20 @@ *******************************************************************************/ package org.eclipse.cdt.arduino.core.internal.launch; +import org.eclipse.cdt.arduino.core.internal.Activator; import org.eclipse.cdt.arduino.core.internal.ArduinoProjectNature; import org.eclipse.cdt.arduino.core.internal.remote.ArduinoRemoteConnection; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.DebugPlugin; +import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationType; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.launchbar.core.ILaunchDescriptor; import org.eclipse.launchbar.core.ProjectPerTargetLaunchConfigProvider; import org.eclipse.remote.core.IRemoteConnection; +import org.eclipse.remote.core.IRemoteConnectionType; +import org.eclipse.remote.core.IRemoteServicesManager; public class ArduinoLaunchConfigurationProvider extends ProjectPerTargetLaunchConfigProvider { @@ -36,7 +40,7 @@ public class ArduinoLaunchConfigurationProvider extends ProjectPerTargetLaunchCo return false; } - if (!target.getConnectionType().getId().equals(ArduinoRemoteConnection.TYPE_ID)) { + if (target != null && !target.getConnectionType().getId().equals(ArduinoRemoteConnection.TYPE_ID)) { return false; } @@ -49,7 +53,25 @@ public class ArduinoLaunchConfigurationProvider extends ProjectPerTargetLaunchCo protected void populateLaunchConfiguration(ILaunchDescriptor descriptor, IRemoteConnection target, ILaunchConfigurationWorkingCopy workingCopy) throws CoreException { super.populateLaunchConfiguration(descriptor, target, workingCopy); - workingCopy.setAttribute(ArduinoLaunchConfigurationDelegate.CONNECTION_NAME, target.getName()); + if (target != null) { + workingCopy.setAttribute(ArduinoLaunchConfigurationDelegate.CONNECTION_NAME, target.getName()); + } + } + + @Override + protected IRemoteConnection getLaunchTarget(ILaunchConfiguration configuration) throws CoreException { + String name = configuration.getAttribute(ArduinoLaunchConfigurationDelegate.CONNECTION_NAME, ""); //$NON-NLS-1$ + if (name.isEmpty()) { + return null; + } + IRemoteServicesManager manager = Activator.getService(IRemoteServicesManager.class); + IRemoteConnectionType type = manager.getConnectionType(ArduinoRemoteConnection.TYPE_ID); + return type.getConnection(name); + } + + @Override + protected boolean providesForNullTarget() { + return true; } } diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchDescriptorType.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchDescriptorType.java index 6b7a8076149..5200581c432 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchDescriptorType.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchDescriptorType.java @@ -20,18 +20,9 @@ import org.eclipse.launchbar.core.ProjectLaunchDescriptor; public class ArduinoLaunchDescriptorType implements ILaunchDescriptorType { @Override - public boolean ownsLaunchObject(Object element) throws CoreException { - if (element instanceof IProject) { - return ArduinoProjectNature.hasNature((IProject) element); - } - - return false; - } - - @Override - public ILaunchDescriptor getDescriptor(Object element) throws CoreException { - if (element instanceof IProject) { - return new ProjectLaunchDescriptor(this, (IProject) element); + public ILaunchDescriptor getDescriptor(Object launchObject) throws CoreException { + if (launchObject instanceof IProject && ArduinoProjectNature.hasNature((IProject) launchObject)) { + return new ProjectLaunchDescriptor(this, (IProject) launchObject); } return null;