diff options
author | Eike Stepper | 2022-06-17 16:14:56 +0000 |
---|---|---|
committer | Eike Stepper | 2022-06-17 16:14:56 +0000 |
commit | dd5212ff3dd13e7e9f9e4523cbfe8539f037a4b6 (patch) | |
tree | 3dfac3242acbc8e1bac0531b53e42cb258242836 /plugins | |
parent | c7b4176a03f511668728fa421a72e254632dfc7b (diff) | |
download | cdo-dd5212ff3dd13e7e9f9e4523cbfe8539f037a4b6.tar.gz cdo-dd5212ff3dd13e7e9f9e4523cbfe8539f037a4b6.tar.xz cdo-dd5212ff3dd13e7e9f9e4523cbfe8539f037a4b6.zip |
[580195] [UI] Add label styling and decoration to CDORemoteTopicsView
https://bugs.eclipse.org/bugs/show_bug.cgi?id=580195
Diffstat (limited to 'plugins')
4 files changed, 83 insertions, 23 deletions
diff --git a/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF index f29f2fb977..cd092070b6 100644 --- a/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.cdo.ui/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.emf.cdo.ui;singleton:=true -Bundle-Version: 4.13.0.qualifier +Bundle-Version: 4.14.0.qualifier Bundle-Activator: org.eclipse.emf.cdo.internal.ui.bundle.OM$Activator Bundle-Vendor: %providerName Bundle-ClassPath: . @@ -29,7 +29,7 @@ Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)";reso org.eclipse.emf.ecp.ui.view.swt;bundle-version="[1.5.0,2.0.0)";resolution:=optional;x-installation:=greedy, org.eclipse.jdt.ui;bundle-version="[3.5.0,4.0.0)";resolution:=optional, org.eclipse.ui.editors;bundle-version="[3.5.0,4.0.0)";resolution:=optional -Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; +Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.14.0"; x-friends:="org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, @@ -39,7 +39,7 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare, org.eclipse.emf.cdo.lm.ui", - org.eclipse.emf.cdo.internal.ui.actions;version="4.13.0"; + org.eclipse.emf.cdo.internal.ui.actions;version="4.14.0"; x-friends:="org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, @@ -48,9 +48,9 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; org.eclipse.emf.cdo.explorer.ui, org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare", - org.eclipse.emf.cdo.internal.ui.actions.delegates;version="4.13.0";x-internal:=true, - org.eclipse.emf.cdo.internal.ui.bundle;version="4.13.0";x-internal:=true, - org.eclipse.emf.cdo.internal.ui.dialogs;version="4.13.0"; + org.eclipse.emf.cdo.internal.ui.actions.delegates;version="4.14.0";x-internal:=true, + org.eclipse.emf.cdo.internal.ui.bundle;version="4.14.0";x-internal:=true, + org.eclipse.emf.cdo.internal.ui.dialogs;version="4.14.0"; x-friends:="org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, @@ -59,7 +59,7 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; org.eclipse.emf.cdo.explorer.ui, org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare", - org.eclipse.emf.cdo.internal.ui.dnd;version="4.13.0"; + org.eclipse.emf.cdo.internal.ui.dnd;version="4.14.0"; x-friends:="org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, @@ -68,7 +68,7 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; org.eclipse.emf.cdo.explorer.ui, org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare", - org.eclipse.emf.cdo.internal.ui.editor;version="4.13.0"; + org.eclipse.emf.cdo.internal.ui.editor;version="4.14.0"; x-friends:="org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, @@ -77,7 +77,7 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; org.eclipse.emf.cdo.explorer.ui, org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare", - org.eclipse.emf.cdo.internal.ui.filters;version="4.13.0"; + org.eclipse.emf.cdo.internal.ui.filters;version="4.14.0"; x-friends:="org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, @@ -86,7 +86,7 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; org.eclipse.emf.cdo.explorer.ui, org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare", - org.eclipse.emf.cdo.internal.ui.handlers;version="4.13.0"; + org.eclipse.emf.cdo.internal.ui.handlers;version="4.14.0"; x-friends:="org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, @@ -95,7 +95,7 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; org.eclipse.emf.cdo.explorer.ui, org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare", - org.eclipse.emf.cdo.internal.ui.history;version="4.13.0"; + org.eclipse.emf.cdo.internal.ui.history;version="4.14.0"; x-friends:="org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, @@ -104,7 +104,7 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; org.eclipse.emf.cdo.explorer.ui, org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare", - org.eclipse.emf.cdo.internal.ui.messages;version="4.13.0"; + org.eclipse.emf.cdo.internal.ui.messages;version="4.14.0"; x-friends:="org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, @@ -113,7 +113,7 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; org.eclipse.emf.cdo.explorer.ui, org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare", - org.eclipse.emf.cdo.internal.ui.perspectives;version="4.13.0"; + org.eclipse.emf.cdo.internal.ui.perspectives;version="4.14.0"; x-friends:="org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, @@ -122,7 +122,7 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; org.eclipse.emf.cdo.explorer.ui, org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare", - org.eclipse.emf.cdo.internal.ui.preferences;version="4.13.0"; + org.eclipse.emf.cdo.internal.ui.preferences;version="4.14.0"; x-friends:="org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, @@ -131,7 +131,7 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; org.eclipse.emf.cdo.explorer.ui, org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare", - org.eclipse.emf.cdo.internal.ui.transfer;version="4.13.0"; + org.eclipse.emf.cdo.internal.ui.transfer;version="4.14.0"; x-friends:="org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, @@ -140,7 +140,7 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; org.eclipse.emf.cdo.explorer.ui, org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare", - org.eclipse.emf.cdo.internal.ui.views;version="4.13.0"; + org.eclipse.emf.cdo.internal.ui.views;version="4.14.0"; x-friends:="org.eclipse.emf.cdo.ui.ide, org.eclipse.emf.cdo.ui.location, org.eclipse.emf.cdo.tests.ui, @@ -149,6 +149,6 @@ Export-Package: org.eclipse.emf.cdo.internal.ui;version="4.13.0"; org.eclipse.emf.cdo.explorer.ui, org.eclipse.emf.cdo.ui.team, org.eclipse.emf.cdo.ui.compare", - org.eclipse.emf.cdo.ui;version="4.13.0", - org.eclipse.emf.cdo.ui.widgets;version="4.13.0" + org.eclipse.emf.cdo.ui;version="4.14.0", + org.eclipse.emf.cdo.ui.widgets;version="4.14.0" Automatic-Module-Name: org.eclipse.emf.cdo.ui diff --git a/plugins/org.eclipse.emf.cdo.ui/pom.xml b/plugins/org.eclipse.emf.cdo.ui/pom.xml index 8ddb2cc05a..a267089a56 100644 --- a/plugins/org.eclipse.emf.cdo.ui/pom.xml +++ b/plugins/org.eclipse.emf.cdo.ui/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo</groupId> <artifactId>org.eclipse.emf.cdo.ui</artifactId> - <version>4.13.0-SNAPSHOT</version> + <version>4.14.0-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> </project> diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDORemoteTopicsView.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDORemoteTopicsView.java index 22aeb0a879..80f70ea67a 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDORemoteTopicsView.java +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/views/CDORemoteTopicsView.java @@ -46,7 +46,9 @@ import org.eclipse.emf.edit.provider.ComposedAdapterFactory; import org.eclipse.emf.edit.provider.ItemProvider; import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.DelegatingStyledCellLabelProvider; +import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; @@ -54,12 +56,17 @@ import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.dialogs.InputDialog; +import org.eclipse.jface.viewers.DecoratingLabelProvider; +import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; +import org.eclipse.jface.viewers.ILabelDecorator; +import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeSelection; import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StyledString; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.swt.SWT; @@ -286,8 +293,14 @@ public class CDORemoteTopicsView extends ViewPart implements ISelectionProvider, protected Control createUI(Composite parent) { - AdapterFactoryLabelProvider labelProvider = new AdapterFactoryLabelProvider(adapterFactory); - labelProvider.setFireLabelUpdateNotifications(true); + ILabelProvider labelProvider = new AdapterFactoryLabelProvider(adapterFactory); + ((AdapterFactoryLabelProvider)labelProvider).setFireLabelUpdateNotifications(true); + + ILabelDecorator decorator = createLabelDecorator(); + if (decorator != null) + { + labelProvider = new DelegatingStyledCellLabelProvider(new DecoratingStyledLabelProvider(labelProvider, decorator)); + } viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); viewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); @@ -318,6 +331,11 @@ public class CDORemoteTopicsView extends ViewPart implements ISelectionProvider, return viewer.getControl(); } + protected ILabelDecorator createLabelDecorator() + { + return PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator(); + } + protected void hookDoubleClick() { viewer.addDoubleClickListener(e -> doubleClicked(((ITreeSelection)viewer.getSelection()).getFirstElement())); @@ -615,7 +633,7 @@ public class CDORemoteTopicsView extends ViewPart implements ISelectionProvider, /** * @author Eike Stepper */ - private class Item extends ItemProvider + private abstract class Item extends ItemProvider implements IAdaptable { protected Item() { @@ -677,6 +695,18 @@ public class CDORemoteTopicsView extends ViewPart implements ISelectionProvider, } @Override + public <T> T getAdapter(Class<T> type) + { + T adapter = AdapterUtil.adapt(this, type); + if (adapter != null) + { + return adapter; + } + + return topic.getAdapter(type); + } + + @Override public void notifyEvent(IEvent event) { if (event instanceof ILifecycleEvent) @@ -760,5 +790,34 @@ public class CDORemoteTopicsView extends ViewPart implements ISelectionProvider, { return remoteSession; } + + @Override + public <T> T getAdapter(Class<T> type) + { + return AdapterUtil.adapt(this, type); + } + } + + /** + * @author Eike Stepper + */ + private static final class DecoratingStyledLabelProvider extends DecoratingLabelProvider implements IStyledLabelProvider + { + public DecoratingStyledLabelProvider(ILabelProvider provider, ILabelDecorator decorator) + { + super(provider, decorator); + } + + @Override + public StyledString getStyledText(Object element) + { + ILabelProvider provider = getLabelProvider(); + if (provider instanceof IStyledLabelProvider) + { + return ((IStyledLabelProvider)provider).getStyledText(element); + } + + return new StyledString(getText(element)); + } } } diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOTopicProvider.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOTopicProvider.java index 3b6d26603a..d2aea9fe9c 100644 --- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOTopicProvider.java +++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOTopicProvider.java @@ -14,6 +14,7 @@ import org.eclipse.emf.cdo.session.CDOSession; import org.eclipse.net4j.util.StringUtil; +import org.eclipse.core.runtime.PlatformObject; import org.eclipse.swt.graphics.Image; import java.util.Objects; @@ -33,7 +34,7 @@ public interface CDOTopicProvider /** * @author Eike Stepper */ - public static final class Topic + public static final class Topic extends PlatformObject { private final CDOSession session; |