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);
}