Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ToggleBreakpointsTargetManager.java')
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ToggleBreakpointsTargetManager.java1152
1 files changed, 576 insertions, 576 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ToggleBreakpointsTargetManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ToggleBreakpointsTargetManager.java
index eba6a00e3..6c9509d95 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ToggleBreakpointsTargetManager.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ToggleBreakpointsTargetManager.java
@@ -77,660 +77,660 @@ import org.eclipse.ui.texteditor.SimpleMarkerAnnotation;
*/
public class ToggleBreakpointsTargetManager implements IToggleBreakpointsTargetManager {
- /**
- * Toggle breakpoints target ID which refers to a target contributed
- * through the legacy adapter mechanism.
- */
- public static String DEFAULT_TOGGLE_TARGET_ID = "default"; //$NON-NLS-1$
+ /**
+ * Toggle breakpoints target ID which refers to a target contributed
+ * through the legacy adapter mechanism.
+ */
+ public static String DEFAULT_TOGGLE_TARGET_ID = "default"; //$NON-NLS-1$
private static Set<String> DEFAULT_TOGGLE_TARGET_ID_SET = new TreeSet<>();
- static {
- DEFAULT_TOGGLE_TARGET_ID_SET.add(DEFAULT_TOGGLE_TARGET_ID);
- }
-
- /**
- * Acts as a proxy between the toggle breakpoints target manager and the factories
- * contributed to the extension point. Only loads information from the plug-in XML
- * and only instantiates the specified factory if required (lazy loading).
- */
- private static class ToggleTargetFactory implements IToggleBreakpointsTargetFactory {
-
- private IConfigurationElement fConfigElement;
- private IToggleBreakpointsTargetFactory fFactory;
- private Expression fEnablementExpression;
-
- public ToggleTargetFactory(IConfigurationElement configElement){
- fConfigElement = configElement;
- }
-
- /**
- * @return Returns the instantiated factory specified by the class property.
- */
- private IToggleBreakpointsTargetFactory getFactory() {
- if (fFactory != null) {
+ static {
+ DEFAULT_TOGGLE_TARGET_ID_SET.add(DEFAULT_TOGGLE_TARGET_ID);
+ }
+
+ /**
+ * Acts as a proxy between the toggle breakpoints target manager and the factories
+ * contributed to the extension point. Only loads information from the plug-in XML
+ * and only instantiates the specified factory if required (lazy loading).
+ */
+ private static class ToggleTargetFactory implements IToggleBreakpointsTargetFactory {
+
+ private IConfigurationElement fConfigElement;
+ private IToggleBreakpointsTargetFactory fFactory;
+ private Expression fEnablementExpression;
+
+ public ToggleTargetFactory(IConfigurationElement configElement){
+ fConfigElement = configElement;
+ }
+
+ /**
+ * @return Returns the instantiated factory specified by the class property.
+ */
+ private IToggleBreakpointsTargetFactory getFactory() {
+ if (fFactory != null) {
return fFactory;
}
- try{
- Object obj = fConfigElement.createExecutableExtension(IConfigurationElementConstants.CLASS);
- if(obj instanceof IToggleBreakpointsTargetFactory) {
- fFactory = (IToggleBreakpointsTargetFactory)obj;
- } else {
- throw new CoreException(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, "org.eclipse.debug.ui.toggleBreakpointsTargetFactories extension failed to load breakpoint toggle target because the specified class does not implement org.eclipse.debug.ui.actions.IToggleBreakpointsTargetFactory. Class specified was: " + obj, null)); //$NON-NLS-1$
- }
- } catch (CoreException e){
- DebugUIPlugin.log(e.getStatus());
- fFactory = null;
- }
- return fFactory;
- }
-
- /**
- * Checks if the enablement expression for the factory evaluates to true for the
- * given part and selection.
- * @param part The active part.
- * @param selection The current selection
- * @return whether the delegated target factory is enabled for given
- * part and selection.
- */
- public boolean isEnabled(IWorkbenchPart part, ISelection selection) {
- boolean enabled = false;
- Expression expression = getEnablementExpression();
- if (expression != null) {
- enabled = evalEnablementExpression(part, selection, expression);
- } else {
- enabled = true;
- }
- return enabled;
- }
-
- /**
- * Returns the active debug context given the active part. It is used
- * in creating the evaluation context for the factories' enablement expression.
- * @param part active part
- * @return current active debug context
- */
- private IStructuredSelection getDebugContext(IWorkbenchPart part) {
- ISelection selection = DebugUITools.getDebugContextManager().
- getContextService(part.getSite().getWorkbenchWindow()).getActiveContext();
- if (selection instanceof IStructuredSelection) {
- return (IStructuredSelection)selection;
- }
- return StructuredSelection.EMPTY;
- }
-
- /**
- * Evaluate the given expression within the given context and return
- * the result. Returns <code>true</code> iff result is either TRUE.
- *
- * @param part the {@link IWorkbenchPart} context
- * @param selection the current selection in the part
- * @param exp the current expression
- * @return the result of evaluating the expression
- */
- private boolean evalEnablementExpression(IWorkbenchPart part, ISelection selection, Expression exp) {
- if (exp != null){
- IEvaluationContext context = DebugUIPlugin.createEvaluationContext(part);
+ try{
+ Object obj = fConfigElement.createExecutableExtension(IConfigurationElementConstants.CLASS);
+ if(obj instanceof IToggleBreakpointsTargetFactory) {
+ fFactory = (IToggleBreakpointsTargetFactory)obj;
+ } else {
+ throw new CoreException(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, "org.eclipse.debug.ui.toggleBreakpointsTargetFactories extension failed to load breakpoint toggle target because the specified class does not implement org.eclipse.debug.ui.actions.IToggleBreakpointsTargetFactory. Class specified was: " + obj, null)); //$NON-NLS-1$
+ }
+ } catch (CoreException e){
+ DebugUIPlugin.log(e.getStatus());
+ fFactory = null;
+ }
+ return fFactory;
+ }
+
+ /**
+ * Checks if the enablement expression for the factory evaluates to true for the
+ * given part and selection.
+ * @param part The active part.
+ * @param selection The current selection
+ * @return whether the delegated target factory is enabled for given
+ * part and selection.
+ */
+ public boolean isEnabled(IWorkbenchPart part, ISelection selection) {
+ boolean enabled = false;
+ Expression expression = getEnablementExpression();
+ if (expression != null) {
+ enabled = evalEnablementExpression(part, selection, expression);
+ } else {
+ enabled = true;
+ }
+ return enabled;
+ }
+
+ /**
+ * Returns the active debug context given the active part. It is used
+ * in creating the evaluation context for the factories' enablement expression.
+ * @param part active part
+ * @return current active debug context
+ */
+ private IStructuredSelection getDebugContext(IWorkbenchPart part) {
+ ISelection selection = DebugUITools.getDebugContextManager().
+ getContextService(part.getSite().getWorkbenchWindow()).getActiveContext();
+ if (selection instanceof IStructuredSelection) {
+ return (IStructuredSelection)selection;
+ }
+ return StructuredSelection.EMPTY;
+ }
+
+ /**
+ * Evaluate the given expression within the given context and return
+ * the result. Returns <code>true</code> iff result is either TRUE.
+ *
+ * @param part the {@link IWorkbenchPart} context
+ * @param selection the current selection in the part
+ * @param exp the current expression
+ * @return the result of evaluating the expression
+ */
+ private boolean evalEnablementExpression(IWorkbenchPart part, ISelection selection, Expression exp) {
+ if (exp != null){
+ IEvaluationContext context = DebugUIPlugin.createEvaluationContext(part);
List<Object> debugContextList = getDebugContext(part).toList();
- context.addVariable(IConfigurationElementConstants.DEBUG_CONTEXT, debugContextList);
+ context.addVariable(IConfigurationElementConstants.DEBUG_CONTEXT, debugContextList);
- if (selection instanceof IStructuredSelection) {
+ if (selection instanceof IStructuredSelection) {
List<Object> selectionList = ((IStructuredSelection) selection).toList();
- context.addVariable(IConfigurationElementConstants.SELECTION, selectionList);
- }
-
- if (part instanceof IEditorPart) {
- context.addVariable(IConfigurationElementConstants.EDITOR_INPUT, ((IEditorPart)part).getEditorInput());
- }
-
- try{
- EvaluationResult result = exp.evaluate(context);
- if (result == EvaluationResult.TRUE){
- return true;
- }
- } catch (CoreException e){
- // Evaluation failed
- }
- }
- return false;
- }
-
- /**
+ context.addVariable(IConfigurationElementConstants.SELECTION, selectionList);
+ }
+
+ if (part instanceof IEditorPart) {
+ context.addVariable(IConfigurationElementConstants.EDITOR_INPUT, ((IEditorPart)part).getEditorInput());
+ }
+
+ try{
+ EvaluationResult result = exp.evaluate(context);
+ if (result == EvaluationResult.TRUE){
+ return true;
+ }
+ } catch (CoreException e){
+ // Evaluation failed
+ }
+ }
+ return false;
+ }
+
+ /**
* @return Returns an expression that represents the enablement logic
* for the breakpoint toggle target.
*/
- private Expression getEnablementExpression(){
- if (fEnablementExpression == null) {
- try{
- IConfigurationElement[] elements = fConfigElement.getChildren(ExpressionTagNames.ENABLEMENT);
- IConfigurationElement enablement = elements.length > 0 ? elements[0] : null;
- if (enablement != null) {
- fEnablementExpression = ExpressionConverter.getDefault().perform(enablement);
- }
- } catch (CoreException e){
- DebugUIPlugin.log(e.getStatus());
- fEnablementExpression = null;
- }
- }
- return fEnablementExpression;
- }
-
- /**
- * Instantiates the factory and asks it to produce the IToggleBreakpointsTarget
- * for the given ID
- * @param targetID ID to create toggle target for
- * @return The created toggle target, or null.
- */
- @Override
+ private Expression getEnablementExpression(){
+ if (fEnablementExpression == null) {
+ try{
+ IConfigurationElement[] elements = fConfigElement.getChildren(ExpressionTagNames.ENABLEMENT);
+ IConfigurationElement enablement = elements.length > 0 ? elements[0] : null;
+ if (enablement != null) {
+ fEnablementExpression = ExpressionConverter.getDefault().perform(enablement);
+ }
+ } catch (CoreException e){
+ DebugUIPlugin.log(e.getStatus());
+ fEnablementExpression = null;
+ }
+ }
+ return fEnablementExpression;
+ }
+
+ /**
+ * Instantiates the factory and asks it to produce the IToggleBreakpointsTarget
+ * for the given ID
+ * @param targetID ID to create toggle target for
+ * @return The created toggle target, or null.
+ */
+ @Override
public IToggleBreakpointsTarget createToggleTarget(String targetID) {
- IToggleBreakpointsTargetFactory factory = getFactory();
- if (factory != null) {
- return factory.createToggleTarget(targetID);
- }
- return null;
- }
-
- /**
- * Instantiates the factory and asks it for the set of toggle target
- * IDs that the factory can produce for the given part and selection.
- * @param part The active part.
- * @param selection The current selection
- * @return Set of <code>String</code> IDs for possible toggle breakpoint
- * targets, possibly empty
- */
- @Override
+ IToggleBreakpointsTargetFactory factory = getFactory();
+ if (factory != null) {
+ return factory.createToggleTarget(targetID);
+ }
+ return null;
+ }
+
+ /**
+ * Instantiates the factory and asks it for the set of toggle target
+ * IDs that the factory can produce for the given part and selection.
+ * @param part The active part.
+ * @param selection The current selection
+ * @return Set of <code>String</code> IDs for possible toggle breakpoint
+ * targets, possibly empty
+ */
+ @Override
public Set<String> getToggleTargets(IWorkbenchPart part, ISelection selection) {
- IToggleBreakpointsTargetFactory factory = getFactory();
- if (factory != null) {
- return factory.getToggleTargets(part, selection);
- }
- return Collections.EMPTY_SET;
- }
-
- /**
- * Instantiates the factory and asks it to produce the name of the toggle target
- * for the given ID.
- * @param targetID toggle breakpoints target identifier
- * @return toggle target name
- */
- @Override
+ IToggleBreakpointsTargetFactory factory = getFactory();
+ if (factory != null) {
+ return factory.getToggleTargets(part, selection);
+ }
+ return Collections.EMPTY_SET;
+ }
+
+ /**
+ * Instantiates the factory and asks it to produce the name of the toggle target
+ * for the given ID.
+ * @param targetID toggle breakpoints target identifier
+ * @return toggle target name
+ */
+ @Override
public String getToggleTargetName(String targetID) {
- IToggleBreakpointsTargetFactory factory = getFactory();
- if (factory != null) {
- return factory.getToggleTargetName(targetID);
- }
- return null;
- }
-
- /**
- * Instantiates the factory and asks it to produce the description of the toggle
- * target for the given ID.
- * @param targetID toggle breakpoints target identifier
- * @return toggle target name or <code>null</code> if none
- */
- @Override
+ IToggleBreakpointsTargetFactory factory = getFactory();
+ if (factory != null) {
+ return factory.getToggleTargetName(targetID);
+ }
+ return null;
+ }
+
+ /**
+ * Instantiates the factory and asks it to produce the description of the toggle
+ * target for the given ID.
+ * @param targetID toggle breakpoints target identifier
+ * @return toggle target name or <code>null</code> if none
+ */
+ @Override
public String getToggleTargetDescription(String targetID) {
- IToggleBreakpointsTargetFactory factory = getFactory();
- if (factory != null) {
- return factory.getToggleTargetDescription(targetID);
- }
- return null;
- }
-
- /**
- * Instantiates the factory and asks it for the toggle tareget ID that
- * the factory considers the default for the given part and selection.
- * @param part The active part.
- * @param selection The current selection
- * @return a breakpoint toggle target identifier or <code>null</code>
- */
- @Override
+ IToggleBreakpointsTargetFactory factory = getFactory();
+ if (factory != null) {
+ return factory.getToggleTargetDescription(targetID);
+ }
+ return null;
+ }
+
+ /**
+ * Instantiates the factory and asks it for the toggle tareget ID that
+ * the factory considers the default for the given part and selection.
+ * @param part The active part.
+ * @param selection The current selection
+ * @return a breakpoint toggle target identifier or <code>null</code>
+ */
+ @Override
public String getDefaultToggleTarget(IWorkbenchPart part, ISelection selection) {
- IToggleBreakpointsTargetFactory factory = getFactory();
- if (factory != null) {
- return factory.getDefaultToggleTarget(part, selection);
- }
- return null;
- }
- }
-
-
- /**
- * Factory for toggle breakpoints targets contributed through the
- * adapter mechanism.
- */
- private static class ToggleBreakpointsTargetAdapterFactory implements IToggleBreakpointsTargetFactory {
-
- private Object getSelectionElement(ISelection selection) {
- if (selection instanceof IStructuredSelection) {
- IStructuredSelection ss = (IStructuredSelection)selection;
- return ss.getFirstElement();
- }
- return null;
- }
-
- /**
- * Checks whether the given element is adaptable to the toggle breakpoints target.
- * This method does not force loading of the adapter.
- * @param adaptable Element to adapt.
- * @return returns true if element can be adapted.
- */
- private boolean canGetToggleBreakpointsTarget(Object adaptable) {
- if (adaptable != null) {
- IToggleBreakpointsTarget adapter = null;
- if (adaptable instanceof IAdaptable) {
- adapter = ((IAdaptable)adaptable).getAdapter(IToggleBreakpointsTarget.class);
- }
- if (adapter == null) {
- IAdapterManager adapterManager = Platform.getAdapterManager();
- if (adapterManager.hasAdapter(adaptable, IToggleBreakpointsTarget.class.getName())) {
- return true;
- }
- } else {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Finds the toggle breakpoints target for the active part and selection.
- * It first looks for the target using the factories registered using an
- * extension point. If not found it uses the <code>IAdaptable</code>
- * mechanism.
- * @param part The workbench part in which toggle target is to be used
- * @param element The selection element to retrieve the toggle adapter from
- * @return The toggle breakpoints target, or <code>null</code> if not found.
- */
- private IToggleBreakpointsTarget getToggleBreakpointsTarget(IWorkbenchPart part, Object element) {
- IToggleBreakpointsTarget target = null;
- if (element != null) {
- target = (IToggleBreakpointsTarget) DebugPlugin.getAdapter(element, IToggleBreakpointsTarget.class);
- }
- if (target == null) {
- target = (IToggleBreakpointsTarget) DebugPlugin.getAdapter(part, IToggleBreakpointsTarget.class);
- }
- return target;
- }
-
- /**
- * Checks if there is an adaptable object for the given part and
- * selection, and if there is, it checks whether an
- * <code>IToggleBreakpointsTarget</code> can be obtained as an adapter.
- * @param part The workbench part in which toggle target is to be used
- * @param selection The active selection to use with toggle target
- * @return Whether the adapter (default) toggle target is available.
- */
- public boolean isEnabled(IWorkbenchPart part, ISelection selection) {
- return canGetToggleBreakpointsTarget(getSelectionElement(selection)) || canGetToggleBreakpointsTarget(part);
- }
-
- /**
- * Not implemented use {@link #createDefaultToggleTarget(IWorkbenchPart, ISelection)}
- * instead.
- * @param targetID not used
- * @return always returns null
- */
- @Override
+ IToggleBreakpointsTargetFactory factory = getFactory();
+ if (factory != null) {
+ return factory.getDefaultToggleTarget(part, selection);
+ }
+ return null;
+ }
+ }
+
+
+ /**
+ * Factory for toggle breakpoints targets contributed through the
+ * adapter mechanism.
+ */
+ private static class ToggleBreakpointsTargetAdapterFactory implements IToggleBreakpointsTargetFactory {
+
+ private Object getSelectionElement(ISelection selection) {
+ if (selection instanceof IStructuredSelection) {
+ IStructuredSelection ss = (IStructuredSelection)selection;
+ return ss.getFirstElement();
+ }
+ return null;
+ }
+
+ /**
+ * Checks whether the given element is adaptable to the toggle breakpoints target.
+ * This method does not force loading of the adapter.
+ * @param adaptable Element to adapt.
+ * @return returns true if element can be adapted.
+ */
+ private boolean canGetToggleBreakpointsTarget(Object adaptable) {
+ if (adaptable != null) {
+ IToggleBreakpointsTarget adapter = null;
+ if (adaptable instanceof IAdaptable) {
+ adapter = ((IAdaptable)adaptable).getAdapter(IToggleBreakpointsTarget.class);
+ }
+ if (adapter == null) {
+ IAdapterManager adapterManager = Platform.getAdapterManager();
+ if (adapterManager.hasAdapter(adaptable, IToggleBreakpointsTarget.class.getName())) {
+ return true;
+ }
+ } else {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Finds the toggle breakpoints target for the active part and selection.
+ * It first looks for the target using the factories registered using an
+ * extension point. If not found it uses the <code>IAdaptable</code>
+ * mechanism.
+ * @param part The workbench part in which toggle target is to be used
+ * @param element The selection element to retrieve the toggle adapter from
+ * @return The toggle breakpoints target, or <code>null</code> if not found.
+ */
+ private IToggleBreakpointsTarget getToggleBreakpointsTarget(IWorkbenchPart part, Object element) {
+ IToggleBreakpointsTarget target = null;
+ if (element != null) {
+ target = (IToggleBreakpointsTarget) DebugPlugin.getAdapter(element, IToggleBreakpointsTarget.class);
+ }
+ if (target == null) {
+ target = (IToggleBreakpointsTarget) DebugPlugin.getAdapter(part, IToggleBreakpointsTarget.class);
+ }
+ return target;
+ }
+
+ /**
+ * Checks if there is an adaptable object for the given part and
+ * selection, and if there is, it checks whether an
+ * <code>IToggleBreakpointsTarget</code> can be obtained as an adapter.
+ * @param part The workbench part in which toggle target is to be used
+ * @param selection The active selection to use with toggle target
+ * @return Whether the adapter (default) toggle target is available.
+ */
+ public boolean isEnabled(IWorkbenchPart part, ISelection selection) {
+ return canGetToggleBreakpointsTarget(getSelectionElement(selection)) || canGetToggleBreakpointsTarget(part);
+ }
+
+ /**
+ * Not implemented use {@link #createDefaultToggleTarget(IWorkbenchPart, ISelection)}
+ * instead.
+ * @param targetID not used
+ * @return always returns null
+ */
+ @Override
public IToggleBreakpointsTarget createToggleTarget(String targetID) {
- return null;
- }
-
- /**
- * @param part The workbench part in which toggle target is to be used
- * @param selection The active selection to use with toggle target
- * @return Returns a toggle target for the given part and selection, obtained
- * through the adapter mechanism.
- */
- public IToggleBreakpointsTarget createDefaultToggleTarget(IWorkbenchPart part, ISelection selection) {
- return getToggleBreakpointsTarget(part, getSelectionElement(selection));
- }
-
- @Override
+ return null;
+ }
+
+ /**
+ * @param part The workbench part in which toggle target is to be used
+ * @param selection The active selection to use with toggle target
+ * @return Returns a toggle target for the given part and selection, obtained
+ * through the adapter mechanism.
+ */
+ public IToggleBreakpointsTarget createDefaultToggleTarget(IWorkbenchPart part, ISelection selection) {
+ return getToggleBreakpointsTarget(part, getSelectionElement(selection));
+ }
+
+ @Override
public Set<String> getToggleTargets(IWorkbenchPart part, ISelection selection) {
- if (isEnabled(part, selection)) {
- return DEFAULT_TOGGLE_TARGET_ID_SET;
- }
- return Collections.EMPTY_SET;
- }
+ if (isEnabled(part, selection)) {
+ return DEFAULT_TOGGLE_TARGET_ID_SET;
+ }
+ return Collections.EMPTY_SET;
+ }
- @Override
+ @Override
public String getToggleTargetName(String targetID) {
- return ActionMessages.ToggleBreakpointsTargetManager_defaultToggleTarget_name;
- }
+ return ActionMessages.ToggleBreakpointsTargetManager_defaultToggleTarget_name;
+ }
- @Override
+ @Override
public String getToggleTargetDescription(String targetID) {
- return ActionMessages.ToggleBreakpointsTargetManager_defaultToggleTarget_description;
- }
+ return ActionMessages.ToggleBreakpointsTargetManager_defaultToggleTarget_description;
+ }
- @Override
+ @Override
public String getDefaultToggleTarget(IWorkbenchPart part, ISelection selection) {
- return DEFAULT_TOGGLE_TARGET_ID;
- }
- }
+ return DEFAULT_TOGGLE_TARGET_ID;
+ }
+ }
- /**
- * Preference key for storing the preferred targets map.
- * @see #storePreferredTargets()
- * @see #loadPreferredTargets()
- */
- public static final String PREF_TARGETS = "preferredTargets"; //$NON-NLS-1$
+ /**
+ * Preference key for storing the preferred targets map.
+ * @see #storePreferredTargets()
+ * @see #loadPreferredTargets()
+ */
+ public static final String PREF_TARGETS = "preferredTargets"; //$NON-NLS-1$
- /**
- * There should only ever be once instance of this manager for the workbench.
- */
- private static ToggleBreakpointsTargetManager fgSingleton;
+ /**
+ * There should only ever be once instance of this manager for the workbench.
+ */
+ private static ToggleBreakpointsTargetManager fgSingleton;
- public static ToggleBreakpointsTargetManager getDefault(){
- if (fgSingleton == null) {
+ public static ToggleBreakpointsTargetManager getDefault(){
+ if (fgSingleton == null) {
fgSingleton = new ToggleBreakpointsTargetManager();
}
- return fgSingleton;
- }
+ return fgSingleton;
+ }
- /**
- * Maps the IDs of toggle breakpoint targets to their instances. The target
- * IDs must be unique.
- */
+ /**
+ * Maps the IDs of toggle breakpoint targets to their instances. The target
+ * IDs must be unique.
+ */
private Map<String, IToggleBreakpointsTargetFactory> fKnownFactories;
- /**
- * Maps a Set of target id's to the one target id that is preferred.
- */
+ /**
+ * Maps a Set of target id's to the one target id that is preferred.
+ */
private Map<Set<String>, String> fPreferredTargets;
- /**
- * Maps the IDs of toggle targets to the factory that can create them.
- * There can currently only be one factory for a given toggle target.
- */
+ /**
+ * Maps the IDs of toggle targets to the factory that can create them.
+ * There can currently only be one factory for a given toggle target.
+ */
private Map<String, IToggleBreakpointsTargetFactory> fFactoriesByTargetID = new HashMap<>();
- /**
- * List of listeners to changes in the preferred toggle targets list.
- */
+ /**
+ * List of listeners to changes in the preferred toggle targets list.
+ */
private ListenerList<IToggleBreakpointsTargetManagerListener> fChangedListners = new ListenerList<>();
- /**
- * Initializes the collection of known factories from extension point contributions.
- */
- private void initializeFactories() {
+ /**
+ * Initializes the collection of known factories from extension point contributions.
+ */
+ private void initializeFactories() {
fKnownFactories = new LinkedHashMap<>();
- fKnownFactories.put(DEFAULT_TOGGLE_TARGET_ID, new ToggleBreakpointsTargetAdapterFactory());
- IExtensionPoint ep = Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.EXTENSION_POINT_TOGGLE_BREAKPOINTS_TARGET_FACTORIES);
- IConfigurationElement[] elements = ep.getConfigurationElements();
- for (int i= 0; i < elements.length; i++) {
- String id = elements[i].getAttribute(IConfigurationElementConstants.ID);
- if (id != null && id.length() != 0) {
- if (fKnownFactories.containsKey(id)) {
- DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, "org.eclipse.debug.ui.toggleBreakpointsTargetFactory extension failed to load breakpoint toggle target because the specified id is already registered. Specified ID is: " + id, null)); //$NON-NLS-1$
- } else {
- fKnownFactories.put(id, new ToggleTargetFactory(elements[i]));
- }
- } else {
- DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, "org.eclipse.debug.ui.toggleBreakpointsTargetFactory extension failed to load breakpoint toggle target because the specified id is empty.", null)); //$NON-NLS-1$
- }
- }
-
- // If there are any factories contributed through the extension point,
- // set a system property for use in enabling actions.
- System.setProperty(IDebugUIConstants.SYS_PROP_BREAKPOINT_TOGGLE_FACTORIES_USED,
- fKnownFactories.size() > 1 ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- /**
- * Returns the set of IToggleBreakpointsTargetFactory objects (they will be
- * ToggleTargetFactory) that were contributed to the extension point and
- * are enabled for the given part and selection (enabled if the factory
- * does not have an enablement expression or if the enablement expression
- * evaluates to true).
- *
- * @param part active part
- * @param selection active selection in part
- * @return The factories enabled for the part and selection or an empty
- * collection.
- */
+ fKnownFactories.put(DEFAULT_TOGGLE_TARGET_ID, new ToggleBreakpointsTargetAdapterFactory());
+ IExtensionPoint ep = Platform.getExtensionRegistry().getExtensionPoint(DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.EXTENSION_POINT_TOGGLE_BREAKPOINTS_TARGET_FACTORIES);
+ IConfigurationElement[] elements = ep.getConfigurationElements();
+ for (int i= 0; i < elements.length; i++) {
+ String id = elements[i].getAttribute(IConfigurationElementConstants.ID);
+ if (id != null && id.length() != 0) {
+ if (fKnownFactories.containsKey(id)) {
+ DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, "org.eclipse.debug.ui.toggleBreakpointsTargetFactory extension failed to load breakpoint toggle target because the specified id is already registered. Specified ID is: " + id, null)); //$NON-NLS-1$
+ } else {
+ fKnownFactories.put(id, new ToggleTargetFactory(elements[i]));
+ }
+ } else {
+ DebugUIPlugin.log(new Status(IStatus.ERROR, DebugUIPlugin.getUniqueIdentifier(), IDebugUIConstants.INTERNAL_ERROR, "org.eclipse.debug.ui.toggleBreakpointsTargetFactory extension failed to load breakpoint toggle target because the specified id is empty.", null)); //$NON-NLS-1$
+ }
+ }
+
+ // If there are any factories contributed through the extension point,
+ // set a system property for use in enabling actions.
+ System.setProperty(IDebugUIConstants.SYS_PROP_BREAKPOINT_TOGGLE_FACTORIES_USED,
+ fKnownFactories.size() > 1 ? "true" : "false"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * Returns the set of IToggleBreakpointsTargetFactory objects (they will be
+ * ToggleTargetFactory) that were contributed to the extension point and
+ * are enabled for the given part and selection (enabled if the factory
+ * does not have an enablement expression or if the enablement expression
+ * evaluates to true).
+ *
+ * @param part active part
+ * @param selection active selection in part
+ * @return The factories enabled for the part and selection or an empty
+ * collection.
+ */
private Set<IToggleBreakpointsTargetFactory> getEnabledFactories(IWorkbenchPart part, ISelection selection) {
- if (fKnownFactories == null) {
+ if (fKnownFactories == null) {
initializeFactories();
}
Set<IToggleBreakpointsTargetFactory> set = new HashSet<>();
for (Entry<String, IToggleBreakpointsTargetFactory> entry : fKnownFactories.entrySet()) {
IToggleBreakpointsTargetFactory factory = entry.getValue();
- if (factory instanceof ToggleTargetFactory &&
- ((ToggleTargetFactory)factory).isEnabled(part, selection)) {
- set.add(factory);
- } else if (factory instanceof ToggleBreakpointsTargetAdapterFactory &&
- ((ToggleBreakpointsTargetAdapterFactory)factory).isEnabled(part, selection)) {
- set.add(factory);
- }
- }
- return set;
- }
-
- /**
- * Produces the set of IDs for all possible toggle targets that can be used for
- * the given part and selection.
- *
- * @param factoriesToQuery The collection of factories to check
- * @param part active part
- * @param selection active selection in part
- * @return Set of toggle target IDs or an empty set
- */
+ if (factory instanceof ToggleTargetFactory &&
+ ((ToggleTargetFactory)factory).isEnabled(part, selection)) {
+ set.add(factory);
+ } else if (factory instanceof ToggleBreakpointsTargetAdapterFactory &&
+ ((ToggleBreakpointsTargetAdapterFactory)factory).isEnabled(part, selection)) {
+ set.add(factory);
+ }
+ }
+ return set;
+ }
+
+ /**
+ * Produces the set of IDs for all possible toggle targets that can be used for
+ * the given part and selection.
+ *
+ * @param factoriesToQuery The collection of factories to check
+ * @param part active part
+ * @param selection active selection in part
+ * @return Set of toggle target IDs or an empty set
+ */
private Set<String> getEnabledTargetIDs(Set<IToggleBreakpointsTargetFactory> factoriesToQuery, IWorkbenchPart part, ISelection selection) {
Set<String> idsForSelection = new TreeSet<>();
for (IToggleBreakpointsTargetFactory factory : factoriesToQuery) {
for(String targetID : factory.getToggleTargets(part, selection)) {
- fFactoriesByTargetID.put(targetID, factory);
- idsForSelection.add(targetID);
- }
- }
- return idsForSelection;
- }
-
- @Override
+ fFactoriesByTargetID.put(targetID, factory);
+ idsForSelection.add(targetID);
+ }
+ }
+ return idsForSelection;
+ }
+
+ @Override
public Set<String> getEnabledToggleBreakpointsTargetIDs(IWorkbenchPart part, ISelection selection) {
- return getEnabledTargetIDs(getEnabledFactories(part, selection), part, selection);
- }
+ return getEnabledTargetIDs(getEnabledFactories(part, selection), part, selection);
+ }
- @Override
+ @Override
public String getPreferredToggleBreakpointsTargetID(IWorkbenchPart part, ISelection selection) {
Set<IToggleBreakpointsTargetFactory> factories = getEnabledFactories(part, selection);
Set<String> possibleIDs = getEnabledTargetIDs(factories, part, selection);
- return chooseToggleTargetIDInSet(possibleIDs, part, selection);
- }
+ return chooseToggleTargetIDInSet(possibleIDs, part, selection);
+ }
- @Override
+ @Override
public IToggleBreakpointsTarget getToggleBreakpointsTarget(IWorkbenchPart part, ISelection selection) {
- String id = getPreferredToggleBreakpointsTargetID(part, selection);
- IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(id);
- if (factory != null) {
- if (DEFAULT_TOGGLE_TARGET_ID.equals(id)) {
- return ((ToggleBreakpointsTargetAdapterFactory)factory).createDefaultToggleTarget(part, selection);
- } else {
- return factory.createToggleTarget(id);
- }
- }
- return null;
- }
-
- @Override
+ String id = getPreferredToggleBreakpointsTargetID(part, selection);
+ IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(id);
+ if (factory != null) {
+ if (DEFAULT_TOGGLE_TARGET_ID.equals(id)) {
+ return ((ToggleBreakpointsTargetAdapterFactory)factory).createDefaultToggleTarget(part, selection);
+ } else {
+ return factory.createToggleTarget(id);
+ }
+ }
+ return null;
+ }
+
+ @Override
public String getToggleBreakpointsTargetName(String id) {
- IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(id);
- if (factory != null) {
- return factory.getToggleTargetName(id);
- }
- return null;
- }
-
- @Override
+ IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(id);
+ if (factory != null) {
+ return factory.getToggleTargetName(id);
+ }
+ return null;
+ }
+
+ @Override
public String getToggleBreakpointsTargetDescription(String id) {
- IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(id);
- if (factory != null) {
- return factory.getToggleTargetDescription(id);
- }
- return null;
- }
-
- @Override
+ IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(id);
+ if (factory != null) {
+ return factory.getToggleTargetDescription(id);
+ }
+ return null;
+ }
+
+ @Override
public void addChangedListener(IToggleBreakpointsTargetManagerListener listener) {
- fChangedListners.add(listener);
- }
+ fChangedListners.add(listener);
+ }
- @Override
+ @Override
public void removeChangedListener(IToggleBreakpointsTargetManagerListener listener) {
- fChangedListners.remove(listener);
- }
-
- /**
- * Stores the map of preferred target IDs to the preference store in the format:
- *
- * Key1A,Key1B:Value1|Key2A,Key2B,Key2C:Value2|
- *
- * Where the sub keys (Key1A, Key1B, etc.) are the elements of the set used at the
- * key in the mapping and the values are the associated String value in the mapping.
- */
- private void storePreferredTargets() {
- StringBuilder buffer= new StringBuilder();
+ fChangedListners.remove(listener);
+ }
+
+ /**
+ * Stores the map of preferred target IDs to the preference store in the format:
+ *
+ * Key1A,Key1B:Value1|Key2A,Key2B,Key2C:Value2|
+ *
+ * Where the sub keys (Key1A, Key1B, etc.) are the elements of the set used at the
+ * key in the mapping and the values are the associated String value in the mapping.
+ */
+ private void storePreferredTargets() {
+ StringBuilder buffer= new StringBuilder();
for (Entry<Set<String>, String> entry : fPreferredTargets.entrySet()) {
for (String currentID : entry.getKey()) {
- buffer.append(currentID);
- buffer.append(',');
- }
- buffer.deleteCharAt(buffer.length()-1);
- buffer.append(':');
- buffer.append(entry.getValue());
- buffer.append('|');
- }
- IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(DebugUIPlugin.getUniqueIdentifier());
- if(prefs != null) {
- prefs.put(PREF_TARGETS, buffer.toString());
- }
- }
-
- /**
- * Loads the map of preferred target IDs from the preference store.
- *
- * @see #storePreferredTargets()
- */
- private void loadPreferredTargets() {
+ buffer.append(currentID);
+ buffer.append(',');
+ }
+ buffer.deleteCharAt(buffer.length()-1);
+ buffer.append(':');
+ buffer.append(entry.getValue());
+ buffer.append('|');
+ }
+ IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(DebugUIPlugin.getUniqueIdentifier());
+ if(prefs != null) {
+ prefs.put(PREF_TARGETS, buffer.toString());
+ }
+ }
+
+ /**
+ * Loads the map of preferred target IDs from the preference store.
+ *
+ * @see #storePreferredTargets()
+ */
+ private void loadPreferredTargets() {
fPreferredTargets = new HashMap<>();
- String preferenceValue = Platform.getPreferencesService().getString(
- DebugUIPlugin.getUniqueIdentifier(),
- PREF_TARGETS,
- null,
- null);
- if(preferenceValue == null) {
- return;
- }
- StringTokenizer entryTokenizer = new StringTokenizer(preferenceValue,"|"); //$NON-NLS-1$
- while (entryTokenizer.hasMoreTokens()){
- String token = entryTokenizer.nextToken();
- int valueStart = token.indexOf(':');
- StringTokenizer keyTokenizer = new StringTokenizer(token.substring(0,valueStart),","); //$NON-NLS-1$
+ String preferenceValue = Platform.getPreferencesService().getString(
+ DebugUIPlugin.getUniqueIdentifier(),
+ PREF_TARGETS,
+ null,
+ null);
+ if(preferenceValue == null) {
+ return;
+ }
+ StringTokenizer entryTokenizer = new StringTokenizer(preferenceValue,"|"); //$NON-NLS-1$
+ while (entryTokenizer.hasMoreTokens()){
+ String token = entryTokenizer.nextToken();
+ int valueStart = token.indexOf(':');
+ StringTokenizer keyTokenizer = new StringTokenizer(token.substring(0,valueStart),","); //$NON-NLS-1$
Set<String> keys = new TreeSet<>();
- while (keyTokenizer.hasMoreTokens()){
- keys.add(keyTokenizer.nextToken());
- }
- fPreferredTargets.put(keys, token.substring(valueStart+1));
- }
- }
-
- /**
- * Adds or updates the mapping to set which target ID is preferred for a certain
- * set of possible IDs.
- *
- * @param possibleIDs The set of possible IDs
- * @param preferredID The preferred ID in the set.
- */
+ while (keyTokenizer.hasMoreTokens()){
+ keys.add(keyTokenizer.nextToken());
+ }
+ fPreferredTargets.put(keys, token.substring(valueStart+1));
+ }
+ }
+
+ /**
+ * Adds or updates the mapping to set which target ID is preferred for a certain
+ * set of possible IDs.
+ *
+ * @param possibleIDs The set of possible IDs
+ * @param preferredID The preferred ID in the set.
+ */
public void setPreferredTarget(Set<String> possibleIDs, String preferredID) {
- if (possibleIDs == null) {
+ if (possibleIDs == null) {
return;
}
- if (fKnownFactories == null) {
+ if (fKnownFactories == null) {
initializeFactories();
}
- if (fPreferredTargets == null){
- loadPreferredTargets();
- }
- String currentKey = fPreferredTargets.get(possibleIDs);
- if (currentKey == null || !currentKey.equals(preferredID)){
- fPreferredTargets.put(possibleIDs, preferredID);
- storePreferredTargets();
- firePreferredTargetsChanged();
- }
- }
-
- /**
- * Returns the preferred toggle target ID from the given set if the mapping has been set.
- *
- * @param possibleTargetIDs The set of possible toggle target IDs
- * @return The preferred ID or null
- */
+ if (fPreferredTargets == null){
+ loadPreferredTargets();
+ }
+ String currentKey = fPreferredTargets.get(possibleIDs);
+ if (currentKey == null || !currentKey.equals(preferredID)){
+ fPreferredTargets.put(possibleIDs, preferredID);
+ storePreferredTargets();
+ firePreferredTargetsChanged();
+ }
+ }
+
+ /**
+ * Returns the preferred toggle target ID from the given set if the mapping has been set.
+ *
+ * @param possibleTargetIDs The set of possible toggle target IDs
+ * @return The preferred ID or null
+ */
private String getUserPreferredTarget(Set<String> possibleTargetIDs) {
- if (fPreferredTargets == null){
- loadPreferredTargets();
- }
- return fPreferredTargets.get(possibleTargetIDs);
- }
-
- /**
- * Given a set of possible toggle target IDs, this method will determine which target is
- * preferred and should be used to toggle breakpoints. This method chooses a toggle target
- * by storing previous choices and can be set using a context menu.
- *
- * @param possibleTargetIDs The set of possible toggle target IDs
- * @param part The workbench part in which toggle target is to be used
- * @param selection The active selection to use with toggle target
- * @return The preferred toggle target ID or null
- */
+ if (fPreferredTargets == null){
+ loadPreferredTargets();
+ }
+ return fPreferredTargets.get(possibleTargetIDs);
+ }
+
+ /**
+ * Given a set of possible toggle target IDs, this method will determine which target is
+ * preferred and should be used to toggle breakpoints. This method chooses a toggle target
+ * by storing previous choices and can be set using a context menu.
+ *
+ * @param possibleTargetIDs The set of possible toggle target IDs
+ * @param part The workbench part in which toggle target is to be used
+ * @param selection The active selection to use with toggle target
+ * @return The preferred toggle target ID or null
+ */
private String chooseToggleTargetIDInSet(Set<String> possibleTargetIDs, IWorkbenchPart part, ISelection selection) {
- if (possibleTargetIDs == null || possibleTargetIDs.isEmpty()){
- return null;
- }
+ if (possibleTargetIDs == null || possibleTargetIDs.isEmpty()){
+ return null;
+ }
- String preferredID = getUserPreferredTarget(possibleTargetIDs);
+ String preferredID = getUserPreferredTarget(possibleTargetIDs);
- if (preferredID == null){
- // If there is no preferred pane already set, check the factories to see there is a default target
+ if (preferredID == null){
+ // If there is no preferred pane already set, check the factories to see there is a default target
Iterator<String> possibleIDsIterator = possibleTargetIDs.iterator();
- while (preferredID == null && possibleIDsIterator.hasNext()) {
- IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(possibleIDsIterator.next());
- if (factory != null) {
- preferredID = factory.getDefaultToggleTarget(part, selection);
- }
- }
- // If the factories don't have a default, just pick the first one.
- // Also make sure that the default is among the available toggle target
- // IDs (bug 352502).
- if (preferredID == null || !possibleTargetIDs.contains(preferredID)) {
- preferredID= possibleTargetIDs.iterator().next();
- }
- setPreferredTarget(possibleTargetIDs, preferredID);
- }
-
- return preferredID;
- }
-
- /**
- * Notifies the change listeners that the preferred targets changed.
- */
- private void firePreferredTargetsChanged() {
+ while (preferredID == null && possibleIDsIterator.hasNext()) {
+ IToggleBreakpointsTargetFactory factory = fFactoriesByTargetID.get(possibleIDsIterator.next());
+ if (factory != null) {
+ preferredID = factory.getDefaultToggleTarget(part, selection);
+ }
+ }
+ // If the factories don't have a default, just pick the first one.
+ // Also make sure that the default is among the available toggle target
+ // IDs (bug 352502).
+ if (preferredID == null || !possibleTargetIDs.contains(preferredID)) {
+ preferredID= possibleTargetIDs.iterator().next();
+ }
+ setPreferredTarget(possibleTargetIDs, preferredID);
+ }
+
+ return preferredID;
+ }
+
+ /**
+ * Notifies the change listeners that the preferred targets changed.
+ */
+ private void firePreferredTargetsChanged() {
for (IToggleBreakpointsTargetManagerListener iToggleBreakpointsTargetManagerListener : fChangedListners) {
iToggleBreakpointsTargetManagerListener.preferredTargetsChanged();
- }
- }
-
- public IBreakpoint getBeakpointFromEditor(ITextEditor editor, IVerticalRulerInfo info) {
- IDocumentProvider provider = editor.getDocumentProvider();
- if(provider == null) {
- return null;
- }
- IEditorInput input = editor.getEditorInput();
- IAnnotationModel annotationModel = provider.getAnnotationModel(input);
+ }
+ }
+
+ public IBreakpoint getBeakpointFromEditor(ITextEditor editor, IVerticalRulerInfo info) {
+ IDocumentProvider provider = editor.getDocumentProvider();
+ if(provider == null) {
+ return null;
+ }
+ IEditorInput input = editor.getEditorInput();
+ IAnnotationModel annotationModel = provider.getAnnotationModel(input);
if (annotationModel != null) {
IDocument document = provider.getDocument(input);
Iterator<Annotation> iterator = annotationModel.getAnnotationIterator();
@@ -756,6 +756,6 @@ public class ToggleBreakpointsTargetManager implements IToggleBreakpointsTargetM
}
}
}
- return null;
- }
+ return null;
+ }
}

Back to the top