package jetbrains.mps.testHybridEditor.diagram.generated.editor;
/*Generated by MPS */
import jetbrains.mps.lang.editor.diagram.runtime.jetpad.palette.openapi.PaletteToggleAction;
import jetbrains.jetpad.projectional.view.ViewTrait;
import jetbrains.mps.nodeEditor.cells.jetpad.DiagramCell;
import org.jetbrains.mps.openapi.model.SNode;
import javax.swing.Icon;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import jetbrains.mps.ide.icons.IconManager;
import jetbrains.jetpad.projectional.view.ViewTraitBuilder;
import jetbrains.jetpad.projectional.view.ViewEvents;
import jetbrains.jetpad.projectional.view.ViewEventHandler;
import jetbrains.jetpad.event.MouseEvent;
import jetbrains.jetpad.projectional.view.View;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SConceptOperations;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations;
import jetbrains.mps.internal.collections.runtime.ListSequence;
public class MyBlockCreationAction implements PaletteToggleAction {
private ViewTrait myTrait;
private DiagramCell myDiagramCell;
private SNode myMetaBlock;
private String myText;
private Icon myIcon;
public MyBlockCreationAction(DiagramCell diagramCell, final SNode block) {
myDiagramCell = diagramCell;
myMetaBlock = block;
myDiagramCell.getContext().getRepository().getModelAccess().runReadAction(new Runnable() {
public void run() {
myText = SPropertyOperations.getString(block, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name"));
myIcon = IconManager.getIconFor(myMetaBlock);
}
});
}
protected ViewTrait getTrait() {
if (myTrait == null) {
myTrait = new ViewTraitBuilder().on(ViewEvents.MOUSE_PRESSED, new ViewEventHandler<MouseEvent>() {
public void handle(View view, final MouseEvent event) {
if (view.viewAt(event.location()) != view) {
return;
}
if (!(view.focused().get())) {
view.container().focusedView().set(view);
}
myDiagramCell.getContext().getRepository().getModelAccess().executeCommand(new Runnable() {
public void run() {
SNode newBlockInstance = SConceptOperations.createNewNode(MetaAdapterFactory.getConcept(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, "jetbrains.mps.testHybridEditor.structure.BlockInstance"));
SLinkOperations.setTarget(newBlockInstance, MetaAdapterFactory.getReferenceLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, 0x20a804e2ec4404a9L, "metaBlock"), myMetaBlock);
SPropertyOperations.set(newBlockInstance, MetaAdapterFactory.getProperty(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, 0x20a804e2ec440489L, "x"), "" + (event.x()));
SPropertyOperations.set(newBlockInstance, MetaAdapterFactory.getProperty(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0x20a804e2ec43f49dL, 0x20a804e2ec44048aL, "y"), "" + (event.y()));
ListSequence.fromList(SLinkOperations.getChildren(((SNode) myDiagramCell.getSNode()), MetaAdapterFactory.getContainmentLink(0x913a1d639e1948faL, 0xad03e33ecccd3814L, 0xa10615a65702ec1L, 0x20a804e2ec43f4b6L, "newBlocks"))).addElement(newBlockInstance);
}
});
event.consume();
}
}).build();
}
return myTrait;
}
public void onClick() {
myDiagramCell.setExternalTrait(getTrait());
}
public Icon getIcon() {
return myIcon;
}
public String getText() {
return myText;
}
}