org.problets.domain.view.code
Class SelectableCodeView

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 org.problets.domain.view.AbstractView
                      extended by org.problets.domain.view.code.BaseCodeView
                          extended by org.problets.domain.view.code.AnimateCodeView
                              extended by org.problets.domain.view.code.InteractCodeView
                                  extended by org.problets.domain.view.code.SelectableCodeView
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.event.ComponentListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible
Direct Known Subclasses:
IndentCodeView, ReorderCodeView

public class SelectableCodeView
extends InteractCodeView
implements java.awt.event.MouseMotionListener

Enables lines of code to be selected individually or in contiguous groups. Serves as the basis for indentable and refactorable code views.

Author:
Matthew Ferreira, Amruth Kumar
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.BaselineResizeBehavior
 
Field Summary
 
Fields inherited from class org.problets.domain.view.code.BaseCodeView
Y_OFFSET
 
Fields inherited from class org.problets.domain.view.AbstractView
canEndStage
 
Fields inherited from class javax.swing.JComponent
TOOL_TIP_TEXT_KEY, 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
SelectableCodeView(CodeModel inCode, StudentModel inStudent, TutorManager inTutorManager, LogModel inLog, java.awt.event.ActionListener inParent)
           
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent evt)
          Handles menu events, performing the exact named actions.
static void main(java.lang.String[] args)
           
 void mouseDragged(java.awt.event.MouseEvent inEvent)
          Record ending coordinates to display selection box as it is drawn.
 void mouseMoved(java.awt.event.MouseEvent inEvent)
           
 void mousePressed(java.awt.event.MouseEvent inEvent)
          Simply record the starting point.
 void mouseReleased(java.awt.event.MouseEvent inEvent)
          The inner set of conditions are simple cases that can occur: 1) The starting and ending points are the same 2) The starting and ending points are similar, as defined by a derived class, and there is no selection 3) There is a selection 4) Default case
 void paintComponent(java.awt.Graphics g)
          A simplified version of CodeView.paintComponent.
 
Methods inherited from class org.problets.domain.view.code.InteractCodeView
mouseClicked, mouseEntered, mouseExited
 
Methods inherited from class org.problets.domain.view.code.AnimateCodeView
resetHighlightedLine, setHighlightedLine
 
Methods inherited from class org.problets.domain.view.code.BaseCodeView
componentHidden, componentMoved, componentResized, componentShown, update
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, 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, paintImmediately, paintImmediately, print, printAll, 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, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, 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, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, 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, getName, 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, 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
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SelectableCodeView

public SelectableCodeView(CodeModel inCode,
                          StudentModel inStudent,
                          TutorManager inTutorManager,
                          LogModel inLog,
                          java.awt.event.ActionListener inParent)
Method Detail

paintComponent

public void paintComponent(java.awt.Graphics g)
A simplified version of CodeView.paintComponent. This version differs in behavior slightly in that it colors the current line to make it easier to know what was selected.

Overrides:
paintComponent in class BaseCodeView

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent evt)
Handles menu events, performing the exact named actions.

Specified by:
actionPerformed in interface java.awt.event.ActionListener
Overrides:
actionPerformed in class BaseCodeView

mousePressed

public void mousePressed(java.awt.event.MouseEvent inEvent)
Simply record the starting point.

Specified by:
mousePressed in interface java.awt.event.MouseListener
Overrides:
mousePressed in class InteractCodeView

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent inEvent)
The inner set of conditions are simple cases that can occur: 1) The starting and ending points are the same 2) The starting and ending points are similar, as defined by a derived class, and there is no selection 3) There is a selection 4) Default case

Specified by:
mouseReleased in interface java.awt.event.MouseListener
Overrides:
mouseReleased in class InteractCodeView

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent inEvent)
Record ending coordinates to display selection box as it is drawn.

Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent inEvent)
Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener

main

public static void main(java.lang.String[] args)