Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2015-03-02 12:25:08 +0000
committerEike Stepper2015-03-02 12:25:08 +0000
commitb4c27cde2cd092c670044fa9d6464b51cedbc161 (patch)
treee6330414f45b0a633193dd3255aa1c38ced58815
parentf04d30801226c36ce77e24cd7dfd67a0554ce6dc (diff)
downloadcdo-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.java70
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;
}
/**

Back to the top