diff options
author | Eike Stepper | 2022-05-25 09:36:21 +0000 |
---|---|---|
committer | Eike Stepper | 2022-05-25 09:36:21 +0000 |
commit | 2f7f5dbf167afe731a6c697e8f0d25c41f780e37 (patch) | |
tree | dcc2f6770b9496b58b7d058181929ac3b519bb85 /plugins/org.eclipse.emf.cdo.ui/src/org | |
parent | de74792447902085ade91a9cb679471903e232bb (diff) | |
download | cdo-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.java | 165 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOLabelProvider.java | 57 |
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; } |