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/src/org/eclipse/ui/internal/wizards/datatransfer/WizardFileSystemResourceExportPage1.java
String[] directoryNames = settings
                    .getArray(STORE_DESTINATION_NAMES_ID);
            if (directoryNames == null) {
				return; 
			}
            
            setDestinationValue(directoryNames[0]);
            for (int i = 0; i < directoryNames.length; i++) {
				addDestinationItem(directoryNames[i]);
			}
            
            overwriteExistingFilesCheckbox.setSelection(settings
                    .getBoolean(STORE_OVERWRITE_EXISTING_FILES_ID));
            boolean createDirectories = settings
                    .getBoolean(STORE_CREATE_STRUCTURE_ID);
            createDirectoryStructureButton.setSelection(createDirectories);
            createSelectionOnlyButton.setSelection(!createDirectories);
        }
    }
    /**
     *	Set the contents of the receivers destination specification widget to
     *	the passed value
     *
     */
    protected void setDestinationValue(String value) {
        destinationNameField.setText(value);
    }
    /**
     *	Answer a boolean indicating whether the receivers destination specification
     *	widgets currently all contain valid values.