edu.rice.cs.drjava.ui
Class RegionsTreePanel<R extends OrderedDocumentRegion>

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by edu.rice.cs.drjava.ui.TabbedPanel
                      extended by edu.rice.cs.drjava.ui.RegionsTreePanel<R>
All Implemented Interfaces:
DropTargetListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible
Direct Known Subclasses:
BookmarksPanel, BreakpointsPanel, FindResultsPanel

public abstract class RegionsTreePanel<R extends OrderedDocumentRegion>
extends TabbedPanel

Panel for displaying regions in a tree sorted by class name and line number. Only accessed from event thread.

Version:
$Id$
See Also:
Serialized Form

Nested Class Summary
protected  class RegionsTreePanel.DefaultState
          Normal state, GUI changes not delayed.
protected static interface RegionsTreePanel.IChangeState
          State pattern for improving performance during rapid updates.
protected  class RegionsTreePanel.RegionMouseAdapter
          Mouse adapter for the region tree.
protected  class RegionsTreePanel.RegionTree
           
protected static class RegionsTreePanel.RegionTreeUserObj<R extends OrderedDocumentRegion>
          Class that is embedded in each leaf node.
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  JPanel _buttonPanel
           
protected  RegionsTreePanel.IChangeState _changeState
           
protected  HashMap<OpenDefinitionsDocument,DefaultMutableTreeNode> _docToTreeNode
          A table mapping each document entered in this panel to its corresponding MutableTreeNode in _regTreeModel.
protected  MainFrame _frame
           
protected  JPanel _leftPane
           
protected  SingleDisplayModel _model
           
protected  RegionManager<R> _regionManager
           
protected  JPopupMenu _regionPopupMenu
           
protected  IdentityHashMap<R,DefaultMutableTreeNode> _regionToTreeNode
          A table mapping each region entered in this panel to its corresponding MutableTreeNode in _regTreeModel.
 JTree _regTree
           
protected  DefaultTreeModel _regTreeModel
           
protected  DefaultMutableTreeNode _rootNode
           
protected  String _title
           
protected  RegionsTreePanel.IChangeState DEFAULT_STATE
          State pattern to improve performance when rapid changes are made.
protected  DefaultTreeCellRenderer dtcr
           
 
Fields inherited from class edu.rice.cs.drjava.ui.TabbedPanel
_closeButton, _closePanel, _displayed, _mainPanel
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
RegionsTreePanel(MainFrame frame, String title, RegionManager<R> regionManager)
          Constructs a new panel to display regions in a tree.
 
Method Summary
protected  void _close()
          Close the panel.
protected  void _remove()
          Remove the selected regions.
protected  boolean _requestFocusInWindow()
          Forces the panel to be updated and requests focus in this panel.
protected  void _updateButtons()
           
 void addRegion(R r)
          Add a region to the tree.
protected  void closeIfEmpty()
          Close the panel if the tree becomes empty.
 void collapseAll()
          Collapse all tree nodes.
 void expandAll()
          Expand all tree nodes.
 void expandTree()
          Expands all nodes in a two-level tree.
protected  ArrayList<R> getSelectedRegions()
          Gets the currently selected regions in the region tree, or an empty array if no regions are selected.
protected  void goToRegion()
          Go to region.
protected  JComponent[] makeButtons()
          Creates the buttons for controlling the regions.
protected  AbstractAction[] makePopupMenuActions()
          Makes the popup menu actions.
protected  RegionsTreePanel.RegionTreeUserObj<R> makeRegionTreeUserObj(R r)
          Factory method to create user objects put in the tree.
protected  void performDefaultAction()
          Action performed when the Enter key is pressed.
 void reload(R startRegion, R endRegion)
           
 void removeRegion(R r)
          Remove a region from this panel.
 boolean requestFocusInWindow()
          Update the JTree.
protected  void updateButtons()
          Update button state and text.
protected  void updatePanel()
          Forces this panel to be completely updated.
 
