diff options
author | cdamus | 2013-03-06 16:02:02 +0000 |
---|---|---|
committer | cdamus | 2013-03-06 16:02:02 +0000 |
commit | 0625db1c58b39109db8c78f999f8b8e04d3b6ad6 (patch) | |
tree | b52f1de90658d30b17e68783c2199b9e884a8322 | |
parent | 1bc0dd0a9d9469049a14a97e43ba7cb88ca7a2a6 (diff) | |
download | org.eclipse.papyrus-0625db1c58b39109db8c78f999f8b8e04d3b6ad6.tar.gz org.eclipse.papyrus-0625db1c58b39109db8c78f999f8b8e04d3b6ad6.tar.xz org.eclipse.papyrus-0625db1c58b39109db8c78f999f8b8e04d3b6ad6.zip |
Ensure that empty path is handled similarly as /.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=401197
-rw-r--r-- | plugins/cdo/org.eclipse.papyrus.cdo.uml.diagram.ui/src/org/eclipse/papyrus/cdo/uml/diagram/internal/ui/wizards/NewModelPage.java | 153 |
1 files changed, 63 insertions, 90 deletions
diff --git a/plugins/cdo/org.eclipse.papyrus.cdo.uml.diagram.ui/src/org/eclipse/papyrus/cdo/uml/diagram/internal/ui/wizards/NewModelPage.java b/plugins/cdo/org.eclipse.papyrus.cdo.uml.diagram.ui/src/org/eclipse/papyrus/cdo/uml/diagram/internal/ui/wizards/NewModelPage.java index 571820d96bc..f92ed994574 100644 --- a/plugins/cdo/org.eclipse.papyrus.cdo.uml.diagram.ui/src/org/eclipse/papyrus/cdo/uml/diagram/internal/ui/wizards/NewModelPage.java +++ b/plugins/cdo/org.eclipse.papyrus.cdo.uml.diagram.ui/src/org/eclipse/papyrus/cdo/uml/diagram/internal/ui/wizards/NewModelPage.java @@ -50,8 +50,7 @@ import com.google.common.eventbus.Subscribe; /** * This is the NewModelPage type. Enjoy. */ -public class NewModelPage - extends WizardPage { +public class NewModelPage extends WizardPage { public static final String PAGE_ID = "NewCDOModel"; //$NON-NLS-1$ @@ -67,19 +66,16 @@ public class NewModelPage private boolean synchronizingFolderSelection; - public NewModelPage(IStructuredSelection selection, EventBus bus, - String modelKindName) { + public NewModelPage(IStructuredSelection selection, EventBus bus, String modelKindName) { super(PAGE_ID); setTitle(NLS.bind("New {0} Model", modelKindName)); setDescription(NLS.bind("Create a new {0} model", modelKindName)); - if (!selection.isEmpty()) { - selectedNode = adapt(selection.getFirstElement(), - CDOResourceNode.class); - if ((selectedNode != null) - && !(selectedNode instanceof CDOResourceFolder)) { + if(!selection.isEmpty()) { + selectedNode = adapt(selection.getFirstElement(), CDOResourceNode.class); + if((selectedNode != null) && !(selectedNode instanceof CDOResourceFolder)) { selectedNode = selectedNode.getFolder(); } } @@ -97,26 +93,19 @@ public class NewModelPage GridDataFactory.swtDefaults().span(2, 1).applyTo(label); folderText = new Text(myComposite, SWT.BORDER); - GridDataFactory.fillDefaults().grab(true, false).span(2, 1) - .applyTo(folderText); + GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(folderText); updateFolderSelection(); - foldersTree = new TreeViewer(myComposite, SWT.BORDER | SWT.V_SCROLL - | SWT.H_SCROLL); - GridDataFactory.fillDefaults().grab(true, true).span(2, 1) - .applyTo(foldersTree.getControl()); - ModelRepositoryItemProvider itemProvider = new ModelRepositoryItemProvider( - null); + foldersTree = new TreeViewer(myComposite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); + GridDataFactory.fillDefaults().grab(true, true).span(2, 1).applyTo(foldersTree.getControl()); + ModelRepositoryItemProvider itemProvider = new ModelRepositoryItemProvider(null); foldersTree.setContentProvider(itemProvider); - foldersTree - .setLabelProvider(new DecoratingLabelProvider(itemProvider, - PlatformUI.getWorkbench().getDecoratorManager() - .getLabelDecorator())); + foldersTree.setLabelProvider(new DecoratingLabelProvider(itemProvider, PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator())); foldersTree.setSorter(itemProvider); - if (getRepository() != null) { + if(getRepository() != null) { foldersTree.setInput(getRepository()); } - if (selectedNode != null) { + if(selectedNode != null) { foldersTree.setSelection(new StructuredSelection(selectedNode)); } @@ -136,20 +125,15 @@ public class NewModelPage } }); - foldersTree - .addSelectionChangedListener(new ISelectionChangedListener() { - - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection selection = (IStructuredSelection) event - .getSelection(); - selectedNode = selection.isEmpty() - ? null - : adapt(selection.getFirstElement(), - CDOResourceNode.class); - updateFolderSelection(); - validatePage(); - } - }); + foldersTree.addSelectionChangedListener(new ISelectionChangedListener() { + + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection selection = (IStructuredSelection)event.getSelection(); + selectedNode = selection.isEmpty() ? null : adapt(selection.getFirstElement(), CDOResourceNode.class); + updateFolderSelection(); + validatePage(); + } + }); nameText.addModifyListener(new ModifyListener() { @@ -165,7 +149,7 @@ public class NewModelPage public void setRepository(IPapyrusRepository repository) { this.repository = repository; - if (foldersTree != null) { + if(foldersTree != null) { foldersTree.setInput(repository); } @@ -173,14 +157,12 @@ public class NewModelPage } private IInternalPapyrusRepository getRepository() { - return ((IInternalPapyrusRepository) repository); + return ((IInternalPapyrusRepository)repository); } CDOView getView() { IInternalPapyrusRepository repo = getRepository(); - return (repo == null) - ? null - : repo.getMasterView(); + return (repo == null) ? null : repo.getMasterView(); } String getSelectedFolderPath() { @@ -192,15 +174,15 @@ public class NewModelPage public void run() { CDOResourceFolder selected = null; - if (selectedNode instanceof CDOResourceFolder) { - selected = (CDOResourceFolder) selectedNode; - } else if (selectedNode != null) { + if(selectedNode instanceof CDOResourceFolder) { + selected = (CDOResourceFolder)selectedNode; + } else if(selectedNode != null) { // will be null if the selectedNode is contained by the root // resource selected = selectedNode.getFolder(); } - if (selected == null) { + if(selected == null) { folderText.setText(""); } else { folderText.setText(selected.getPath()); @@ -215,12 +197,15 @@ public class NewModelPage public void run() { String folder = folderText.getText().trim(); CDOView view = getView(); - if (view != null) { - try { - foldersTree.setSelection(new StructuredSelection(view - .getResourceNode(folder))); - } catch (Exception e) { - // normal occurrence when the folder doesn't exist + if(view != null) { + if(folder.equals("")) { + foldersTree.setSelection(StructuredSelection.EMPTY); + } else { + try { + foldersTree.setSelection(new StructuredSelection(view.getResourceNode(folder))); + } catch (Exception e) { + // normal occurrence when the folder doesn't exist + } } } } @@ -228,7 +213,7 @@ public class NewModelPage } private void whileSynchronizingFolderSelection(Runnable runnable) { - if (!synchronizingFolderSelection) { + if(!synchronizingFolderSelection) { synchronizingFolderSelection = true; try { @@ -243,9 +228,9 @@ public class NewModelPage String result = String.format("%s.%s", baseName, extension); CDOView view = getView(); - if (view != null) { - for (int i = 1;; i++) { - if (!view.hasResource(getNewResourcePath(result))) { + if(view != null) { + for(int i = 1;; i++) { + if(!view.hasResource(getNewResourcePath(result))) { break; } else { // use %s instead of %d to avoid any thousands separators @@ -262,17 +247,17 @@ public class NewModelPage String result = null; String path = getSelectedFolderPath(); - if (path.equals("")) { + if(path.equals("")) { // it's a resource in the root result = "/" + name; } else { StringBuilder buf = new StringBuilder(); - if (!path.startsWith("/")) { + if(!path.startsWith("/")) { buf.append("/"); } buf.append(path); - if (!path.endsWith("/")) { + if(!path.endsWith("/")) { buf.append("/"); } buf.append(name); @@ -284,9 +269,7 @@ public class NewModelPage } String getNewResourceName() { - return (nameText == null) - ? null - : nameText.getText().trim(); + return (nameText == null) ? null : nameText.getText().trim(); } void setNewResourceName(String newName) { @@ -294,20 +277,19 @@ public class NewModelPage } public URI createNewModelResourceURI() { - return CDOURIUtil.createResourceURI(getView(), - getNewResourcePath(getNewResourceName())); + return CDOURIUtil.createResourceURI(getView(), getNewResourcePath(getNewResourceName())); } private String getExtension() { String result = null; String name = getNewResourceName(); - if (name != null) { + if(name != null) { // the proper extension is whatever follows the *last* '.', // but for our purposes we need e.g. "profile.uml" to be // an extension int dot = name.indexOf('.'); - if (dot >= 0) { + if(dot >= 0) { result = name.substring(dot + 1); } } @@ -319,36 +301,31 @@ public class NewModelPage * Diagram extension changed. * * @param newExtension - * the new extension + * the new extension * @return result of validation of the new extension */ public IStatus diagramExtensionChanged(String newExtension) { String currentExtension = getExtension(); - if (!newExtension.equals(currentExtension)) { + if(!newExtension.equals(currentExtension)) { String oldFileName = getNewResourceName(); String base = oldFileName; - if (currentExtension != null) { + if(currentExtension != null) { // take one off for the '.' - base = base.substring(0, - base.length() - currentExtension.length() - 1); + base = base.substring(0, base.length() - currentExtension.length() - 1); } String newFileName = suggestName(base, newExtension); setNewResourceName(newFileName); String message1 = Messages.NewModelFilePage_new_diagram_category_needs_specific_extension; - String message2 = Messages.bind( - Messages.NewModelFilePage_diagram_file_was_renamed, - oldFileName, newFileName); + String message2 = Messages.bind(Messages.NewModelFilePage_diagram_file_was_renamed, oldFileName, newFileName); String message = message1 + message2; - Status resultStatus = new Status(Status.INFO, Activator.PLUGIN_ID, - message); + Status resultStatus = new Status(Status.INFO, Activator.PLUGIN_ID, message); String errorMessage = getErrorMessage(); - if (errorMessage != null) { - resultStatus = new Status(Status.ERROR, Activator.PLUGIN_ID, - errorMessage); + if(errorMessage != null) { + resultStatus = new Status(Status.ERROR, Activator.PLUGIN_ID, errorMessage); } return resultStatus; } @@ -360,27 +337,23 @@ public class NewModelPage setPageComplete(true); String name = getNewResourceName(); - if (getView() == null) { + if(getView() == null) { setMessage("No repository is selected.", ERROR); setPageComplete(false); - } else if (Strings.isNullOrEmpty(name)) { + } else if(Strings.isNullOrEmpty(name)) { setMessage("The new model resource name is required.", ERROR); setPageComplete(false); } else { String path = getNewResourcePath(name); - if (getView().hasResource(path)) { - setMessage( - NLS.bind("The resource \"{0}\" already exists.", path), - ERROR); + if(getView().hasResource(path)) { + setMessage(NLS.bind("The resource \"{0}\" already exists.", path), ERROR); setPageComplete(false); } else { // check existence of folder (if any) String folderPath = getSelectedFolderPath(); - if (!Strings.isNullOrEmpty(folderPath)) { - if (!getView().hasResource(folderPath)) { - setMessage( - "The specified folder does not exist and will be created.", - WARNING); + if(!Strings.isNullOrEmpty(folderPath)) { + if(!getView().hasResource(folderPath)) { + setMessage("The specified folder does not exist and will be created.", WARNING); } } } |