diff options
author | Eike Stepper | 2015-03-02 12:25:08 +0000 |
---|---|---|
committer | Eike Stepper | 2015-03-02 12:25:08 +0000 |
commit | b4c27cde2cd092c670044fa9d6464b51cedbc161 (patch) | |
tree | e6330414f45b0a633193dd3255aa1c38ced58815 | |
parent | f04d30801226c36ce77e24cd7dfd67a0554ce6dc (diff) | |
download | cdo-b4c27cde2cd092c670044fa9d6464b51cedbc161.tar.gz cdo-b4c27cde2cd092c670044fa9d6464b51cedbc161.tar.xz cdo-b4c27cde2cd092c670044fa9d6464b51cedbc161.zip |
[458349] Consolidate UI
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=458349
-rw-r--r-- | plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java | 70 |
1 files changed, 48 insertions, 22 deletions
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java index 62ef9002f7..f03b7bd1a5 100644 --- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java +++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutDropAdapterAssistant.java @@ -10,6 +10,7 @@ */ package org.eclipse.emf.cdo.explorer.ui.checkouts; +import org.eclipse.emf.cdo.CDOElement; import org.eclipse.emf.cdo.CDOState; import org.eclipse.emf.cdo.common.branch.CDOBranch; import org.eclipse.emf.cdo.common.branch.CDOBranchPoint; @@ -224,41 +225,66 @@ public class CDOCheckoutDropAdapterAssistant extends CommonDropAdapterAssistant private static EObject[] getSelectedObjects(IStructuredSelection selection) { - List<EObject> selectedObjects = new ArrayList<EObject>(); - ObjectType firstObjectType = null; - - for (Iterator<?> it = selection.iterator(); it.hasNext();) + try { - Object object = it.next(); + List<EObject> selectedObjects = new ArrayList<EObject>(); + ObjectType firstObjectType = null; - EObject eObject = AdapterUtil.adapt(object, EObject.class); - if (eObject != null) + for (Iterator<?> it = selection.iterator(); it.hasNext();) { - ObjectType objectType = ObjectType.valueFor(eObject); - if (objectType == null || objectType == ObjectType.Root) - { - return NO_OBJECTS; - } + Object object = it.next(); - if (firstObjectType == null) + if (object instanceof CDOElement) { - firstObjectType = objectType; + CDOElement element = (CDOElement)object; + for (Object child : element.getChildren()) + { + firstObjectType = addSelectedObject(selectedObjects, firstObjectType, child); + } } else { - boolean firstIsObject = firstObjectType == ObjectType.Object; - boolean isObject = objectType == ObjectType.Object; - if (firstIsObject != isObject) - { - return NO_OBJECTS; - } + firstObjectType = addSelectedObject(selectedObjects, firstObjectType, object); } + } + + return selectedObjects.toArray(new EObject[selectedObjects.size()]); + } + catch (RuntimeException ex) + { + return NO_OBJECTS; + } + } + + private static ObjectType addSelectedObject(List<EObject> selectedObjects, ObjectType firstObjectType, Object object) + { + EObject eObject = AdapterUtil.adapt(object, EObject.class); + if (eObject != null) + { + ObjectType objectType = ObjectType.valueFor(eObject); + if (objectType == null || objectType == ObjectType.Root) + { + throw new RuntimeException(); + } - selectedObjects.add(eObject); + if (firstObjectType == null) + { + firstObjectType = objectType; + } + else + { + boolean firstIsObject = firstObjectType == ObjectType.Object; + boolean isObject = objectType == ObjectType.Object; + if (firstIsObject != isObject) + { + throw new RuntimeException(); + } } + + selectedObjects.add(eObject); } - return selectedObjects.toArray(new EObject[selectedObjects.size()]); + return firstObjectType; } /** |