diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.java index 69436a7ed94..18939f441d6 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.java @@ -186,6 +186,7 @@ public class Messages extends NLS { public static String NewMakeProjFromExistingPage_7; public static String NewMakeProjFromExistingPage_8; public static String NewMakeProjFromExistingPage_9; + public static String NewMakeProjFromExistingPage_DirReadOnlyError; public static String NewVarDialog_0; public static String NewVarDialog_1; public static String PreferredToolchainsTab_0; diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.properties b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.properties index ac4acf5dce1..d45a0a1285a 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.properties +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.properties @@ -152,6 +152,8 @@ NewMakeProjFromExistingPage_6=Browse... NewMakeProjFromExistingPage_7=Select root directory of existing code NewMakeProjFromExistingPage_8=Not a valid directory NewMakeProjFromExistingPage_9=Languages +NewMakeProjFromExistingPage_DirReadOnlyError=Directory is read-only + # ----------- Configuration Selection Page ----------- BuildPropertyPage_error_Unknown_tree_element=Unknown type of element in tree of type {0} diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewMakeProjFromExistingPage.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewMakeProjFromExistingPage.java index 8848e47386a..b9f817f07bb 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewMakeProjFromExistingPage.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/NewMakeProjFromExistingPage.java @@ -155,10 +155,13 @@ public class NewMakeProjFromExistingPage extends WizardPage { else { final File file= new File(loc); if (file.isDirectory()) { + // Ensure we can create files in the directory. + if (!file.canWrite()) + msg = Messages.NewMakeProjFromExistingPage_DirReadOnlyError; // Set the project name to the directory name but not if the user has supplied a name // (bugzilla 368987). Use a job to ensure proper sequence of activity, as setting the Text // will invoke the listener, which will invoke this method. - if (!projectNameSetByUser && !name.equals(file.getName())) { + else if (!projectNameSetByUser && !name.equals(file.getName())) { WorkbenchJob wjob = new WorkbenchJob("update project name") { //$NON-NLS-1$ @Override public IStatus runInUIThread(IProgressMonitor monitor) { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.java index 29c4a9f4a33..8748aa13afa 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.java @@ -105,6 +105,7 @@ public class Messages extends NLS { public static String CMainWizardPage_5; public static String CMainWizardPage_6; public static String CMainWizardPage_7; + public static String CMainWizardPage_DirReadOnlyError; public static String ConfigDescriptionTab_0; public static String ConfigDescriptionTab_1; public static String ConfigDescriptionTab_2; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.properties index fb82cc455f3..839d769eab1 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.properties +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.properties @@ -273,6 +273,7 @@ CMainWizardPage_3=No project types available. Project cannot be created CMainWizardPage_5=Cannot create ICProjectTypeHandler: CMainWizardPage_6=File with specified name already exists. CMainWizardPage_7=Directory with specified name already exists. +CMainWizardPage_DirReadOnlyError=Directory with specified name already exists and is read-only. ProjectContentsArea_0=Browse... ProjectContentsArea_1=Use default location diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CDTMainWizardPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CDTMainWizardPage.java index d8b09411ef6..133785d1776 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CDTMainWizardPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CDTMainWizardPage.java @@ -211,7 +211,12 @@ import org.eclipse.cdt.internal.ui.newui.Messages; IFileInfo f = fs.fetchInfo(); if (f.exists()) { if (f.isDirectory()) { - setMessage(Messages.CMainWizardPage_7, IMessageProvider.WARNING); + if (f.getAttribute(EFS.ATTRIBUTE_READ_ONLY)) { + setErrorMessage(Messages.CMainWizardPage_DirReadOnlyError); + return false; + } + else + setMessage(Messages.CMainWizardPage_7, IMessageProvider.WARNING); } else { setErrorMessage(Messages.CMainWizardPage_6); return false;