package jetbrains.mps.lang.smodel.editor;
/*Generated by MPS */
import jetbrains.mps.editor.runtime.descriptor.AbstractEditorBuilder;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.openapi.editor.EditorContext;
import jetbrains.mps.openapi.editor.cells.EditorCell;
import jetbrains.mps.nodeEditor.cellMenu.CompositeSubstituteInfo;
import jetbrains.mps.nodeEditor.cellMenu.BasicCellContext;
import jetbrains.mps.nodeEditor.cellMenu.SubstituteInfoPartExt;
import jetbrains.mps.nodeEditor.cellMenu.SChildSubstituteInfoPartEx;
import jetbrains.mps.lang.smodel.behavior.ModelReferenceExpression__BehaviorDescriptor;
import java.util.List;
import jetbrains.mps.openapi.editor.cells.SubstituteAction;
import jetbrains.mps.nodeEditor.cellMenu.CellContext;
import jetbrains.mps.nodeEditor.cells.EditorCell_Property;
import jetbrains.mps.nodeEditor.cells.ModelAccessor;
import jetbrains.mps.util.EqualUtil;
import jetbrains.mps.openapi.editor.cells.CellActionType;
import jetbrains.mps.editor.runtime.cells.EmptyCellAction;
import jetbrains.mps.openapi.editor.style.Style;
import jetbrains.mps.editor.runtime.style.StyleImpl;
import jetbrains.mps.editor.runtime.style.StyleAttributes;
import jetbrains.mps.nodeEditor.cells.EditorCell_Error;
/*package*/ class ModelReferenceFQName_ComponentBuilder_a extends AbstractEditorBuilder {
@NotNull
private SNode myNode;
public ModelReferenceFQName_ComponentBuilder_a(@NotNull EditorContext context, @NotNull SNode node) {
super(context);
myNode = node;
}
@NotNull
@Override
public SNode getNode() {
return myNode;
}
/*package*/ EditorCell createCell() {
return createAlternation_ho2vdo_a();
}
private EditorCell createAlternation_ho2vdo_a() {
boolean alternationCondition = true;
alternationCondition = nodeCondition_ho2vdo_a0();
EditorCell editorCell = null;
if (alternationCondition) {
editorCell = createReadOnlyModelAccessor_ho2vdo_a0();
} else {
editorCell = createError_ho2vdo_a0();
}
editorCell.setSubstituteInfo(new CompositeSubstituteInfo(getEditorContext(), new BasicCellContext(myNode), new SubstituteInfoPartExt[]{new ModelReferenceFQName_ComponentBuilder_a.ModelReferenceExpression_component_cellMenu_ho2vdo_a0a(), new SChildSubstituteInfoPartEx(editorCell)}));
return editorCell;
}
private boolean nodeCondition_ho2vdo_a0() {
return ModelReferenceExpression__BehaviorDescriptor.getFQName_id7K4mn_BeEzv.invoke(myNode) != null;
}
public static class ModelReferenceExpression_component_cellMenu_ho2vdo_a0a implements SubstituteInfoPartExt {
private ModelReferenceCompletion myComponent;
public ModelReferenceExpression_component_cellMenu_ho2vdo_a0a() {
this.myComponent = new ModelReferenceCompletion();
}
public List<SubstituteAction> createActions(CellContext cellContext, EditorContext editorContext) {
return this.myComponent.createSubstituteActions(cellContext, editorContext);
}
}
private EditorCell createReadOnlyModelAccessor_ho2vdo_a0() {
EditorCell_Property editorCell = EditorCell_Property.create(getEditorContext(), new ModelAccessor() {
public String getText() {
return (String) ModelReferenceExpression__BehaviorDescriptor.getFQName_id7K4mn_BeEzv.invoke(myNode);
}
public void setText(String s) {
}
public boolean isValidText(String s) {
return EqualUtil.equals(s, getText());
}
}, myNode);
editorCell.setAction(CellActionType.DELETE, EmptyCellAction.getInstance());
editorCell.setAction(CellActionType.BACKSPACE, EmptyCellAction.getInstance());
editorCell.setCellId("FQName");
Style style = new StyleImpl();
style.set(StyleAttributes.AUTO_DELETABLE, true);
style.set(StyleAttributes.EDITABLE, true);
editorCell.getStyle().putAll(style);
ModelReferenceDelete.setCellActions(editorCell, myNode, getEditorContext());
return editorCell;
}
private EditorCell createError_ho2vdo_a0() {
EditorCell_Error editorCell = new EditorCell_Error(getEditorContext(), myNode, "<no fqName>");
editorCell.setCellId("NoFQName");
return editorCell;
}
}