Ejemplo n.º 1
0
 private SModule getModule(AbstractTreeNode selectedNode) {
   EditableSModel contextModel = getContextModel(selectedNode);
   return contextModel != null ? contextModel.getModule() : null;
 }
Ejemplo n.º 2
0
  @Override
  public void actionPerformed(AnActionEvent e) {
    if (myModelDescriptor == null && myNewModel) {
      if (createPerRootModel(e)) return;
    }

    if (myModelDescriptor == null) return;

    if (myConceptFqNameToNodePointerMap.isEmpty()) {
      ImportHelper.addLanguageImport(
          myProject,
          myModelDescriptor.getModule(),
          myModelDescriptor.getModule().getModel(myModelDescriptor.getModelId()),
          null,
          new Runnable() {
            @Override
            public void run() {
              final ProjectView projectView = ProjectView.getInstance(myProject);
              projectView.refresh();
            }
          });
      return;
    }

    final CreateFromTemplateDialog dialog =
        new CreateFromTemplateDialog(myProject) {
          @Override
          protected void doOKAction() {
            final SNodeReference conceptPointer =
                myConceptFqNameToNodePointerMap.get(getKindCombo().getSelectedName());
            myOperationContext
                .getProject()
                .getModelAccess()
                .executeCommand(
                    new Runnable() {
                      @Override
                      public void run() {
                        SNode concept = conceptPointer.resolve(MPSModuleRepository.getInstance());
                        SModel model = myModelDescriptor;
                        SNode newNode = NodeFactoryManager.createNode(concept, null, null, model);
                        SNodeAccessUtil.setProperty(
                            newNode,
                            SNodeUtil.property_INamedConcept_name,
                            getNameField().getText());
                        model.addRootNode(newNode);
                        myModelDescriptor.save();
                      }
                    });
            super.doOKAction();
          }
        };
    dialog.setTitle(MPSBundle.message("create.new.root.dialog.title"));
    myOperationContext
        .getProject()
        .getModelAccess()
        .runReadAction(
            new Runnable() {
              @Override
              public void run() {
                for (Map.Entry<String, SNodeReference> entry :
                    myConceptFqNameToNodePointerMap.entrySet()) {
                  String conceptFqName = entry.getKey();
                  SNode concept = entry.getValue().resolve(MPSModuleRepository.getInstance());
                  dialog
                      .getKindCombo()
                      .addItem(
                          NodePresentationUtil.matchingText(concept),
                          IconManager.getIconForConceptFQName(conceptFqName),
                          conceptFqName);
                }
              }
            });
    dialog.show();
  }