Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuentin Le Menez2015-05-21 16:23:08 +0000
committerCamille Letavernier2015-05-26 08:32:15 +0000
commitc4a29864907306bed517e391056705539836e8fe (patch)
tree0a57413ba1bff4926a402cbf1ac94a08f7b032e0
parent47b0f29f12f7d8476474edd524feaa9113f078f5 (diff)
downloadorg.eclipse.papyrus-c4a29864907306bed517e391056705539836e8fe.tar.gz
org.eclipse.papyrus-c4a29864907306bed517e391056705539836e8fe.tar.xz
org.eclipse.papyrus-c4a29864907306bed517e391056705539836e8fe.zip
Bug 466259: [Wizards] Error message not displayed when trying to create a project/model which already exists (With different case)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=466259 - disabled the Next and Finish buttons if a model with the same name already extists in the workspace - disabled the Next and Finish buttons if a project with the same name already extists in the workspace - added a message signaling why those buttons were disabled - added an error message if the user is unable to create and open the new papyrus model Change-Id: Iea3b3162ad5102a34612e2ed96e6dd33322cc735 Signed-off-by: Quentin Le Menez <quentin.lemenez@cea.fr> Reviewed-on: https://git.eclipse.org/r/48394 Tested-by: Hudson CI Reviewed-by: Camille Letavernier <camille.letavernier@cea.fr>
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/messages/Messages.java4
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/messages/messages.properties2
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/NewModelFilePage.java65
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/PapyrusProjectCreationPage.java43
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/wizards/CreateModelWizard.java14
5 files changed, 92 insertions, 36 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/messages/Messages.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/messages/Messages.java
index 45ad8dbe007..88301b63cc7 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/messages/Messages.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/messages/Messages.java
@@ -50,6 +50,10 @@ public class Messages extends NLS {
/** The New papyrus project wizard_papyrus_project_desc. */
public static String NewPapyrusProjectWizard_papyrus_project_desc;
+ public static String PapyrusProjectCreationPage_page_same_case_desc;
+
+ public static String PapyrusProjectCreationPage_page_incorrect_desc;
+
/** The Diagram category registry_bad_class_name_of_category. */
public static String DiagramCategoryRegistry_bad_class_name_of_category;
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/messages/messages.properties b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/messages/messages.properties
index b4efe254779..c3db50ee148 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/messages/messages.properties
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/messages/messages.properties
@@ -25,6 +25,8 @@ NewPapyrusProjectWizard_exception_on_opening=Problems during opening of the proj
NewPapyrusProjectWizard_new_papyrus_project=New Papyrus Project
NewPapyrusProjectWizard_papyrus_project=Papyrus Project
NewPapyrusProjectWizard_papyrus_project_desc=Create a New Papyrus Project
+PapyrusProjectCreationPage_page_same_case_desc=There already is a project with this name:
+PapyrusProjectCreationPage_page_incorrect_desc=Please enter a correct name for the new project
DiagramCategoryRegistry_bad_class_name_of_category=Could not find implementation for a diagram category
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/NewModelFilePage.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/NewModelFilePage.java
index 222e03d9af2..a5501442382 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/NewModelFilePage.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/NewModelFilePage.java
@@ -14,10 +14,10 @@
package org.eclipse.papyrus.uml.diagram.wizards.pages;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
+import java.util.LinkedList;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
@@ -53,8 +53,6 @@ public class NewModelFilePage extends WizardNewFileCreationPage {
/** The Constant PAGE_ID. */
public static final String PAGE_ID = "NewPapyrusModel"; //$NON-NLS-1$
- private String DefaultDescription;
-
/**
* Instantiates a new new model file page.
*
@@ -80,8 +78,7 @@ public class NewModelFilePage extends WizardNewFileCreationPage {
public NewModelFilePage(String pageId, IStructuredSelection selection, String modelKindName) {
super(pageId, selection);
setTitle(NLS.bind(Messages.NewModelFilePage_3, modelKindName));
- DefaultDescription = NLS.bind(Messages.NewModelFilePage_page_desc, modelKindName);
- setDescription(DefaultDescription);
+ setDescription(NLS.bind(Messages.NewModelFilePage_page_desc, modelKindName));
setFileExtension(DEFAULT_DIAGRAM_EXTENSION);
}
@@ -233,46 +230,58 @@ public class NewModelFilePage extends WizardNewFileCreationPage {
*/
@Override
public boolean canFlipToNextPage() {
- Collection<String> selectionMembers = new ArrayList<String>();
boolean canFlip = true;
- // retrieve the selected elements and get its children
- try {
- IResource iResource = ResourcesPlugin.getWorkspace().getRoot().findMember(getContainerFullPath());
- if (iResource != null) {
- if (iResource instanceof IFolder) {
- IFolder iFolder = (IFolder) iResource;
- selectionMembers = getMembersNames(iFolder.members());
- }
- if (iResource instanceof IProject) {
- IProject iProject = (IProject) iResource;
- selectionMembers = getMembersNames(iProject.members());
- }
- }
- } catch (CoreException e) {
- Activator.log.error(e);
- }
+ String existingModelName = "";
- for (String memberName : selectionMembers) {
- if (getFileName().equalsIgnoreCase(memberName)) {
+ for (String existingName : getExistingNames()) {
+ if (existingName.toLowerCase().equals(getFileName().toLowerCase())) {
canFlip = false;
- this.setDescription(Messages.NewModelFilePage_page_same_case_desc + memberName);
+ existingModelName = existingName;
+ break;
}
}
- if (canFlip) {
- this.setDescription(DefaultDescription);
+ if (!canFlip) {
+ this.setErrorMessage(Messages.NewModelFilePage_page_same_case_desc + existingModelName);
}
+
return canFlip;
}
/**
+ * This method fetches all the IFiles' name in the workspace
+ *
+ * @return
+ * The list of the names
+ */
+ public Collection<String> getExistingNames() {
+ Collection<String> result = new LinkedList<String>();
+
+ try {
+ IResource rootResource = ResourcesPlugin.getWorkspace().getRoot().findMember(getContainerFullPath());
+ // Need to go through all the resources of the selected container to check if there is an homograph
+ if (rootResource.getType() == IResource.PROJECT) {
+ result.addAll(getMembersNames(((IProject) rootResource).members()));
+ }
+ if (rootResource.getType() == IResource.FOLDER) {
+ result.addAll(getMembersNames(((IFolder) rootResource).members()));
+ }
+
+ } catch (CoreException ce) {
+ Activator.log.error(ce);
+ }
+
+ return result;
+ }
+
+ /**
* This method returns the names of the first level children of the selected element
*
* @param membersArray
* @return
*/
public Collection<String> getMembersNames(IResource[] membersArray) {
- Collection<String> membersList = new ArrayList<String>();
+ Collection<String> membersList = new LinkedList<String>();
for (Iterator<IResource> arrayIter = Arrays.asList(membersArray).iterator(); arrayIter.hasNext();) {
IResource iResource = arrayIter.next();
membersList.add(iResource.getName());
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/PapyrusProjectCreationPage.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/PapyrusProjectCreationPage.java
index 60747ed11e3..a19ecf82672 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/PapyrusProjectCreationPage.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/PapyrusProjectCreationPage.java
@@ -12,6 +12,8 @@
package org.eclipse.papyrus.uml.diagram.wizards.pages;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.papyrus.uml.diagram.wizards.messages.Messages;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
@@ -31,6 +33,7 @@ public class PapyrusProjectCreationPage extends WizardNewProjectCreationPage {
private Listener fileNameModifyListener = new Listener() {
+ @Override
public void handleEvent(Event e) {
boolean valid = canFlipToNextPage();
setPageComplete(valid);
@@ -47,7 +50,7 @@ public class PapyrusProjectCreationPage extends WizardNewProjectCreationPage {
@Override
public void createControl(Composite parent) {
super.createControl(parent);
- Composite composite = (Composite)getControl();
+ Composite composite = (Composite) getControl();
composite.setLayoutData(new GridData(SWT.FILL, SWT.DOWN, true, false));
GridLayout gridLayout = new GridLayout(1, false);
composite.setLayout(gridLayout);
@@ -64,9 +67,9 @@ public class PapyrusProjectCreationPage extends WizardNewProjectCreationPage {
* Creates the group.
*
* @param parent
- * the parent
+ * the parent
* @param name
- * the name
+ * the name
* @return the group
*/
private static Group createGroup(Composite parent, String name) {
@@ -83,8 +86,8 @@ public class PapyrusProjectCreationPage extends WizardNewProjectCreationPage {
@Override
protected boolean validatePage() {
- if(fileName != null) {
- if(fileName.getText().equals("")) { //$NON-NLS-1$
+ if (fileName != null) {
+ if (fileName.getText().equals("")) { //$NON-NLS-1$
this.setErrorMessage(Messages.PapyrusProjectCreationPage_3);
return false;
}
@@ -97,12 +100,36 @@ public class PapyrusProjectCreationPage extends WizardNewProjectCreationPage {
return fileName.getText();
}
+ /**
+ * This method is used to avoid case conflicts between existing and newly created projects
+ *
+ * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage()
+ *
+ * @return
+ */
@Override
public boolean canFlipToNextPage() {
- if(validatePage() && !fileName.getText().equals("")) { //$NON-NLS-1$
- return true;
+ // retrieve the selected elements and get its children
+ boolean canFlip = true;
+
+ if (!validatePage() || fileName.getText().equals("")) { //$NON-NLS-1$
+ canFlip = false;
+ this.setErrorMessage(Messages.PapyrusProjectCreationPage_page_incorrect_desc + this.getProjectName().toLowerCase());
}
- return false;
+
+ IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+ if (canFlip != false) {
+ for (IProject iproject : projects) {
+ if (this.getProjectName().equalsIgnoreCase(iproject.getName())) {
+ canFlip = false;
+ this.setErrorMessage(Messages.PapyrusProjectCreationPage_page_same_case_desc + iproject.getName());
+ // A conflict has been found, no need to go further
+ break;
+ }
+ }
+ }
+
+ return canFlip;
}
@Override
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/wizards/CreateModelWizard.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/wizards/CreateModelWizard.java
index c2996c83006..9d5cedbd4e0 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/wizards/CreateModelWizard.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/wizards/CreateModelWizard.java
@@ -23,6 +23,8 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
+import javax.net.ssl.SSLEngineResult.Status;
+
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
@@ -39,12 +41,15 @@ import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.papyrus.infra.core.editor.BackboneException;
import org.eclipse.papyrus.infra.core.extension.commands.IModelCreationCommand;
import org.eclipse.papyrus.infra.core.resource.ModelSet;
@@ -62,6 +67,7 @@ import org.eclipse.papyrus.uml.diagram.wizards.command.InitFromTemplateCommand;
import org.eclipse.papyrus.uml.diagram.wizards.command.NewPapyrusModelCommand;
import org.eclipse.papyrus.uml.diagram.wizards.messages.Messages;
import org.eclipse.papyrus.uml.diagram.wizards.pages.NewModelFilePage;
+import org.eclipse.papyrus.uml.diagram.wizards.pages.PapyrusProjectCreationPage;
import org.eclipse.papyrus.uml.diagram.wizards.pages.SelectDiagramCategoryPage;
import org.eclipse.papyrus.uml.diagram.wizards.pages.SelectDiagramKindPage;
import org.eclipse.papyrus.uml.diagram.wizards.pages.SelectDiagramKindPage.CategoryProvider;
@@ -76,6 +82,7 @@ import org.eclipse.papyrus.uml.tools.commands.ApplyProfileCommand;
import org.eclipse.papyrus.uml.tools.commands.RenameElementCommand;
import org.eclipse.papyrus.uml.tools.model.UmlModel;
import org.eclipse.papyrus.uml.tools.model.UmlUtils;
+import org.eclipse.swt.SWT;
import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IFileEditorInput;
@@ -85,6 +92,7 @@ import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
import org.eclipse.ui.services.IEvaluationService;
import org.eclipse.uml2.uml.Model;
import org.eclipse.uml2.uml.NamedElement;
@@ -303,9 +311,12 @@ public class CreateModelWizard extends Wizard implements INewWizard {
initProfile(modelSet);
initTemplate(modelSet);
openDiagram(newURI);
+
} catch (ServiceException e) {
Activator.log.error(e);
+ this.selectDiagramKindPage.setErrorMessage(e.getMessage());
return false;
+
} finally {
try {
registry.disposeRegistry();
@@ -919,6 +930,9 @@ public class CreateModelWizard extends Wizard implements INewWizard {
if (page instanceof NewModelFilePage) {
return page.canFlipToNextPage();
}
+ if (page instanceof PapyrusProjectCreationPage) {
+ return page.canFlipToNextPage();
+ }
}
return result;

Back to the top