FeaturesPluginsDocs & SupportCommunityPartners

Tree Tables Design View

NetBeans 3.4


Version:
1.0

Author:
Jan Jancura <jan.jancura@sun.com>

Document History:
[15/3/2002] : version 1.0 : First Version
 

Contents:

1. Introduction
2. Three Table Support in Debugger
3. Threads View Redesign
4. Call Stack View Redesign
5. Locals View Redesign
 

Introduction

With NetBeans 3.4, the views shown in the Debugger Window will switch to using a table or tree-table component to represent their data, rather than using a tree component. We would like to focus Threads, Call Stack and Locals View on the "current" context too. So Threads View should show all threads of current session only (without locales and call stacks), Call Stack View should contain call stack of current thread only (without locals) and Locals View should contain locales of current call stack frame only.

This document describes main changes planned in the code supporting this new model.

 

Tree Table Support in Debugger

 

 

We will implement some basic generic support for Tree Table Views in Debugger Core module. This class should simplify implementation of Debugger Views. Each tree table Debugger View should be defined by:

  • icon
  • display name
  • set of columns
  • and root node

Root node will define content and behavior of tree view. Column should be represented by some instance of Node.Property class (or some subclass). So column (Property class) is defined by:

  • display name of column
  • column identifier (String)
  • isDefault property (if this column should be visible by default)
  • class name or CellEditor & CellRenderer (to specify look&feel of column)

A tree table Debugger View implementation can extend this support class (TreeTableExplorerViewSupport) and define special set of columns.

 

Threads View Redesign

 

 

Current Threads View contains threads of all sessions together with all breakpoint groups, call stacks and  locals. NetBeans 3.4 Threads View will show threads (and thread groups) of current session only. No stacks, no locals. So the new ThreadsRootNode must listen on:

  • curret session (debugger): property PROP_CURRENT_THREAD of CoreDebugger
  • root of threads of current debugger instance (AbstractDebugger). So if the current debugger implements ThreadsProducer we should call getThreadsRoot () for it and listen on PROP_THREADS on changes of current set threads.

If a current session is changed we should "forget" old threads root instance and remove listener from it.

 

Call Stack View Redesign

 

 

Current Call Stack View contains call stack frames and locales. NetBeans 3.4 Call Stack View will show call stack frames of current thread only.

The new CallStackRootNode must listen on:

  • curret thread: property PROP_CURRENT_THREAD of CoreDebugger
  • changes of current call stack: If the current thread implements CallStackRoot CallStackRootNode should listen on PROP_CALL_STACK on changes of current call stack.

If a current thread is changed CallStackRootNode should "forget" old thread instance and remove listener from it.

 

Locals View Redesign

 

 

Current Locals View contains locals of current thread. NetBeans 3.4 Locals View will show locals of current call stack line (frame) only.

The new LocalsRootNode must listen on:

  • curret thread: property PROP_CURRENT_THREAD of CoreDebugger
  • current call stack line (frame): if current thread (AbstractThread) implements CallStackRoot LocalsRootNode should listen on property PROP_CURRENT_CALL_STACK_FRAME_INDEX of it.
  • current set of variables (locals) of current call stack line (frame): if current location (call stack frame) implements VariablesProducer LocalsRootNode should listen on property PROP_VARIABLES  of it.

If a current thread is changed LocalsRootNode should "forget" old thread instance and old location instance and remove listener from them. If a current call stack frame (location) is changed LocalsRootNode should "forget" old ocation instance and remove listener from it.

 


Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by