package jetbrains.mps.debugger.java.runtime.ui.evaluation;
/*Generated by MPS */
import jetbrains.mps.debugger.java.runtime.state.SessionStopDisposer;
import jetbrains.mps.debugger.java.runtime.evaluation.EvaluationProvider;
import jetbrains.mps.workbench.action.BaseGroup;
import com.intellij.openapi.actionSystem.ActionManager;
import jetbrains.mps.debugger.java.runtime.evaluation.container.IEvaluationContainer;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.actionSystem.ActionToolbar;
import com.intellij.openapi.actionSystem.ActionPlaces;
import java.awt.BorderLayout;
import com.intellij.ui.components.JBScrollPane;
public class WatchesPanel extends EvaluationUi {
private final SessionStopDisposer mySessionStopDisposer;
private final EvaluationProvider myProvider;
public WatchesPanel(final EvaluationProvider provider) {
super(provider.getDebugSession(), true);
myTree.setActionGroup(((BaseGroup) ActionManager.getInstance().getAction("jetbrains.mps.debugger.java.runtime.ui.actions.WatchesTreeActions_ActionGroup")));
myProvider = provider;
myProvider.addWatchListener(new EvaluationProvider.WatchAdapter() {
@Override
public void watchAdded(final IEvaluationContainer model) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
myTree.addModel(model);
myTree.rebuildEvaluationTreeNowIfNotDisposed();
evaluate(model);
}
});
}
@Override
public void watchUpdated(final IEvaluationContainer model) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
evaluate(model);
}
});
}
@Override
public void watchRemoved(final IEvaluationContainer model) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
myTree.removeModel(model);
myTree.rebuildEvaluationTreeNowIfNotDisposed();
}
});
}
});
mySessionStopDisposer = new SessionStopDisposer(myDebugSession) {
@Override
public void doDispose() {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
WatchesPanel.this.dispose();
}
});
}
};
ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, ((BaseGroup) ActionManager.getInstance().getAction("jetbrains.mps.debugger.java.runtime.ui.actions.WatchesToolbarActions_ActionGroup")), false);
toolbar.setLayoutPolicy(ActionToolbar.WRAP_LAYOUT_POLICY);
add(toolbar.getComponent(), BorderLayout.WEST);
add(new JBScrollPane(myTree), BorderLayout.CENTER);
}
@Override
protected void update() {
for (IEvaluationContainer model : myProvider.getWatches()) {
model.updateState();
}
}
@Override
public void evaluate() {
for (IEvaluationContainer model : myProvider.getWatches()) {
evaluate(model);
}
}
}