Bug 267173 [Linked Resources] Data loss when replacing one linked resource with another using drag and drop
Build ID: HEAD Steps To Reproduce: I've got a Group with some links to folders. If I drag and drop a linked folder from another workspace path, into the group, I get the dialog saying: "project/group/linked_folder" already exists. Do you wish to overwrite? Folder contents will be merged existing files will be overwritten. In my case I had selected a bunch of linked resources to drag into the group, (some of which are identical to the links already in the group). So I pressed "Yes To All". The result is an error: "Resource is out of sync with the filesystem: ..." The move operation has actually tried to replace a file with itself, and this fails (and the resulting file is empty...). I find this completely counter-intuitive. If I'm replacing a linked resource with another, I don't want a recursive merge. I want to replace the link, just like aliases in a filesystem...
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/ide/undo/WorkspaceUndoUtil.java
null,
				NLS
						.bind(
								UndoMessages.AbstractResourcesOperation_outOfSyncQuestion,
								resource.getName()), MessageDialog.QUESTION,
				new String[] { IDialogConstants.YES_LABEL,
						IDialogConstants.YES_TO_ALL_LABEL,
						IDialogConstants.NO_LABEL,
						IDialogConstants.CANCEL_LABEL }, 0) {
			protected int getShellStyle() {
				return super.getShellStyle() | SWT.SHEET;
			}
		};
		shell.getDisplay().syncExec(new Runnable() {
			public void run() {
				dialog.open();
			}
		});
		int result = dialog.getReturnCode();
		if (result == 0) {
			return IDialogConstants.YES_ID;
		}
		if (result == 1) {
			return IDialogConstants.YES_TO_ALL_ID;
		}
		if (result == 2) {
			return IDialogConstants.NO_ID;
		}
		return IDialogConstants.CANCEL_ID;
	}