package jetbrains.mps.lang.editor.diagram.runtime.jetpad.palette.impl; /*Generated by MPS */ import jetbrains.mps.lang.editor.diagram.runtime.jetpad.palette.openapi.PaletteToggleAction; import jetbrains.mps.nodeEditor.cells.jetpad.DiagramCell; import jetbrains.mps.openapi.editor.cells.SubstituteAction; import javax.swing.Icon; import jetbrains.jetpad.projectional.view.ViewTrait; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.ide.icons.IconManager; import jetbrains.mps.ide.icons.IdeIcons; import jetbrains.mps.smodel.ModelAccess; public abstract class AbstractPaletteCreationAction implements PaletteToggleAction { protected DiagramCell myDiagramCell; protected SubstituteAction mySubstituteAction; private Icon myIcon; private String myText; public AbstractPaletteCreationAction(DiagramCell diagramCell, SubstituteAction action) { myDiagramCell = diagramCell; mySubstituteAction = createSubstituteAction(action); init(); } protected abstract SubstituteAction createSubstituteAction(SubstituteAction action); protected abstract ViewTrait getTrait(); private Icon createIcon() { // todo code is duplicated from the diagram cell Icon icon; SNode iconNode = mySubstituteAction.getIconNode(""); if (iconNode != null) { // todo should pass concept here, not concept node icon = ((SNodeOperations.isInstanceOf(iconNode, MetaAdapterFactory.getConcept(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x1103553c5ffL, "jetbrains.mps.lang.structure.structure.AbstractConceptDeclaration")) && !((mySubstituteAction.isReferentPresentation()))) ? IconManager.getIcon(SNodeOperations.asSConcept(((SNode) iconNode))) : IconManager.getIconFor(iconNode)); } else { icon = IdeIcons.DEFAULT_ICON; } return icon; } protected void init() { ModelAccess.instance().runReadAction(new Runnable() { public void run() { myIcon = createIcon(); myText = mySubstituteAction.getMatchingText(""); } }); } public Icon getIcon() { return myIcon; } public String getText() { return myText; } public void onClick() { myDiagramCell.setExternalTrait(getTrait()); } }