Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian W. Damus2017-05-19 20:07:51 +0000
committerChristian W. Damus2017-05-25 14:00:31 +0000
commit00b6634c3ec670b97affb24ee0f3c74e4983fe29 (patch)
treeb741f7141732549c1562c58bd06083386bc02b07
parent5e27407592bdef76137197ca5d5e72115e9ede8f (diff)
downloadorg.eclipse.papyrus-00b6634c3ec670b97affb24ee0f3c74e4983fe29.tar.gz
org.eclipse.papyrus-00b6634c3ec670b97affb24ee0f3c74e4983fe29.tar.xz
org.eclipse.papyrus-00b6634c3ec670b97affb24ee0f3c74e4983fe29.zip
Bug 471453: [Wizard] the name of the model should be initialized based on the project or the container
Let the model root package name default to the base name of the new model resource, and the base name of the new model resource in turn default to the name of the container in which it is being created. https://bugs.eclipse.org/bugs/show_bug.cgi?id=471453 Change-Id: I0a456f18d823a84b1aa93fea620ca49a137d129c
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/META-INF/MANIFEST.MF2
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/messages/Messages.java78
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/messages/messages.properties7
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/INewPapyrusModelPage.java30
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/NewModelFilePage.java45
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/NewModelWizardData.java49
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/PapyrusProjectCreationPage.java50
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/SelectRepresentationKindPage.java65
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/wizards/CreateModelWizard.java55
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/wizards/InitModelWizard.java25
10 files changed, 324 insertions, 82 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/META-INF/MANIFEST.MF b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/META-INF/MANIFEST.MF
index d409c0db0f6..8f152834a4c 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/META-INF/MANIFEST.MF
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/META-INF/MANIFEST.MF
@@ -28,4 +28,4 @@ Bundle-Localization: plugin
Bundle-Activator: org.eclipse.papyrus.uml.diagram.wizards.Activator
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.papyrus.uml.diagram.wizards;singleton:=true
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
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 ac035ea25e6..95452641963 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
@@ -104,20 +104,32 @@ public class Messages extends NLS {
public static String NewModelFilePage_set_a_container;
- /** The Select diagram category page_cannot_find_category.
- * @since 3.0*/
+ /**
+ * The Select diagram category page_cannot_find_category.
+ *
+ * @since 3.0
+ */
public static String SelectArchitectureContextPage_cannot_find_category;
- /** The Select diagram category page_diagram_language_group.
- * @since 3.0*/
+ /**
+ * The Select diagram category page_diagram_language_group.
+ *
+ * @since 3.0
+ */
public static String SelectArchitectureContextPage_diagram_language_group;
- /** The Select diagram category page_select_language.
- * @since 3.0*/
+ /**
+ * The Select diagram category page_select_language.
+ *
+ * @since 3.0
+ */
public static String SelectArchitectureContextPage_select_language;
- /** The Select diagram category page_select_one_category.
- * @since 3.0*/
+ /**
+ * The Select diagram category page_select_one_category.
+ *
+ * @since 3.0
+ */
public static String SelectArchitectureContextPage_select_one_category;
/**
@@ -125,32 +137,46 @@ public class Messages extends NLS {
*/
public static String SelectRepresentationKindPage_0;
- /** The Select diagram kind page_default_diagram_name.
- * @since 3.0*/
- public static String SelectRepresentationKindPage_default_diagram_name;
-
- /** The Select diagram kind page_diagram_name_group.
- * @since 3.0*/
+ /**
+ * The Select diagram kind page_diagram_name_group.
+ *
+ * @since 3.0
+ */
public static String SelectRepresentationKindPage_diagram_name_group;
- /** The Select diagram kind page_diagram_name_is_empty.
- * @since 3.0*/
+ /**
+ * The Select diagram kind page_diagram_name_is_empty.
+ *
+ * @since 3.0
+ */
public static String SelectRepresentationKindPage_diagram_name_is_empty;
- /** The Select diagram kind page_load_template_group.
- * @since 3.0*/
+ /**
+ * The Select diagram kind page_load_template_group.
+ *
+ * @since 3.0
+ */
public static String SelectRepresentationKindPage_load_template_group;
- /** The Select diagram kind page_page_desc.
- * @since 3.0*/
+ /**
+ * The Select diagram kind page_page_desc.
+ *
+ * @since 3.0
+ */
public static String SelectRepresentationKindPage_page_desc;
- /** The Select diagram kind page_page_title.
- * @since 3.0*/
+ /**
+ * The Select diagram kind page_page_title.
+ *
+ * @since 3.0
+ */
public static String SelectRepresentationKindPage_page_title;
- /** The Select diagram kind page_remember_current_selection_text.
- * @since 3.0*/
+ /**
+ * The Select diagram kind page_remember_current_selection_text.
+ *
+ * @since 3.0
+ */
public static String SelectRepresentationKindPage_remember_current_selection_text;
/** The Select diagram kind page_remember_current_selection_tooltip. */
@@ -164,7 +190,7 @@ public class Messages extends NLS {
* @since 3.0
*/
public static String SelectRepresentationKindPage_select_kind_group;
-
+
/**
* @since 3.0
*/
@@ -247,8 +273,6 @@ public class Messages extends NLS {
public static String PapyrusProjectCreationPage_0;
- public static String PapyrusProjectCreationPage_1;
-
public static String PapyrusProjectCreationPage_3;
static {
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 6b98d0f0153..f835b2faf50 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
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2010, 2013 CEA LIST.
+# Copyright (c) 2010, 2017 CEA LIST, Christian W. Damus, and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
@@ -9,6 +9,7 @@
# Contributors:
# CEA LIST - Initial API and implementation
# Christian W. Damus (CEA) - Support creating models in repositories (CDO)
+# Christian W. Damus - bug 471453
#
##############################################################################
CreateModelWizard_new_papyrus_model_title=New Papyrus Model
@@ -53,7 +54,6 @@ SelectArchitectureContextPage_select_one_category=Please select at least one con
SelectRepresentationKindPage_0=Choose a profile to apply
-SelectRepresentationKindPage_default_diagram_name=RootElement
SelectRepresentationKindPage_diagram_name_group=Root model element name:
SelectRepresentationKindPage_diagram_name_is_empty=The representation name should not be empty.
SelectRepresentationKindPage_load_template_group=You can load a template:
@@ -91,5 +91,4 @@ ModelCopyWizard_DoNotChangeFileName=Do not change file name (will be ignored)
ModelCopyWizard_SelectParentFolder=Select parent folder for example "%s"
PapyrusProjectCreationPage_0=Model file name:
-PapyrusProjectCreationPage_1=model
-PapyrusProjectCreationPage_3=Set model file name \ No newline at end of file
+PapyrusProjectCreationPage_3=Set model file name
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/INewPapyrusModelPage.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/INewPapyrusModelPage.java
new file mode 100644
index 00000000000..8d227702efc
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/INewPapyrusModelPage.java
@@ -0,0 +1,30 @@
+/*****************************************************************************
+ * Copyright (c) 2017 Christian W. Damus and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.wizards.pages;
+
+import org.eclipse.jface.wizard.IWizardPage;
+
+/**
+ * Common protocol for wizard pages in the <em>New Model Wizard</em>
+ * via which they can share a common data model.
+ *
+ * @since 3.0
+ */
+public interface INewPapyrusModelPage extends IWizardPage {
+
+ NewModelWizardData getNewModelWizardData();
+
+ void setNewModelWizardData(NewModelWizardData wizardData);
+
+}
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 ff2bff0e42a..70d21024c07 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
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2013 Obeo.
+ * Copyright (c) 2008, 2017 Obeo, Christian W. Damus, and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -9,6 +9,7 @@
* Obeo - initial API and implementation
* Tatiana Fesenko(CEA) - initial API and implementation
* Christian W. Damus (CEA) - Support creating models in repositories (CDO)
+ * Christian W. Damus - bug 471453
*
*******************************************************************************/
package org.eclipse.papyrus.uml.diagram.wizards.pages;
@@ -42,7 +43,7 @@ import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
*
* @author <a href="mailto:jerome.benois@obeo.fr">Jerome Benois</a>
*/
-public class NewModelFilePage extends WizardNewFileCreationPage {
+public class NewModelFilePage extends WizardNewFileCreationPage implements INewPapyrusModelPage {
/** The Constant DEFAULT_NAME. */
public static final String DEFAULT_NAME = Messages.NewModelFilePage_default_diagram_name;
@@ -53,6 +54,8 @@ public class NewModelFilePage extends WizardNewFileCreationPage {
/** The Constant PAGE_ID. */
public static final String PAGE_ID = "NewPapyrusModel"; //$NON-NLS-1$
+ private NewModelWizardData wizardData;
+
/**
* Instantiates a new new model file page.
*
@@ -102,6 +105,22 @@ public class NewModelFilePage extends WizardNewFileCreationPage {
}
/**
+ * @since 3.0
+ */
+ @Override
+ public void setNewModelWizardData(NewModelWizardData wizardData) {
+ this.wizardData = wizardData;
+ }
+
+ /**
+ * @since 3.0
+ */
+ @Override
+ public NewModelWizardData getNewModelWizardData() {
+ return wizardData;
+ }
+
+ /**
* Diagram extension changed.
*
* @param newExtension
@@ -157,9 +176,18 @@ public class NewModelFilePage extends WizardNewFileCreationPage {
}
if (containerFullPath == null) {
- containerFullPath = new Path(""); //$NON-NLS-1$
+ containerFullPath = Path.EMPTY;
}
- if (fileName == null || fileName.trim().length() == 0) {
+
+ // First, try the same name as the container for a reasonable default
+ if ((fileName == null) || fileName.trim().isEmpty()) {
+ IPath testPath = containerFullPath.isEmpty() ? null : containerFullPath.append(containerFullPath.lastSegment()).addFileExtension(extension);
+ if (!ResourcesPlugin.getWorkspace().getRoot().exists(testPath)) {
+ fileName = testPath.removeFileExtension().lastSegment();
+ }
+ }
+
+ if ((fileName == null) || fileName.trim().isEmpty()) {
fileName = DEFAULT_NAME;
}
@@ -194,6 +222,15 @@ public class NewModelFilePage extends WizardNewFileCreationPage {
}
@Override
+ protected boolean validatePage() {
+ if (wizardData != null) {
+ wizardData.setModelFileName(getFileName());
+ }
+
+ return super.validatePage();
+ }
+
+ @Override
protected void createLinkTarget() {
// Disable this method to avoid NPE (Because we override #createAdvancedControls)
}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/NewModelWizardData.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/NewModelWizardData.java
new file mode 100644
index 00000000000..19294a02d47
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/NewModelWizardData.java
@@ -0,0 +1,49 @@
+/*****************************************************************************
+ * Copyright (c) 2017 Christian W. Damus and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.uml.diagram.wizards.pages;
+
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.core.databinding.observable.value.WritableValue;
+import org.eclipse.papyrus.uml.diagram.wizards.messages.Messages;
+
+/**
+ * A simple data model for the wizard pages to share data.
+ *
+ * @since 3.0
+ */
+public class NewModelWizardData {
+
+ private final IObservableValue<String> defaultModelName = new WritableValue<>(
+ Messages.NewModelFilePage_default_diagram_name,
+ String.class);
+
+ public NewModelWizardData() {
+ super();
+ }
+
+ public IObservableValue<String> getDefaultModelName() {
+ return defaultModelName;
+ }
+
+ void setModelFileName(String fileName) {
+ if (fileName != null) {
+ int dot = fileName.indexOf('.');
+ if (dot >= 0) {
+ fileName = fileName.substring(0, dot);
+ }
+ }
+
+ defaultModelName.setValue(fileName);
+ }
+}
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 eecd4dc1ba3..e3cf4c0a78f 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
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2014 CEA LIST.
+ * Copyright (c) 2014, 2017 CEA LIST, Christian W. Damus, and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
@@ -8,10 +8,13 @@
*
* Contributors:
* Thibault Le Ouay (Sherpa Engineering) t.leouay@sherpa-eng.com - Initial API and implementation
+ * Christian W. Damus - bug 471453
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.wizards.pages;
+import java.util.Objects;
+
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.papyrus.uml.diagram.wizards.messages.Messages;
@@ -27,26 +30,35 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
-public class PapyrusProjectCreationPage extends WizardNewProjectCreationPage {
+public class PapyrusProjectCreationPage extends WizardNewProjectCreationPage implements INewPapyrusModelPage {
private Text fileName;
+ private boolean fileNameEdited;
+
private Listener fileNameModifyListener = new Listener() {
@Override
public void handleEvent(Event e) {
+ if (!Objects.equals(fileName.getText(), getProjectName())) {
+ fileNameEdited = true;
+ }
+
+ if (wizardData != null) {
+ wizardData.setModelFileName(fileName.getText());
+ }
+
boolean valid = canFlipToNextPage();
setPageComplete(valid);
-
}
};
+ private NewModelWizardData wizardData;
+
public PapyrusProjectCreationPage(String pageName) {
super(pageName);
}
-
-
@Override
public void createControl(Composite parent) {
super.createControl(parent);
@@ -58,7 +70,6 @@ public class PapyrusProjectCreationPage extends WizardNewProjectCreationPage {
Group group = createGroup(composite, Messages.PapyrusProjectCreationPage_0);
fileName = new Text(group, SWT.BORDER);
fileName.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- fileName.setText(Messages.PapyrusProjectCreationPage_1);
fileName.addListener(SWT.Modify, fileNameModifyListener);
setPageComplete(false);
}
@@ -84,13 +95,36 @@ public class PapyrusProjectCreationPage extends WizardNewProjectCreationPage {
return group;
}
+ /**
+ * @since 3.0
+ */
+ @Override
+ public void setNewModelWizardData(NewModelWizardData wizardData) {
+ this.wizardData = wizardData;
+ }
+
+ /**
+ * @since 3.0
+ */
+ @Override
+ public NewModelWizardData getNewModelWizardData() {
+ return wizardData;
+ }
+
@Override
protected boolean validatePage() {
- if (fileName != null) {
- if (fileName.getText().equals("")) { //$NON-NLS-1$
+ String projectName = getProjectName();
+
+ if ((fileName != null) && fileNameEdited) {
+ if (fileName.getText().trim().isEmpty()) {
this.setErrorMessage(Messages.PapyrusProjectCreationPage_3);
return false;
}
+ } else if ((fileName != null) && (projectName != null)
+ && !Objects.equals(fileName.getText(), projectName)) {
+
+ // Default file name is the project name
+ fileName.setText(getProjectName());
}
return super.validatePage();
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/SelectRepresentationKindPage.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/SelectRepresentationKindPage.java
index 6d56ba1bca9..84cede1e4a6 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/SelectRepresentationKindPage.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/SelectRepresentationKindPage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008 Obeo.
+ * Copyright (c) 2008, 2017 Obeo, Christian W. Damus, and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -9,14 +9,18 @@
* Obeo - initial API and implementation
* Tatiana Fesenko(CEA) - improved look&feel
* Saadia Dhouib (CEA LIST) - Implementation of loading diagrams from template files (.uml, .di , .notation)
+ * Christian W. Damus - bug 471453
*******************************************************************************/
package org.eclipse.papyrus.uml.diagram.wizards.pages;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
+import java.util.Objects;
import java.util.Set;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.core.databinding.observable.value.IValueChangeListener;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IStatus;
@@ -31,10 +35,10 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.papyrus.commands.CreationCommandRegistry;
import org.eclipse.papyrus.commands.ICreationCommandRegistry;
+import org.eclipse.papyrus.infra.architecture.ArchitectureDomainManager;
import org.eclipse.papyrus.infra.core.architecture.RepresentationKind;
import org.eclipse.papyrus.infra.core.architecture.merged.MergedArchitectureContext;
import org.eclipse.papyrus.infra.core.architecture.merged.MergedArchitectureViewpoint;
-import org.eclipse.papyrus.infra.architecture.ArchitectureDomainManager;
import org.eclipse.papyrus.uml.diagram.wizards.Activator;
import org.eclipse.papyrus.uml.diagram.wizards.kind.DiagramKindLabelProvider;
import org.eclipse.papyrus.uml.diagram.wizards.kind.RepresentationKindComposite;
@@ -68,6 +72,7 @@ public class SelectRepresentationKindPage extends WizardPage {
/** The diagram name text field. */
private Text nameText;
+ private boolean nameTextModified;
/** The select template composite. */
private SelectModelTemplateComposite selectTemplateComposite;
@@ -86,6 +91,9 @@ public class SelectRepresentationKindPage extends WizardPage {
/** The my creation command registry. */
private final ICreationCommandRegistry myCreationCommandRegistry;
+ private NewModelWizardData wizardData;
+ private IValueChangeListener<String> defaultModelNameListener;
+
private static EObject modelRoot;
/** The Constant DEFAULT_CREATION_COMMAND_REGISTRY. */
@@ -146,7 +154,7 @@ public class SelectRepresentationKindPage extends WizardPage {
modelTemplateComposite.setLayout(new GridLayout());
modelTemplateComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
createModelTemplateComposite(modelTemplateComposite);
-
+
fillInTables(getContexts(), getViewpoints());
Composite profileChooserComposite = new Composite(pageComposite, SWT.NONE);
@@ -287,7 +295,7 @@ public class SelectRepresentationKindPage extends WizardPage {
return myContextProvider.getCurrentViewpoints();
}
-
+
/**
* Gets the diagram name.
*
@@ -323,7 +331,7 @@ public class SelectRepresentationKindPage extends WizardPage {
for (MergedArchitectureViewpoint viewpoint : context.getViewpoints())
allowedKinds.addAll(viewpoint.getRepresentationKinds());
List<RepresentationKind> selectedKinds = new ArrayList<RepresentationKind>();
- for (RepresentationKind kind : getSelectedRepresentationKinds()) {
+ for (RepresentationKind kind : getSelectedRepresentationKinds()) {
if (allowedKinds.contains(kind))
selectedKinds.add(kind);
}
@@ -393,7 +401,7 @@ public class SelectRepresentationKindPage extends WizardPage {
Group group = createGroup(composite, Messages.SelectRepresentationKindPage_diagram_name_group);
nameText = new Text(group, SWT.BORDER);
nameText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- nameText.setText(Messages.SelectRepresentationKindPage_default_diagram_name);
+ nameText.setText(getDefaultModelName().getValue());
ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
if (selection instanceof IStructuredSelection && ((IStructuredSelection) selection).size() > 0) {
@@ -444,6 +452,10 @@ public class SelectRepresentationKindPage extends WizardPage {
* @return true, if successful
*/
private boolean validatePage() {
+ if (!Objects.equals(nameText.getText(), getDefaultModelName().getValue())) {
+ nameTextModified = true;
+ }
+
IStatus profileStatus = profileChooserComposite.getProfileDefinitionStatus();
if (!profileStatus.isOK()) {
this.setErrorMessage(profileStatus.getMessage());
@@ -518,4 +530,45 @@ public class SelectRepresentationKindPage extends WizardPage {
}
+ public void setNewModelWizardData(NewModelWizardData wizardData) {
+ if (this.wizardData == wizardData) {
+ return;
+ }
+
+ if ((getDefaultModelName() != null) && (defaultModelNameListener != null)) {
+ getDefaultModelName().removeValueChangeListener(defaultModelNameListener);
+ }
+
+ this.wizardData = wizardData;
+
+ if (getDefaultModelName() != null) {
+ getDefaultModelName().addValueChangeListener(getDefaultModelNameListener());
+ updateDefaultModelName();
+ }
+ }
+
+ protected IObservableValue<String> getDefaultModelName() {
+ return (wizardData == null) ? null : wizardData.getDefaultModelName();
+ }
+
+ private IValueChangeListener<String> getDefaultModelNameListener() {
+ if (defaultModelNameListener == null) {
+ defaultModelNameListener = event -> updateDefaultModelName(event.diff.getNewValue());
+ }
+
+ return defaultModelNameListener;
+ }
+
+ protected void updateDefaultModelName(String newName) {
+ if ((nameText != null) && !nameTextModified) {
+ nameText.setText(newName);
+ nameText.selectAll();
+ }
+ }
+
+ private void updateDefaultModelName() {
+ if (getDefaultModelName() != null) {
+ updateDefaultModelName(getDefaultModelName().getValue());
+ }
+ }
}
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 15981bc0602..4c72f887dde 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
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2016 Obeo, CEA LIST, Christian W. Damus, and others.
+ * Copyright (c) 2008, 2017 Obeo, CEA LIST, Christian W. Damus, and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -11,7 +11,7 @@
* Saadia Dhouib (CEA LIST) - Implementation of loading diagrams from template files (.uml, .di , .notation)
* Christian W. Damus (CEA) - create models by URI, not IFile (CDO)
* Christian W. Damus (CEA) - Support creating models in repositories (CDO)
- * Christian W. Damus - bug 490936
+ * Christian W. Damus - bugs 490936, 471453
*
*******************************************************************************/
package org.eclipse.papyrus.uml.diagram.wizards.wizards;
@@ -64,8 +64,9 @@ import org.eclipse.papyrus.uml.diagram.wizards.Activator;
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.INewPapyrusModelPage;
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.NewModelWizardData;
import org.eclipse.papyrus.uml.diagram.wizards.pages.SelectArchitectureContextPage;
import org.eclipse.papyrus.uml.diagram.wizards.pages.SelectRepresentationKindPage;
import org.eclipse.papyrus.uml.diagram.wizards.pages.SelectRepresentationKindPage.ContextProvider;
@@ -139,6 +140,8 @@ public class CreateModelWizard extends Wizard implements INewWizard {
protected IWizardPage newProjectPage;
+ private final NewModelWizardData wizardData = new NewModelWizardData();
+
protected static final String EXTENSION_POINT_ID = "org.eclipse.papyrus.uml.diagram.wizards.templates"; //$NON-NLS-1$
/**
@@ -188,6 +191,11 @@ public class CreateModelWizard extends Wizard implements INewWizard {
endProviderPageIndex = getPageCount();
addPageIfNotNull(selectRepresentationKindPage);
+
+ INewPapyrusModelPage newModelPage = getNewModelPage();
+ if (newModelPage != null) {
+ newModelPage.setNewModelWizardData(wizardData);
+ }
}
protected void setNewProjectPage(IWizardPage page) {
@@ -487,7 +495,17 @@ public class CreateModelWizard extends Wizard implements INewWizard {
* @since 3.0
*/
protected SelectRepresentationKindPage createSelectRepresentationKindPage() {
- return new SelectRepresentationKindPage(new ContextProvider() {
+ SelectRepresentationKindPage result = doCreateSelectRepresentationKindPage();
+ result.setNewModelWizardData(wizardData);
+ return result;
+ }
+
+ protected SelectRepresentationKindPage doCreateSelectRepresentationKindPage() {
+ return new SelectRepresentationKindPage(createContextProvider());
+ }
+
+ protected ContextProvider createContextProvider() {
+ return new ContextProvider() {
@Override
public String[] getCurrentContexts() {
@@ -499,7 +517,7 @@ public class CreateModelWizard extends Wizard implements INewWizard {
return getSelectedViewpoints();
}
- });
+ };
}
/**
@@ -984,19 +1002,30 @@ public class CreateModelWizard extends Wizard implements INewWizard {
result = allPages[i].isPageComplete();
}
- // This takes care of the case problems when creating a model with the same name but different case
- for (IWizardPage page : allPages) {
- if (page instanceof NewModelFilePage) {
- return page.canFlipToNextPage();
- }
- if (page instanceof PapyrusProjectCreationPage) {
- return page.canFlipToNextPage();
+ if (result) {
+ // This takes care of the case problems when creating a model with the same name but different case
+ IWizardPage page = getNewModelPage();
+ if (page != null) {
+ result = page.canFlipToNextPage();
}
}
return result;
}
+ private INewPapyrusModelPage getNewModelPage() {
+ return getPage(INewPapyrusModelPage.class);
+ }
+
+ protected <P extends IWizardPage> P getPage(Class<P> type) {
+ for (IWizardPage next : getPages()) {
+ if (type.isInstance(next)) {
+ return type.cast(next);
+ }
+ }
+ return null;
+ }
+
/**
* Queries the user-presentable (translatable) name of the kind of model
* that I create. For example, "Papyrus UML" or "Papyrus SysML".
@@ -1016,6 +1045,4 @@ public class CreateModelWizard extends Wizard implements INewWizard {
// this.getClass().getName().equals(anObject)
return true;
}
-
-
}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/wizards/InitModelWizard.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/wizards/InitModelWizard.java
index a0714753b16..c37f9f6c86c 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/wizards/InitModelWizard.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/wizards/InitModelWizard.java
@@ -1,5 +1,5 @@
/*****************************************************************************
- * Copyright (c) 2010, 2013 CEA LIST.
+ * Copyright (c) 2010, 2017 CEA LIST, Christian W. Damus, and others.
*
*
* All rights reserved. This program and the accompanying materials
@@ -10,6 +10,7 @@
* Contributors:
* Tatiana Fesenko (CEA LIST) - Initial API and implementation
* Christian W. Damus (CEA) - Support creating models in repositories (CDO)
+ * Christian W. Damus - bug 471453
*
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.wizards.wizards;
@@ -26,7 +27,6 @@ import org.eclipse.papyrus.uml.diagram.wizards.command.PapyrusModelFromExistingD
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.SelectRepresentationKindPage;
-import org.eclipse.papyrus.uml.diagram.wizards.pages.SelectRepresentationKindPage.ContextProvider;
import org.eclipse.papyrus.uml.diagram.wizards.pages.SelectRootElementPage;
import org.eclipse.papyrus.uml.tools.model.UmlModel;
import org.eclipse.ui.IWorkbench;
@@ -91,24 +91,13 @@ public class InitModelWizard extends CreateModelWizard {
* @return the select diagram kind page {@inheritDoc}
*/
@Override
- protected SelectRepresentationKindPage createSelectRepresentationKindPage() {
+ protected SelectRepresentationKindPage doCreateSelectRepresentationKindPage() {
if (isCreateFromExistingDomainModel()) {
- return new SelectRepresentationKindPage(false, new ContextProvider() {
-
- @Override
- public String[] getCurrentContexts() {
- return getSelectedContexts();
- }
-
- @Override
- public String[] getCurrentViewpoints() {
- return getSelectedViewpoints();
- }
-
- }, SelectRepresentationKindPage.DEFAULT_CREATION_COMMAND_REGISTRY);
+ return new SelectRepresentationKindPage(false, createContextProvider(),
+ SelectRepresentationKindPage.DEFAULT_CREATION_COMMAND_REGISTRY);
}
- ;
- return super.createSelectRepresentationKindPage();
+
+ return super.doCreateSelectRepresentationKindPage();
}
/**

Back to the top