fixed flaw with un-encoded diagram URIs and Shortcuts
diff --git a/plugins/org.eclipse.uml2.diagram.activity/src/org/eclipse/uml2/diagram/activity/part/UMLCreationWizard.java b/plugins/org.eclipse.uml2.diagram.activity/src/org/eclipse/uml2/diagram/activity/part/UMLCreationWizard.java
index c3e3d8d..9ad4ed0 100644
--- a/plugins/org.eclipse.uml2.diagram.activity/src/org/eclipse/uml2/diagram/activity/part/UMLCreationWizard.java
+++ b/plugins/org.eclipse.uml2.diagram.activity/src/org/eclipse/uml2/diagram/activity/part/UMLCreationWizard.java
@@ -124,7 +124,9 @@
 		IRunnableWithProgress op = new WorkspaceModifyOperation(null) {
 
 			protected void execute(IProgressMonitor monitor) throws CoreException, InterruptedException {
-				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getURI(), domainModelFilePage.getURI(), monitor);
+				final String diagramName = diagramModelFilePage.getURI().lastSegment();
+				final String diagramNameWithoutExtension = diagramModelFilePage.getURI().trimFileExtension().lastSegment();
+				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getEncodedURI(), domainModelFilePage.getEncodedURI(), monitor);
 				if (isOpenNewlyCreatedDiagramEditor() && diagram != null) {
 					try {
 						UMLDiagramEditorUtil.openDiagram(diagram);
diff --git a/plugins/org.eclipse.uml2.diagram.activity/src/org/eclipse/uml2/diagram/activity/part/UMLCreationWizardPage.java b/plugins/org.eclipse.uml2.diagram.activity/src/org/eclipse/uml2/diagram/activity/part/UMLCreationWizardPage.java
index 4e172ab..7485231 100644
--- a/plugins/org.eclipse.uml2.diagram.activity/src/org/eclipse/uml2/diagram/activity/part/UMLCreationWizardPage.java
+++ b/plugins/org.eclipse.uml2.diagram.activity/src/org/eclipse/uml2/diagram/activity/part/UMLCreationWizardPage.java
@@ -120,4 +120,11 @@
 		fileName += nextWizardPage.getExtension();
 		nextWizardPage.setFileName(fileName);
 	}
+
+	/**
+	* @generated
+	*/
+	public URI getEncodedURI() {
+		return URI.createPlatformResourceURI(getFilePath().toString(), true);
+	}
 }
