diff options
author | Eike Stepper | 2014-12-07 09:20:42 +0000 |
---|---|---|
committer | Esteban Dugueperoux | 2014-12-08 07:59:10 +0000 |
commit | c34e3388b9035981bceb658b5682a64070de0edc (patch) | |
tree | 1c535fd4d4b3ae4f4266be51e12dd65a9552cd80 /plugins/org.eclipse.emf.cdo.ui | |
parent | 6ef8eb3c8a00a3410e2bcbce25d6cd1218f3fabf (diff) | |
download | cdo-c34e3388b9035981bceb658b5682a64070de0edc.tar.gz cdo-c34e3388b9035981bceb658b5682a64070de0edc.tar.xz cdo-c34e3388b9035981bceb658b5682a64070de0edc.zip |
[453211] CDO 4.3/4.4 not compatible with Juno
Change-Id: I85abde151647b48d9303a13e93ed19268070120f
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=453211
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.ui')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java | 58 |
1 files changed, 54 insertions, 4 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 c1db9d5106..ac9ad827e8 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 @@ -39,6 +39,7 @@ import org.eclipse.emf.cdo.view.CDOViewTargetChangedEvent; import org.eclipse.emf.internal.cdo.view.CDOStateMachine; import org.eclipse.net4j.util.AdapterUtil; +import org.eclipse.net4j.util.ReflectUtil; import org.eclipse.net4j.util.event.IEvent; import org.eclipse.net4j.util.event.IListener; import org.eclipse.net4j.util.ui.UIUtil; @@ -107,6 +108,7 @@ import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.DecoratingLabelProvider; import org.eclipse.jface.viewers.IContentProvider; +import org.eclipse.jface.viewers.IInputProvider; import org.eclipse.jface.viewers.ILabelDecorator; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ISelection; @@ -161,6 +163,7 @@ import org.eclipse.ui.views.properties.PropertySheetSorter; import java.io.IOException; import java.io.InputStream; +import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.text.MessageFormat; import java.util.ArrayList; @@ -211,6 +214,8 @@ public class CDOEditor extends MultiPageEditorPart implements IEditingDomainProv return Collections.unmodifiableList(result); } + private static final Field VIEWER_FIELD = getViewerField(); + /** * @ADDED */ @@ -1329,11 +1334,44 @@ public class CDOEditor extends MultiPageEditorPart implements IEditingDomainProv for (PropertySheetPage propertySheetPage : propertySheetPages) { - if (propertySheetPage instanceof ExtendedPropertySheetPage) + List<?> objects = null; + + try + { + // Bug 453211: ExtendedPropertySheetPage.getInput() is only available since EMF 2.9. + if (propertySheetPage instanceof ExtendedPropertySheetPage) + { + ExtendedPropertySheetPage page = (ExtendedPropertySheetPage)propertySheetPage; + objects = page.getInput(); + } + } + catch (NoSuchMethodError ex) { - ExtendedPropertySheetPage page = (ExtendedPropertySheetPage)propertySheetPage; - List<?> input = page.getInput(); - for (Object object : input) + if (VIEWER_FIELD == null) + { + throw ex; + } + + //$FALL-THROUGH$ + } + + if (objects == null) + { + Object value = ReflectUtil.getValue(VIEWER_FIELD, propertySheetPage); + if (value instanceof IInputProvider) + { + IInputProvider inputProvider = (IInputProvider)value; + Object input = inputProvider.getInput(); + if (input instanceof Object[]) + { + objects = Arrays.asList((Object[])input); + } + } + } + + if (objects != null) + { + for (Object object : objects) { if (object == cdoObject) { @@ -2638,6 +2676,18 @@ public class CDOEditor extends MultiPageEditorPart implements IEditingDomainProv } } + private static Field getViewerField() + { + try + { + return ReflectUtil.getField(PropertySheetPage.class, "viewer"); + } + catch (Throwable ex) + { + return null; + } + } + /** * @author Eike Stepper * @ADDED |