public void doExecute(AnActionEvent e, Map<String, Object> _params) { final Project project = e.getData(PlatformDataKeys.PROJECT); assert project != null; FeatureUsageTracker.getInstance().triggerFeatureUsed("goto.model"); // PsiDocumentManager.getInstance(project).commitAllDocuments(); BaseModelModel goToModelModel = new BaseModelModel(project) { public NavigationItem doGetNavigationItem(final SModelReference modelReference) { return new BaseModelItem(modelReference) { public void navigate(boolean requestFocus) { ProjectPane projectPane = ProjectPane.getInstance(project); SModelDescriptor md = SModelRepository.getInstance().getModelDescriptor(modelReference); projectPane.selectModel(md, true); } }; } public SModelReference[] find(IScope scope) { Condition<SModelDescriptor> cond = new Condition<SModelDescriptor>() { public boolean met(SModelDescriptor modelDescriptor) { boolean rightStereotype = SModelStereotype.isUserModel(modelDescriptor) || SModelStereotype.isStubModelStereotype( modelDescriptor.getStereotype()); boolean hasModule = modelDescriptor.getModule() != null; return rightStereotype && hasModule; } }; ConditionalIterable<SModelDescriptor> iter = new ConditionalIterable<SModelDescriptor>(scope.getModelDescriptors(), cond); List<SModelReference> result = new ArrayList<SModelReference>(); for (SModelDescriptor md : iter) { result.add(md.getSModelReference()); } return result.toArray(new SModelReference[result.size()]); } }; ChooseByNamePopup popup = MpsPopupFactory.createPackagePopup(project, goToModelModel); popup.setShowListForEmptyPattern(true); popup.invoke(new NavigateCallback(), ModalityState.current(), true); }