From aabedf8212888ae40b1903f2ac9d4505bcb7fad6 Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Wed, 30 May 2007 10:17:19 +0000 Subject: [PATCH] Follow-up for 183291: Force load of adapter --- .../actions/ToggleBreakpointRulerAction.java | 18 ++++++++++++++++-- .../ToggleWatchpointActionDelegate.java | 18 ++++++++++++++++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleBreakpointRulerAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleBreakpointRulerAction.java index 5b908de41c4..7f6f584c69a 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleBreakpointRulerAction.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleBreakpointRulerAction.java @@ -16,6 +16,9 @@ import org.eclipse.cdt.debug.internal.ui.IInternalCDebugUIConstants; import org.eclipse.cdt.debug.internal.ui.views.disassembly.DisassemblyView; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IAdapterManager; +import org.eclipse.core.runtime.Platform; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.ui.actions.IToggleBreakpointsTarget; import org.eclipse.jface.action.Action; @@ -103,10 +106,10 @@ public class ToggleBreakpointRulerAction extends Action { resource = (IResource) ((IEditorPart)fTargetPart).getEditorInput().getAdapter(IResource.class); } if (resource != null) { - fTargetAdapter = (IToggleBreakpointsTarget)resource.getAdapter(IToggleBreakpointsTarget.class); + fTargetAdapter = getAdapter(resource); } if (fTargetAdapter == null) { - fTargetAdapter = (IToggleBreakpointsTarget)fTargetPart.getAdapter(IToggleBreakpointsTarget.class); + fTargetAdapter = getAdapter(fTargetPart); } } if (fTargetAdapter == null) { @@ -114,6 +117,17 @@ public class ToggleBreakpointRulerAction extends Action { } } + private IToggleBreakpointsTarget getAdapter(IAdaptable adaptable) { + IToggleBreakpointsTarget adapter= (IToggleBreakpointsTarget)adaptable.getAdapter(IToggleBreakpointsTarget.class); + if (adapter == null) { + IAdapterManager adapterManager= Platform.getAdapterManager(); + if (adapterManager.hasAdapter(adaptable, IToggleBreakpointsTarget.class.getName())) { + adapter= (IToggleBreakpointsTarget)adapterManager.loadAdapter(adaptable, IToggleBreakpointsTarget.class.getName()); + } + } + return adapter; + } + /** * Returns the current selection in the active part, possibly * and empty selection, but never null. diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleWatchpointActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleWatchpointActionDelegate.java index b060da70f0b..4b7ad2b04d9 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleWatchpointActionDelegate.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ToggleWatchpointActionDelegate.java @@ -13,6 +13,9 @@ package org.eclipse.cdt.debug.internal.ui.actions; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IAdapterManager; +import org.eclipse.core.runtime.Platform; import org.eclipse.debug.ui.actions.IToggleBreakpointsTarget; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.ErrorDialog; @@ -98,10 +101,10 @@ public class ToggleWatchpointActionDelegate extends ActionDelegate implements IO } } if (resource != null) { - targetAdapter = (IToggleBreakpointsTarget)resource.getAdapter(IToggleBreakpointsTarget.class); + targetAdapter = getAdapter(resource); } if (targetAdapter == null) { - targetAdapter = (IToggleBreakpointsTarget)fTargetPart.getAdapter(IToggleBreakpointsTarget.class); + targetAdapter = getAdapter(fTargetPart); } } if (targetAdapter == null) { @@ -110,6 +113,17 @@ public class ToggleWatchpointActionDelegate extends ActionDelegate implements IO return targetAdapter; } + private IToggleBreakpointsTarget getAdapter(IAdaptable adaptable) { + IToggleBreakpointsTarget adapter= (IToggleBreakpointsTarget)adaptable.getAdapter(IToggleBreakpointsTarget.class); + if (adapter == null) { + IAdapterManager adapterManager= Platform.getAdapterManager(); + if (adapterManager.hasAdapter(adaptable, IToggleBreakpointsTarget.class.getName())) { + adapter= (IToggleBreakpointsTarget)adapterManager.loadAdapter(adaptable, IToggleBreakpointsTarget.class.getName()); + } + } + return adapter; + } + private void setSelection( ISelection selection ) { fSelection = selection; }