com.bluemarsh.jswat.view
Class SourceViewPopup

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JPopupMenu
                          |
                          +--com.bluemarsh.jswat.view.SourceViewPopup
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.event.ActionListener, java.util.EventListener, java.awt.image.ImageObserver, java.awt.MenuContainer, javax.swing.MenuElement, java.awt.event.MouseListener, java.io.Serializable

public class SourceViewPopup
extends javax.swing.JPopupMenu
implements java.awt.event.ActionListener, java.awt.event.MouseListener

Class SourceViewPopup defines a subclass of JPopupMenu that works specifically for the source view. It constructs a context-sensitive menu based on the existence of breakpoints at the given line of the source view. Like a plain JPopupMenu, you must add this popup as a child to the view area in question. It also must be added as a mouse listener to the view area component.

Author:
Nathan Fiedler
See Also:
Serialized Form

Inner classes inherited from class javax.swing.JPopupMenu
javax.swing.JPopupMenu.AccessibleJPopupMenu, javax.swing.JPopupMenu.Separator
 
Inner classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Inner classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Inner classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent
 
Field Summary
protected  java.util.List classLines
          List of class definition objects.
protected  Breakpoint lastClickedBreakpoint
          If non-null, breakpoint user last right-clicked on.
protected  java.lang.String lastClickedClass
          If non-null, name of class user last right-clicked within.
protected  int lastClickedLine
          If non-zero, the line the user last right-clicked on.
protected  java.util.Hashtable menuItemTable
          Hashtable of menu items keyed by their names (eg.
 
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
SourceViewPopup(java.lang.String label)
          Create a SourceViewPopup with the specified title.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent ae)
          One of the menu items we're listening to was activated.
protected  javax.swing.JMenuItem createMenuItem(java.lang.String cmd)
          This is the hook through which all menu items are created.
protected  java.lang.String findClassForLine(int line)
          Finds the class defined at this line number.
 void mouseClicked(java.awt.event.MouseEvent e)
          Invoked when the mouse has been clicked on a component.
 void mouseEntered(java.awt.event.MouseEvent e)
          Invoked when the mouse enters a component.
 void mouseExited(java.awt.event.MouseEvent e)
          Invoked when the mouse exits a component.
 void mousePressed(java.awt.event.MouseEvent e)
          Invoked when a mouse button has been pressed on a component.
 void mouseReleased(java.awt.event.MouseEvent e)
          Invoked when a mouse button has been released on a component.
protected  void setMenuItemsForEvent(java.awt.event.MouseEvent e, Session session)
          Set the popup menu items enabled or disabled depending on which line of the source view area the mouse button has been pressed.
protected  void showPopup(java.awt.event.MouseEvent e)
          Decide whether or not to show the popup menu.
 
Methods inherited from class javax.swing.JPopupMenu
add, add, add, addPopupMenuListener, addSeparator, createActionChangeListener, createActionComponent, firePopupMenuCanceled, firePopupMenuWillBecomeInvisible, firePopupMenuWillBecomeVisible, getAccessibleContext, getComponent, getComponentAtIndex, getComponentIndex, getDefaultLightWeightPopupEnabled, getInvoker, getLabel, getMargin, getSelectionModel, getSubElements, getUI, getUIClassID, insert, insert, isBorderPainted, isLightWeightPopupEnabled, isPopupTrigger, isVisible, menuSelectionChanged, pack, paintBorder, paramString, processKeyEvent, processMouseEvent, remove, removePopupMenuListener, setBorderPainted, setDefaultLightWeightPopupEnabled, setInvoker, setLabel, setLightWeightPopupEnabled, setLocation, setPopupSize, setPopupSize, setSelected, setSelectionModel, setUI, setVisible, show, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getVerifyInputWhenFocusTarget, getVisibleRect, getWidth, getX, getY, grabFocus, hasFocus, hide, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processFocusEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVerifyInputWhenFocusTarget, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getLayout, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeAll, removeContainerListener, setLayout, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, imageUpdate, inside, isDisplayable, isEnabled, isLightweight, isShowing, isValid, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setLocale, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

menuItemTable

protected java.util.Hashtable menuItemTable
Hashtable of menu items keyed by their names (eg. 'add').

classLines

protected java.util.List classLines
List of class definition objects.

lastClickedLine

protected int lastClickedLine
If non-zero, the line the user last right-clicked on.

lastClickedClass

protected java.lang.String lastClickedClass
If non-null, name of class user last right-clicked within.

lastClickedBreakpoint

protected Breakpoint lastClickedBreakpoint
If non-null, breakpoint user last right-clicked on.
Constructor Detail

SourceViewPopup

public SourceViewPopup(java.lang.String label)
Create a SourceViewPopup with the specified title. The file is used to map the filename to a class name.
Parameters:
label - label for the popup menu.
Method Detail

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent ae)
One of the menu items we're listening to was activated.
Specified by:
actionPerformed in interface java.awt.event.ActionListener
Parameters:
ae - action event.

createMenuItem

protected javax.swing.JMenuItem createMenuItem(java.lang.String cmd)
This is the hook through which all menu items are created. Using the cmd string it finds the menu item label in the resource bundle.
Parameters:
cmd - name for this menu item, used to get the label
Returns:
new menu item

findClassForLine

protected java.lang.String findClassForLine(int line)
Finds the class defined at this line number.
Parameters:
line - Line number.
Returns:
Class name, or null if line not in a class.

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
Invoked when the mouse has been clicked on a component.
Specified by:
mouseClicked in interface java.awt.event.MouseListener
Parameters:
e - Mouse event.

mousePressed

public void mousePressed(java.awt.event.MouseEvent e)
Invoked when a mouse button has been pressed on a component. We use this opportunity to show the popup menu.
Specified by:
mousePressed in interface java.awt.event.MouseListener
Parameters:
e - Mouse event.

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent e)
Invoked when a mouse button has been released on a component. We use this opportunity to show the popup menu.
Specified by:
mouseReleased in interface java.awt.event.MouseListener
Parameters:
e - Mouse event.

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent e)
Invoked when the mouse enters a component.
Specified by:
mouseEntered in interface java.awt.event.MouseListener
Parameters:
e - Mouse event.

mouseExited

public void mouseExited(java.awt.event.MouseEvent e)
Invoked when the mouse exits a component.
Specified by:
mouseExited in interface java.awt.event.MouseListener
Parameters:
e - Mouse event.

setMenuItemsForEvent

protected void setMenuItemsForEvent(java.awt.event.MouseEvent e,
                                    Session session)
Set the popup menu items enabled or disabled depending on which line of the source view area the mouse button has been pressed. The Session must be active when this method is called or exceptions will be thrown.
Parameters:
e - Mouse event.
session - Session to operate on.

showPopup

protected void showPopup(java.awt.event.MouseEvent e)
Decide whether or not to show the popup menu. If the popup should be shown, determine which line the user clicked on and find any breakpoints at that line. If none found, show the "Add breakpoint" menu. If there's a breakpoint, show a popup that provides breakpoint management features.

If the session is inactive, display a menu with a single "no session" menu item that does nothing.

Parameters:
e - Mouse event.