package jetbrains.mps.debugger.java.runtime.ui.breakpoints; /*Generated by MPS */ import com.intellij.openapi.ui.DialogWrapper; import jetbrains.mps.workbench.goTo.ui.ChooseByNamePanel; import com.intellij.ide.util.gotoByName.ChooseByNameModel; import com.intellij.openapi.project.Project; import java.awt.HeadlessException; import jetbrains.mps.ide.project.ProjectHelper; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.workbench.goTo.ui.MpsPopupFactory; import com.intellij.ide.util.gotoByName.ChooseByNamePopupComponent; import com.intellij.openapi.application.ModalityState; import java.awt.Dimension; import org.jetbrains.annotations.Nullable; import javax.swing.JComponent; import org.jetbrains.mps.openapi.persistence.NavigationParticipant; public abstract class StubsClassChooserDialog extends DialogWrapper { private final ChooseByNamePanel myPanel; private String mySelected; private final ChooseByNameModel myModel; public StubsClassChooserDialog(Project project, String text) throws HeadlessException { super(project); setTitle(text); myModel = new ChooseFromStubsByNameModel(ProjectHelper.toMPSProject(project)) { @Override protected boolean isValid(SNode node) { return StubsClassChooserDialog.this.isValid(node); } @Override public boolean willOpenEditor() { return false; } }; myPanel = MpsPopupFactory.createPanelForNode(project, myModel, false); myPanel.invoke(new ChooseByNamePopupComponent.Callback() { @Override public void elementChosen(Object element) { doOKAction(); } }, ModalityState.NON_MODAL, false); myPanel.getPanel().setMinimumSize(new Dimension(600, 300)); init(); } @Nullable @Override protected JComponent createCenterPanel() { return myPanel.getPanel(); } public String getSelected() { return mySelected; } @Override protected void doOKAction() { NavigationParticipant.NavigationTarget chosenElement = (NavigationParticipant.NavigationTarget) myPanel.getChosenElement(); if (chosenElement != null) { mySelected = myModel.getFullName(chosenElement); } super.doOKAction(); } protected abstract boolean isValid(SNode node); }