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