Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2015-04-28 15:28:11 +0000
committerEike Stepper2015-04-28 15:28:11 +0000
commitff856cc6762b7032c2cce1cdd6a8000bd9e6ea1d (patch)
tree2de4792ecca2826211c7753ad8502c6c286e6e12
parent84b2faf3ad89eb903998b733796ec8c78e8e8de2 (diff)
downloadcdo-ff856cc6762b7032c2cce1cdd6a8000bd9e6ea1d.tar.gz
cdo-ff856cc6762b7032c2cce1cdd6a8000bd9e6ea1d.tar.xz
cdo-ff856cc6762b7032c2cce1cdd6a8000bd9e6ea1d.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/CDOCheckoutContentProvider.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOTreeExpansionAgent.java124
2 files changed, 101 insertions, 25 deletions
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutContentProvider.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutContentProvider.java
index 7bd28f3d9a..36c843ffe0 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutContentProvider.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutContentProvider.java
@@ -727,7 +727,7 @@ public class CDOCheckoutContentProvider implements ICommonContentProvider, IProp
if (object instanceof EObject)
{
- EObject eObject = (EObject)object;
+ EObject eObject = CDOUtil.getEObject((EObject)object);
CDOElement element = CDOElement.getFor(eObject);
if (element != null)
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOTreeExpansionAgent.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOTreeExpansionAgent.java
index d8fb112eaf..657d6e8894 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOTreeExpansionAgent.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/CDOTreeExpansionAgent.java
@@ -10,8 +10,10 @@
*/
package org.eclipse.emf.cdo.ui;
+import org.eclipse.emf.cdo.CDOElement;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.internal.ui.bundle.OM;
import org.eclipse.emf.cdo.util.CDOUtil;
import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.emf.cdo.view.CDOViewTargetChangedEvent;
@@ -44,6 +46,8 @@ public class CDOTreeExpansionAgent
private final Set<CDOID> expandedIDs = new HashSet<CDOID>();
+ private final Set<CDOID> expandedWrappers = new HashSet<CDOID>();
+
private final CDOView view;
private final TreeViewer viewer;
@@ -65,11 +69,7 @@ public class CDOTreeExpansionAgent
{
for (Object element : viewer.getExpandedElements())
{
- CDOID id = getID(element);
- if (id != null)
- {
- expandedIDs.add(id);
- }
+ addExpandedElement(element);
}
view.addListener(listener);
@@ -87,26 +87,64 @@ public class CDOTreeExpansionAgent
try
{
CDOObject object = view.getObject(id);
- viewer.setExpandedState(object, true);
+ if (object != null)
+ {
+ EObject eObject = CDOUtil.getEObject(object);
+ viewer.setExpandedState(eObject, true);
+ }
+ }
+ catch (Exception ex)
+ {
+ // Ignore.
+ }
+ }
+
+ for (CDOID id : expandedWrappers)
+ {
+ try
+ {
+ CDOObject object = view.getObject(id);
+ if (object != null)
+ {
+ CDOElement wrapper = CDOElement.getFor(object);
+ if (wrapper != null)
+ {
+ viewer.setExpandedState(wrapper, true);
+ }
+ }
}
catch (Exception ex)
{
- // Ignore
+ // Ignore.
}
}
}
public void dispose()
{
- Tree tree = viewer.getTree();
- if (!tree.isDisposed())
+ try
{
- tree.removeDisposeListener(listener);
- }
+ final Tree tree = viewer.getTree();
+ if (!tree.isDisposed())
+ {
+ tree.getDisplay().syncExec(new Runnable()
+ {
+ public void run()
+ {
+ tree.removeDisposeListener(listener);
+ }
+ });
+ }
- viewer.removeTreeListener(listener);
- view.removeListener(listener);
- expandedIDs.clear();
+ viewer.removeTreeListener(listener);
+ view.removeListener(listener);
+ expandedIDs.clear();
+ expandedWrappers.clear();
+ }
+ catch (Exception ex)
+ {
+ OM.LOG.error(ex);
+ }
}
private CDOID getID(Object element)
@@ -123,6 +161,50 @@ public class CDOTreeExpansionAgent
return null;
}
+ private void addExpandedElement(Object element)
+ {
+ if (element instanceof CDOElement)
+ {
+ CDOElement wrapper = (CDOElement)element;
+
+ CDOID id = getID(wrapper.getDelegate());
+ if (id != null)
+ {
+ expandedWrappers.add(id);
+ }
+ }
+ else
+ {
+ CDOID id = getID(element);
+ if (id != null)
+ {
+ expandedIDs.add(id);
+ }
+ }
+ }
+
+ private void removeExpandedElement(Object element)
+ {
+ if (element instanceof CDOElement)
+ {
+ CDOElement wrapper = (CDOElement)element;
+
+ CDOID id = getID(wrapper.getDelegate());
+ if (id != null)
+ {
+ expandedWrappers.remove(id);
+ }
+ }
+ else
+ {
+ CDOID id = getID(element);
+ if (id != null)
+ {
+ expandedIDs.remove(id);
+ }
+ }
+ }
+
/**
* @author Eike Stepper
*/
@@ -159,20 +241,14 @@ public class CDOTreeExpansionAgent
public void treeExpanded(TreeExpansionEvent event)
{
- CDOID id = getID(event.getElement());
- if (id != null)
- {
- expandedIDs.add(id);
- }
+ Object element = event.getElement();
+ addExpandedElement(element);
}
public void treeCollapsed(TreeExpansionEvent event)
{
- CDOID id = getID(event.getElement());
- if (id != null)
- {
- expandedIDs.remove(id);
- }
+ Object element = event.getElement();
+ removeExpandedElement(element);
}
public void widgetDisposed(DisposeEvent e)

Back to the top