package org.simantics.modeling.scl;\r
\r
+import java.util.Collection;\r
+\r
import org.simantics.Simantics;\r
import org.simantics.db.ReadGraph;\r
import org.simantics.db.RequestProcessorSpecific;\r
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
import gnu.trove.set.hash.THashSet;\r
\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
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
result.add(graph.getURI(module));\r
}\r
}\r
+ \r
+ Collection<Resource> ontologies = Simantics.applySCL("Simantics/SharedOntologies", "getSharedOntologies", graph, Tuple0.INSTANCE);\r
+ for (Resource ontology : ontologies) {\r
+ for(Resource module : ModelingUtils.searchByType(graph, ontology, L0.SCLModule))\r
+ result.add(graph.getURI(module));\r
+ }\r
+ \r
return result;\r
}\r
});\r