private SModule getModule(AbstractTreeNode selectedNode) { EditableSModel contextModel = getContextModel(selectedNode); return contextModel != null ? contextModel.getModule() : null; }
@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(); }