]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java
Added some enforcement of immutability to structural user component UI's.
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / scl / GraphModuleSourceRepository.java
index a615634118fc2a586bfe4bae0e15c1ae4dd9b9b0..3edc7bfeae28dd2a696dc9c3bd1d9d984c00de5d 100644 (file)
@@ -19,6 +19,7 @@ import org.simantics.scl.compiler.source.ModuleSource;
 import org.simantics.scl.compiler.source.StringModuleSource;\r
 import org.simantics.scl.compiler.source.repository.ModuleSourceRepository;\r
 import org.simantics.scl.runtime.SCLContext;\r
+import org.simantics.structural2.utils.StructuralUtils;\r
 import org.simantics.scl.runtime.tuple.Tuple0;\r
 \r
 import gnu.trove.procedure.TObjectProcedure;\r
@@ -95,13 +96,16 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository {
     \r
     public static class GraphModuleSource extends StringModuleSource {\r
 \r
-        public GraphModuleSource(String moduleName, ClassLoader classLoader, String moduleText) {\r
+        private final boolean immutable;\r
+\r
+        public GraphModuleSource(String moduleName, ClassLoader classLoader, String moduleText, boolean immutable) {\r
             super(moduleName, classLoader, moduleText);\r
+            this.immutable = immutable;\r
         }\r
         \r
         @Override\r
         public boolean isUpdateable() {\r
-            return true;\r
+            return !immutable;\r
         }\r
         \r
         @Override\r
@@ -128,7 +132,8 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository {
             if(!graph.isInstanceOf(moduleResource, L0.SCLModule))\r
                 return null;\r
             String text = graph.getRelatedValue(moduleResource, L0.SCLModule_definition);\r
-            return new GraphModuleSource(parameter, getClass().getClassLoader(), text);\r
+            boolean immutable = StructuralUtils.isImmutable(graph, moduleResource);\r
+            return new GraphModuleSource(parameter, getClass().getClassLoader(), text, immutable);\r
         }\r
     }\r
     \r