Bug 161044 [Import/Export] Error: Destination directory conflicts with location of workspace root
Steps to reproduce: 1)Create a new simple project called Proj1 2)Create a new simple project called Proj2 3)Create a new file called testFile in Proj1 4)Try to export the testFile as a zip file and put that zip file inside C:\<yourWorkspace>\Proj2 You get error "Destination directory conflicts with location of workspace root" The code causing this is in UI. The class is called org.eclipse.ui.internal.wizards.datatransfer.WizardFileSystemResourceExportPage1and the method is #validateDestinationGroup. - Why is this considered an error? Products built upon Eclipse allow you to export to a directory in the workspace so obviously this is not a rule but more of a policy used by Eclipse export wizard. This introduces inconsistent behaviour with downstream products. - Can the export be made less restrictive? For example, permit the above example but prevent exports that would damage or corrupt the workspace.
bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardDataTransferPage.java
* resource at the given path should be overwritten.
     *
     * @param pathString 
     * @return the user's reply: one of <code>"YES"</code>, <code>"NO"</code>, <code>"ALL"</code>, 
     *   or <code>"CANCEL"</code>
     */
    public String queryOverwrite(String pathString) {
        Path path = new Path(pathString);
        String messageString;
        
        
        if (path.getFileExtension() == null || path.segmentCount() < 2) {
			messageString = NLS.bind(IDEWorkbenchMessages.WizardDataTransfer_existsQuestion, pathString);
		} else {
			messageString = NLS.bind(IDEWorkbenchMessages.WizardDataTransfer_overwriteNameAndPathQuestion, path.lastSegment(),
			path.removeLastSegments(1).toOSString());
		}
        final MessageDialog dialog = new MessageDialog(getContainer()
                .getShell(), IDEWorkbenchMessages.Question,
                null, messageString, MessageDialog.QUESTION, new String[] {
                        IDialogConstants.YES_LABEL,
                        IDialogConstants.YES_TO_ALL_LABEL,
                        IDialogConstants.NO_LABEL,
                        IDialogConstants.NO_TO_ALL_LABEL,
                        IDialogConstants.CANCEL_LABEL }, 0);
        String[] response = new String[] { YES, ALL, NO, NO_ALL, CANCEL };
        
        
        getControl().getDisplay().syncExec(new Runnable() {
            public void run() {