Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--features/org.eclipse.emf.cdo.compare-feature/feature.xml2
-rw-r--r--plugins/org.eclipse.emf.cdo.ui.compare/META-INF/MANIFEST.MF8
-rw-r--r--plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/compare/CDOCompareEditorUtil.java186
-rw-r--r--plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/AbstractCompareAction.java (renamed from plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/AbstractAction.java)16
-rw-r--r--plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/CompareWithEachOtherAction.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/CompareWithPreviousVersionAction.java8
-rw-r--r--plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/MergeAction.java6
-rw-r--r--plugins/org.eclipse.emf.cdo.ui.team/src/org/eclipse/emf/cdo/ui/internal/team/history/CDOHistoryPage.java1
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/CommitHistoryComposite.java46
9 files changed, 228 insertions, 51 deletions
diff --git a/features/org.eclipse.emf.cdo.compare-feature/feature.xml b/features/org.eclipse.emf.cdo.compare-feature/feature.xml
index ce71c348ef..fd60ef897c 100644
--- a/features/org.eclipse.emf.cdo.compare-feature/feature.xml
+++ b/features/org.eclipse.emf.cdo.compare-feature/feature.xml
@@ -12,7 +12,7 @@
<feature
id="org.eclipse.emf.cdo.compare"
label="%featureName"
- version="4.2.100.qualifier"
+ version="4.3.0.qualifier"
provider-name="%providerName"
license-feature="org.eclipse.emf.cdo.license"
license-feature-version="0.0.0">
diff --git a/plugins/org.eclipse.emf.cdo.ui.compare/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.ui.compare/META-INF/MANIFEST.MF
index d7037b8d94..072254f847 100644
--- a/plugins/org.eclipse.emf.cdo.ui.compare/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.ui.compare/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.emf.cdo.ui.compare;singleton:=true
-Bundle-Version: 4.2.100.qualifier
+Bundle-Version: 4.3.0.qualifier
Bundle-Activator: org.eclipse.emf.cdo.ui.internal.compare.bundle.OM$Activator
Bundle-Vendor: %providerName
Bundle-ClassPath: .
@@ -16,6 +16,6 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
org.eclipse.emf.cdo.compare;bundle-version="[4.2.0,5.0.0)";visibility:=reexport,
org.eclipse.emf.compare.ide.ui;bundle-version="[3.0.0,5.0.0)",
org.eclipse.emf.compare.edit;bundle-version="[3.0.0,5.0.0)"
-Export-Package: org.eclipse.emf.cdo.ui.compare;version="4.2.100",
- org.eclipse.emf.cdo.ui.internal.compare;version="4.2.100";x-internal:=true,
- org.eclipse.emf.cdo.ui.internal.compare.bundle;version="4.2.100";x-internal:=true
+Export-Package: org.eclipse.emf.cdo.ui.compare;version="4.3.0",
+ org.eclipse.emf.cdo.ui.internal.compare;version="4.3.0";x-internal:=true,
+ org.eclipse.emf.cdo.ui.internal.compare.bundle;version="4.3.0";x-internal:=true
diff --git a/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/compare/CDOCompareEditorUtil.java b/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/compare/CDOCompareEditorUtil.java
index 9bdbf601f2..fc37184b8e 100644
--- a/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/compare/CDOCompareEditorUtil.java
+++ b/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/compare/CDOCompareEditorUtil.java
@@ -20,6 +20,7 @@ import org.eclipse.emf.cdo.spi.common.branch.CDOBranchUtil;
import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+import org.eclipse.net4j.util.ui.UIUtil;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.compare.Comparison;
@@ -31,6 +32,7 @@ import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.compare.CompareConfiguration;
import org.eclipse.compare.CompareUI;
+import org.eclipse.jface.util.IPropertyChangeListener;
/**
* Static methods to open an EMF Compare dialog.
@@ -40,22 +42,41 @@ import org.eclipse.compare.CompareUI;
*/
public class CDOCompareEditorUtil
{
+ private static final ThreadLocal<Boolean> ACTIVATE_EDITOR = new ThreadLocal<Boolean>();
+
+ private static final ThreadLocal<Runnable> DISPOSE_RUNNABLE = new ThreadLocal<Runnable>();
+
public static boolean openDialog(CDOSession session, CDOBranchPoint leftPoint, CDOBranchPoint rightPoint)
{
- CDOView leftView = null;
- CDOView rightView = null;
+ final Boolean activateEditor = ACTIVATE_EDITOR.get();
+ final CDOView[] leftAndRightView = { null, null };
+ final Runnable disposeRunnable = new Runnable()
+ {
+ public void run()
+ {
+ LifecycleUtil.deactivate(leftAndRightView[0]);
+ LifecycleUtil.deactivate(leftAndRightView[1]);
+ }
+ };
try
{
- leftView = session.openView(leftPoint);
- rightView = session.openView(rightPoint);
+ leftAndRightView[0] = session.openView(leftPoint);
+ leftAndRightView[1] = session.openView(rightPoint);
- return openDialog(leftView, rightView, null);
+ if (activateEditor != null)
+ {
+ DISPOSE_RUNNABLE.set(disposeRunnable);
+ }
+
+ return openDialog(leftAndRightView[0], leftAndRightView[1], null);
}
finally
{
- LifecycleUtil.deactivate(rightView);
- LifecycleUtil.deactivate(leftView);
+ if (activateEditor == null)
+ {
+ disposeRunnable.run();
+ }
}
}
@@ -81,6 +102,104 @@ public class CDOCompareEditorUtil
public static boolean openDialog(CDOView leftView, CDOView rightView, CDOView[] originView)
{
+ final Input input = createComparisonInput(leftView, rightView, originView);
+
+ final Boolean activateEditor = ACTIVATE_EDITOR.get();
+ if (activateEditor != null)
+ {
+ input.setDisposeRunnable(DISPOSE_RUNNABLE.get());
+ DISPOSE_RUNNABLE.remove();
+
+ UIUtil.getDisplay().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ CompareUI.openCompareEditor(input, activateEditor);
+ }
+ });
+ }
+ else
+ {
+ CompareUI.openCompareDialog(input);
+ }
+
+ return input.isOK();
+ }
+
+ /**
+ * @since 4.3
+ */
+ public static boolean openEditor(CDOSession session, CDOBranchPoint leftPoint, CDOBranchPoint rightPoint,
+ boolean activate)
+ {
+ ACTIVATE_EDITOR.set(activate);
+
+ try
+ {
+ return openDialog(session, leftPoint, rightPoint);
+ }
+ finally
+ {
+ ACTIVATE_EDITOR.remove();
+ }
+ }
+
+ /**
+ * @since 4.3
+ */
+ public static boolean openEditor(CDOCommitInfo leftCommitInfo, CDOBranchPoint rightPoint, boolean activate)
+ {
+ ACTIVATE_EDITOR.set(activate);
+
+ try
+ {
+ return openDialog(leftCommitInfo, rightPoint);
+ }
+ finally
+ {
+ ACTIVATE_EDITOR.remove();
+ }
+ }
+
+ /**
+ * @since 4.3
+ */
+ public static boolean openEditor(CDOCommitInfo commitInfo, boolean activate)
+ {
+ ACTIVATE_EDITOR.set(activate);
+
+ try
+ {
+ return openDialog(commitInfo);
+ }
+ finally
+ {
+ ACTIVATE_EDITOR.remove();
+ }
+ }
+
+ /**
+ * @since 4.3
+ */
+ public static boolean openEditor(CDOView leftView, CDOView rightView, CDOView[] originView, boolean activate)
+ {
+ ACTIVATE_EDITOR.set(activate);
+
+ try
+ {
+ return openDialog(leftView, rightView, originView);
+ }
+ finally
+ {
+ ACTIVATE_EDITOR.remove();
+ }
+ }
+
+ /**
+ * @since 4.3
+ */
+ public static Input createComparisonInput(CDOView leftView, CDOView rightView, CDOView[] originView)
+ {
Comparison comparison = CDOCompareUtil.compare(leftView, rightView, originView);
IComparisonScope scope = CDOCompare.getScope(comparison);
@@ -94,9 +213,7 @@ public class CDOCompareEditorUtil
configuration.setLeftEditable(!leftView.isReadOnly());
configuration.setRightEditable(!rightView.isReadOnly());
- Input input = new Input(configuration, comparison, editingDomain, adapterFactory);
- CompareUI.openCompareDialog(input);
- return input.isOK();
+ return new Input(configuration, comparison, editingDomain, adapterFactory);
}
/**
@@ -105,6 +222,8 @@ public class CDOCompareEditorUtil
@SuppressWarnings("restriction")
private static final class Input extends org.eclipse.emf.compare.ide.ui.internal.editor.ComparisonEditorInput
{
+ private Runnable disposeRunnable;
+
private boolean ok;
private Input(CompareConfiguration configuration, Comparison comparison, ICompareEditingDomain editingDomain,
@@ -112,7 +231,12 @@ public class CDOCompareEditorUtil
{
super(new org.eclipse.emf.compare.ide.ui.internal.configuration.EMFCompareConfiguration(configuration),
comparison, editingDomain, adapterFactory);
- setTitle("Model Comparison");
+ setTitle("CDO Model Comparison");
+ }
+
+ public void setDisposeRunnable(Runnable disposeRunnable)
+ {
+ this.disposeRunnable = disposeRunnable;
}
public boolean isOK()
@@ -123,8 +247,44 @@ public class CDOCompareEditorUtil
@Override
public boolean okPressed()
{
- ok = true;
- return super.okPressed();
+ try
+ {
+ ok = true;
+ return super.okPressed();
+ }
+ finally
+ {
+ dispose();
+ }
+ }
+
+ @Override
+ public void removePropertyChangeListener(IPropertyChangeListener listener)
+ {
+ try
+ {
+ super.removePropertyChangeListener(listener);
+ }
+ finally
+ {
+ dispose();
+ }
+ }
+
+ private void dispose()
+ {
+ AdapterFactory adapterFactory = getAdapterFactory();
+ if (adapterFactory instanceof ComposedAdapterFactory)
+ {
+ ComposedAdapterFactory composedAdapterFactory = (ComposedAdapterFactory)adapterFactory;
+ composedAdapterFactory.dispose();
+ }
+
+ if (disposeRunnable != null)
+ {
+ disposeRunnable.run();
+ disposeRunnable = null;
+ }
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/AbstractAction.java b/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/AbstractCompareAction.java
index 1c13133590..34790252b3 100644
--- a/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/AbstractAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/AbstractCompareAction.java
@@ -10,11 +10,13 @@
*/
package org.eclipse.emf.cdo.ui.internal.compare;
+import org.eclipse.net4j.util.ui.actions.LongRunningActionDelegate;
+
import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
import java.util.ArrayList;
@@ -24,7 +26,7 @@ import java.util.List;
/**
* @author Eike Stepper
*/
-public abstract class AbstractAction<TARGET> implements IObjectActionDelegate
+public abstract class AbstractCompareAction<TARGET> extends LongRunningActionDelegate
{
private final Class<TARGET> targetClass;
@@ -32,7 +34,7 @@ public abstract class AbstractAction<TARGET> implements IObjectActionDelegate
private ISelection selection;
- public AbstractAction(Class<TARGET> targetClass)
+ public AbstractCompareAction(Class<TARGET> targetClass)
{
this.targetClass = targetClass;
}
@@ -47,12 +49,14 @@ public abstract class AbstractAction<TARGET> implements IObjectActionDelegate
this.targetPart = targetPart;
}
+ @Override
public void selectionChanged(IAction action, ISelection selection)
{
this.selection = selection;
}
- public void run(IAction action)
+ @Override
+ protected void doRun(IProgressMonitor progressMonitor) throws Exception
{
if (selection instanceof IStructuredSelection)
{
@@ -72,11 +76,11 @@ public abstract class AbstractAction<TARGET> implements IObjectActionDelegate
}
}
- run(action, targets);
+ run(targets, progressMonitor);
}
}
- protected abstract void run(IAction action, List<TARGET> targets);
+ protected abstract void run(List<TARGET> targets, IProgressMonitor progressMonitor);
@SuppressWarnings("unchecked")
public static <T> T getAdapter(Object adaptable, Class<T> c)
diff --git a/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/CompareWithEachOtherAction.java b/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/CompareWithEachOtherAction.java
index 966707b680..8bb94a4e0b 100644
--- a/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/CompareWithEachOtherAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/CompareWithEachOtherAction.java
@@ -13,14 +13,14 @@ package org.eclipse.emf.cdo.ui.internal.compare;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfo;
import org.eclipse.emf.cdo.ui.compare.CDOCompareEditorUtil;
-import org.eclipse.jface.action.IAction;
+import org.eclipse.core.runtime.IProgressMonitor;
import java.util.List;
/**
* @author Eike Stepper
*/
-public class CompareWithEachOtherAction extends AbstractAction<CDOCommitInfo>
+public class CompareWithEachOtherAction extends AbstractCompareAction<CDOCommitInfo>
{
public CompareWithEachOtherAction()
{
@@ -28,7 +28,7 @@ public class CompareWithEachOtherAction extends AbstractAction<CDOCommitInfo>
}
@Override
- protected void run(IAction action, List<CDOCommitInfo> targets)
+ protected void run(List<CDOCommitInfo> targets, IProgressMonitor progressMonitor)
{
if (targets.size() == 2)
{
diff --git a/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/CompareWithPreviousVersionAction.java b/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/CompareWithPreviousVersionAction.java
index ece8278104..61aa0fa669 100644
--- a/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/CompareWithPreviousVersionAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/CompareWithPreviousVersionAction.java
@@ -13,14 +13,14 @@ package org.eclipse.emf.cdo.ui.internal.compare;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfo;
import org.eclipse.emf.cdo.ui.compare.CDOCompareEditorUtil;
-import org.eclipse.jface.action.IAction;
+import org.eclipse.core.runtime.IProgressMonitor;
import java.util.List;
/**
* @author Eike Stepper
*/
-public class CompareWithPreviousVersionAction extends AbstractAction<CDOCommitInfo>
+public class CompareWithPreviousVersionAction extends AbstractCompareAction<CDOCommitInfo>
{
public CompareWithPreviousVersionAction()
{
@@ -28,12 +28,12 @@ public class CompareWithPreviousVersionAction extends AbstractAction<CDOCommitIn
}
@Override
- protected void run(IAction action, List<CDOCommitInfo> targets)
+ protected void run(List<CDOCommitInfo> targets, IProgressMonitor progressMonitor)
{
if (targets.size() == 1)
{
CDOCommitInfo commitInfo = targets.get(0);
- CDOCompareEditorUtil.openDialog(commitInfo);
+ CDOCompareEditorUtil.openEditor(commitInfo, true);
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/MergeAction.java b/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/MergeAction.java
index 7609500a22..f053ca2976 100644
--- a/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/MergeAction.java
+++ b/plugins/org.eclipse.emf.cdo.ui.compare/src/org/eclipse/emf/cdo/ui/internal/compare/MergeAction.java
@@ -19,7 +19,7 @@ import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
-import org.eclipse.jface.action.IAction;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.ui.IWorkbenchPage;
import java.util.List;
@@ -27,7 +27,7 @@ import java.util.List;
/**
* @author Eike Stepper
*/
-public abstract class MergeAction extends AbstractAction<CDOTransaction>
+public abstract class MergeAction extends AbstractCompareAction<CDOTransaction>
{
private final boolean allowTimeStamp;
@@ -38,7 +38,7 @@ public abstract class MergeAction extends AbstractAction<CDOTransaction>
}
@Override
- protected void run(IAction action, List<CDOTransaction> targets)
+ protected void run(List<CDOTransaction> targets, IProgressMonitor progressMonitor)
{
if (targets.size() == 1)
{
diff --git a/plugins/org.eclipse.emf.cdo.ui.team/src/org/eclipse/emf/cdo/ui/internal/team/history/CDOHistoryPage.java b/plugins/org.eclipse.emf.cdo.ui.team/src/org/eclipse/emf/cdo/ui/internal/team/history/CDOHistoryPage.java
index b934d9742f..cfdae6d4b5 100644
--- a/plugins/org.eclipse.emf.cdo.ui.team/src/org/eclipse/emf/cdo/ui/internal/team/history/CDOHistoryPage.java
+++ b/plugins/org.eclipse.emf.cdo.ui.team/src/org/eclipse/emf/cdo/ui/internal/team/history/CDOHistoryPage.java
@@ -169,6 +169,7 @@ public class CDOHistoryPage extends HistoryPage
IPageSite site = getSite();
TableViewer tableViewer = commitHistoryComposite.getTableViewer();
+
UIUtil.addDragSupport(tableViewer);
MenuManager menuManager = new MenuManager(POPUP_ID);
diff --git a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/CommitHistoryComposite.java b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/CommitHistoryComposite.java
index 4dc8c3496c..73b07f4dd1 100644
--- a/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/CommitHistoryComposite.java
+++ b/plugins/org.eclipse.emf.cdo.ui/src/org/eclipse/emf/cdo/ui/widgets/CommitHistoryComposite.java
@@ -52,8 +52,10 @@ import org.eclipse.emf.spi.cdo.CDOSessionProtocol;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IOpenListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.OpenEvent;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
@@ -100,7 +102,7 @@ public class CommitHistoryComposite extends Composite
tableViewer = createTableViewer();
tableViewer.setContentProvider(createContentProvider());
- tableViewer.addDoubleClickListener(new DoubleClickListener());
+
tableViewer.addSelectionChangedListener(new ISelectionChangedListener()
{
public void selectionChanged(SelectionChangedEvent event)
@@ -114,6 +116,22 @@ public class CommitHistoryComposite extends Composite
}
});
+ tableViewer.addDoubleClickListener(new IDoubleClickListener()
+ {
+ public void doubleClick(DoubleClickEvent event)
+ {
+ doubleClicked();
+ }
+ });
+
+ tableViewer.addOpenListener(new IOpenListener()
+ {
+ public void open(OpenEvent event)
+ {
+ doubleClicked();
+ }
+ });
+
labelProvider = createLabelProvider();
labelProvider.support(tableViewer);
@@ -247,25 +265,19 @@ public class CommitHistoryComposite extends Composite
{
}
- /**
- * @author Eike Stepper
- */
- private final class DoubleClickListener implements IDoubleClickListener
+ private void doubleClicked()
{
- public void doubleClick(DoubleClickEvent event)
+ IStructuredSelection selection = (IStructuredSelection)tableViewer.getSelection();
+ CDOCommitInfo commitInfo = (CDOCommitInfo)selection.getFirstElement();
+ if (commitInfo != null)
{
- IStructuredSelection selection = (IStructuredSelection)tableViewer.getSelection();
- CDOCommitInfo commitInfo = (CDOCommitInfo)selection.getFirstElement();
- if (commitInfo != null)
+ if (commitInfo instanceof TriggerLoadElement)
{
- if (commitInfo instanceof TriggerLoadElement)
- {
- history.triggerLoad(new RevealElementHandler());
- }
- else
- {
- doubleClicked(commitInfo);
- }
+ history.triggerLoad(new RevealElementHandler());
+ }
+ else
+ {
+ doubleClicked(commitInfo);
}
}
}

Back to the top