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:
@@ -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
|
// Narya library - tools for developing networked games
|
||||||
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
|
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
|
||||||
@@ -73,6 +73,44 @@ public abstract class CardPanel extends VirtualMediaPanel
|
|||||||
protected MouseEvent _me;
|
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. */
|
/** Calls CardSpriteObserver.cardSpriteDragged. */
|
||||||
protected static class CardSpriteDraggedOp implements ObserverList.ObserverOp
|
protected static class CardSpriteDraggedOp implements ObserverList.ObserverOp
|
||||||
{
|
{
|
||||||
@@ -122,6 +160,51 @@ public abstract class CardPanel extends VirtualMediaPanel
|
|||||||
|
|
||||||
MouseAdapter ma = new MouseAdapter() {
|
MouseAdapter ma = new MouseAdapter() {
|
||||||
public void mousePressed (MouseEvent me) {
|
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();
|
ArrayList al = new ArrayList();
|
||||||
|
|
||||||
_spritemgr.getHitSprites(al, me.getX(), me.getY());
|
_spritemgr.getHitSprites(al, me.getX(), me.getY());
|
||||||
@@ -140,70 +223,36 @@ public abstract class CardPanel extends VirtualMediaPanel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_activeSprite = highestSprite;
|
newActiveSprite = 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
_activeSprite = null;
|
if (newActiveSprite != _activeSprite) {
|
||||||
}
|
if (_activeSprite instanceof CardSprite) {
|
||||||
}
|
_activeSprite.queueNotification(
|
||||||
public void mouseReleased (MouseEvent me) {
|
new CardSpriteExitedOp((CardSprite)_activeSprite, me)
|
||||||
if (_activeSprite instanceof CardSprite && _hasBeenDragged) {
|
);
|
||||||
_activeSprite.queueNotification(
|
} else if (_activeSprite instanceof ButtonSprite) {
|
||||||
new CardSpriteDraggedOp((CardSprite)_activeSprite, me)
|
((ButtonSprite)_activeSprite).setPressed(false);
|
||||||
);
|
|
||||||
} 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);
|
|
||||||
}
|
}
|
||||||
bs.setPressed(false);
|
if (newActiveSprite instanceof CardSprite) {
|
||||||
_activeSprite = null;
|
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)
|
public void mouseDragged (MouseEvent me)
|
||||||
{
|
{
|
||||||
|
mouseMoved(me);
|
||||||
|
|
||||||
if (_activeSprite instanceof CardSprite &&
|
if (_activeSprite instanceof CardSprite &&
|
||||||
((CardSprite)_activeSprite).isDraggable()) {
|
((CardSprite)_activeSprite).isDraggable()) {
|
||||||
_activeSprite.setLocation(
|
_activeSprite.setLocation(
|
||||||
me.getX() + _handleX,
|
me.getX() + _handleX,
|
||||||
me.getY() + _handleY
|
me.getY() + _handleY
|
||||||
);
|
);
|
||||||
|
|
||||||
_hasBeenDragged = true;
|
_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
|
// Narya library - tools for developing networked games
|
||||||
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
|
// 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);
|
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
|
* Notifies the observer that the user dragged a card sprite to a new
|
||||||
* location.
|
* location.
|
||||||
|
|||||||
Reference in New Issue
Block a user