Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/infra/emf/org.eclipse.papyrus.infra.emf.readonly/src/org/eclipse/papyrus/infra/emf/readonly/ReadOnlyManager.java')
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.readonly/src/org/eclipse/papyrus/infra/emf/readonly/ReadOnlyManager.java52
1 files changed, 36 insertions, 16 deletions
diff --git a/plugins/infra/emf/org.eclipse.papyrus.infra.emf.readonly/src/org/eclipse/papyrus/infra/emf/readonly/ReadOnlyManager.java b/plugins/infra/emf/org.eclipse.papyrus.infra.emf.readonly/src/org/eclipse/papyrus/infra/emf/readonly/ReadOnlyManager.java
index 87b07010a9c..e5bf12d80b9 100644
--- a/plugins/infra/emf/org.eclipse.papyrus.infra.emf.readonly/src/org/eclipse/papyrus/infra/emf/readonly/ReadOnlyManager.java
+++ b/plugins/infra/emf/org.eclipse.papyrus.infra.emf.readonly/src/org/eclipse/papyrus/infra/emf/readonly/ReadOnlyManager.java
@@ -18,10 +18,9 @@ import java.util.LinkedList;
import java.util.List;
import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.edit.domain.EditingDomain;
@@ -47,7 +46,7 @@ public class ReadOnlyManager {
}
static {
- IConfigurationElement[] configElements = Platform.getExtensionRegistry().getConfigurationElementsFor("org.eclipse.papyrus.readonly", "readOnlyHandler");
+ IConfigurationElement[] configElements = Platform.getExtensionRegistry().getConfigurationElementsFor("org.eclipse.papyrus.infra.emf.readonly", "readOnlyHandler");
List<HandlerPriorityPair> handlerPriorityPairs = new LinkedList<HandlerPriorityPair>();
for(IConfigurationElement elem : configElements) {
@@ -59,6 +58,7 @@ public class ReadOnlyManager {
handlerPriorityPairs.add(handlerPriorityPair);
} catch (Exception e) {
+ Activator.log.error(e);
}
}
}
@@ -73,34 +73,46 @@ public class ReadOnlyManager {
}
public static boolean isReadOnly(Resource resource, EditingDomain editingDomain) {
- IFile file = null;
+ URI uri = null;
if(resource != null && resource.getURI() != null) {
- if (resource.getURI().isPlatform()) {
- file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(resource.getURI().toPlatformString(true)));
- }
+
+ uri = resource.getURI();
}
- return isReadOnly(file, editingDomain);
+ return isReadOnly(uri, editingDomain);
+ }
+
+ private static URI getURI(IFile iFile) {
+ return URI.createPlatformResourceURI(iFile.getFullPath().toString(), true);
}
- public static boolean isReadOnly(IFile file, EditingDomain editingDomain) {
- IFile[] files = file != null ? new IFile[]{ file } : new IFile[]{};
- return isReadOnly(files, editingDomain);
+ private static URI[] getURIs(IFile[] iFiles) {
+ URI[] uris = new URI[iFiles.length];
+ int i = 0;
+ for(IFile iFile : iFiles) {
+ uris[i++] = getURI(iFile);
+ }
+ return uris;
}
- public static boolean isReadOnly(IFile[] files, EditingDomain editingDomain) {
+ public static boolean isReadOnly(URI uri, EditingDomain editingDomain) {
+ URI[] uris = uri != null ? new URI[]{ uri } : new URI[]{};
+ return isReadOnly(uris, editingDomain);
+ }
+
+ public static boolean isReadOnly(URI[] uris, EditingDomain editingDomain) {
for(int i = 0; i < orderedHandlersArray.length; i++) {
- if(orderedHandlersArray[i].isReadOnly(files, editingDomain)) {
+ if(orderedHandlersArray[i].isReadOnly(uris, editingDomain)) {
return true;
}
}
return false;
}
- public static boolean enableWrite(IFile[] files, EditingDomain editingDomain) {
+ public static boolean enableWrite(URI[] uris, EditingDomain editingDomain) {
for(int i = 0; i < orderedHandlersArray.length; i++) {
- if(orderedHandlersArray[i].isReadOnly(files, editingDomain)) {
- boolean ok = orderedHandlersArray[i].enableWrite(files, editingDomain);
+ if(orderedHandlersArray[i].isReadOnly(uris, editingDomain)) {
+ boolean ok = orderedHandlersArray[i].enableWrite(uris, editingDomain);
if(!ok) {
return false;
}
@@ -109,4 +121,12 @@ public class ReadOnlyManager {
return true;
}
+
+ public static boolean isReadOnly(IFile[] iFiles, EditingDomain editingDomain) {
+ return isReadOnly(getURIs(iFiles), editingDomain);
+ }
+
+ public static boolean enableWrite(IFile[] iFiles, EditingDomain editingDomain) {
+ return enableWrite(getURIs(iFiles), editingDomain);
+ }
}

Back to the top