diff options
7 files changed, 140 insertions, 21 deletions
diff --git a/org.eclipse.debug.ui/plugin.xml b/org.eclipse.debug.ui/plugin.xml index 7e107e3b0..8a65de9a8 100644 --- a/org.eclipse.debug.ui/plugin.xml +++ b/org.eclipse.debug.ui/plugin.xml @@ -2375,6 +2375,7 @@ M4 = Platform-specific fourth key class="org.eclipse.debug.internal.ui.DebugUIAdapterFactory" adaptableType="org.eclipse.debug.internal.ui.views.breakpoints.BreakpointContainer"> <adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/> + <adapter type="org.eclipse.ui.model.IWorkbenchAdapter2"/> </factory> <factory class="org.eclipse.debug.internal.ui.DebugUIAdapterFactory" @@ -2390,6 +2391,7 @@ M4 = Platform-specific fourth key class="org.eclipse.debug.internal.ui.DebugUIAdapterFactory" adaptableType="org.eclipse.debug.internal.ui.views.breakpoints.WorkingSetCategory"> <adapter type="org.eclipse.ui.model.IWorkbenchAdapter"/> + <adapter type="org.eclipse.ui.model.IWorkbenchAdapter2"/> </factory> </extension> <extension diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIAdapterFactory.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIAdapterFactory.java index 2dae4b78e..de198c9c3 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIAdapterFactory.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIAdapterFactory.java @@ -17,11 +17,12 @@ import org.eclipse.debug.core.ILaunchConfigurationType; import org.eclipse.debug.core.model.IBreakpoint; import org.eclipse.debug.internal.ui.launchConfigurations.PersistableLaunchConfigurationFactory; import org.eclipse.debug.internal.ui.launchConfigurations.PersistableLaunchConfigurationTypeFactory; +import org.eclipse.debug.internal.ui.views.breakpoints.BreakpointContainer; import org.eclipse.debug.internal.ui.views.breakpoints.BreakpointContainerWorkbenchAdapter; import org.eclipse.debug.internal.ui.views.breakpoints.BreakpointPersistableElementAdapter; -import org.eclipse.debug.internal.ui.views.breakpoints.BreakpointContainer; import org.eclipse.ui.IPersistableElement; import org.eclipse.ui.model.IWorkbenchAdapter; +import org.eclipse.ui.model.IWorkbenchAdapter2; public class DebugUIAdapterFactory implements IAdapterFactory { @@ -52,6 +53,15 @@ public class DebugUIAdapterFactory implements IAdapterFactory { } } + if (adapterType == IWorkbenchAdapter2.class) { + if (obj instanceof IWorkbenchAdapter2) { + return obj; + } + if (obj instanceof BreakpointContainer) { + return new BreakpointContainerWorkbenchAdapter(); + } + } + return null; } @@ -59,7 +69,7 @@ public class DebugUIAdapterFactory implements IAdapterFactory { * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList() */ public Class[] getAdapterList() { - return new Class[] {IPersistableElement.class}; + return new Class[] {IPersistableElement.class, IWorkbenchAdapter.class, IWorkbenchAdapter2.class}; } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/DebugUIViewsMessages.properties b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/DebugUIViewsMessages.properties index 387e42ae9..e5796e9df 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/DebugUIViewsMessages.properties +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/DebugUIViewsMessages.properties @@ -69,3 +69,4 @@ AbstractDebugEventHandler.0=Update Debug View IncrementalDeferredTreeContentManager.0=Replace children IncrementalDeferredTreeContentManager.1=Prune children OtherBreakpointOrganizer.0=Others +WorkingSetCategory.0=\ (default) diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainerWorkbenchAdapter.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainerWorkbenchAdapter.java index acee73f49..d8da389f6 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainerWorkbenchAdapter.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointContainerWorkbenchAdapter.java @@ -12,13 +12,15 @@ package org.eclipse.debug.internal.ui.views.breakpoints; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.ui.IWorkingSet; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.RGB; import org.eclipse.ui.model.IWorkbenchAdapter; +import org.eclipse.ui.model.IWorkbenchAdapter2; /** * BreakpointContainerWorkbenchAdapter */ -public class BreakpointContainerWorkbenchAdapter implements IWorkbenchAdapter { +public class BreakpointContainerWorkbenchAdapter implements IWorkbenchAdapter, IWorkbenchAdapter2{ /* (non-Javadoc) * @see org.eclipse.ui.model.IWorkbenchAdapter#getChildren(java.lang.Object) @@ -39,11 +41,6 @@ public class BreakpointContainerWorkbenchAdapter implements IWorkbenchAdapter { if (adapter != null) { return adapter.getImageDescriptor(category); } - // TODO: this should really be handled by an IWorkingSet workbench adapater - if (category instanceof IWorkingSet) { - IWorkingSet set = (IWorkingSet) category; - return set.getImage(); - } return container.getOrganizer().getImageDescriptor(); } return null; @@ -60,11 +57,6 @@ public class BreakpointContainerWorkbenchAdapter implements IWorkbenchAdapter { if (adapter != null) { return adapter.getLabel(category); } -// TODO: this should really be handled by an IWorkingSet workbench adapater - if (category instanceof IWorkingSet) { - IWorkingSet set = (IWorkingSet) category; - return set.getName(); - } return container.getOrganizer().getLabel(); } return ""; //$NON-NLS-1$ @@ -74,7 +66,51 @@ public class BreakpointContainerWorkbenchAdapter implements IWorkbenchAdapter { * @see org.eclipse.ui.model.IWorkbenchAdapter#getParent(java.lang.Object) */ public Object getParent(Object o) { - // not used + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.ui.model.IWorkbenchAdapter2#getForeground(java.lang.Object) + */ + public RGB getForeground(Object object) { + if (object instanceof BreakpointContainer) { + BreakpointContainer container = (BreakpointContainer) object; + IAdaptable category = container.getCategory(); + IWorkbenchAdapter2 adapter = (IWorkbenchAdapter2) category.getAdapter(IWorkbenchAdapter2.class); + if (adapter != null) { + return adapter.getForeground(category); + } + } + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.ui.model.IWorkbenchAdapter2#getBackground(java.lang.Object) + */ + public RGB getBackground(Object object) { + if (object instanceof BreakpointContainer) { + BreakpointContainer container = (BreakpointContainer) object; + IAdaptable category = container.getCategory(); + IWorkbenchAdapter2 adapter = (IWorkbenchAdapter2) category.getAdapter(IWorkbenchAdapter2.class); + if (adapter != null) { + return adapter.getBackground(category); + } + } + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.ui.model.IWorkbenchAdapter2#getFont(java.lang.Object) + */ + public FontData getFont(Object object) { + if (object instanceof BreakpointContainer) { + BreakpointContainer container = (BreakpointContainer) object; + IAdaptable category = container.getCategory(); + IWorkbenchAdapter2 adapter = (IWorkbenchAdapter2) category.getAdapter(IWorkbenchAdapter2.class); + if (adapter != null) { + return adapter.getFont(category); + } + } return null; } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointSetOrganizer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointSetOrganizer.java index 228b6be28..393c85b97 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointSetOrganizer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointSetOrganizer.java @@ -42,6 +42,7 @@ public class BreakpointSetOrganizer extends AbstractBreakpointOrganizer implemen */ public BreakpointSetOrganizer() { PlatformUI.getWorkbench().getWorkingSetManager().addPropertyChangeListener(this); + DebugUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this); DebugPlugin.getDefault().getBreakpointManager().addBreakpointListener(this); } @@ -74,6 +75,7 @@ public class BreakpointSetOrganizer extends AbstractBreakpointOrganizer implemen public void dispose() { PlatformUI.getWorkbench().getWorkingSetManager().removePropertyChangeListener(this); DebugPlugin.getDefault().getBreakpointManager().removeBreakpointListener(this); + DebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); super.dispose(); } @@ -90,6 +92,14 @@ public class BreakpointSetOrganizer extends AbstractBreakpointOrganizer implemen if (set != null && IInternalDebugUIConstants.ID_BREAKPOINT_WORKINGSET.equals(set.getId())) { fireCategoryChanged(new WorkingSetCategory(set)); } + if (event.getProperty().equals(IInternalDebugUIConstants.MEMENTO_BREAKPOINT_WORKING_SET_NAME)) { + IWorkingSet defaultWorkingSet = getDefaultWorkingSet(); + if (defaultWorkingSet != null) { + fireCategoryChanged(new WorkingSetCategory(defaultWorkingSet)); + } else { + fireCategoryChanged(null); + } + } } /* (non-Javadoc) diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsLabelProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsLabelProvider.java index 41f22a32d..4162cf330 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsLabelProvider.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/BreakpointsLabelProvider.java @@ -13,17 +13,18 @@ package org.eclipse.debug.internal.ui.views.breakpoints; import org.eclipse.debug.core.model.IBreakpoint; import org.eclipse.debug.ui.DebugUITools; import org.eclipse.debug.ui.IDebugModelPresentation; -import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.IFontProvider; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.model.WorkbenchLabelProvider; /** * Label provider for the breakpoints view */ -public class BreakpointsLabelProvider extends LabelProvider { +public class BreakpointsLabelProvider extends LabelProvider implements IFontProvider { - private ILabelProvider fWorkbenchLabelProvider; + private WorkbenchLabelProvider fWorkbenchLabelProvider; private IDebugModelPresentation fPresentation; /** @@ -62,4 +63,14 @@ public class BreakpointsLabelProvider extends LabelProvider { } return fWorkbenchLabelProvider.getText(element); } + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.IFontProvider#getFont(java.lang.Object) + */ + public Font getFont(Object element) { + if (element instanceof IBreakpoint) { + return null; + } + return fWorkbenchLabelProvider.getFont(element); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/WorkingSetCategory.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/WorkingSetCategory.java index 61fab8313..0ad478c32 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/WorkingSetCategory.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/breakpoints/WorkingSetCategory.java @@ -11,14 +11,20 @@ package org.eclipse.debug.internal.ui.views.breakpoints; import org.eclipse.core.runtime.PlatformObject; +import org.eclipse.debug.internal.ui.views.DebugUIViewsMessages; import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.RGB; import org.eclipse.ui.IWorkingSet; import org.eclipse.ui.model.IWorkbenchAdapter; +import org.eclipse.ui.model.IWorkbenchAdapter2; /** - * WorkingSetCategory + * Represents a breakpoint category for a specific working set. */ -public class WorkingSetCategory extends PlatformObject implements IWorkbenchAdapter { +public class WorkingSetCategory extends PlatformObject implements IWorkbenchAdapter, IWorkbenchAdapter2 { private IWorkingSet fWorkingSet; @@ -49,7 +55,11 @@ public class WorkingSetCategory extends PlatformObject implements IWorkbenchAdap * @see org.eclipse.ui.model.IWorkbenchAdapter#getLabel(java.lang.Object) */ public String getLabel(Object o) { - return fWorkingSet.getName(); + StringBuffer name = new StringBuffer(fWorkingSet.getName()); + if (isDefault()) { + name.append(DebugUIViewsMessages.getString("WorkingSetCategory.0")); //$NON-NLS-1$ + } + return name.toString(); } /* (non-Javadoc) @@ -85,4 +95,43 @@ public class WorkingSetCategory extends PlatformObject implements IWorkbenchAdap public int hashCode() { return fWorkingSet.hashCode(); } + + /* (non-Javadoc) + * @see org.eclipse.ui.model.IWorkbenchAdapter2#getForeground(java.lang.Object) + */ + public RGB getForeground(Object element) { + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.ui.model.IWorkbenchAdapter2#getBackground(java.lang.Object) + */ + public RGB getBackground(Object element) { + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.ui.model.IWorkbenchAdapter2#getFont(java.lang.Object) + */ + public FontData getFont(Object element) { + if (isDefault()) { + FontData[] fontData = JFaceResources.getDefaultFont().getFontData(); + if (fontData != null && fontData.length > 0) { + FontData data = fontData[0]; + data.setStyle(SWT.BOLD); + return data; + } + } + return null; + } + + /** + * Whether this is the default breakpoint working set. + * + * @return whether this is the default breakpoint working set + */ + private boolean isDefault() { + return fWorkingSet.equals(BreakpointSetOrganizer.getDefaultWorkingSet()); + } } + |