package jetbrains.mps.debugger.java.runtime.ui.evaluation;
/*Generated by MPS */
import com.intellij.openapi.ui.DialogWrapper;
import jetbrains.mps.debugger.java.runtime.evaluation.EvaluationProvider;
import jetbrains.mps.debugger.java.runtime.state.SessionStopDisposer;
import org.jetbrains.annotations.NotNull;
import com.intellij.openapi.project.Project;
import jetbrains.mps.debugger.java.runtime.evaluation.container.IEvaluationContainer;
import jetbrains.mps.debugger.java.runtime.state.DebugSession;
import jetbrains.mps.ide.project.ProjectHelper;
import java.awt.Dimension;
import com.intellij.openapi.application.ApplicationManager;
import javax.swing.JComponent;
import org.jetbrains.annotations.Nullable;
public abstract class AbstractEvaluationDialog extends DialogWrapper {
protected final EvaluationProvider myProvider;
protected final EvaluationPanel myEvaluationPanel;
private final SessionStopDisposer mySessionStopDisposer;
public AbstractEvaluationDialog(@NotNull Project ideaProject, EvaluationProvider provider, IEvaluationContainer model, String title) {
super(ideaProject);
setTitle(title);
setModal(false);
myProvider = provider;
final DebugSession debugSession = provider.getDebugSession();
myEvaluationPanel = new EvaluationPanel(ProjectHelper.fromIdeaProject(ideaProject), debugSession, model, false);
myEvaluationPanel.setMinimumSize(new Dimension(500, 500));
myEvaluationPanel.setErrorTextListener(new EvaluationUi.IErrorTextListener() {
@Override
public void updateErrorText(String text) {
setErrorText(text);
}
});
mySessionStopDisposer = new SessionStopDisposer(debugSession) {
@Override
public void doDispose() {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
dispose();
}
});
}
};
init();
}
protected JComponent getMainComponent() {
return myEvaluationPanel;
}
@Nullable
@Override
protected JComponent createCenterPanel() {
return myEvaluationPanel;
}
@Override
protected void dispose() {
ApplicationManager.getApplication().assertIsDispatchThread();
super.dispose();
myEvaluationPanel.dispose();
}
@Nullable
@Override
public JComponent getPreferredFocusedComponent() {
return myEvaluationPanel.getPreferredFocusedComponent();
}
}