Methods inherited from class edu.rice.cs.drjava.ui.TabbedPanel
addCloseListener, dragEnter, dragExit, dragOver, drop, dropActionChanged, getName, isDisplayed, setDisplayed, setVisible
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_leftPane

protected JPanel _leftPane

_rootNode

protected DefaultMutableTreeNode _rootNode

_regTreeModel

protected DefaultTreeModel _regTreeModel

_regTree

public JTree _regTree

_title

protected String _title

_regionManager

protected RegionManager<R extends OrderedDocumentRegion> _regionManager

_regionPopupMenu

protected JPopupMenu _regionPopupMenu

_model

protected final SingleDisplayModel _model

_frame

protected final MainFrame _frame

_buttonPanel

protected JPanel _buttonPanel

dtcr

protected DefaultTreeCellRenderer dtcr

DEFAULT_STATE

protected final RegionsTreePanel.IChangeState DEFAULT_STATE
State pattern to improve performance when rapid changes are made.


_changeState

protected RegionsTreePanel.IChangeState _changeState

_docToTreeNode

protected volatile HashMap<OpenDefinitionsDocument,DefaultMutableTreeNode> _docToTreeNode
A table mapping each document entered in this panel to its corresponding MutableTreeNode in _regTreeModel.


_regionToTreeNode

protected volatile IdentityHashMap<R extends OrderedDocumentRegion,DefaultMutableTreeNode> _regionToTreeNode
A table mapping each region entered in this panel to its corresponding MutableTreeNode in _regTreeModel.

Constructor Detail

RegionsTreePanel

public RegionsTreePanel(MainFrame frame,
                        String title,
                        RegionManager<R> regionManager)
Constructs a new panel to display regions in a tree. This is swing view class and hence should only be accessed from the event thread.

Parameters:
frame - the MainFrame
title - title of the pane
Method Detail

_close

protected void _close()
Close the panel.

Overrides:
_close in class TabbedPanel

requestFocusInWindow

public boolean requestFocusInWindow()
Update the JTree.

Overrides:
requestFocusInWindow in class TabbedPanel

updatePanel

protected void updatePanel()
Forces this panel to be completely updated.


_requestFocusInWindow

protected boolean _requestFocusInWindow()
Forces the panel to be updated and requests focus in this panel.


updateButtons

protected void updateButtons()
Update button state and text. _updateButtons should be overridden if additional buttons are added besides "Go To", "Remove" and "Remove All".


_updateButtons

protected void _updateButtons()

expandAll

public void expandAll()
Expand all tree nodes.


collapseAll

public void collapseAll()
Collapse all tree nodes.


_remove

protected void _remove()
Remove the selected regions.


performDefaultAction

protected void performDefaultAction()
Action performed when the Enter key is pressed. Should be overridden.


makeButtons

protected JComponent[] makeButtons()
Creates the buttons for controlling the regions. Should be overridden.


makePopupMenuActions

protected AbstractAction[] makePopupMenuActions()
Makes the popup menu actions. Should be overridden.


getSelectedRegions

protected ArrayList<R> getSelectedRegions()
Gets the currently selected regions in the region tree, or an empty array if no regions are selected.

Returns:
list of selected regions in the tree TODO: change this code to use getMinSelectionRow and getMaxSelectionRow

goToRegion

protected void goToRegion()
Go to region.


addRegion

public void addRegion(R r)
Add a region to the tree. Must be executed in event thread.

Parameters:
r - the region

expandTree

public void expandTree()
Expands all nodes in a two-level tree.


removeRegion

public void removeRegion(R r)
Remove a region from this panel. Must be executed in event thread.

Parameters:
r - the region

closeIfEmpty

protected void closeIfEmpty()
Close the panel if the tree becomes empty.


reload

public void reload(R startRegion,
                   R endRegion)

makeRegionTreeUserObj

protected RegionsTreePanel.RegionTreeUserObj<R> makeRegionTreeUserObj(R r)
Factory method to create user objects put in the tree. If subclasses extend RegionTreeUserObj, they need to override this method.