### Eclipse Workspace Patch 1.0 #P org.eclipse.compare Index: compare/org/eclipse/compare/internal/CompareWithOtherResourceDialog.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithOtherResourceDialog.java,v retrieving revision 1.5 diff -u -r1.5 CompareWithOtherResourceDialog.java --- compare/org/eclipse/compare/internal/CompareWithOtherResourceDialog.java 16 Sep 2008 14:03:31 -0000 1.5 +++ compare/org/eclipse/compare/internal/CompareWithOtherResourceDialog.java 16 Nov 2008 01:02:20 -0000 @@ -61,6 +61,7 @@ import org.eclipse.ui.forms.events.ExpansionAdapter; import org.eclipse.ui.forms.events.ExpansionEvent; import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.internal.ide.dialogs.OpenResourceDialog; import org.eclipse.ui.part.ResourceTransfer; /** @@ -251,8 +252,14 @@ protected void createMainButton(Composite parent) { super.createMainButton(parent); mainButton.setText(CompareMessages.CompareWithOtherResourceDialog_workspaceMainButton); - // temporarily hide this button. For more information about supporting for browsing workspace see bug 243744. - mainButton.setVisible(false); + mainButton.addSelectionListener(new SelectionListener() { + public void widgetDefaultSelected(SelectionEvent e) { + widgetSelected(e); + } + public void widgetSelected(SelectionEvent e) { + setResource(getResourceFromDialog()); + } + }); } protected void createText(Composite parent) { @@ -285,6 +292,19 @@ super.setResource(resource); text.setText(resource.getFullPath().toOSString()); } + + private IResource getResourceFromDialog() { + IResource r = null; + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + OpenResourceDialog dialog = new OpenResourceDialog(getShell(), root, IResource.FILE); + int returnCode = dialog.open(); + if (returnCode != IDialogConstants.OK_ID) + return null; + Object[] result = dialog.getResult(); + if (result.length > 0) + r = (IResource) result[0]; + return r; + } protected void initDrag() { DragSource source = new DragSource(text, DND.DROP_MOVE