private void updateSessionData() { List<String> watchExpressions = new ArrayList<String>(); final List<? extends WatchNode> children = myRootNode.getAllChildren(); if (children != null) { for (WatchNode child : children) { watchExpressions.add(child.getExpression()); } } mySessionData.setWatchExpressions(ArrayUtil.toStringArray(watchExpressions)); }
public XWatchesViewImpl( @NotNull final XDebugSession session, final @NotNull XDebugSessionData sessionData) { mySession = session; mySessionData = sessionData; myTreePanel = new XDebuggerTreePanel( session.getProject(), session.getDebugProcess().getEditorsProvider(), this, null, XDebuggerActions.WATCHES_TREE_POPUP_GROUP, ((XDebugSessionImpl) session).getValueMarkers()); ActionManager actionManager = ActionManager.getInstance(); XDebuggerTree tree = myTreePanel.getTree(); actionManager .getAction(XDebuggerActions.XNEW_WATCH) .registerCustomShortcutSet(CommonShortcuts.INSERT, tree); actionManager .getAction(XDebuggerActions.XREMOVE_WATCH) .registerCustomShortcutSet(CommonShortcuts.DELETE, tree); CustomShortcutSet f2Shortcut = new CustomShortcutSet(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0)); actionManager .getAction(XDebuggerActions.XEDIT_WATCH) .registerCustomShortcutSet(f2Shortcut, tree); DnDManager.getInstance().registerTarget(this, tree); myRootNode = new WatchesRootNode(tree, session, this, sessionData.getWatchExpressions()); tree.setRoot(myRootNode, false); final ToolbarDecorator decorator = ToolbarDecorator.createDecorator(myTreePanel.getTree()).disableUpDownActions(); decorator.setAddAction( new AnActionButtonRunnable() { @Override public void run(AnActionButton button) { executeAction(XDebuggerActions.XNEW_WATCH); } }); decorator.setRemoveAction( new AnActionButtonRunnable() { @Override public void run(AnActionButton button) { executeAction(XDebuggerActions.XREMOVE_WATCH); } }); CustomLineBorder border = new CustomLineBorder( CaptionPanel.CNT_ACTIVE_BORDER_COLOR, SystemInfo.isMac ? 1 : 0, 0, SystemInfo.isMac ? 0 : 1, 0); decorator.setToolbarBorder(border); myDecoratedPanel = decorator.createPanel(); myDecoratedPanel.setBorder(null); myTreePanel.getTree().getEmptyText().setText(XDebuggerBundle.message("debugger.no.watches")); }