Added card enter/exit event notifications.

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3196 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Andrzej Kapolka
2004-11-02 01:44:32 +00:00
parent c4eb1457dd
commit a6ffa4dd01
2 changed files with 121 additions and 54 deletions
@@ -1,5 +1,5 @@
//
// $Id: CardPanel.java,v 1.5 2004/10/29 00:41:50 andrzej Exp $
// $Id: CardPanel.java,v 1.6 2004/11/02 01:44:32 andrzej Exp $
//
// Narya library - tools for developing networked games
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
@@ -73,6 +73,44 @@ public abstract class CardPanel extends VirtualMediaPanel
protected MouseEvent _me;
}
/** Calls CardSpriteObserver.cardSpriteEntered. */
protected static class CardSpriteEnteredOp implements ObserverList.ObserverOp
{
public CardSpriteEnteredOp (CardSprite sprite, MouseEvent me)
{
_sprite = sprite;
_me = me;
}
public boolean apply (Object observer)
{
((CardSpriteObserver)observer).cardSpriteEntered(_sprite, _me);
return true;
}
protected CardSprite _sprite;
protected MouseEvent _me;
}
/** Calls CardSpriteObserver.cardSpriteExited. */
protected static class CardSpriteExitedOp implements ObserverList.ObserverOp
{
public CardSpriteExitedOp (CardSprite sprite, MouseEvent me)
{
_sprite = sprite;
_me = me;
}
public boolean apply (Object observer)
{
((CardSpriteObserver)observer).cardSpriteExited(_sprite, _me);
return true;
}
protected CardSprite _sprite;
protected MouseEvent _me;
}
/** Calls CardSpriteObserver.cardSpriteDragged. */
protected static class CardSpriteDraggedOp implements ObserverList.ObserverOp
{
@@ -122,6 +160,51 @@ public abstract class CardPanel extends VirtualMediaPanel
MouseAdapter ma = new MouseAdapter() {
public void mousePressed (MouseEvent me) {
if(_activeSprite instanceof CardSprite) {
_handleX = _activeSprite.getX() - me.getX();
_handleY = _activeSprite.getY() - me.getY();
_hasBeenDragged = false;
} else if (_activeSprite instanceof ButtonSprite) {
ButtonSprite bs = (ButtonSprite)_activeSprite;
if(bs.isEnabled()) {
bs.setPressed(true);
}
}
}
public void mouseReleased (MouseEvent me) {
if (_activeSprite instanceof CardSprite && _hasBeenDragged) {
_activeSprite.queueNotification(
new CardSpriteDraggedOp((CardSprite)_activeSprite, me)
);
} else if(_activeSprite instanceof ButtonSprite) {
ButtonSprite bs = (ButtonSprite)_activeSprite;
if (bs.isPressed()) {
CommandEvent ce = new CommandEvent(CardPanel.this, bs.getActionCommand(),
bs.getCommandArgument(), me.getWhen(), me.getModifiers());
bs.queueNotification(
new ButtonSpriteClickedOp(bs, ce));
Controller.postAction(ce);
bs.setPressed(false);
}
}
}
public void mouseClicked (MouseEvent me) {
if (_activeSprite instanceof CardSprite) {
_activeSprite.queueNotification(
new CardSpriteClickedOp((CardSprite)_activeSprite, me)
);
}
}
};
addMouseListener(ma);
MouseMotionAdapter mma = new MouseMotionAdapter() {
public void mouseMoved (MouseEvent me)
{
Sprite newActiveSprite = null;
ArrayList al = new ArrayList();
_spritemgr.getHitSprites(al, me.getX(), me.getY());
@@ -140,70 +223,36 @@ public abstract class CardPanel extends VirtualMediaPanel
}
}
_activeSprite = highestSprite;
if (_activeSprite != null) {
if(_activeSprite instanceof CardSprite) {
_handleX = _activeSprite.getX() - me.getX();
_handleY = _activeSprite.getY() - me.getY();
_hasBeenDragged = false;
} else if (_activeSprite instanceof ButtonSprite) {
ButtonSprite bs = (ButtonSprite)_activeSprite;
if(bs.isEnabled()) {
bs.setPressed(true);
}
}
}
newActiveSprite = highestSprite;
}
else {
_activeSprite = null;
}
}
public void mouseReleased (MouseEvent me) {
if (_activeSprite instanceof CardSprite && _hasBeenDragged) {
_activeSprite.queueNotification(
new CardSpriteDraggedOp((CardSprite)_activeSprite, me)
);
} else if(_activeSprite instanceof ButtonSprite) {
ButtonSprite bs = (ButtonSprite)_activeSprite;
if (bs.isEnabled()) {
CommandEvent ce = new CommandEvent(CardPanel.this, bs.getActionCommand(),
bs.getCommandArgument(), me.getWhen(), me.getModifiers());
bs.queueNotification(
new ButtonSpriteClickedOp(bs, ce));
Controller.postAction(ce);
if (newActiveSprite != _activeSprite) {
if (_activeSprite instanceof CardSprite) {
_activeSprite.queueNotification(
new CardSpriteExitedOp((CardSprite)_activeSprite, me)
);
} else if (_activeSprite instanceof ButtonSprite) {
((ButtonSprite)_activeSprite).setPressed(false);
}
bs.setPressed(false);
_activeSprite = null;
if (newActiveSprite instanceof CardSprite) {
newActiveSprite.queueNotification(
new CardSpriteEnteredOp((CardSprite)newActiveSprite, me)
);
}
_activeSprite = newActiveSprite;
}
}
public void mouseClicked (MouseEvent me) {
if (_activeSprite instanceof CardSprite) {
_activeSprite.queueNotification(
new CardSpriteClickedOp((CardSprite)_activeSprite, me)
);
}
}
};
addMouseListener(ma);
MouseMotionAdapter mma = new MouseMotionAdapter() {
public void mouseDragged (MouseEvent me)
{
mouseMoved(me);
if (_activeSprite instanceof CardSprite &&
((CardSprite)_activeSprite).isDraggable()) {
_activeSprite.setLocation(
me.getX() + _handleX,
me.getY() + _handleY
);
);
_hasBeenDragged = true;
} else if (_activeSprite instanceof ButtonSprite &&
!_activeSprite.contains(me.getX(), me.getY())) {
((ButtonSprite)_activeSprite).setPressed(false);
_activeSprite = null;
}
}
};
@@ -1,5 +1,5 @@
//
// $Id: CardSpriteObserver.java,v 1.2 2004/10/15 00:14:23 andrzej Exp $
// $Id: CardSpriteObserver.java,v 1.3 2004/11/02 01:44:32 andrzej Exp $
//
// Narya library - tools for developing networked games
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
@@ -36,6 +36,24 @@ public interface CardSpriteObserver
*/
public void cardSpriteClicked (CardSprite sprite, MouseEvent me);
/**
* Notifies the observer that the user moved the mouse pointer onto
* a card sprite.
*
* @param sprite the entered sprite
* @param me the mouse event associated with the entrance
*/
public void cardSpriteEntered (CardSprite sprite, MouseEvent me);
/**
* Notifies the observer that the user moved the mouse pointer off of
* a card sprite.
*
* @param sprite the exited the sprite
* @param me the mouse event associated with the exit
*/
public void cardSpriteExited (CardSprite sprite, MouseEvent me);
/**
* Notifies the observer that the user dragged a card sprite to a new
* location.