### Eclipse Workspace Patch 1.0 #P org.eclipse.compare Index: compare/org/eclipse/compare/internal/CompareMessages.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java,v retrieving revision 1.17.4.3 diff -u -r1.17.4.3 CompareMessages.java --- compare/org/eclipse/compare/internal/CompareMessages.java 21 Jul 2008 15:12:12 -0000 1.17.4.3 +++ compare/org/eclipse/compare/internal/CompareMessages.java 22 Jul 2008 12:20:25 -0000 @@ -118,6 +118,7 @@ public static String CompareWithOther_error_empty; public static String CompareWithOther_clear; public static String CompareWithOther_warning_two_way; + public static String CompareWithOther_info; static { NLS.initializeMessages(BUNDLE_NAME, CompareMessages.class); Index: compare/org/eclipse/compare/internal/CompareWithOtherResourceDialog.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/Attic/CompareWithOtherResourceDialog.java,v retrieving revision 1.1.2.3 diff -u -r1.1.2.3 CompareWithOtherResourceDialog.java --- compare/org/eclipse/compare/internal/CompareWithOtherResourceDialog.java 21 Jul 2008 15:12:12 -0000 1.1.2.3 +++ compare/org/eclipse/compare/internal/CompareWithOtherResourceDialog.java 22 Jul 2008 12:20:25 -0000 @@ -398,6 +398,7 @@ super.createButtonsForButtonBar(parent); okButton = getButton(IDialogConstants.OK_ID); updateErrorInfo(); + setMessage(CompareMessages.CompareWithOther_info); } private void setSelection(ISelection selection) { @@ -451,7 +452,7 @@ IMessageProvider.ERROR); okButton.setEnabled(false); } else { - setMessage(null); + setMessage(CompareMessages.CompareWithOther_info); okButton.setEnabled(true); } } Index: compare/org/eclipse/compare/internal/CompareWithOtherResourceAction.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/Attic/CompareWithOtherResourceAction.java,v retrieving revision 1.1.2.2 diff -u -r1.1.2.2 CompareWithOtherResourceAction.java --- compare/org/eclipse/compare/internal/CompareWithOtherResourceAction.java 16 Jul 2008 10:45:52 -0000 1.1.2.2 +++ compare/org/eclipse/compare/internal/CompareWithOtherResourceAction.java 22 Jul 2008 12:20:25 -0000 @@ -22,7 +22,7 @@ /** * The "Compare with other resource" action - * + * * @since 3.4 */ public class CompareWithOtherResourceAction implements IObjectActionDelegate { @@ -48,6 +48,7 @@ StructuredSelection ss = new StructuredSelection(resources); CompareAction ca = new CompareAction(); ca.setActivePart(null, fWorkbenchPart); + ca.doesntNeedSelection(); if (ca.isEnabled(ss)) ca.run(ss); } Index: compare/org/eclipse/compare/internal/CompareMessages.properties =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties,v retrieving revision 1.27.4.3 diff -u -r1.27.4.3 CompareMessages.properties --- compare/org/eclipse/compare/internal/CompareMessages.properties 21 Jul 2008 15:12:12 -0000 1.27.4.3 +++ compare/org/eclipse/compare/internal/CompareMessages.properties 22 Jul 2008 12:20:25 -0000 @@ -128,5 +128,6 @@ CompareWithOther_dialogMessage=Select resources to compare CompareWithOther_error_not_comparable=Selected resources are not comparable. CompareWithOther_error_empty=Both left and right panel must contain a valid path. -CompareWithOther_warning_two_way=Ancestor is not a valid resource. Two-way compare will be performed. -CompareWithOther_clear=Clear \ No newline at end of file +CompareWithOther_warning_two_way=Ancestor is not a valid resource. Two-way compare will be performed. +CompareWithOther_clear=Clear +CompareWithOther_info=Drag files from Package Explorer or from another field within the dialog. Index: compare/org/eclipse/compare/internal/CompareAction.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java,v retrieving revision 1.20.8.2 diff -u -r1.20.8.2 CompareAction.java --- compare/org/eclipse/compare/internal/CompareAction.java 16 Jul 2008 10:45:52 -0000 1.20.8.2 +++ compare/org/eclipse/compare/internal/CompareAction.java 22 Jul 2008 12:20:25 -0000 @@ -28,14 +28,19 @@ private ResourceCompareInput fInput; private IWorkbenchPage fWorkbenchPage; + private boolean needsSelectionSetting = true; public void run(ISelection selection) { + boolean ok; if (fInput != null) { - // Pass the shell so setSelection can prompt the user for which - // resource should be the ancestor - boolean ok = fInput.setSelection(selection, - fWorkbenchPage.getWorkbenchWindow().getShell()); + if (needsSelectionSetting) + // Pass the shell so setSelection can prompt the user for which + // resource should be the ancestor + ok = fInput.setSelection(selection, + fWorkbenchPage.getWorkbenchWindow().getShell()); + else + ok = fInput.setSelection(selection, null); if (!ok) return; fInput.initializeCompareConfiguration(); CompareUI.openCompareEditorOnPage(fInput, fWorkbenchPage); @@ -61,4 +66,8 @@ public void setActivePart(IAction action, IWorkbenchPart targetPart) { fWorkbenchPage= targetPart.getSite().getPage(); } + + public void doesntNeedSelection() { + needsSelectionSetting = false; + } } Index: compare/org/eclipse/compare/internal/ResourceCompareInput.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java,v retrieving revision 1.38.8.2 diff -u -r1.38.8.2 ResourceCompareInput.java --- compare/org/eclipse/compare/internal/ResourceCompareInput.java 16 Jul 2008 10:45:52 -0000 1.38.8.2 +++ compare/org/eclipse/compare/internal/ResourceCompareInput.java 22 Jul 2008 12:20:25 -0000 @@ -207,16 +207,23 @@ fThreeWay= selection.length == 3; if (fThreeWay) { - SelectAncestorDialog dialog = - new SelectAncestorDialog(shell, selection); - int code = dialog.open(); - if (code == Window.CANCEL) - return false; - - fAncestorResource= dialog.ancestorResource; - fAncestor= getStructure(fAncestorResource); - fLeftResource= dialog.leftResource; - fRightResource= dialog.rightResource; + if (shell != null) { + SelectAncestorDialog dialog = + new SelectAncestorDialog(shell, selection); + int code = dialog.open(); + if (code == Window.CANCEL) + return false; + + fAncestorResource= dialog.ancestorResource; + fAncestor= getStructure(fAncestorResource); + fLeftResource= dialog.leftResource; + fRightResource= dialog.rightResource; + } else { + fAncestorResource = selection[0]; + fAncestor = getStructure(selection[0]); + fLeftResource= selection[1]; + fRightResource= selection[2]; + } } else { fAncestorResource= null; fAncestor= null;