public class DefaultCanvasController extends java.lang.Object implements CanvasControllerIF
MMEvent
s. It does so by implementing the Java
Mouse[Motion]Listener
, KeyListener
and
ComponentListener
(bundled together in CanvasControllerIF
)
and making them call controlAction()
,
which walks through the potential targets
(CanvasObject
s
or MMHandler
)
and calls for each MMObject.doAction()
until the event reaches its target.MMCanvas
, for which it catches and
delegates the events.SELECTION_RENDER_UPDATE_PAUSE
Constructor and Description |
---|
DefaultCanvasController()
Creates a new instance of a
DefaultCanvasController without specifying
the MMCanvas for which it shall work. |
DefaultCanvasController(MMCanvas aCanvas)
Creates a new instance of a
DefaultCanvasController that explicitly
shall work for the traversed aCanvas . |
Modifier and Type | Method and Description |
---|---|
void |
addPreSelectedObject(MMCanvasObjectIF object) |
java.lang.Object |
clone() |
void |
controlAction(MMEvent event)
This is really the central method of any controller:
It checks which handler (global or object related) must receive the event
and calls the handler's doAction()-method
The sequence of delivering the event is the following:
deliver event to active object(with fitting handler), if there is any
check for objects that are selected by a mousePressedEvent and store
them.
|
protected boolean |
distributeEvent(MMEvent event)
called by
controlAction(net.mumie.mathletfactory.action.MMEvent) , walks through the list of
preselected Objects and invokes
[@link net.mumie.mathletfactory.mmobject.MMObjectIF#doAction doAction()}
in them. |
void |
finishAction() |
void |
flashObject(MMCanvasObjectIF object)
The flash methods should be used to attract interest by the user.
|
void |
flashObjects(MMCanvasObjectIF[] objects) |
void |
flashObjects(MMCanvasObjectIF[] objects,
long duration) |
void |
flashObjects(MMCanvasObjectIF[] objects,
long duration,
int flashNum) |
MMCanvas |
getCanvas()
Returns the
MMCanvas for which this DefaultCanvasController
is dedicted to work. |
int |
getLastClickedX() |
int |
getLastClickedY() |
int |
getLastPressedX() |
int |
getLastPressedY() |
MMCanvasObjectIF |
getPreselectedObject(int index)
Which Objects have been selected by the user?
|
int |
getPreselectedObjectCount() |
MMCanvasObjectIF |
getSelectedObject() |
MMCanvasObjectIF[] |
getSelectedObjects() |
boolean |
isEnabled() |
void |
keyPressed(java.awt.event.KeyEvent ke)
This method extracts the keycode and the modifier of the KeyEvent by
using the methods getKeyCode() and getModifiers() from KeyEvent.
|
void |
keyReleased(java.awt.event.KeyEvent ke) |
void |
keyTyped(java.awt.event.KeyEvent ke)
This method has an empty implementation in the moment.
|
void |
mouseClicked(java.awt.event.MouseEvent me)
This method only will store the x,y position of the MouseEvent.
|
void |
mouseDragged(java.awt.event.MouseEvent me)
When a mouseMotionEvent occurs this method is invoked and will initialize
the @see DefautlController's internal @see MMEvent and finally call the
controller's @see controlAction(MMEvent event) method.
|
void |
mouseEntered(java.awt.event.MouseEvent me)
When the mouse enters the canvas, the component of the canvas that is used
to draw onto will request for KeyEvents also.
|
void |
mouseExited(java.awt.event.MouseEvent me)
This method is an empty implementation in the moment.
|
void |
mouseMoved(java.awt.event.MouseEvent me)
This method has an empty implementation in the moment.
|
void |
mousePressed(java.awt.event.MouseEvent me)
When a mousePressend event occurs, this method is invoked and will initialize
the DefaultCanvasController's internal
MMEvent and finally call the
controller's controlAction(net.mumie.mathletfactory.action.MMEvent) method. |
void |
mouseReleased(java.awt.event.MouseEvent me)
When a mouseReleased event occurs the action process due to the current
MMEvent will be finished.
|
void |
mouseWheelMoved(java.awt.event.MouseWheelEvent mwe) |
protected void |
resetHandlerAndInternalData()
Restores state variables (current key-code and modifiers) and calls
MMHandler.finish() . |
void |
setCanvas(MMCanvas aCanvas)
Makes this
MMCanvasControllerIF be the
MouseListener , MouseMotionListener
and KeyListener of the drawing board of aCanvas . |
void |
setEnabled(boolean aFlag) |
void |
setSelectedObject(MMCanvasObjectIF object)
Sets the "focus" on the given CanvasObject, which results in a visual
mark on the Canvas and a higher priority in the Queue of event-targets.
|
public DefaultCanvasController()
DefaultCanvasController
without specifying
the MMCanvas
for which it shall work. This
new instance can be used in the
setController
method of a MMCanvas
.public DefaultCanvasController(MMCanvas aCanvas)
DefaultCanvasController
that explicitly
shall work for the traversed aCanvas
.
setController
of MMCanvas
to register this DefaultCanvasController
as
the controller used by aCanvas
.MMCanvas
public void setEnabled(boolean aFlag)
setEnabled
in interface CanvasControllerIF
public boolean isEnabled()
isEnabled
in interface CanvasControllerIF
public void setCanvas(MMCanvas aCanvas)
CanvasControllerIF
MMCanvasControllerIF
be the
MouseListener
, MouseMotionListener
and KeyListener
of the drawing board of aCanvas
.
public
it is not
really intended for public use. The call of this method should only occur from
within the
setController
method from the MMCanvas
.setCanvas
in interface CanvasControllerIF
CanvasControllerIF.setCanvas(net.mumie.mathletfactory.display.MMCanvas)
MMCanvas
will point to
aCanvas
after the method call.public MMCanvas getCanvas()
MMCanvas
for which this DefaultCanvasController
is dedicted to work.getCanvas
in interface CanvasControllerIF
CanvasControllerIF.getCanvas()
public MMCanvasObjectIF getPreselectedObject(int index)
public int getPreselectedObjectCount()
getPreselectedObjectCount
in interface CanvasControllerIF
public void addPreSelectedObject(MMCanvasObjectIF object)
addPreSelectedObject
in interface CanvasControllerIF
public void setSelectedObject(MMCanvasObjectIF object)
setSelectedObject
in interface CanvasControllerIF
public MMCanvasObjectIF getSelectedObject()
getSelectedObject
in interface CanvasControllerIF
public MMCanvasObjectIF[] getSelectedObjects()
public void flashObject(MMCanvasObjectIF object)
CanvasControllerIF
An empty implementation could be used as a first step.
flashObject
in interface CanvasControllerIF
public void flashObjects(MMCanvasObjectIF[] objects)
flashObjects
in interface CanvasControllerIF
public void flashObjects(MMCanvasObjectIF[] objects, long duration)
flashObjects
in interface CanvasControllerIF
public void flashObjects(MMCanvasObjectIF[] objects, long duration, int flashNum)
flashObjects
in interface CanvasControllerIF
protected boolean distributeEvent(MMEvent event)
controlAction(net.mumie.mathletfactory.action.MMEvent)
, walks through the list of
preselected Objects and invokes
[@link net.mumie.mathletfactory.mmobject.MMObjectIF#doAction doAction()}
in them.public void controlAction(MMEvent event)
controlAction
in interface CanvasControllerIF
public void finishAction()
finishAction
in interface CanvasControllerIF
protected void resetHandlerAndInternalData()
MMHandler.finish()
.public int getLastClickedX()
getLastClickedX
in interface CanvasControllerIF
public int getLastClickedY()
getLastClickedY
in interface CanvasControllerIF
public int getLastPressedX()
getLastPressedX
in interface CanvasControllerIF
public int getLastPressedY()
getLastPressedY
in interface CanvasControllerIF
public void mouseClicked(java.awt.event.MouseEvent me)
mouseClicked
in interface java.awt.event.MouseListener
public void mouseEntered(java.awt.event.MouseEvent me)
mouseDragged(java.awt.event.MouseEvent)
for scaling of a scene.mouseEntered
in interface java.awt.event.MouseListener
public void mouseExited(java.awt.event.MouseEvent me)
mouseExited
in interface java.awt.event.MouseListener
public void mousePressed(java.awt.event.MouseEvent me)
MMEvent
and finally call the
controller's controlAction(net.mumie.mathletfactory.action.MMEvent)
method.mousePressed
in interface java.awt.event.MouseListener
public void mouseReleased(java.awt.event.MouseEvent me)
mouseReleased
in interface java.awt.event.MouseListener
public void mouseDragged(java.awt.event.MouseEvent me)
mouseDragged
in interface java.awt.event.MouseMotionListener
public void mouseMoved(java.awt.event.MouseEvent me)
mouseMoved
in interface java.awt.event.MouseMotionListener
public void mouseWheelMoved(java.awt.event.MouseWheelEvent mwe)
mouseWheelMoved
in interface java.awt.event.MouseWheelListener
public void keyPressed(java.awt.event.KeyEvent ke)
MMEvent
and by that way may be used for further processing.controlAction()
method will not be called automatically: That means, that a single
KeyEvent will not start any action in our applets.keyPressed
in interface java.awt.event.KeyListener
public void keyReleased(java.awt.event.KeyEvent ke)
keyReleased
in interface java.awt.event.KeyListener
public void keyTyped(java.awt.event.KeyEvent ke)
keyTyped
in interface java.awt.event.KeyListener
public java.lang.Object clone()
clone
in interface CanvasControllerIF
clone
in class java.lang.Object
Further documentation and examples can be found under www.mathletfactory.de.