Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2015-04-29 11:14:59 +0000
committerEike Stepper2015-04-29 11:14:59 +0000
commitbf030f9c3a2d48682cb6718c00e8db85f95c7703 (patch)
tree6982409e70e8c3d9bc499834652b721f5b2e8bd3 /plugins/org.eclipse.emf.cdo.explorer.ui
parentfc1829383a42b6882b628de10cc925cccbaa8c87 (diff)
downloadcdo-bf030f9c3a2d48682cb6718c00e8db85f95c7703.tar.gz
cdo-bf030f9c3a2d48682cb6718c00e8db85f95c7703.tar.xz
cdo-bf030f9c3a2d48682cb6718c00e8db85f95c7703.zip
[458349] Consolidate UI
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=458349
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.explorer.ui')
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/ViewerUtil.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutContentProvider.java121
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutEditorOpenerRegistry.java8
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutState.java44
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutStateManager.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutBranchPointPage.java4
6 files changed, 128 insertions, 55 deletions
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/ViewerUtil.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/ViewerUtil.java
index db73b369c1..e2d500d98a 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/ViewerUtil.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/ViewerUtil.java
@@ -81,7 +81,7 @@ public final class ViewerUtil
public static void refresh(final StructuredViewer viewer, final Object element, boolean async)
{
- refresh(viewer, element, true, false);
+ refresh(viewer, element, async, false);
}
public static void refresh(final StructuredViewer viewer, final Object element, boolean async,
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 36c843ffe0..6d370e5c1c 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
@@ -21,9 +21,8 @@ import org.eclipse.emf.cdo.explorer.CDOExplorerManager;
import org.eclipse.emf.cdo.explorer.CDOExplorerManager.ElementsChangedEvent;
import org.eclipse.emf.cdo.explorer.CDOExplorerUtil;
import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout;
-import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout.State;
import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckoutManager;
-import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckoutManager.CheckoutOpenEvent;
+import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckoutManager.CheckoutStateEvent;
import org.eclipse.emf.cdo.explorer.ui.ViewerUtil;
import org.eclipse.emf.cdo.explorer.ui.bundle.OM;
import org.eclipse.emf.cdo.explorer.ui.checkouts.actions.OpenWithActionProvider;
@@ -43,6 +42,7 @@ import org.eclipse.net4j.util.ui.views.ItemProvider;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
@@ -126,24 +126,36 @@ public class CDOCheckoutContentProvider implements ICommonContentProvider, IProp
{
viewerRefresh.addNotification(null, true, true);
}
- else if (event instanceof CheckoutOpenEvent)
+ else if (event instanceof CheckoutStateEvent)
{
- CheckoutOpenEvent e = (CheckoutOpenEvent)event;
+ CheckoutStateEvent e = (CheckoutStateEvent)event;
CDOCheckout checkout = e.getCheckout();
+ CDOCheckout.State state = e.getNewState();
- if (!e.isOpen())
+ if (state == CDOCheckout.State.Opening)
{
- ViewerUtil.expand(viewer, checkout, false);
- }
-
- viewerRefresh.addNotification(checkout, true, true);
+ // Trigger hasChildren().
+ ViewerUtil.refresh(viewer, checkout);
- if (e.isOpen())
- {
+ // Trigger getChildren().
ViewerUtil.expand(viewer, checkout, true);
}
+ else
+ {
+ if (state == CDOCheckout.State.Closed)
+ {
+ ViewerUtil.expand(viewer, checkout, false);
+ }
+
+ viewerRefresh.addNotification(checkout, true, true);
+
+ if (state == CDOCheckout.State.Open)
+ {
+ ViewerUtil.expand(viewer, checkout, true);
+ }
- updatePropertySheetPage(checkout);
+ updatePropertySheetPage(checkout);
+ }
}
else if (event instanceof CDOExplorerManager.ElementsChangedEvent)
{
@@ -246,8 +258,6 @@ public class CDOCheckoutContentProvider implements ICommonContentProvider, IProp
private final CDOCheckoutStateManager stateManager = new CDOCheckoutStateManager(this);
- private final Map<CDOCheckout, CDOCheckout> openingCheckouts = new ConcurrentHashMap<CDOCheckout, CDOCheckout>();
-
private final Map<Object, Object[]> childrenCache = new ConcurrentHashMap<Object, Object[]>();
private String viewerID;
@@ -365,18 +375,20 @@ public class CDOCheckoutContentProvider implements ICommonContentProvider, IProp
if (object instanceof CDOCheckout)
{
CDOCheckout checkout = (CDOCheckout)object;
- if (!checkout.isOpen())
+ switch (checkout.getState())
{
- if (openingCheckouts.get(checkout) != null)
- {
- // This must be the ViewerUtil.Pending element.
- return true;
- }
-
+ case Closing:
+ case Closed:
return false;
- }
- object = checkout.getRootObject();
+ case Opening:
+ // This must be the ViewerUtil.Pending element.
+ return true;
+
+ case Open:
+ object = checkout.getRootObject();
+ break;
+ }
}
if (object instanceof CDOElement)
@@ -473,18 +485,20 @@ public class CDOCheckoutContentProvider implements ICommonContentProvider, IProp
if (object instanceof CDOCheckout)
{
checkout = (CDOCheckout)object;
- if (!checkout.isOpen())
- {
- openingCheckout = openingCheckouts.remove(checkout);
- if (openingCheckout == null)
- {
- return ViewerUtil.NO_CHILDREN;
- }
- }
- if (openingCheckout == null)
+ switch (checkout.getState())
{
+ case Closing:
+ case Closed:
+ return ViewerUtil.NO_CHILDREN;
+
+ case Opening:
+ openingCheckout = checkout;
+ break;
+
+ case Open:
object = checkout.getRootObject();
+ break;
}
}
@@ -545,6 +559,21 @@ public class CDOCheckoutContentProvider implements ICommonContentProvider, IProp
children = contentProvider.getChildren(finalObject);
}
+ // Adjust possible legacy adapters.
+ for (int i = 0; i < children.length; i++)
+ {
+ Object child = children[i];
+ if (child instanceof InternalCDOObject)
+ {
+ InternalCDOObject cdoObject = (InternalCDOObject)child;
+ InternalEObject instance = cdoObject.cdoInternalInstance();
+ if (instance != cdoObject)
+ {
+ children[i] = instance;
+ }
+ }
+ }
+
children = CDOCheckoutContentModifier.Registry.INSTANCE.modifyChildren(finalObject, children);
childrenCache.put(originalObject, children);
}
@@ -851,17 +880,27 @@ public class CDOCheckoutContentProvider implements ICommonContentProvider, IProp
Object element = ssel.getFirstElement();
if (element instanceof CDOCheckout)
{
- CDOCheckout checkout = (CDOCheckout)element;
- if (checkout.getState() == State.Closed)
+ final CDOCheckout checkout = (CDOCheckout)element;
+ if (checkout.getState() == CDOCheckout.State.Closed)
{
- // Mark this checkout as loading.
- openingCheckouts.put(checkout, checkout);
-
- // Trigger hasChildren().
- ViewerUtil.refresh(viewer, checkout);
+ // Simulate CheckoutOpenHandler.
+ new Job("Open " + checkout.getLabel())
+ {
+ @Override
+ protected IStatus run(IProgressMonitor monitor)
+ {
+ try
+ {
+ checkout.open();
+ }
+ catch (Exception ex)
+ {
+ OM.LOG.error(ex);
+ }
- // Trigger getChildren().
- ViewerUtil.expand(viewer, checkout, true);
+ return Status.OK_STATUS;
+ }
+ }.schedule();
}
}
else if (element instanceof CDOResourceNode)
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutEditorOpenerRegistry.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutEditorOpenerRegistry.java
index 6abca20f71..9b7c14ba93 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutEditorOpenerRegistry.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutEditorOpenerRegistry.java
@@ -13,6 +13,7 @@ package org.eclipse.emf.cdo.explorer.ui.checkouts;
import org.eclipse.emf.cdo.explorer.CDOExplorerUtil;
import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout;
import org.eclipse.emf.cdo.explorer.ui.bundle.OM;
+import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.ui.CDOEditorUtil;
import org.eclipse.emf.cdo.util.CDOURIUtil;
import org.eclipse.emf.cdo.view.CDOView;
@@ -23,6 +24,7 @@ import org.eclipse.net4j.util.container.Container;
import org.eclipse.net4j.util.om.OMPlatform;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.spi.cdo.CDOMergingConflictResolver;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
@@ -219,6 +221,12 @@ public class CDOCheckoutEditorOpenerRegistry extends Container<CDOCheckoutEditor
CDOCheckout checkout = CDOExplorerUtil.getCheckout(uri);
final CDOView view = checkout.openView();
+ if (view instanceof CDOTransaction)
+ {
+ CDOTransaction transaction = (CDOTransaction)view;
+ transaction.options().addConflictResolver(new CDOMergingConflictResolver());
+ }
+
final IEditorPart editor = openEditor(page, view, CDOURIUtil.extractResourcePath(uri));
page.addPartListener(new IPartListener()
{
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutState.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutState.java
index 16ad823131..4840a6d2f8 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutState.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutState.java
@@ -22,6 +22,7 @@ import org.eclipse.emf.cdo.internal.ui.editor.CDOEditor;
import org.eclipse.emf.cdo.ui.CDOEditorUtil;
import org.eclipse.emf.cdo.ui.CDOLabelDecorator;
import org.eclipse.emf.cdo.ui.CDOTreeExpansionAgent;
+import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.net4j.util.event.IEvent;
import org.eclipse.net4j.util.event.IListener;
@@ -76,16 +77,17 @@ public final class CDOCheckoutState
{
public void notifyEvent(IEvent event)
{
- if (event instanceof CDOCheckoutManager.CheckoutOpenEvent)
+ if (event instanceof CDOCheckoutManager.CheckoutStateEvent)
{
- CDOCheckoutManager.CheckoutOpenEvent e = (CDOCheckoutManager.CheckoutOpenEvent)event;
+ CDOCheckoutManager.CheckoutStateEvent e = (CDOCheckoutManager.CheckoutStateEvent)event;
if (e.getCheckout() == checkout)
{
- if (e.isOpen())
+ CDOCheckout.State state = e.getNewState();
+ if (state == CDOCheckout.State.Open)
{
initTreeExpansionAgent();
}
- else
+ else if (state == CDOCheckout.State.Closed)
{
disposeTreeExpansionAgent();
}
@@ -124,12 +126,26 @@ public final class CDOCheckoutState
labelProvider = new LabelProvider(adapterFactory, resourceManager);
labelProvider.addListener(eventBroker);
- if (checkout.isOpen())
+ initTreeExpansionAgent();
+ CDOExplorerUtil.getCheckoutManager().addListener(checkoutManagerListener);
+ }
+
+ void inputChanged(TreeViewer newTreeViewer, Object oldInput, Object newInput)
+ {
+ contentProvider.inputChanged(newTreeViewer, oldInput, newInput);
+
+ if (treeExpansionAgent != null)
{
- initTreeExpansionAgent();
+ if (newTreeViewer != treeExpansionAgent.getViewer())
+ {
+ disposeTreeExpansionAgent();
+ }
}
- CDOExplorerUtil.getCheckoutManager().addListener(checkoutManagerListener);
+ if (newTreeViewer != null)
+ {
+ initTreeExpansionAgent();
+ }
}
public CDOCheckout getCheckout()
@@ -184,8 +200,18 @@ public final class CDOCheckoutState
private void initTreeExpansionAgent()
{
- TreeViewer viewer = stateManager.getMainContentProvider().getViewer();
- treeExpansionAgent = new CDOTreeExpansionAgent(checkout.getView(), viewer);
+ if (treeExpansionAgent == null)
+ {
+ CDOView view = checkout.getView();
+ if (view != null)
+ {
+ TreeViewer viewer = stateManager.getMainContentProvider().getViewer();
+ if (viewer != null)
+ {
+ treeExpansionAgent = new CDOTreeExpansionAgent(view, viewer);
+ }
+ }
+ }
}
/**
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutStateManager.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutStateManager.java
index 88ec8c987a..f55718aefc 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutStateManager.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/CDOCheckoutStateManager.java
@@ -22,7 +22,6 @@ import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.resource.LocalResourceManager;
import org.eclipse.jface.resource.ResourceManager;
-import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import java.util.HashMap;
@@ -103,8 +102,7 @@ public final class CDOCheckoutStateManager
for (CDOCheckoutState state : getStates())
{
- IContentProvider contentProvider = state.getContentProvider();
- contentProvider.inputChanged(newTreeViewer, oldInput, newInput);
+ state.inputChanged(newTreeViewer, oldInput, newInput);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutBranchPointPage.java b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutBranchPointPage.java
index e13b3a0daa..49ded02222 100644
--- a/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutBranchPointPage.java
+++ b/plugins/org.eclipse.emf.cdo.explorer.ui/src/org/eclipse/emf/cdo/explorer/ui/checkouts/wizards/CheckoutBranchPointPage.java
@@ -99,7 +99,9 @@ public class CheckoutBranchPointPage extends CheckoutWizardPage
@Override
protected void createUI(Composite parent)
{
- branchPointComposite = new ComposeBranchPointComposite(parent, true, null)
+ CDOBranchPoint branchPoint = getBranchPoint();
+
+ branchPointComposite = new ComposeBranchPointComposite(parent, true, branchPoint)
{
@Override
protected void timeStampError(String message)

Back to the top