ptolemy.domains.gr.lib
Class FigureInteractor

java.lang.Object
  extended by diva.canvas.interactor.AbstractInteractor
      extended by ptolemy.domains.gr.lib.FigureInteractor
All Implemented Interfaces:
LayerListener, LayerMotionListener, Interactor, java.awt.event.KeyListener, java.util.EventListener

public class FigureInteractor
extends AbstractInteractor
implements java.awt.event.KeyListener

Listen for and handle events on a Diva figure. Because Diva figures are not derived from Java's component class, implementing a key listener directly would be problematic. Instead, this class must be made aware of the ViewScreen2D object that contains the figure, as the ViewScreen2D object will forward all keyboard events that occur on a selected figure to this listener. When initially adding a figure to the view screen, the view screen must call the setViewScreen() method of the figure with a reference to itself as the parameter.

Since:
Ptolemy II 4.0
Version:
$Id: FigureInteractor.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Ismael M. Sarmiento
Accepted Rating:
Red (cxh)
Proposed Rating:
Yellow (ismael)

Field Summary
private  JCanvas _canvas
           
private  AbstractFigure _figure
           
private  boolean _isSelected
           
private  ViewScreen2D _viewScreen
           
private  double dragPointX
           
private  double dragPointY
           
 
Constructor Summary
FigureInteractor(AbstractFigure figure)
          Construct a FigureInteractor for the given figure.
 
Method Summary
 boolean isSelected()
          Return whether or not a figure has been selected in the viewscreen.
 void keyPressed(java.awt.event.KeyEvent e)
          Translate a selected figure according to which arrow key is pressed.
 void keyReleased(java.awt.event.KeyEvent e)
          Included to comply with the KeyListener interface requirement.
 void keyTyped(java.awt.event.KeyEvent e)
          Included to comply with the KeyListener interface requirement.
 void mouseClicked(LayerEvent layerEvent)
          Included to comply with the AbstractListener implementation requirement.
 void mouseDragged(LayerEvent layerEvent)
          Translate the figure to wherever the mouse is dragged.
 void mouseEntered(LayerEvent layerEvent)
          Included to comply with the AbstractListener implementation requirement.
 void mouseExited(LayerEvent layerEvent)
          Included to comply with the AbstractListener implementation requirement.
 void mouseMoved(LayerEvent layerEvent)
          Included to comply with the AbstractListener implementation requirement.
 void mousePressed(LayerEvent layerEvent)
          Update the state of this listener to reflect where on the figure the mouse button was pressed, and change the mouse cursor to show that the figure can now be dragged.
 void mouseReleased(LayerEvent layerEvent)
          Included to comply with the AbstractListener implementation requirement.
 void setSelected(boolean selected)
          Set whether the figure being listened to is selected or not selected.
 void setViewScreen(ViewScreen2D viewScreen)
          Notify this object of the view screen which contains the figure this object is listening to.
 
Methods inherited from class diva.canvas.interactor.AbstractInteractor
accept, getMouseFilter, isConsuming, isEnabled, isMotionEnabled, setConsuming, setEnabled, setMotionEnabled, setMouseFilter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_canvas

private JCanvas _canvas

dragPointX

private double dragPointX

dragPointY

private double dragPointY

_figure

private AbstractFigure _figure

_isSelected

private boolean _isSelected

_viewScreen

private ViewScreen2D _viewScreen
Constructor Detail

FigureInteractor

public FigureInteractor(AbstractFigure figure)
Construct a FigureInteractor for the given figure.

Parameters:
figure - The figure this interactor is to listen and respond to.
Method Detail

isSelected

public boolean isSelected()
Return whether or not a figure has been selected in the viewscreen. A figure is selected by a single mouse click on the figure, and deselected by a single mouse click anywhere outside the figure.

Returns:
A boolean true if the figure is selected, and false otherwise.

keyPressed

public void keyPressed(java.awt.event.KeyEvent e)
Translate a selected figure according to which arrow key is pressed. This will respond only to the arrow keys outside of the number pad.

Specified by:
keyPressed in interface java.awt.event.KeyListener
Parameters:
e - The KeyEvent received.

keyReleased

public void keyReleased(java.awt.event.KeyEvent e)
Included to comply with the KeyListener interface requirement. This method does nothing in its current implementation.

Specified by:
keyReleased in interface java.awt.event.KeyListener
Parameters:
e - The KeyEvent received.

keyTyped

public void keyTyped(java.awt.event.KeyEvent e)
Included to comply with the KeyListener interface requirement. This method does nothing in its current implementation.

Specified by:
keyTyped in interface java.awt.event.KeyListener
Parameters:
e - The KeyEvent received.

mouseClicked

public void mouseClicked(LayerEvent layerEvent)
Included to comply with the AbstractListener implementation requirement. This method does nothing in its current implementation.

Specified by:
mouseClicked in interface LayerListener
Overrides:
mouseClicked in class AbstractInteractor
Parameters:
layerEvent - The LayerEvent received.

mouseDragged

public void mouseDragged(LayerEvent layerEvent)
Translate the figure to wherever the mouse is dragged.

Specified by:
mouseDragged in interface LayerListener
Overrides:
mouseDragged in class AbstractInteractor
Parameters:
layerEvent - The LayerEvent received.

mouseEntered

public void mouseEntered(LayerEvent layerEvent)
Included to comply with the AbstractListener implementation requirement. This method does nothing in its current implementation.

Specified by:
mouseEntered in interface LayerMotionListener
Overrides:
mouseEntered in class AbstractInteractor
Parameters:
layerEvent - The LayerEvent received.

mouseExited

public void mouseExited(LayerEvent layerEvent)
Included to comply with the AbstractListener implementation requirement. This method does nothing in its current implementation.

Specified by:
mouseExited in interface LayerMotionListener
Overrides:
mouseExited in class AbstractInteractor
Parameters:
layerEvent - The LayerEvent received.

mouseMoved

public void mouseMoved(LayerEvent layerEvent)
Included to comply with the AbstractListener implementation requirement. This method does nothing in its current implementation.

Specified by:
mouseMoved in interface LayerMotionListener
Overrides:
mouseMoved in class AbstractInteractor
Parameters:
layerEvent - The LayerEvent received.

mousePressed

public void mousePressed(LayerEvent layerEvent)
Update the state of this listener to reflect where on the figure the mouse button was pressed, and change the mouse cursor to show that the figure can now be dragged.

Specified by:
mousePressed in interface LayerListener
Overrides:
mousePressed in class AbstractInteractor
Parameters:
layerEvent - The LayerEvent received.

mouseReleased

public void mouseReleased(LayerEvent layerEvent)
Included to comply with the AbstractListener implementation requirement. This method does nothing in its current implementation.

Specified by:
mouseReleased in interface LayerListener
Overrides:
mouseReleased in class AbstractInteractor
Parameters:
layerEvent - The LayerEvent received.

setSelected

public void setSelected(boolean selected)
Set whether the figure being listened to is selected or not selected.

Parameters:
selected - true if the figure being listened to is selected, false otherwise.

setViewScreen

public void setViewScreen(ViewScreen2D viewScreen)
Notify this object of the view screen which contains the figure this object is listening to.

Parameters:
viewScreen - The viewScreen containing the figure this interactor is listening to.