Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2022-05-25 09:36:21 +0000
committerEike Stepper2022-05-25 09:36:21 +0000
commit2f7f5dbf167afe731a6c697e8f0d25c41f780e37 (patch)
treedcc2f6770b9496b58b7d058181929ac3b519bb85 /plugins/org.eclipse.emf.cdo.ui/src/org
parentde74792447902085ade91a9cb679471903e232bb (diff)
downloadcdo-2f7f5dbf167afe731a6c697e8f0d25c41f780e37.tar.gz
cdo-2f7f5dbf167afe731a6c697e8f0d25c41f780e37.tar.xz
cdo-2f7f5dbf167afe731a6c697e8f0d25c41f780e37.zip
[580005] [UI] Support styled labels in CDOEditor
https://bugs.eclipse.org/bugs/show_bug.cgi?id=580005
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.ui/src/org')
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java165
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOLabelProvider.java57
2 files changed, 142 insertions, 80 deletions
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java
index cca2b0df67..f91cebeade 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java
@@ -106,6 +106,7 @@ import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
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.emf.edit.ui.provider.ExtendedImageRegistry;
import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
import org.eclipse.emf.edit.ui.util.EditUIUtil;
@@ -131,6 +132,7 @@ import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.IInputProvider;
import org.eclipse.jface.viewers.ILabelDecorator;
@@ -144,6 +146,7 @@ import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
@@ -1636,75 +1639,9 @@ public class CDOEditor extends MultiPageEditorPart implements IEditingDomainProv
*/
protected ILabelProvider createLabelProvider(TreeViewer viewer)
{
- return new DecoratingLabelProvider(new CDOLabelProvider(adapterFactory, view, viewer), createLabelDecorator())
- {
- @Override
- public Image getImage(Object element)
- {
- try
- {
- if (element instanceof ViewerUtil.Pending)
- {
- return ContainerItemProvider.pendingImage();
- }
-
- Image image = super.getImage(element);
- if (image != null)
- {
- return image;
- }
- }
- catch (Exception ex)
- {
- handleException(ex);
- }
-
- return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_ERROR_TSK);
- }
-
- @Override
- public String getText(Object element)
- {
- try
- {
- if (element instanceof ViewerUtil.Pending)
- {
- ViewerUtil.Pending pending = (ViewerUtil.Pending)element;
- return pending.getText();
- }
-
- String text = super.getText(element);
- if (!StringUtil.isEmpty(text))
- {
- return text;
- }
- }
- catch (Exception ex)
- {
- handleException(ex);
- }
-
- try
- {
- if (element instanceof EObject)
- {
- EObject eObject = (EObject)element;
- EClass eClass = eObject.eClass();
- String text = getText(eClass);
- if (!StringUtil.isEmpty(text))
- {
- return text;
- }
- }
- }
- catch (Exception ignore)
- {
- //$FALL-THROUGH$
- }
-
- return element.getClass().getSimpleName();
- }
- };
+ CDOLabelProvider provider = new CDOLabelProvider(adapterFactory, view, viewer);
+ ILabelDecorator decorator = createLabelDecorator();
+ return new DelegatingStyledCellLabelProvider(new DecoratingStyledLabelProvider(provider, decorator));
}
/**
@@ -3122,6 +3059,96 @@ public class CDOEditor extends MultiPageEditorPart implements IEditingDomainProv
/**
* @author Eike Stepper
*/
+ private final class DecoratingStyledLabelProvider extends DecoratingLabelProvider implements IStyledLabelProvider
+ {
+ public DecoratingStyledLabelProvider(ILabelProvider provider, ILabelDecorator decorator)
+ {
+ super(provider, decorator);
+ }
+
+ @Override
+ public Image getImage(Object element)
+ {
+ try
+ {
+ if (element instanceof ViewerUtil.Pending)
+ {
+ return ContainerItemProvider.pendingImage();
+ }
+
+ Image image = super.getImage(element);
+ if (image != null)
+ {
+ return image;
+ }
+ }
+ catch (Exception ex)
+ {
+ handleException(ex);
+ }
+
+ return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_ERROR_TSK);
+ }
+
+ @Override
+ public String getText(Object element)
+ {
+ try
+ {
+ if (element instanceof ViewerUtil.Pending)
+ {
+ ViewerUtil.Pending pending = (ViewerUtil.Pending)element;
+ return pending.getText();
+ }
+
+ String text = super.getText(element);
+ if (!StringUtil.isEmpty(text))
+ {
+ return text;
+ }
+ }
+ catch (Exception ex)
+ {
+ handleException(ex);
+ }
+
+ try
+ {
+ if (element instanceof EObject)
+ {
+ EObject eObject = (EObject)element;
+ EClass eClass = eObject.eClass();
+ String text = getText(eClass);
+ if (!StringUtil.isEmpty(text))
+ {
+ return text;
+ }
+ }
+ }
+ catch (Exception ignore)
+ {
+ //$FALL-THROUGH$
+ }
+
+ return element.getClass().getSimpleName();
+ }
+
+ @Override
+ public StyledString getStyledText(Object element)
+ {
+ ILabelProvider provider = getLabelProvider();
+ if (provider instanceof IStyledLabelProvider)
+ {
+ return ((IStyledLabelProvider)provider).getStyledText(element);
+ }
+
+ return new StyledString(getText(element));
+ }
+ }
+
+ /**
+ * @author Eike Stepper
+ */
public static abstract class NewRootMenuPopulator
{
private final CDOPackageRegistry packageRegistry;
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOLabelProvider.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOLabelProvider.java
index 776adaf975..cecae6dce9 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOLabelProvider.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOLabelProvider.java
@@ -25,6 +25,7 @@ import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
import org.eclipse.emf.spi.cdo.FSMUtil;
import org.eclipse.emf.spi.cdo.InternalCDOObject;
+import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.IFontProvider;
import org.eclipse.jface.viewers.TreeViewer;
@@ -45,7 +46,7 @@ import org.eclipse.swt.widgets.Control;
* @see org.eclipse.emf.cdo.CDOObject
* @see org.eclipse.emf.cdo.CDOState
*/
-public class CDOLabelProvider extends AdapterFactoryLabelProvider implements IColorProvider, IFontProvider
+public class CDOLabelProvider extends AdapterFactoryLabelProvider implements IColorProvider, IFontProvider, IStyledLabelProvider
{
private static Color readPermissionColor;
@@ -131,6 +132,8 @@ public class CDOLabelProvider extends AdapterFactoryLabelProvider implements ICo
@Override
public String getText(Object object)
{
+ Exception exception = null;
+
try
{
String text = super.getText(object);
@@ -141,20 +144,26 @@ public class CDOLabelProvider extends AdapterFactoryLabelProvider implements ICo
}
catch (Exception ex)
{
- //$FALL-THROUGH$
+ exception = ex;
}
+ return getText(object, exception);
+ }
+
+ /**
+ * @since 4.13
+ */
+ protected String getText(Object object, Exception exception)
+ {
+ String text = null;
+
try
{
if (object instanceof EObject)
{
EObject eObject = (EObject)object;
EClass eClass = eObject.eClass();
- String text = getText(eClass);
- if (!StringUtil.isEmpty(text))
- {
- return text;
- }
+ text = getText(eClass);
}
}
catch (Exception ignore)
@@ -162,13 +171,37 @@ public class CDOLabelProvider extends AdapterFactoryLabelProvider implements ICo
//$FALL-THROUGH$
}
- return object.getClass().getSimpleName();
+ if (StringUtil.isEmpty(text))
+ {
+ text = object.getClass().getSimpleName();
+ }
+
+ return text + " [" + getExceptionMessage(exception) + "]";
+ }
+
+ /**
+ * @since 4.13
+ */
+ protected String getExceptionMessage(Exception exception)
+ {
+ String message = exception.getLocalizedMessage();
+ if (StringUtil.isEmpty(message))
+ {
+ message = exception.getMessage();
+ }
+
+ if (StringUtil.isEmpty(message))
+ {
+ message = exception.getClass().getName();
+ }
+
+ return message;
}
@Override
public Color getBackground(Object object)
{
- // Use default
+ // Use default.
return null;
}
@@ -197,9 +230,10 @@ public class CDOLabelProvider extends AdapterFactoryLabelProvider implements ICo
}
catch (RuntimeException ignore)
{
+ //$FALL-THROUGH$
}
- // Use default
+ // Use default.
return null;
}
@@ -232,10 +266,11 @@ public class CDOLabelProvider extends AdapterFactoryLabelProvider implements ICo
}
catch (RuntimeException ignore)
{
+ //$FALL-THROUGH$
}
}
- // Use default
+ // Use default.
return null;
}

Back to the top