diff --git a/plugins/org.eclipse.uml2.diagram.clazz/src/org/eclipse/uml2/diagram/clazz/part/UMLCreationWizard.java b/plugins/org.eclipse.uml2.diagram.clazz/src/org/eclipse/uml2/diagram/clazz/part/UMLCreationWizard.java
index f8b29d8..15e3cff 100644
--- a/plugins/org.eclipse.uml2.diagram.clazz/src/org/eclipse/uml2/diagram/clazz/part/UMLCreationWizard.java
+++ b/plugins/org.eclipse.uml2.diagram.clazz/src/org/eclipse/uml2/diagram/clazz/part/UMLCreationWizard.java
@@ -129,8 +129,10 @@
 		IRunnableWithProgress op = new WorkspaceModifyOperation(null) {
 
 			protected void execute(IProgressMonitor monitor) throws CoreException, InterruptedException {
-				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getURI(), domainModelFilePage.getURI(), initialObjectCreationPage.getInitialObject(),
-						initialObjectCreationPage.getEncoding(), monitor);
+				final String diagramName = diagramModelFilePage.getURI().lastSegment();
+				final String diagramNameWithoutExtension = diagramModelFilePage.getURI().trimFileExtension().lastSegment();
+				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getEncodedURI(), domainModelFilePage.getEncodedURI(), diagramName, diagramNameWithoutExtension,
+						initialObjectCreationPage.getInitialObject(), initialObjectCreationPage.getEncoding(), monitor);
 				if (isOpenNewlyCreatedDiagramEditor() && diagram != null) {
 					try {
 						UMLDiagramEditorUtil.openDiagram(diagram);
diff --git a/plugins/org.eclipse.uml2.diagram.clazz/src/org/eclipse/uml2/diagram/clazz/part/UMLCreationWizardPage.java b/plugins/org.eclipse.uml2.diagram.clazz/src/org/eclipse/uml2/diagram/clazz/part/UMLCreationWizardPage.java
index 254783d..be833b5 100644
--- a/plugins/org.eclipse.uml2.diagram.clazz/src/org/eclipse/uml2/diagram/clazz/part/UMLCreationWizardPage.java
+++ b/plugins/org.eclipse.uml2.diagram.clazz/src/org/eclipse/uml2/diagram/clazz/part/UMLCreationWizardPage.java
@@ -118,4 +118,11 @@
 		fileName += nextWizardPage.getExtension();
 		nextWizardPage.setFileName(fileName);
 	}
+
+	/**
+	* @generated
+	*/
+	public URI getEncodedURI() {
+		return URI.createPlatformResourceURI(getFilePath().toString(), true);
+	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.uml2.diagram.clazz/src/org/eclipse/uml2/diagram/clazz/part/UMLDiagramEditorUtil.java b/plugins/org.eclipse.uml2.diagram.clazz/src/org/eclipse/uml2/diagram/clazz/part/UMLDiagramEditorUtil.java
index e5bb9d3..4b6f26b 100644
--- a/plugins/org.eclipse.uml2.diagram.clazz/src/org/eclipse/uml2/diagram/clazz/part/UMLDiagramEditorUtil.java
+++ b/plugins/org.eclipse.uml2.diagram.clazz/src/org/eclipse/uml2/diagram/clazz/part/UMLDiagramEditorUtil.java
@@ -1,7 +1,6 @@
 package org.eclipse.uml2.diagram.clazz.part;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -9,7 +8,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.commands.operations.OperationHistoryFactory;
 import org.eclipse.core.resources.IFile;
@@ -63,8 +61,8 @@
 public class UMLDiagramEditorUtil {
 
 	/**
-	 * @generated
-	 */
+	* @generated
+	*/
 	public static Map<?, ?> getSaveOptions() {
 		HashMap<String, Object> saveOptions = new HashMap<String, Object>();
 		saveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8"); //$NON-NLS-1$
@@ -73,8 +71,8 @@
 	}
 
 	/**
-	 * @generated
-	 */
+	* @generated
+	*/
 	public static Map getSaveOptions(String encoding) {
 		Map saveOptions = new HashMap();
 		saveOptions.put(XMLResource.OPTION_ENCODING, encoding == null ? "UTF-8" : encoding); //$NON-NLS-1$
@@ -83,8 +81,8 @@
 	}
 
 	/**
-	 * @generated
-	 */
+	* @generated
+	*/
 	public static boolean openDiagram(Resource diagram) throws PartInitException {
 		String path = diagram.getURI().toPlatformString(true);
 		IResource workspaceResource = ResourcesPlugin.getWorkspace().getRoot().findMember(new Path(path));
@@ -96,8 +94,8 @@
 	}
 
 	/**
-	 * @generated
-	 */
+	* @generated
+	*/
 	public static void setCharset(IFile file) {
 		if (file == null) {
 			return;
@@ -110,8 +108,8 @@
 	}
 
 	/**
-	 * @generated
-	 */
+	* @generated
+	*/
 	public static String getUniqueFileName(IPath containerFullPath, String fileName, String extension) {
 		if (containerFullPath == null) {
 			containerFullPath = new Path(""); //$NON-NLS-1$
@@ -152,16 +150,15 @@
 	}
 
 	/**
-	 * This method should be called within a workspace modify operation since it creates resources.
-	 * @generated
-	 */
-	public static Resource createDiagram(URI diagramURI, URI modelURI, final EClass initialObject, final String encoding, IProgressMonitor progressMonitor) {
+	* This method should be called within a workspace modify operation since it creates resources.
+	* @generated
+	*/
+	public static Resource createDiagram(URI diagramURI, URI modelURI, final String diagramName, final String diagramNameWithoutExtension, final EClass initialObject, final String encoding,
+			IProgressMonitor progressMonitor) {
 		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain();
 		progressMonitor.beginTask(Messages.UMLDiagramEditorUtil_CreateDiagramProgressTask, 3);
 		final Resource diagramResource = editingDomain.getResourceSet().createResource(diagramURI);
 		final Resource modelResource = editingDomain.getResourceSet().createResource(modelURI);
-		final String diagramName = diagramURI.lastSegment();
-		final String diagramNameWithoutExtension = diagramURI.trimFileExtension().lastSegment();
 		AbstractTransactionalCommand command = new AbstractTransactionalCommand(editingDomain, Messages.UMLDiagramEditorUtil_CreateDiagramCommandLabel, Collections.EMPTY_LIST) {
 
 			protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
@@ -198,7 +195,7 @@
 	/**
 	* Create a new instance of domain element associated with canvas.
 	* <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
+	* <!-- end-user-doc -->
 	* @generated
 	*/
 	private static Package createInitialModel(EClass initialObject, String diagramName) {
@@ -210,7 +207,7 @@
 	/**
 	* Store model element in the resource.
 	* <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
+	* <!-- end-user-doc -->
 	* @generated
 	*/
 	private static void attachModelToResource(Package model, Resource resource) {
@@ -220,8 +217,8 @@
 	}
 
 	/**
-	 * @generated
-	 */
+	* @generated
+	*/
 	public static void selectElementsInDiagram(IDiagramWorkbenchPart diagramPart, List<EditPart> editParts) {
 		diagramPart.getDiagramGraphicalViewer().deselectAll();
 
@@ -239,8 +236,8 @@
 	}
 
 	/**
-	 * @generated
-	 */
+	* @generated
+	*/
 	private static int findElementsInDiagramByID(DiagramEditPart diagramPart, EObject element, List<EditPart> editPartCollector) {
 		IDiagramGraphicalViewer viewer = (IDiagramGraphicalViewer) diagramPart.getViewer();
 		final int intialNumOfEditParts = editPartCollector.size();
@@ -280,8 +277,8 @@
 	}
 
 	/**
-	 * @generated
-	 */
+	* @generated
+	*/
 	public static View findView(DiagramEditPart diagramEditPart, EObject targetElement, LazyElement2ViewMap lazyElement2ViewMap) {
 		boolean hasStructuralURI = false;
 		if (targetElement.eResource() instanceof XMLResource) {
@@ -301,36 +298,37 @@
 	}
 
 	/**
-	 * @generated
-	 */
+	* XXX This is quite suspicious code (especially editPartTmpHolder) and likely to be removed soon
+	* @generated
+	*/
 	public static class LazyElement2ViewMap {
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		private Map<EObject, View> element2ViewMap;
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		private View scope;
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		private Set<? extends EObject> elementSet;
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		public LazyElement2ViewMap(View scope, Set<? extends EObject> elements) {
 			this.scope = scope;
 			this.elementSet = elements;
 		}
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		public final Map<EObject, View> getElement2ViewMap() {
 			if (element2ViewMap == null) {
 				element2ViewMap = new HashMap<EObject, View>();
@@ -350,8 +348,8 @@
 		}
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		private static boolean buildElement2ViewMap(View parentView, Map<EObject, View> element2ViewMap, Set<? extends EObject> elements) {
 			if (elements.size() == element2ViewMap.size()) {
 				return true;
@@ -378,8 +376,8 @@
 	} //LazyElement2ViewMap	
 
 	/**
-	 * @generated
-	 */
+	* @generated
+	*/
 	public static IFile getFile(URI uri) {
 		if (uri.toString().startsWith("platform:/resource")) { //$NON-NLS-1$
 			String path = uri.toString().substring("platform:/resource".length()); //$NON-NLS-1$
@@ -392,8 +390,8 @@
 	}
 
 	/**
-	 * @generated
-	 */
+	* @generated
+	*/
 	private static void loadDefaultImports(Package model) {
 		ResourceSet resourceSet = model.eResource().getResourceSet();
 		Model umlLibrary = (Model) resourceSet.getResource(URI.createURI(UMLResource.UML_PRIMITIVE_TYPES_LIBRARY_URI), true).getContents().get(0);
diff --git a/plugins/org.eclipse.uml2.diagram.component/src/org/eclipse/uml2/diagram/component/part/UMLCreationWizard.java b/plugins/org.eclipse.uml2.diagram.component/src/org/eclipse/uml2/diagram/component/part/UMLCreationWizard.java
index e33fef1..61559de 100644
--- a/plugins/org.eclipse.uml2.diagram.component/src/org/eclipse/uml2/diagram/component/part/UMLCreationWizard.java
+++ b/plugins/org.eclipse.uml2.diagram.component/src/org/eclipse/uml2/diagram/component/part/UMLCreationWizard.java
@@ -129,8 +129,10 @@
 		IRunnableWithProgress op = new WorkspaceModifyOperation(null) {
 
 			protected void execute(IProgressMonitor monitor) throws CoreException, InterruptedException {
-				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getURI(), domainModelFilePage.getURI(), initialObjectCreationPage.getInitialObject(),
-						initialObjectCreationPage.getEncoding(), monitor);
+				final String diagramName = diagramModelFilePage.getURI().lastSegment();
+				final String diagramNameWithoutExtension = diagramModelFilePage.getURI().trimFileExtension().lastSegment();
+				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getEncodedURI(), domainModelFilePage.getEncodedURI(), diagramName, diagramNameWithoutExtension,
+						initialObjectCreationPage.getInitialObject(), initialObjectCreationPage.getEncoding(), monitor);
 				if (isOpenNewlyCreatedDiagramEditor() && diagram != null) {
 					try {
 						UMLDiagramEditorUtil.openDiagram(diagram);
diff --git a/plugins/org.eclipse.uml2.diagram.component/src/org/eclipse/uml2/diagram/component/part/UMLCreationWizardPage.java b/plugins/org.eclipse.uml2.diagram.component/src/org/eclipse/uml2/diagram/component/part/UMLCreationWizardPage.java
index 6fa9e46..53fe5d7 100644
--- a/plugins/org.eclipse.uml2.diagram.component/src/org/eclipse/uml2/diagram/component/part/UMLCreationWizardPage.java
+++ b/plugins/org.eclipse.uml2.diagram.component/src/org/eclipse/uml2/diagram/component/part/UMLCreationWizardPage.java
@@ -117,4 +117,11 @@
 		nextWizardPage.setFileName(fileName);
 	}
 
+	/**
+	* @generated
+	*/
+	public URI getEncodedURI() {
+		return URI.createPlatformResourceURI(getFilePath().toString(), true);
+	}
+
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.uml2.diagram.component/src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorUtil.java b/plugins/org.eclipse.uml2.diagram.component/src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorUtil.java
index ef6a98b..d9bcc4c 100644
--- a/plugins/org.eclipse.uml2.diagram.component/src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorUtil.java
+++ b/plugins/org.eclipse.uml2.diagram.component/src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorUtil.java
@@ -152,16 +152,15 @@
 	}
 
 	/**
-	 * This method should be called within a workspace modify operation since it creates resources.
-	 * @generated
-	 */
-	public static Resource createDiagram(URI diagramURI, URI modelURI, final EClass initialObject, final String encoding, IProgressMonitor progressMonitor) {
+	* This method should be called within a workspace modify operation since it creates resources.
+	* @generated
+	*/
+	public static Resource createDiagram(URI diagramURI, URI modelURI, final String diagramName, final String diagramNameWithoutExtension, final EClass initialObject, final String encoding,
+			IProgressMonitor progressMonitor) {
 		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain();
 		progressMonitor.beginTask(Messages.UMLDiagramEditorUtil_CreateDiagramProgressTask, 3);
 		final Resource diagramResource = editingDomain.getResourceSet().createResource(diagramURI);
 		final Resource modelResource = editingDomain.getResourceSet().createResource(modelURI);
-		final String diagramName = diagramURI.lastSegment();
-		final String diagramNameWithoutExtension = diagramURI.trimFileExtension().lastSegment();
 		AbstractTransactionalCommand command = new AbstractTransactionalCommand(editingDomain, Messages.UMLDiagramEditorUtil_CreateDiagramCommandLabel, Collections.EMPTY_LIST) {
 
 			protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
diff --git a/plugins/org.eclipse.uml2.diagram.csd/src/org/eclipse/uml2/diagram/csd/part/UMLCreationWizard.java b/plugins/org.eclipse.uml2.diagram.csd/src/org/eclipse/uml2/diagram/csd/part/UMLCreationWizard.java
index e5b4664..31e88f3 100644
--- a/plugins/org.eclipse.uml2.diagram.csd/src/org/eclipse/uml2/diagram/csd/part/UMLCreationWizard.java
+++ b/plugins/org.eclipse.uml2.diagram.csd/src/org/eclipse/uml2/diagram/csd/part/UMLCreationWizard.java
@@ -129,8 +129,10 @@
 		IRunnableWithProgress op = new WorkspaceModifyOperation(null) {
 
 			protected void execute(IProgressMonitor monitor) throws CoreException, InterruptedException {
-				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getURI(), domainModelFilePage.getURI(), initialObjectCreationPage.getInitialObject(),
-						initialObjectCreationPage.getEncoding(), monitor);
+				final String diagramName = diagramModelFilePage.getURI().lastSegment();
+				final String diagramNameWithoutExtension = diagramModelFilePage.getURI().trimFileExtension().lastSegment();
+				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getEncodedURI(), domainModelFilePage.getEncodedURI(), diagramName, diagramNameWithoutExtension,
+						initialObjectCreationPage.getInitialObject(), initialObjectCreationPage.getEncoding(), monitor);
 				if (isOpenNewlyCreatedDiagramEditor() && diagram != null) {
 					try {
 						UMLDiagramEditorUtil.openDiagram(diagram);
diff --git a/plugins/org.eclipse.uml2.diagram.csd/src/org/eclipse/uml2/diagram/csd/part/UMLCreationWizardPage.java b/plugins/org.eclipse.uml2.diagram.csd/src/org/eclipse/uml2/diagram/csd/part/UMLCreationWizardPage.java
index 5075156..372c2e3 100644
--- a/plugins/org.eclipse.uml2.diagram.csd/src/org/eclipse/uml2/diagram/csd/part/UMLCreationWizardPage.java
+++ b/plugins/org.eclipse.uml2.diagram.csd/src/org/eclipse/uml2/diagram/csd/part/UMLCreationWizardPage.java
@@ -119,4 +119,11 @@
 		fileName += nextWizardPage.getExtension();
 		nextWizardPage.setFileName(fileName);
 	}
+
+	/**
+	* @generated
+	*/
+	public URI getEncodedURI() {
+		return URI.createPlatformResourceURI(getFilePath().toString(), true);
+	}
 }
diff --git a/plugins/org.eclipse.uml2.diagram.csd/src/org/eclipse/uml2/diagram/csd/part/UMLDiagramEditorUtil.java b/plugins/org.eclipse.uml2.diagram.csd/src/org/eclipse/uml2/diagram/csd/part/UMLDiagramEditorUtil.java
index 6bc3a66..38cd88f 100644
--- a/plugins/org.eclipse.uml2.diagram.csd/src/org/eclipse/uml2/diagram/csd/part/UMLDiagramEditorUtil.java
+++ b/plugins/org.eclipse.uml2.diagram.csd/src/org/eclipse/uml2/diagram/csd/part/UMLDiagramEditorUtil.java
@@ -152,16 +152,15 @@
 	}
 
 	/**
-	 * This method should be called within a workspace modify operation since it creates resources.
-	 * @generated
-	 */
-	public static Resource createDiagram(URI diagramURI, URI modelURI, final EClass initialObject, final String encoding, IProgressMonitor progressMonitor) {
+	* This method should be called within a workspace modify operation since it creates resources.
+	* @generated
+	*/
+	public static Resource createDiagram(URI diagramURI, URI modelURI, final String diagramName, final String diagramNameWithoutExtension, final EClass initialObject, final String encoding,
+			IProgressMonitor progressMonitor) {
 		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain();
 		progressMonitor.beginTask(Messages.UMLDiagramEditorUtil_CreateDiagramProgressTask, 3);
 		final Resource diagramResource = editingDomain.getResourceSet().createResource(diagramURI);
 		final Resource modelResource = editingDomain.getResourceSet().createResource(modelURI);
-		final String diagramName = diagramURI.lastSegment();
-		final String diagramNameWithoutExtension = diagramURI.trimFileExtension().lastSegment();
 		AbstractTransactionalCommand command = new AbstractTransactionalCommand(editingDomain, Messages.UMLDiagramEditorUtil_CreateDiagramCommandLabel, Collections.EMPTY_LIST) {
 
 			protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
diff --git a/plugins/org.eclipse.uml2.diagram.def/dynamic-templates/codegen/aspects/xpt/editor/CreationWizard.xpt b/plugins/org.eclipse.uml2.diagram.def/dynamic-templates/codegen/aspects/xpt/editor/CreationWizard.xpt
index cba744f..a3ad81a 100644
--- a/plugins/org.eclipse.uml2.diagram.def/dynamic-templates/codegen/aspects/xpt/editor/CreationWizard.xpt
+++ b/plugins/org.eclipse.uml2.diagram.def/dynamic-templates/codegen/aspects/xpt/editor/CreationWizard.xpt
@@ -123,11 +123,13 @@
 			public void run(org.eclipse.core.runtime.IProgressMonitor monitor)
 					throws InvocationTargetException, InterruptedException {
 	«ENDIF-»
-				diagram = «getDiagramEditorUtilQualifiedClassName()».createDiagram(diagramModelFilePage.getURI(),
+			final String diagramName = diagramModelFilePage.getURI().lastSegment();
+				final String diagramNameWithoutExtension = diagramModelFilePage.getURI().trimFileExtension().lastSegment();
+				diagram = «getDiagramEditorUtilQualifiedClassName()».createDiagram(diagramModelFilePage.getEncodedURI(),
 	«IF standaloneDomainModel(self)-»
-						domainModelFilePage.getURI(),
+						domainModelFilePage.getEncodedURI(),
 	«IF needInitialObject(self)-» 
-	initialObjectCreationPage.getInitialObject(), initialObjectCreationPage.getEncoding(),
+	diagramName, diagramNameWithoutExtension, initialObjectCreationPage.getInitialObject(), initialObjectCreationPage.getEncoding(),
 	«ENDIF-» 
 	«ENDIF-»
 						monitor);
diff --git a/plugins/org.eclipse.uml2.diagram.def/dynamic-templates/codegen/aspects/xpt/editor/CreationWizardPage.xpt b/plugins/org.eclipse.uml2.diagram.def/dynamic-templates/codegen/aspects/xpt/editor/CreationWizardPage.xpt
index f7e95fc..1d15e8a 100644
--- a/plugins/org.eclipse.uml2.diagram.def/dynamic-templates/codegen/aspects/xpt/editor/CreationWizardPage.xpt
+++ b/plugins/org.eclipse.uml2.diagram.def/dynamic-templates/codegen/aspects/xpt/editor/CreationWizardPage.xpt
@@ -9,11 +9,11 @@
  * Contributors:
  *    Tatiana Fesenko (Borland) - #194187 UMLWizard usability
  */
-«IMPORT 'http://www.eclipse.org/gmf/2009/GenModel'»
-«IMPORT 'http://www.eclipse.org/emf/2002/Ecore'»
+«IMPORT 'http://www.eclipse.org/gmf/2009/GenModel'»
+«IMPORT 'http://www.eclipse.org/emf/2002/Ecore'»
 
-«AROUND additions FOR gmfgen::GenDiagram»
-	«EXPAND xpt::Common::generatedMemberComment»
+«AROUND additions FOR gmfgen::GenDiagram»
+	«EXPAND xpt::Common::generatedMemberComment»
 	/**
 	 * #174315 Automatically set diagram file extension
 	 * @generated
@@ -32,7 +32,7 @@
 	 * @generated
 	 */
 	protected void setDomainFileName(org.eclipse.jface.wizard.IWizardPage nextPage) {
-		«creationWizardPageClassName» nextWizardPage = («creationWizardPageClassName») nextPage;
+		«creationWizardPageClassName» nextWizardPage = («creationWizardPageClassName») nextPage;
 		String fileName = getFileName();
 		String extension = getExtension();
 		if (fileName.endsWith(extension)) {
@@ -41,4 +41,13 @@
 		fileName += nextWizardPage.getExtension();
 		nextWizardPage.setFileName(fileName);
 	}
-«ENDAROUND»
+	
+	«EXPAND xpt::Common::generatedMemberComment»
+	public org.eclipse.emf.common.util.URI getEncodedURI() {
+	«IF editorGen.application = null-»
+		return org.eclipse.emf.common.util.URI.createPlatformResourceURI(getFilePath().toString(), true);
+	«ELSE-»
+		return org.eclipse.emf.common.util.URI.createFileURI(getFilePath().toString());
+	«ENDIF-»
+	}
+«ENDAROUND»
diff --git a/plugins/org.eclipse.uml2.diagram.def/dynamic-templates/codegen/u2t/wizard/InitialObject.xpt b/plugins/org.eclipse.uml2.diagram.def/dynamic-templates/codegen/u2t/wizard/InitialObject.xpt
index 31f99b4..75aa94c 100644
--- a/plugins/org.eclipse.uml2.diagram.def/dynamic-templates/codegen/u2t/wizard/InitialObject.xpt
+++ b/plugins/org.eclipse.uml2.diagram.def/dynamic-templates/codegen/u2t/wizard/InitialObject.xpt
@@ -63,7 +63,7 @@
 
 «DEFINE createDiagramMethod FOR gmfgen::GenDiagram-»
 	«EXPAND xpt::Common::generatedMemberComment((if editorGen.application = null then 'This method should be called within a workspace modify operation since it creates resources.' else '' endif))»
-	public static org.eclipse.emf.ecore.resource.Resource createDiagram(org.eclipse.emf.common.util.URI diagramURI,«IF standaloneDomainModel(self)» org.eclipse.emf.common.util.URI modelURI,«ENDIF» «IF needInitialObject(self)»final org.eclipse.emf.ecore.EClass initialObject, final String encoding, «ENDIF»org.eclipse.core.runtime.IProgressMonitor progressMonitor) {
+	public static org.eclipse.emf.ecore.resource.Resource createDiagram(org.eclipse.emf.common.util.URI diagramURI,«IF standaloneDomainModel(self)» org.eclipse.emf.common.util.URI modelURI,«ENDIF» final String diagramName, final String diagramNameWithoutExtension, «IF needInitialObject(self)»final org.eclipse.emf.ecore.EClass initialObject, final String encoding, «ENDIF»org.eclipse.core.runtime.IProgressMonitor progressMonitor) {
 		org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain = org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory.INSTANCE.createEditingDomain();
 		progressMonitor.beginTask(«EXPAND xpt::Externalizer::accessorCall(i18nKeyForCreateDiagramProgressTask(self)) FOR editorGen», 3);
 		final org.eclipse.emf.ecore.resource.Resource diagramResource = editingDomain.getResourceSet().createResource(diagramURI);
@@ -73,10 +73,6 @@
 		((org.eclipse.emf.ecore.xmi.XMLResource) diagramResource).getDefaultSaveOptions().put(org.eclipse.emf.ecore.xmi.XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
 		((org.eclipse.emf.ecore.xmi.XMLResource) diagramResource).getDefaultLoadOptions().put(org.eclipse.emf.ecore.xmi.XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
 «ENDIF-»
-		final String diagramName = diagramURI.lastSegment();
-		«IF needDefaultName(self)-»
-		final String diagramNameWithoutExtension = diagramURI.trimFileExtension().lastSegment();
-		«ENDIF-»
 		org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand command = new org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand(editingDomain, «EXPAND xpt::Externalizer::accessorCall(i18nKeyForCreateDiagramCommandLabel(self)) FOR editorGen», java.util.Collections.EMPTY_LIST) {
 			protected org.eclipse.gmf.runtime.common.core.command.CommandResult doExecuteWithResult(org.eclipse.core.runtime.IProgressMonitor monitor, org.eclipse.core.runtime.IAdaptable info) throws org.eclipse.core.commands.ExecutionException {
 «IF domainDiagramElement <> null-»
diff --git a/plugins/org.eclipse.uml2.diagram.deploy/src/org/eclipse/uml2/diagram/deploy/part/UMLCreationWizard.java b/plugins/org.eclipse.uml2.diagram.deploy/src/org/eclipse/uml2/diagram/deploy/part/UMLCreationWizard.java
index 0d1b70b..1e0c201 100644
--- a/plugins/org.eclipse.uml2.diagram.deploy/src/org/eclipse/uml2/diagram/deploy/part/UMLCreationWizard.java
+++ b/plugins/org.eclipse.uml2.diagram.deploy/src/org/eclipse/uml2/diagram/deploy/part/UMLCreationWizard.java
@@ -129,8 +129,10 @@
 		IRunnableWithProgress op = new WorkspaceModifyOperation(null) {
 
 			protected void execute(IProgressMonitor monitor) throws CoreException, InterruptedException {
-				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getURI(), domainModelFilePage.getURI(), initialObjectCreationPage.getInitialObject(),
-						initialObjectCreationPage.getEncoding(), monitor);
+				final String diagramName = diagramModelFilePage.getURI().lastSegment();
+				final String diagramNameWithoutExtension = diagramModelFilePage.getURI().trimFileExtension().lastSegment();
+				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getEncodedURI(), domainModelFilePage.getEncodedURI(), diagramName, diagramNameWithoutExtension,
+						initialObjectCreationPage.getInitialObject(), initialObjectCreationPage.getEncoding(), monitor);
 				if (isOpenNewlyCreatedDiagramEditor() && diagram != null) {
 					try {
 						UMLDiagramEditorUtil.openDiagram(diagram);
diff --git a/plugins/org.eclipse.uml2.diagram.deploy/src/org/eclipse/uml2/diagram/deploy/part/UMLCreationWizardPage.java b/plugins/org.eclipse.uml2.diagram.deploy/src/org/eclipse/uml2/diagram/deploy/part/UMLCreationWizardPage.java
index 9026c83..1a1c682 100644
--- a/plugins/org.eclipse.uml2.diagram.deploy/src/org/eclipse/uml2/diagram/deploy/part/UMLCreationWizardPage.java
+++ b/plugins/org.eclipse.uml2.diagram.deploy/src/org/eclipse/uml2/diagram/deploy/part/UMLCreationWizardPage.java
@@ -119,4 +119,11 @@
 		fileName += nextWizardPage.getExtension();
 		nextWizardPage.setFileName(fileName);
 	}
+
+	/**
+	* @generated
+	*/
+	public URI getEncodedURI() {
+		return URI.createPlatformResourceURI(getFilePath().toString(), true);
+	}
 }
diff --git a/plugins/org.eclipse.uml2.diagram.deploy/src/org/eclipse/uml2/diagram/deploy/part/UMLDiagramEditorUtil.java b/plugins/org.eclipse.uml2.diagram.deploy/src/org/eclipse/uml2/diagram/deploy/part/UMLDiagramEditorUtil.java
index 0205e31..3140362 100644
--- a/plugins/org.eclipse.uml2.diagram.deploy/src/org/eclipse/uml2/diagram/deploy/part/UMLDiagramEditorUtil.java
+++ b/plugins/org.eclipse.uml2.diagram.deploy/src/org/eclipse/uml2/diagram/deploy/part/UMLDiagramEditorUtil.java
@@ -152,16 +152,15 @@
 	}
 
 	/**
-	 * This method should be called within a workspace modify operation since it creates resources.
-	 * @generated
-	 */
-	public static Resource createDiagram(URI diagramURI, URI modelURI, final EClass initialObject, final String encoding, IProgressMonitor progressMonitor) {
+	* This method should be called within a workspace modify operation since it creates resources.
+	* @generated
+	*/
+	public static Resource createDiagram(URI diagramURI, URI modelURI, final String diagramName, final String diagramNameWithoutExtension, final EClass initialObject, final String encoding,
+			IProgressMonitor progressMonitor) {
 		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain();
 		progressMonitor.beginTask(Messages.UMLDiagramEditorUtil_CreateDiagramProgressTask, 3);
 		final Resource diagramResource = editingDomain.getResourceSet().createResource(diagramURI);
 		final Resource modelResource = editingDomain.getResourceSet().createResource(modelURI);
-		final String diagramName = diagramURI.lastSegment();
-		final String diagramNameWithoutExtension = diagramURI.trimFileExtension().lastSegment();
 		AbstractTransactionalCommand command = new AbstractTransactionalCommand(editingDomain, Messages.UMLDiagramEditorUtil_CreateDiagramCommandLabel, Collections.EMPTY_LIST) {
 
 			protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
diff --git a/plugins/org.eclipse.uml2.diagram.profile/src/org/eclipse/uml2/diagram/profile/part/UMLCreationWizard.java b/plugins/org.eclipse.uml2.diagram.profile/src/org/eclipse/uml2/diagram/profile/part/UMLCreationWizard.java
index c8b7a69..52e2b05 100644
--- a/plugins/org.eclipse.uml2.diagram.profile/src/org/eclipse/uml2/diagram/profile/part/UMLCreationWizard.java
+++ b/plugins/org.eclipse.uml2.diagram.profile/src/org/eclipse/uml2/diagram/profile/part/UMLCreationWizard.java
@@ -129,8 +129,10 @@
 		IRunnableWithProgress op = new WorkspaceModifyOperation(null) {
 
 			protected void execute(IProgressMonitor monitor) throws CoreException, InterruptedException {
-				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getURI(), domainModelFilePage.getURI(), initialObjectCreationPage.getInitialObject(),
-						initialObjectCreationPage.getEncoding(), monitor);
+				final String diagramName = diagramModelFilePage.getURI().lastSegment();
+				final String diagramNameWithoutExtension = diagramModelFilePage.getURI().trimFileExtension().lastSegment();
+				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getEncodedURI(), domainModelFilePage.getEncodedURI(), diagramName, diagramNameWithoutExtension,
+						initialObjectCreationPage.getInitialObject(), initialObjectCreationPage.getEncoding(), monitor);
 				if (isOpenNewlyCreatedDiagramEditor() && diagram != null) {
 					try {
 						UMLDiagramEditorUtil.openDiagram(diagram);
diff --git a/plugins/org.eclipse.uml2.diagram.profile/src/org/eclipse/uml2/diagram/profile/part/UMLCreationWizardPage.java b/plugins/org.eclipse.uml2.diagram.profile/src/org/eclipse/uml2/diagram/profile/part/UMLCreationWizardPage.java
index 84ad670..805994a 100644
--- a/plugins/org.eclipse.uml2.diagram.profile/src/org/eclipse/uml2/diagram/profile/part/UMLCreationWizardPage.java
+++ b/plugins/org.eclipse.uml2.diagram.profile/src/org/eclipse/uml2/diagram/profile/part/UMLCreationWizardPage.java
@@ -117,4 +117,11 @@
 		nextWizardPage.setFileName(fileName);
 	}
 
+	/**
+	* @generated
+	*/
+	public URI getEncodedURI() {
+		return URI.createPlatformResourceURI(getFilePath().toString(), true);
+	}
+
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.uml2.diagram.profile/src/org/eclipse/uml2/diagram/profile/part/UMLDiagramEditorUtil.java b/plugins/org.eclipse.uml2.diagram.profile/src/org/eclipse/uml2/diagram/profile/part/UMLDiagramEditorUtil.java
index ba88a55..1ab57eb 100644
--- a/plugins/org.eclipse.uml2.diagram.profile/src/org/eclipse/uml2/diagram/profile/part/UMLDiagramEditorUtil.java
+++ b/plugins/org.eclipse.uml2.diagram.profile/src/org/eclipse/uml2/diagram/profile/part/UMLDiagramEditorUtil.java
@@ -152,16 +152,15 @@
 	}
 
 	/**
-	 * This method should be called within a workspace modify operation since it creates resources.
-	 * @generated
-	 */
-	public static Resource createDiagram(URI diagramURI, URI modelURI, final EClass initialObject, final String encoding, IProgressMonitor progressMonitor) {
+	* This method should be called within a workspace modify operation since it creates resources.
+	* @generated
+	*/
+	public static Resource createDiagram(URI diagramURI, URI modelURI, final String diagramName, final String diagramNameWithoutExtension, final EClass initialObject, final String encoding,
+			IProgressMonitor progressMonitor) {
 		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain();
 		progressMonitor.beginTask(Messages.UMLDiagramEditorUtil_CreateDiagramProgressTask, 3);
 		final Resource diagramResource = editingDomain.getResourceSet().createResource(diagramURI);
 		final Resource modelResource = editingDomain.getResourceSet().createResource(modelURI);
-		final String diagramName = diagramURI.lastSegment();
-		final String diagramNameWithoutExtension = diagramURI.trimFileExtension().lastSegment();
 		AbstractTransactionalCommand command = new AbstractTransactionalCommand(editingDomain, Messages.UMLDiagramEditorUtil_CreateDiagramCommandLabel, Collections.EMPTY_LIST) {
 
 			protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
diff --git a/plugins/org.eclipse.uml2.diagram.statemachine/src/org/eclipse/uml2/diagram/statemachine/part/UMLCreationWizard.java b/plugins/org.eclipse.uml2.diagram.statemachine/src/org/eclipse/uml2/diagram/statemachine/part/UMLCreationWizard.java
index 1d2bfbb..af07880 100644
--- a/plugins/org.eclipse.uml2.diagram.statemachine/src/org/eclipse/uml2/diagram/statemachine/part/UMLCreationWizard.java
+++ b/plugins/org.eclipse.uml2.diagram.statemachine/src/org/eclipse/uml2/diagram/statemachine/part/UMLCreationWizard.java
@@ -124,7 +124,9 @@
 		IRunnableWithProgress op = new WorkspaceModifyOperation(null) {
 
 			protected void execute(IProgressMonitor monitor) throws CoreException, InterruptedException {
-				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getURI(), domainModelFilePage.getURI(), monitor);
+				final String diagramName = diagramModelFilePage.getURI().lastSegment();
+				final String diagramNameWithoutExtension = diagramModelFilePage.getURI().trimFileExtension().lastSegment();
+				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getEncodedURI(), domainModelFilePage.getEncodedURI(), monitor);
 				if (isOpenNewlyCreatedDiagramEditor() && diagram != null) {
 					try {
 						UMLDiagramEditorUtil.openDiagram(diagram);
diff --git a/plugins/org.eclipse.uml2.diagram.statemachine/src/org/eclipse/uml2/diagram/statemachine/part/UMLCreationWizardPage.java b/plugins/org.eclipse.uml2.diagram.statemachine/src/org/eclipse/uml2/diagram/statemachine/part/UMLCreationWizardPage.java
index b380207..0e3027d 100644
--- a/plugins/org.eclipse.uml2.diagram.statemachine/src/org/eclipse/uml2/diagram/statemachine/part/UMLCreationWizardPage.java
+++ b/plugins/org.eclipse.uml2.diagram.statemachine/src/org/eclipse/uml2/diagram/statemachine/part/UMLCreationWizardPage.java
@@ -120,4 +120,11 @@
 		fileName += nextWizardPage.getExtension();
 		nextWizardPage.setFileName(fileName);
 	}
+
+	/**
+	* @generated
+	*/
+	public URI getEncodedURI() {
+		return URI.createPlatformResourceURI(getFilePath().toString(), true);
+	}
 }
diff --git a/plugins/org.eclipse.uml2.diagram.usecase/src/org/eclipse/uml2/diagram/usecase/part/UMLCreationWizard.java b/plugins/org.eclipse.uml2.diagram.usecase/src/org/eclipse/uml2/diagram/usecase/part/UMLCreationWizard.java
index ed2f395..fd9d700 100644
--- a/plugins/org.eclipse.uml2.diagram.usecase/src/org/eclipse/uml2/diagram/usecase/part/UMLCreationWizard.java
+++ b/plugins/org.eclipse.uml2.diagram.usecase/src/org/eclipse/uml2/diagram/usecase/part/UMLCreationWizard.java
@@ -129,8 +129,10 @@
 		IRunnableWithProgress op = new WorkspaceModifyOperation(null) {
 
 			protected void execute(IProgressMonitor monitor) throws CoreException, InterruptedException {
-				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getURI(), domainModelFilePage.getURI(), initialObjectCreationPage.getInitialObject(),
-						initialObjectCreationPage.getEncoding(), monitor);
+				final String diagramName = diagramModelFilePage.getURI().lastSegment();
+				final String diagramNameWithoutExtension = diagramModelFilePage.getURI().trimFileExtension().lastSegment();
+				diagram = UMLDiagramEditorUtil.createDiagram(diagramModelFilePage.getEncodedURI(), domainModelFilePage.getEncodedURI(), diagramName, diagramNameWithoutExtension,
+						initialObjectCreationPage.getInitialObject(), initialObjectCreationPage.getEncoding(), monitor);
 				if (isOpenNewlyCreatedDiagramEditor() && diagram != null) {
 					try {
 						UMLDiagramEditorUtil.openDiagram(diagram);
diff --git a/plugins/org.eclipse.uml2.diagram.usecase/src/org/eclipse/uml2/diagram/usecase/part/UMLCreationWizardPage.java b/plugins/org.eclipse.uml2.diagram.usecase/src/org/eclipse/uml2/diagram/usecase/part/UMLCreationWizardPage.java
index 952d06d..70137c0 100644
--- a/plugins/org.eclipse.uml2.diagram.usecase/src/org/eclipse/uml2/diagram/usecase/part/UMLCreationWizardPage.java
+++ b/plugins/org.eclipse.uml2.diagram.usecase/src/org/eclipse/uml2/diagram/usecase/part/UMLCreationWizardPage.java
@@ -119,4 +119,11 @@
 		fileName += nextWizardPage.getExtension();
 		nextWizardPage.setFileName(fileName);
 	}
+
+	/**
+	* @generated
+	*/
+	public URI getEncodedURI() {
+		return URI.createPlatformResourceURI(getFilePath().toString(), true);
+	}
 }
diff --git a/plugins/org.eclipse.uml2.diagram.usecase/src/org/eclipse/uml2/diagram/usecase/part/UMLDiagramEditorUtil.java b/plugins/org.eclipse.uml2.diagram.usecase/src/org/eclipse/uml2/diagram/usecase/part/UMLDiagramEditorUtil.java
index dd54a5d..7d2c2bd 100644
--- a/plugins/org.eclipse.uml2.diagram.usecase/src/org/eclipse/uml2/diagram/usecase/part/UMLDiagramEditorUtil.java
+++ b/plugins/org.eclipse.uml2.diagram.usecase/src/org/eclipse/uml2/diagram/usecase/part/UMLDiagramEditorUtil.java
@@ -152,16 +152,15 @@
 	}
 
 	/**
-	 * This method should be called within a workspace modify operation since it creates resources.
-	 * @generated
-	 */
-	public static Resource createDiagram(URI diagramURI, URI modelURI, final EClass initialObject, final String encoding, IProgressMonitor progressMonitor) {
+	* This method should be called within a workspace modify operation since it creates resources.
+	* @generated
+	*/
+	public static Resource createDiagram(URI diagramURI, URI modelURI, final String diagramName, final String diagramNameWithoutExtension, final EClass initialObject, final String encoding,
+			IProgressMonitor progressMonitor) {
 		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain();
 		progressMonitor.beginTask(Messages.UMLDiagramEditorUtil_CreateDiagramProgressTask, 3);
 		final Resource diagramResource = editingDomain.getResourceSet().createResource(diagramURI);
 		final Resource modelResource = editingDomain.getResourceSet().createResource(modelURI);
-		final String diagramName = diagramURI.lastSegment();
-		final String diagramNameWithoutExtension = diagramURI.trimFileExtension().lastSegment();
 		AbstractTransactionalCommand command = new AbstractTransactionalCommand(editingDomain, Messages.UMLDiagramEditorUtil_CreateDiagramCommandLabel, Collections.EMPTY_LIST) {
 
 			protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {