import org.simantics.scl.compiler.errors.CompilationError;\r
import org.simantics.scl.compiler.errors.Locations;\r
import org.simantics.structural.stubs.StructuralResource2;\r
+import org.simantics.structural2.utils.StructuralUtils;\r
import org.simantics.ui.workbench.ResourceEditorInput;\r
import org.simantics.utils.logging.TimeLogger;\r
\r
\r
protected Resource resource;\r
protected String currentText;\r
+ protected boolean immutable;\r
protected boolean errorHappened;\r
\r
protected AnnotationModel annotationModel = new AnnotationModel();\r
public Document perform(ReadGraph graph) throws DatabaseException {\r
StructuralResource2 STR = StructuralResource2.getInstance(graph);\r
currentText = graph.getRelatedValue(resource, STR.ComponentTypeScript_code, Bindings.STRING);\r
+ Resource owner = graph.getPossibleObject(resource, STR.ComponentType_hasScript_Inverse);\r
+ immutable = owner != null && StructuralUtils.isImmutable(graph, owner);\r
errorHappened = false;\r
return new Document(currentText != null ? currentText : "");\r
}\r
\r
@Override\r
public boolean isModifiable(Object element) {\r
- return !errorHappened;\r
+ return !errorHappened && !immutable;\r
}\r
\r
@Override\r
public boolean isReadOnly(Object element) {\r
- return errorHappened;\r
+ return errorHappened || immutable;\r
}\r
\r
- @Override\r
- public boolean canSaveDocument(Object element) {\r
- return !errorHappened && !getDocument(element).get().equals(currentText);\r
- }\r
- \r
}\r