From 54271eb86d67d1c12f38e1b63cb6c455612f252b Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 1 May 2011 00:41:27 +0200 Subject: Discriminate between different click events git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@44 72836036-5685-4462-b002-a69064685172 --- src/jrummikub/view/impl/StonePanel.java | 62 +++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/jrummikub/view/impl/StonePanel.java (limited to 'src/jrummikub/view/impl/StonePanel.java') diff --git a/src/jrummikub/view/impl/StonePanel.java b/src/jrummikub/view/impl/StonePanel.java new file mode 100644 index 0000000..9bcffae --- /dev/null +++ b/src/jrummikub/view/impl/StonePanel.java @@ -0,0 +1,62 @@ +package jrummikub.view.impl; + +import java.awt.Insets; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.JPanel; + +import jrummikub.model.Position; +import jrummikub.util.Event2; +import jrummikub.view.IClickable; + +@SuppressWarnings("serial") +abstract class StonePanel extends JPanel implements IClickable { + private StonePainter stonePainter; + + private Event2 clickEvent = new Event2(); + private Event2 rangeClickEvent = new Event2(); + private Event2 setClickEvent = new Event2(); + + protected StonePainter getStonePainter() { + return stonePainter; + } + + public StonePanel(float scale) { + super(true); // Set double buffered + + stonePainter = new StonePainter(scale); + + addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + Insets insets = getInsets(); + Event2 event = clickEvent; + + if (e.isShiftDown()) + event = rangeClickEvent; + else if (e.getClickCount() >= 2) + event = setClickEvent; + + event.fire(stonePainter.calculatePosition(e.getX() - insets.left, + e.getY() - insets.top), e.isControlDown()); + } + }); + } + + @Override + public Event2 getClickEvent() { + return clickEvent; + } + + @Override + public Event2 getRangeClickEvent() { + return rangeClickEvent; + } + + @Override + public Event2 getSetClickEvent() { + return setClickEvent; + } + +} -- cgit v1.2.3