diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/validation/BPMN2ProjectValidator.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/validation/BPMN2ProjectValidator.java
index 189c795..818839a 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/validation/BPMN2ProjectValidator.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/validation/BPMN2ProjectValidator.java
@@ -90,7 +90,7 @@
 		rs.setURIConverter(new ProxyURIConverterImplExtension());
 
 		Resource resource = rs.createResource(
-                URI.createPlatformResourceURI(modelFile.getFullPath().toString(), false),
+                URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true),
                 Bpmn2ModelerResourceImpl.BPMN2_CONTENT_TYPE_ID);
         try {
             resource.load(null);
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
index 4145eb6..fcfae8a 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
@@ -12,6 +12,7 @@
  ******************************************************************************/
 package org.eclipse.bpmn2.modeler.ui.editor;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -709,13 +710,9 @@
 		}
 	}
 	
-	public void setEditorTitle(final String title) {
-		Display display = getSite().getShell().getDisplay();
-		display.asyncExec(new Runnable() {
-			public void run() {
-				setPartName(title);
-			}
-		});
+	public void refreshTitle() {
+		String name = getEditorInput().getName();
+		setPartName(URI.decode(name));
 	}
 
 	public BPMN2EditingDomainListener getEditingDomainListener() {
@@ -776,6 +773,14 @@
 			IEditorReference[] refs = p.getEditorReferences();
 			instances += refs.length;
 		}
+		File diagramFile = new File(diagramUri.toFileString());
+		if (diagramFile.exists()) {
+			try {
+				diagramFile.delete();
+			}
+			catch (Exception e) {
+			}
+		}
 		ModelUtil.clearIDs(modelHandler.getResource(), instances==0);
 		getPreferences().getGlobalPreferences().removePropertyChangeListener(this);
 		
@@ -977,8 +982,6 @@
 			targetRuntime = null;
 			modelHandler = ModelHandlerLocator.createModelHandler(modelUri, (Bpmn2ResourceImpl)resource);
 			ModelHandlerLocator.put(diagramUri, modelHandler);
-
-			setEditorTitle(modelUri.trimFileExtension().lastSegment());
 		}
 		else if (diagramUri.equals(oldURI)) {
 			ModelHandlerLocator.remove(diagramUri);
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/DesignEditor.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/DesignEditor.java
index da8cb2c..3e98992 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/DesignEditor.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/DesignEditor.java
@@ -17,6 +17,7 @@
 import org.eclipse.bpmn2.modeler.core.di.DIUtils;
 import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
 import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
+import org.eclipse.bpmn2.modeler.ui.wizards.Bpmn2DiagramEditorInput;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.TreeIterator;
@@ -97,12 +98,16 @@
 	
 	@Override
     protected void setPartName(String partName) {
-		IEditorInput input = getEditorInput();
-		if (input instanceof DiagramEditorInput) {
-			URI uri = ((DiagramEditorInput)input).getUri();
-			partName = URI.decode(uri.trimFileExtension().lastSegment());
-		}
-		super.setPartName(partName);
+//		IEditorInput input = getEditorInput();
+//		if (input instanceof Bpmn2DiagramEditorInput) {
+//			URI uri = ((Bpmn2DiagramEditorInput)input).getModelUri();
+//			partName = URI.decode(uri.trimFileExtension().lastSegment());
+//		}
+//		else if (input instanceof DiagramEditorInput) {
+//			URI uri = ((DiagramEditorInput)input).getUri();
+//			partName = URI.decode(uri.trimFileExtension().lastSegment());
+//		}
+		super.setPartName(URI.decode(partName));
     }
 
 	private boolean inSelectionChanged = false;
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/dialogs/SchemaImportDialog.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/dialogs/SchemaImportDialog.java
index 745e301..15c705a 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/dialogs/SchemaImportDialog.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/dialogs/SchemaImportDialog.java
@@ -992,7 +992,7 @@
 				return URI.createFileURI( path );				
 			
 			case BID_BROWSE_WORKSPACE :
-				return URI.createPlatformResourceURI(path,false);				
+				return URI.createPlatformResourceURI(path,true);				
 			
 			case BID_BROWSE_WSIL :
 				//return URI.createFileURI( path );
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/BPMN2DiagramCreator.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/BPMN2DiagramCreator.java
index dcb376c..dcd9b4e 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/BPMN2DiagramCreator.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/BPMN2DiagramCreator.java
@@ -52,7 +52,6 @@
 
 		String modelName = modelUri.trimFragment().trimFileExtension().lastSegment();
 		final Diagram diagram = Graphiti.getPeCreateService().createDiagram("BPMN2", modelName, true);
-		diagram.setName(modelName);
 
 		String diagramName = FileService.createTempName(modelName);
 		URI diagramUri = URI.createFileURI(diagramName);
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/Bpmn2DiagramEditorInput.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/Bpmn2DiagramEditorInput.java
index 273c45c..d47155b 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/Bpmn2DiagramEditorInput.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/Bpmn2DiagramEditorInput.java
@@ -54,6 +54,22 @@
 		return modelUri;
 	}
 	
+	public String getToolTipText() {
+		return modelUri.toPlatformString(true);
+	}
+	
+	public String getName() {
+		return URI.decode(modelUri.trimFileExtension().lastSegment());
+	}
+	
+	public void updateUri(URI diagramFileUri) {
+		if (diagramFileUri.isPlatformResource()) {
+			modelUri = diagramFileUri;
+		}
+		else
+			super.updateUri(diagramFileUri);
+	}
+	
 	@Override
 	public boolean equals(Object obj) {
 		boolean superEquals = super.equals(obj);
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/FileService.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/FileService.java
index a539747..becf0cb 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/FileService.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/FileService.java
@@ -206,7 +206,13 @@
 		try {
 			if (input instanceof Bpmn2DiagramEditorInput) {
 				URI uri = getInputUri(input);
-				File file = new File(uri.toFileString());
+				String fileName = null;
+				if (uri.isFile())
+					fileName = uri.toFileString();
+				else if (uri.isPlatformResource())
+					fileName = uri.toPlatformString(false);
+				
+				File file = new File(fileName);
 				if (file.exists()) {
 					InputStream is = new FileInputStream(file);
 					return is;
@@ -253,7 +259,8 @@
 	
 	public static String createTempName(String name) {
 		String tempDir = System.getProperty("java.io.tmpdir");
-		return tempDir + name + "." + EcoreUtil.generateUUID();
+		String tempName = tempDir + name + "." + EcoreUtil.generateUUID();
+		return tempName;
 	}
 	
 	public static File createTempFile(String name) {
