From 80c6a9694ea0fa81cca4fe8f705440c8287cfa7e Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Fri, 11 Nov 2016 12:36:48 -0500 Subject: [PATCH] Add method to ILaunchTarget to get all the attributes. This is used by CDT, for example, to be able to map targets to toolchains. Change-Id: I98d7463d512299c43c405fd474bb8e128a81663f --- .../launchbar/core/internal/Messages.java | 1 + .../core/internal/messages.properties | 6 +++--- .../core/internal/target/LaunchTarget.java | 21 +++++++++++++++++++ .../target/LaunchTargetWorkingCopy.java | 7 +++++++ .../launchbar/core/target/ILaunchTarget.java | 13 +++++++++++- 5 files changed, 44 insertions(+), 4 deletions(-) diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Messages.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Messages.java index aac564aa411..172f4e198c1 100644 --- a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Messages.java +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/Messages.java @@ -14,6 +14,7 @@ import org.eclipse.osgi.util.NLS; public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.launchbar.core.internal.messages"; //$NON-NLS-1$ + public static String ILaunchTarget_notSupported; public static String LaunchBarManager_0; public static String LaunchBarManager_1; public static String LaunchBarManager_2; diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/messages.properties b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/messages.properties index 9d627bf8d9c..6f2a6f0319b 100644 --- a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/messages.properties +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/messages.properties @@ -1,5 +1,3 @@ -LaunchBarManager_1=Active descriptor must be in the map of descriptors -LaunchBarManager_2=Mode is not supported by descriptor ################################################################################ # Copyright (c) 2014 QNX Software Systems and others. # All rights reserved. This program and the accompanying materials @@ -10,7 +8,9 @@ LaunchBarManager_2=Mode is not supported by descriptor # Contributors: # Doug Schaefer ################################################################################ - +ILaunchTarget_notSupported=getWorkingCopy is not supported for NULL_TARGET LaunchBarManager_0=Launch Bar Initialization +LaunchBarManager_1=Active descriptor must be in the map of descriptors +LaunchBarManager_2=Mode is not supported by descriptor LocalTarget_name=Local OK=OK diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTarget.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTarget.java index 07c389b383e..ab54170a7a0 100644 --- a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTarget.java +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTarget.java @@ -7,9 +7,14 @@ *******************************************************************************/ package org.eclipse.launchbar.core.internal.target; +import java.util.HashMap; +import java.util.Map; + import org.eclipse.core.runtime.PlatformObject; +import org.eclipse.launchbar.core.internal.Activator; import org.eclipse.launchbar.core.target.ILaunchTarget; import org.eclipse.launchbar.core.target.ILaunchTargetWorkingCopy; +import org.osgi.service.prefs.BackingStoreException; import org.osgi.service.prefs.Preferences; public class LaunchTarget extends PlatformObject implements ILaunchTarget { @@ -59,6 +64,22 @@ public class LaunchTarget extends PlatformObject implements ILaunchTarget { } } + @Override + public Map getAttributes() { + Map attrs = new HashMap<>(); + try { + for (String key : attributes.keys()) { + String value = attributes.get(key, null); + if (value != null) { + attrs.put(key, value); + } + } + } catch (BackingStoreException e) { + Activator.log(e); + } + return attrs; + } + @Override public int hashCode() { final int prime = 31; diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetWorkingCopy.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetWorkingCopy.java index b256188df89..f9089b8dc3d 100644 --- a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetWorkingCopy.java +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/target/LaunchTargetWorkingCopy.java @@ -61,6 +61,13 @@ public class LaunchTargetWorkingCopy extends PlatformObject implements ILaunchTa } } + @Override + public Map getAttributes() { + Map attrs = original.getAttributes(); + attrs.putAll(changes); + return attrs; + } + @Override public void setAttribute(String key, String value) { changes.put(key, value); diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTarget.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTarget.java index 13bb91f2adb..21bdf2ac929 100644 --- a/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTarget.java +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/target/ILaunchTarget.java @@ -7,7 +7,10 @@ *******************************************************************************/ package org.eclipse.launchbar.core.target; +import java.util.Map; + import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.launchbar.core.internal.Messages; import org.eclipse.launchbar.core.internal.target.LaunchTarget; /** @@ -29,7 +32,7 @@ public interface ILaunchTarget extends IAdaptable { public static final ILaunchTarget NULL_TARGET = new LaunchTarget("null", "---") { //$NON-NLS-1$ //$NON-NLS-2$ @Override public ILaunchTargetWorkingCopy getWorkingCopy() { - throw new UnsupportedOperationException("getWorkingCopy is not supported for NULL_TARGET"); + throw new UnsupportedOperationException(Messages.ILaunchTarget_notSupported); }; }; @@ -69,6 +72,14 @@ public interface ILaunchTarget extends IAdaptable { */ String getAttribute(String key, String defValue); + /** + * Returns a read-only map of the attributes. + * + * @return the attributes for this target + * @since 2.1 + */ + Map getAttributes(); + /** * Create a working copy of this launch target to allow setting of attributes. It also allows * changing the id, which results in a new launch target when saved.