From 4390c766303610c3a20b158d54d1c5bef64475a6 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 6 May 2011 04:33:13 +0200 Subject: Handle click events next to the collection as click events for the table git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@168 72836036-5685-4462-b002-a69064685172 --- src/jrummikub/view/impl/AbstractStonePanel.java | 57 ++++++++++++++++--------- 1 file changed, 36 insertions(+), 21 deletions(-) (limited to 'src/jrummikub/view/impl/AbstractStonePanel.java') diff --git a/src/jrummikub/view/impl/AbstractStonePanel.java b/src/jrummikub/view/impl/AbstractStonePanel.java index fd3862b..82bc7b7 100644 --- a/src/jrummikub/view/impl/AbstractStonePanel.java +++ b/src/jrummikub/view/impl/AbstractStonePanel.java @@ -1,6 +1,7 @@ package jrummikub.view.impl; import java.awt.Insets; +import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; @@ -61,27 +62,8 @@ abstract class AbstractStonePanel extends JPanel implements IStonePanel, addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - Insets insets = getInsets(); - Pair trans = getTranslation(); - Position pos = stonePainter.calculatePosition(e.getX() - insets.left - - trans.getFirst(), e.getY() - insets.top - trans.getSecond()); - Stone stone = getStoneAt(pos); - - if (stone == null) { - if (!handleOtherClickEvent(pos)) - clickEvent.emit(pos); - - return; - } - - Event2 event = stoneClickEvent; - - if (e.isShiftDown()) - event = rangeClickEvent; - else if (e.getClickCount() >= 2) - event = setClickEvent; - - event.emit(stone, e.isControlDown()); + clickAt(e.getPoint(), e.getClickCount(), e.isShiftDown(), + e.isControlDown()); } @Override @@ -103,6 +85,39 @@ abstract class AbstractStonePanel extends JPanel implements IStonePanel, }); } + /** + * clickAt is called when a click has occured + * + * @param p the point in component coordinates + * @param clickCount the click count + * @param shift is shift down? + * @param control is control down? + */ + protected void clickAt(Point p, int clickCount, boolean shift, boolean control) { + Insets insets = getInsets(); + Pair trans = getTranslation(); + Position pos = stonePainter.calculatePosition( + p.x - insets.left - trans.getFirst(), + p.y - insets.top - trans.getSecond()); + Stone stone = getStoneAt(pos); + + if (stone == null) { + if (!handleOtherClickEvent(pos)) + clickEvent.emit(pos); + + return; + } + + Event2 event = stoneClickEvent; + + if (shift) + event = rangeClickEvent; + else if (clickCount >= 2) + event = setClickEvent; + + event.emit(stone, control); + } + private void setHoveredStone(Stone stone) { Stone oldStone = hoveredStone; hoveredStone = stone; -- cgit v1.2.3