[20541]. Changes released by Dirk Baeumer
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
index 3727425..399cf07 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
@@ -314,6 +314,10 @@
* Progress should be reported to the given progress monitor.
* A request to cancel the operation should be honored and acknowledged
* by throwing <code>InterruptedException</code>.
+ * <p>
+ * Note: this method is typically called in a modal context thread which doesn't have a Display assigned.
+ * Implementors of this method shouldn't therefore allocated any SWT resources in this method.
+ * </p>
*
* @param monitor the progress monitor to use to display progress and receive
* requests for cancelation
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
index 4daf9e5..9db2091 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
@@ -18,6 +18,7 @@
public void run(IAction action) {
if (fInput != null) {
+ fInput.initializeCompareConfiguration();
CompareUI.openCompareEditor(fInput);
fInput= null; // don't reuse this input!
}
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
index 02a07d3..a76a400 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
@@ -125,6 +125,25 @@
}
/**
+ * Initializes the images in the compare configuration.
+ */
+ void initializeCompareConfiguration() {
+ CompareConfiguration cc= getCompareConfiguration();
+ if (fLeftResource != null) {
+ cc.setLeftLabel(buildLabel(fLeftResource));
+ cc.setLeftImage(CompareUIPlugin.getImage(fLeftResource));
+ }
+ if (fRightResource != null) {
+ cc.setRightLabel(buildLabel(fRightResource));
+ cc.setRightImage(CompareUIPlugin.getImage(fRightResource));
+ }
+ if (fThreeWay && fAncestorResource != null) {
+ cc.setAncestorLabel(buildLabel(fAncestorResource));
+ cc.setAncestorImage(CompareUIPlugin.getImage(fAncestorResource));
+ }
+ }
+
+ /**
* Returns true if the given arguments cannot be compared.
*/
private boolean incomparable(IStructureComparator c1, IStructureComparator c2) {
@@ -170,8 +189,6 @@
*/
public Object prepareInput(IProgressMonitor pm) throws InvocationTargetException {
- CompareConfiguration cc= (CompareConfiguration) getCompareConfiguration();
-
try {
// fix for PR 1GFMLFB: ITPUI:WIN2000 - files that are out of sync with the file system appear as empty
fLeftResource.refreshLocal(IResource.DEPTH_INFINITE, pm);
@@ -182,19 +199,11 @@
pm.beginTask(Utilities.getString("ResourceCompare.taskName"), IProgressMonitor.UNKNOWN); //$NON-NLS-1$
- cc.setLeftLabel(buildLabel(fLeftResource));
- cc.setLeftImage(CompareUIPlugin.getImage(fLeftResource));
-
- cc.setRightLabel(buildLabel(fRightResource));
- cc.setRightImage(CompareUIPlugin.getImage(fRightResource));
-
String leftLabel= fLeftResource.getName();
String rightLabel= fRightResource.getName();
String title;
if (fThreeWay) {
- cc.setAncestorLabel(buildLabel(fAncestorResource));
- cc.setAncestorImage(CompareUIPlugin.getImage(fAncestorResource));
String format= Utilities.getString("ResourceCompare.threeWay.title"); //$NON-NLS-1$
String ancestorLabel= fAncestorResource.getName();
title= MessageFormat.format(format, new String[] {ancestorLabel, leftLabel, rightLabel} );
diff --git a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
index d99a4f8..3571ee9 100644
--- a/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
+++ b/bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
@@ -62,7 +62,20 @@
fPatcher= patcher;
IResource[] s= Utilities.getResources(selection);
if (s.length == 1)
- fTarget= s[0];
+ fTarget= s[0];
+
+ if (fPatcher != null) {
+ String rformat= PatchMessages.getString("PatchCompareInput.RightTitle.format"); //$NON-NLS-1$
+ String rightLabel= MessageFormat.format(rformat, new String[] { fPatcher.getName() } );
+ config.setRightLabel(rightLabel);
+ //cc.setRightImage(CompareUIPlugin.getImage(fRightResource));
+ }
+
+ if (fTarget != null) {
+ String leftLabel= fTarget.getName();
+ config.setLeftLabel(leftLabel);
+ config.setLeftImage(CompareUIPlugin.getImage(fTarget));
+ }
}
/**
@@ -70,8 +83,6 @@
*/
public Object prepareInput(IProgressMonitor pm) throws InvocationTargetException {
- CompareConfiguration cc= (CompareConfiguration) getCompareConfiguration();
-
try {
Diff[] diffs= fPatcher.getDiffs();
@@ -101,13 +112,9 @@
fTarget.refreshLocal(IResource.DEPTH_INFINITE, pm);
String leftLabel= fTarget.getName();
- cc.setLeftLabel(leftLabel);
- cc.setLeftImage(CompareUIPlugin.getImage(fTarget));
String rformat= PatchMessages.getString("PatchCompareInput.RightTitle.format"); //$NON-NLS-1$
String rightLabel= MessageFormat.format(rformat, new String[] { fPatcher.getName() } );
- cc.setRightLabel(rightLabel);
- //cc.setRightImage(CompareUIPlugin.getImage(fRightResource));
String format= Utilities.getString("ResourceCompare.twoWay.title"); //$NON-NLS-1$
String title= MessageFormat.format(format, new String[] {leftLabel, rightLabel} );
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
index 3727425..399cf07 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
@@ -314,6 +314,10 @@
* Progress should be reported to the given progress monitor.
* A request to cancel the operation should be honored and acknowledged
* by throwing <code>InterruptedException</code>.
+ * <p>
+ * Note: this method is typically called in a modal context thread which doesn't have a Display assigned.
+ * Implementors of this method shouldn't therefore allocated any SWT resources in this method.
+ * </p>
*
* @param monitor the progress monitor to use to display progress and receive
* requests for cancelation
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
index 4daf9e5..9db2091 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
@@ -18,6 +18,7 @@
public void run(IAction action) {
if (fInput != null) {
+ fInput.initializeCompareConfiguration();
CompareUI.openCompareEditor(fInput);
fInput= null; // don't reuse this input!
}
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
index 02a07d3..a76a400 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
@@ -125,6 +125,25 @@
}
/**
+ * Initializes the images in the compare configuration.
+ */
+ void initializeCompareConfiguration() {
+ CompareConfiguration cc= getCompareConfiguration();
+ if (fLeftResource != null) {
+ cc.setLeftLabel(buildLabel(fLeftResource));
+ cc.setLeftImage(CompareUIPlugin.getImage(fLeftResource));
+ }
+ if (fRightResource != null) {
+ cc.setRightLabel(buildLabel(fRightResource));
+ cc.setRightImage(CompareUIPlugin.getImage(fRightResource));
+ }
+ if (fThreeWay && fAncestorResource != null) {
+ cc.setAncestorLabel(buildLabel(fAncestorResource));
+ cc.setAncestorImage(CompareUIPlugin.getImage(fAncestorResource));
+ }
+ }
+
+ /**
* Returns true if the given arguments cannot be compared.
*/
private boolean incomparable(IStructureComparator c1, IStructureComparator c2) {
@@ -170,8 +189,6 @@
*/
public Object prepareInput(IProgressMonitor pm) throws InvocationTargetException {
- CompareConfiguration cc= (CompareConfiguration) getCompareConfiguration();
-
try {
// fix for PR 1GFMLFB: ITPUI:WIN2000 - files that are out of sync with the file system appear as empty
fLeftResource.refreshLocal(IResource.DEPTH_INFINITE, pm);
@@ -182,19 +199,11 @@
pm.beginTask(Utilities.getString("ResourceCompare.taskName"), IProgressMonitor.UNKNOWN); //$NON-NLS-1$
- cc.setLeftLabel(buildLabel(fLeftResource));
- cc.setLeftImage(CompareUIPlugin.getImage(fLeftResource));
-
- cc.setRightLabel(buildLabel(fRightResource));
- cc.setRightImage(CompareUIPlugin.getImage(fRightResource));
-
String leftLabel= fLeftResource.getName();
String rightLabel= fRightResource.getName();
String title;
if (fThreeWay) {
- cc.setAncestorLabel(buildLabel(fAncestorResource));
- cc.setAncestorImage(CompareUIPlugin.getImage(fAncestorResource));
String format= Utilities.getString("ResourceCompare.threeWay.title"); //$NON-NLS-1$
String ancestorLabel= fAncestorResource.getName();
title= MessageFormat.format(format, new String[] {ancestorLabel, leftLabel, rightLabel} );
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
index d99a4f8..3571ee9 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
@@ -62,7 +62,20 @@
fPatcher= patcher;
IResource[] s= Utilities.getResources(selection);
if (s.length == 1)
- fTarget= s[0];
+ fTarget= s[0];
+
+ if (fPatcher != null) {
+ String rformat= PatchMessages.getString("PatchCompareInput.RightTitle.format"); //$NON-NLS-1$
+ String rightLabel= MessageFormat.format(rformat, new String[] { fPatcher.getName() } );
+ config.setRightLabel(rightLabel);
+ //cc.setRightImage(CompareUIPlugin.getImage(fRightResource));
+ }
+
+ if (fTarget != null) {
+ String leftLabel= fTarget.getName();
+ config.setLeftLabel(leftLabel);
+ config.setLeftImage(CompareUIPlugin.getImage(fTarget));
+ }
}
/**
@@ -70,8 +83,6 @@
*/
public Object prepareInput(IProgressMonitor pm) throws InvocationTargetException {
- CompareConfiguration cc= (CompareConfiguration) getCompareConfiguration();
-
try {
Diff[] diffs= fPatcher.getDiffs();
@@ -101,13 +112,9 @@
fTarget.refreshLocal(IResource.DEPTH_INFINITE, pm);
String leftLabel= fTarget.getName();
- cc.setLeftLabel(leftLabel);
- cc.setLeftImage(CompareUIPlugin.getImage(fTarget));
String rformat= PatchMessages.getString("PatchCompareInput.RightTitle.format"); //$NON-NLS-1$
String rightLabel= MessageFormat.format(rformat, new String[] { fPatcher.getName() } );
- cc.setRightLabel(rightLabel);
- //cc.setRightImage(CompareUIPlugin.getImage(fRightResource));
String format= Utilities.getString("ResourceCompare.twoWay.title"); //$NON-NLS-1$
String title= MessageFormat.format(format, new String[] {leftLabel, rightLabel} );