summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/view/impl/AbstractStonePanel.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/view/impl/AbstractStonePanel.java')
-rw-r--r--src/jrummikub/view/impl/AbstractStonePanel.java19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/jrummikub/view/impl/AbstractStonePanel.java b/src/jrummikub/view/impl/AbstractStonePanel.java
index 68818cf..e858662 100644
--- a/src/jrummikub/view/impl/AbstractStonePanel.java
+++ b/src/jrummikub/view/impl/AbstractStonePanel.java
@@ -13,6 +13,7 @@ import jrummikub.model.Position;
import jrummikub.model.Stone;
import jrummikub.util.Event1;
import jrummikub.util.Event2;
+import jrummikub.util.Pair;
import jrummikub.view.IClickable;
import jrummikub.view.IStonePanel;
@@ -60,8 +61,9 @@ abstract class AbstractStonePanel extends JPanel implements IStonePanel,
@Override
public void mouseClicked(MouseEvent e) {
Insets insets = getInsets();
- Position pos = stonePainter.calculatePosition(e.getX() - insets.left,
- e.getY() - insets.top);
+ Pair<Integer, Integer> 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) {
@@ -85,7 +87,9 @@ abstract class AbstractStonePanel extends JPanel implements IStonePanel,
/**
* *Overwrite this method* to signal if special zone was clicked
- * @param pos the clicked position
+ *
+ * @param pos
+ * the clicked position
*
* @return special zone clicked
*/
@@ -117,6 +121,15 @@ abstract class AbstractStonePanel extends JPanel implements IStonePanel,
}
/**
+ * Returns the translation in pixels the stones in this panel are painted with
+ *
+ * @return the translation
+ */
+ protected Pair<Integer, Integer> getTranslation() {
+ return new Pair<Integer, Integer>(0, 0);
+ }
+
+ /**
* Returns the list of stones and positions currently set
*
* @return the stones