예제 #1
0
    @Override
    public void regenerated(final IZyNodeRealizer realizer) {
      // When the realizer of a node was regenerated, all the information
      // from the debugger disappeared from the node. That means we have
      // to re-add them at this point.

      final IDebugger activeDebugger = m_debugPerspective.getCurrentSelectedDebugger();
      final TargetProcessThread currentThread =
          activeDebugger == null ? null : activeDebugger.getProcessManager().getActiveThread();

      if (currentThread != null) {
        final UnrelocatedAddress fileAddress =
            m_debugPerspective
                .getCurrentSelectedDebugger()
                .memoryToFile(currentThread.getCurrentAddress());

        CDebuggerPainter.updateSingleNodeDebuggerHighlighting(
            m_graph, fileAddress, (NaviNode) realizer.getUserData().getNode());
      }

      final INaviViewNode rawNode = (INaviViewNode) realizer.getUserData().getNode().getRawNode();

      if (rawNode instanceof INaviCodeNode) {
        CBreakpointPainter.paintBreakpoints(
            m_manager, (NaviNode) realizer.getUserData().getNode(), (INaviCodeNode) rawNode);
      } else if (rawNode instanceof INaviFunctionNode) {
        CBreakpointPainter.paintBreakpoints(
            m_manager, (NaviNode) realizer.getUserData().getNode(), (INaviFunctionNode) rawNode);
      }
    }
  /**
   * Creates a new table menu object.
   *
   * @param parent Parent window used for dialogs.
   * @param debugger The debugger used to manipulate the thread.
   * @param thread The clicked thread.
   */
  public CThreadInformationTableMenu(
      final Window parent, final IDebugger debugger, final TargetProcessThread thread) {
    Preconditions.checkNotNull(parent, "IE00648: Parent argument can not be null");

    Preconditions.checkNotNull(thread, "IE00650: Thread argument can not be null");

    if (debugger != null) {
      if (thread.getState() == ThreadState.RUNNING) {
        add(CActionProxy.proxy(new CSuspendThreadAction(thread)));
      } else {
        add(CActionProxy.proxy(new CResumeThreadAction(thread)));
      }
    }
  }