public static void setBoolean(SNode node, String propertyName, boolean value) { if (node != null) { SNode conceptProperty = (SNode) findProperty(node, propertyName); if (SNodeOperations.isInstanceOf( conceptProperty, "jetbrains.mps.lang.structure.structure.BooleanConceptProperty") && !(value)) { node.removeChild(conceptProperty); } else if (conceptProperty == null && value) { for (SNode cpd : (List<SNode>) SModelSearchUtil.getConceptPropertyDeclarations(node)) { if (SPropertyOperations.getString(cpd, "name").equals(propertyName)) { if (SNodeOperations.isInstanceOf( cpd, "jetbrains.mps.lang.structure.structure.BooleanConceptPropertyDeclaration")) { SNode bcp = SModelOperations.createNewNode( SNodeOperations.getModel(node), null, "jetbrains.mps.lang.structure.structure.BooleanConceptProperty"); SLinkOperations.setTarget( bcp, "conceptPropertyDeclaration", SNodeOperations.cast( cpd, "jetbrains.mps.lang.structure.structure.BooleanConceptPropertyDeclaration"), false); ListSequence.fromList(SLinkOperations.getTargets(node, "conceptProperty", true)) .addElement(bcp); break; } } } } } }
public void test_removeChild() throws Exception { this.addNodeById("8150353254540236423"); this.addNodeById("8150353254540236549"); this.addNodeById("4195712261513743410"); SNode sNode = SNodeOperations.cast( this.getNodeById("8150353254540236424"), "jetbrains.mps.baseLanguage.structure.BlockStatement"); SNode child = SNodeOperations.cast( this.getNodeById("8150353254540236551"), "jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement"); child.getParent().removeChild(child); sNode.addChild("", child); StatCountNodeReadAccessInEditorListener listener = new StatCountNodeReadAccessInEditorListener(sNode); NodeReadAccessCasterInEditor.setCellBuildNodeReadAccessListener(listener); sNode.removeChild(child); this.assertMethod( "public void jetbrains.mps.smodel.SNode.removeChild(org.jetbrains.mps.openapi.model.SNode)", listener.getResults().o1); }