Ejemplo n.º 1
0
    @Override
    public void actionPerformed(AnActionEvent e) {
      final SNode[] created = new SNode[1];

      final Runnable r1 =
          new Runnable() {
            @Override
            public void run() {
              created[0] =
                  myDescriptor.createNode(
                      myBaseNode.resolve(MPSModuleRepository.getInstance()), myConcept);
            }
          };

      final Runnable r2 =
          new Runnable() {
            @Override
            public void run() {
              String mainPack =
                  SNodeAccessUtil.getProperty(
                      myBaseNode.resolve(MPSModuleRepository.getInstance()),
                      jetbrains.mps.smodel.SNode.PACK);
              SNodeAccessUtil.setProperty(created[0], jetbrains.mps.smodel.SNode.PACK, mainPack);
              myCallback.changeNode(created[0]);
            }
          };

      if (myDescriptor.commandOnCreate()) {
        ModelAccess.instance()
            .runWriteActionInCommand(
                new Runnable() {
                  @Override
                  public void run() {
                    r1.run();
                  }
                });
      } else {
        r1.run();
      }
      if (created[0] == null) return;
      ModelAccess.instance().runWriteActionInCommand(r2);
    }