Revision: 556
Author: allain.lalonde
Date: Fri Jul 24 07:16:41 2009
Log: Refactored PCanvas code into more manageable private methods. Hooray
for cleaner code.
http://code.google.com/p/piccolo2d/source/detail?r=556
Modified:
/piccolo2d.java/trunk/core/src/main/java/edu/umd/cs/piccolo/PCanvas.java
=======================================
---
/piccolo2d.java/trunk/core/src/main/java/edu/umd/cs/piccolo/PCanvas.java
Thu Jul 23 18:04:01 2009
+++
/piccolo2d.java/trunk/core/src/main/java/edu/umd/cs/piccolo/PCanvas.java
Fri Jul 24 07:16:41 2009
@@ -72,7 +72,8 @@
public class PCanvas extends JComponent implements PComponent {
/**
- * @deprecated this is a typo and clients should change their code to
reflect the correct spelling
+ * @deprecated this is a typo and clients should change their code to
+ * reflect the correct spelling
*/
public static final String INTERATING_CHANGED_NOTIFICATION
= "INTERATING_CHANGED_NOTIFICATION";
public static final String INTERACTING_CHANGED_NOTIFICATION
= "INTERACTING_CHANGED_NOTIFICATION";
@@ -385,68 +386,48 @@
protected void installInputSources() {
if (mouseListener == null) {
mouseListener = new MouseListener() {
+ /** {...@inheritdoc} */
public void mouseClicked(MouseEvent e) {
sendInputEventToInputManager(e,
MouseEvent.MOUSE_CLICKED);
}
+ /** {...@inheritdoc} */
public void mouseEntered(MouseEvent e) {
MouseEvent simulated = null;
- if ((e.getModifiersEx() &
(InputEvent.BUTTON1_DOWN_MASK | InputEvent.BUTTON2_DOWN_MASK |
InputEvent.BUTTON3_DOWN_MASK)) != 0) {
- simulated = new MouseEvent((Component)
e.getSource(), MouseEvent.MOUSE_DRAGGED, e.getWhen(), e
- .getModifiers(), e.getX(), e.getY(),
e.getClickCount(), e.isPopupTrigger(), e
- .getButton());
+ if (isAnyButtonDown(e)) {
+ simulated = buildRetypedMouseEvent(e,
MouseEvent.MOUSE_DRAGGED);
}
else {
- simulated = new MouseEvent((Component)
e.getSource(), MouseEvent.MOUSE_MOVED, e.getWhen(), e
- .getModifiers(), e.getX(), e.getY(),
e.getClickCount(), e.isPopupTrigger(), e
- .getButton());
+ simulated = buildRetypedMouseEvent(e,
MouseEvent.MOUSE_MOVED);
}
sendInputEventToInputManager(e,
MouseEvent.MOUSE_ENTERED);
sendInputEventToInputManager(simulated,
simulated.getID());
}
+ /** {...@inheritdoc} */
public void mouseExited(MouseEvent e) {
MouseEvent simulated = null;
- if ((e.getModifiersEx() &
(InputEvent.BUTTON1_DOWN_MASK | InputEvent.BUTTON2_DOWN_MASK |
InputEvent.BUTTON3_DOWN_MASK)) != 0) {
- simulated = new MouseEvent((Component)
e.getSource(), MouseEvent.MOUSE_DRAGGED, e.getWhen(), e
- .getModifiers(), e.getX(), e.getY(),
e.getClickCount(), e.isPopupTrigger(), e
- .getButton());
+ if (isAnyButtonDown(e)) {
+ simulated = buildRetypedMouseEvent(e,
MouseEvent.MOUSE_DRAGGED);
}
else {
- simulated = new MouseEvent((Component)
e.getSource(), MouseEvent.MOUSE_MOVED, e.getWhen(), e
- .getModifiers(), e.getX(), e.getY(),
e.getClickCount(), e.isPopupTrigger(), e
- .getButton());
+ simulated = buildRetypedMouseEvent(e,
MouseEvent.MOUSE_MOVED);
}
sendInputEventToInputManager(simulated,
simulated.getID());
sendInputEventToInputManager(e,
MouseEvent.MOUSE_EXITED);
}
+ /** {...@inheritdoc} */
public void mousePressed(MouseEvent e) {
requestFocus();
boolean shouldBalanceEvent = false;
- if (e.getButton() == MouseEvent.NOBUTTON) {
- if ((e.getModifiers() & MouseEvent.BUTTON1_MASK)
== MouseEvent.BUTTON1_MASK) {
- e = new MouseEvent((Component) e.getSource(),
MouseEvent.MOUSE_PRESSED, e.getWhen(), e
- .getModifiers(), e.getX(), e.getY(),
e.getClickCount(), e.isPopupTrigger(),
- MouseEvent.BUTTON1);
- }
- else if ((e.getModifiers() &
MouseEvent.BUTTON2_MASK) == MouseEvent.BUTTON2_MASK) {
- e = new MouseEvent((Component) e.getSource(),
MouseEvent.MOUSE_PRESSED, e.getWhen(), e
- .getModifiers(), e.getX(), e.getY(),
e.getClickCount(), e.isPopupTrigger(),
- MouseEvent.BUTTON2);
- }
- else if ((e.getModifiers() &
MouseEvent.BUTTON3_MASK) == MouseEvent.BUTTON3_MASK) {
- e = new MouseEvent((Component) e.getSource(),
MouseEvent.MOUSE_PRESSED, e.getWhen(), e
- .getModifiers(), e.getX(), e.getY(),
e.getClickCount(), e.isPopupTrigger(),
- MouseEvent.BUTTON3);
- }
- }
+ e = copyButtonsFromModifiers(e,
MouseEvent.MOUSE_PRESSED);
switch (e.getButton()) {
case MouseEvent.BUTTON1:
@@ -472,36 +453,19 @@
}
if (shouldBalanceEvent) {
- MouseEvent balanceEvent = new
MouseEvent((Component) e.getSource(), MouseEvent.MOUSE_RELEASED,
- e.getWhen(), e.getModifiers(), e.getX(),
e.getY(), e.getClickCount(), e
- .isPopupTrigger(), e.getButton());
+ MouseEvent balanceEvent =
buildRetypedMouseEvent(e, MouseEvent.MOUSE_RELEASED);
sendInputEventToInputManager(balanceEvent,
MouseEvent.MOUSE_RELEASED);
}
sendInputEventToInputManager(e,
MouseEvent.MOUSE_PRESSED);
}
+ /** {...@inheritdoc} */
public void mouseReleased(MouseEvent e) {
boolean shouldBalanceEvent = false;
- if (e.getButton() == MouseEvent.NOBUTTON) {
- if ((e.getModifiers() & MouseEvent.BUTTON1_MASK)
== MouseEvent.BUTTON1_MASK) {
- e = new MouseEvent((Component) e.getSource(),
MouseEvent.MOUSE_RELEASED, e.getWhen(), e
- .getModifiers(), e.getX(), e.getY(),
e.getClickCount(), e.isPopupTrigger(),
- MouseEvent.BUTTON1);
- }
- else if ((e.getModifiers() &
MouseEvent.BUTTON2_MASK) == MouseEvent.BUTTON2_MASK) {
- e = new MouseEvent((Component) e.getSource(),
MouseEvent.MOUSE_RELEASED, e.getWhen(), e
- .getModifiers(), e.getX(), e.getY(),
e.getClickCount(), e.isPopupTrigger(),
- MouseEvent.BUTTON2);
- }
- else if ((e.getModifiers() &
MouseEvent.BUTTON3_MASK) == MouseEvent.BUTTON3_MASK) {
- e = new MouseEvent((Component) e.getSource(),
MouseEvent.MOUSE_RELEASED, e.getWhen(), e
- .getModifiers(), e.getX(), e.getY(),
e.getClickCount(), e.isPopupTrigger(),
- MouseEvent.BUTTON3);
- }
- }
-
+ e = copyButtonsFromModifiers(e,
MouseEvent.MOUSE_PRESSED);
+
switch (e.getButton()) {
case MouseEvent.BUTTON1:
if (!isButton1Pressed) {
@@ -526,35 +490,48 @@
}
if (shouldBalanceEvent) {
- MouseEvent balanceEvent = new
MouseEvent((Component) e.getSource(), MouseEvent.MOUSE_PRESSED, e
- .getWhen(), e.getModifiers(), e.getX(),
e.getY(), e.getClickCount(),
- e.isPopupTrigger(), e.getButton());
+ MouseEvent balanceEvent =
buildRetypedMouseEvent(e, MouseEvent.MOUSE_PRESSED);
sendInputEventToInputManager(balanceEvent,
MouseEvent.MOUSE_PRESSED);
}
sendInputEventToInputManager(e,
MouseEvent.MOUSE_RELEASED);
}
+
+ private boolean isAnyButtonDown(MouseEvent e) {
+ return (e.getModifiersEx() &
(InputEvent.BUTTON1_DOWN_MASK | InputEvent.BUTTON2_DOWN_MASK |
InputEvent.BUTTON3_DOWN_MASK)) != 0;
+ }
private MouseEvent copyButtonsFromModifiers(final
MouseEvent rawEvent, int eventType) {
if (rawEvent.getButton() != MouseEvent.NOBUTTON) {
- if ((rawEvent.getModifiers() &
MouseEvent.BUTTON1_MASK) == MouseEvent.BUTTON1_MASK) {
- return new MouseEvent((Component)
rawEvent.getSource(), eventType, rawEvent.getWhen(),
- rawEvent.getModifiers(),
rawEvent.getX(), rawEvent.getY(),
- rawEvent.getClickCount(),
rawEvent.isPopupTrigger(), MouseEvent.BUTTON1);
- }
- else if ((rawEvent.getModifiers() &
MouseEvent.BUTTON2_MASK) == MouseEvent.BUTTON2_MASK) {
- return new MouseEvent((Component)
rawEvent.getSource(), eventType, rawEvent.getWhen(),
- rawEvent.getModifiers(),
rawEvent.getX(), rawEvent.getY(),
- rawEvent.getClickCount(),
rawEvent.isPopupTrigger(), MouseEvent.BUTTON2);
- }
- else if ((rawEvent.getModifiers() &
MouseEvent.BUTTON3_MASK) == MouseEvent.BUTTON3_MASK) {
- return new MouseEvent((Component)
rawEvent.getSource(), eventType, rawEvent.getWhen(),
- rawEvent.getModifiers(),
rawEvent.getX(), rawEvent.getY(),
- rawEvent.getClickCount(),
rawEvent.isPopupTrigger(), MouseEvent.BUTTON3);
- }
+ return rawEvent;
}
- return rawEvent;
+ int newButton = 0;
+
+ if (hasButtonModifier(rawEvent,
MouseEvent.BUTTON1_MASK)) {
+ newButton = MouseEvent.BUTTON1;
+ }
+ else if (hasButtonModifier(rawEvent,
MouseEvent.BUTTON2_MASK)) {
+ newButton = MouseEvent.BUTTON2;
+ }
+ else if (hasButtonModifier(rawEvent,
MouseEvent.BUTTON3_MASK)) {
+ newButton = MouseEvent.BUTTON3;
+ }
+
+ return (newButton == 0) ? rawEvent :
buildModifiedMouseEvent(rawEvent, eventType, newButton);
+ }
+
+ private boolean hasButtonModifier(final MouseEvent event,
int buttonMask) {
+ return (event.getModifiers() & buttonMask) ==
buttonMask;
+ }
+
+ public MouseEvent buildRetypedMouseEvent(MouseEvent e, int
newType) {
+ return buildModifiedMouseEvent(e, newType,
e.getButton());
+ }
+
+ public MouseEvent buildModifiedMouseEvent(MouseEvent e,
int newType, int newButton) {
+ return new MouseEvent((Component) e.getSource(),
newType, e.getWhen(), e.getModifiers(), e.getX(),
+ e.getY(), e.getClickCount(),
e.isPopupTrigger(), newButton);
}
};
@@ -563,10 +540,12 @@
if (mouseMotionListener == null) {
mouseMotionListener = new MouseMotionListener() {
+ /** {...@inheritdoc} */
public void mouseDragged(MouseEvent e) {
sendInputEventToInputManager(e,
MouseEvent.MOUSE_DRAGGED);
}
+ /** {...@inheritdoc} */
public void mouseMoved(MouseEvent e) {
sendInputEventToInputManager(e,
MouseEvent.MOUSE_MOVED);
}
@@ -576,6 +555,7 @@
if (mouseWheelListener == null) {
mouseWheelListener = new MouseWheelListener() {
+ /** {...@inheritdoc} */
public void mouseWheelMoved(MouseWheelEvent e) {
sendInputEventToInputManager(e, e.getScrollType());
if (!e.isConsumed() && getParent() != null) {
@@ -610,12 +590,15 @@
* those events to piccolo.
*/
protected void removeInputSources() {
- if (mouseListener != null)
+ if (mouseListener != null) {
removeMouseListener(mouseListener);
- if (mouseMotionListener != null)
+ }
+ if (mouseMotionListener != null) {
removeMouseMotionListener(mouseMotionListener);
- if (mouseWheelListener != null)
+ }
+ if (mouseWheelListener != null) {
removeMouseWheelListener(mouseWheelListener);
+ }
if (keyEventPostProcessor != null) {
FocusManager.getCurrentKeyboardFocusManager().removeKeyEventPostProcessor(keyEventPostProcessor);
}
--~--~---------~--~----~------------~-------~--~----~
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en
-~----------~----~----~----~------~----~------~--~---