This repository has been archived on 2025-03-02. You can view files and clone it, but cannot push or open issues or pull requests.
JRummikub/src/jrummikub/view/impl/StonePanel.java
Matthias Schiffer b2dbfcc317 Fix formatting
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@52 72836036-5685-4462-b002-a69064685172
2011-05-01 19:14:55 +02:00

67 lines
1.6 KiB
Java

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<Position, Boolean> clickEvent = new Event2<Position, Boolean>();
private Event2<Position, Boolean> rangeClickEvent = new Event2<Position, Boolean>();
private Event2<Position, Boolean> setClickEvent = new Event2<Position, Boolean>();
protected StonePainter getStonePainter() {
return stonePainter;
}
public StonePanel() {
this(1);
}
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<Position, Boolean> 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<Position, Boolean> getClickEvent() {
return clickEvent;
}
@Override
public Event2<Position, Boolean> getRangeClickEvent() {
return rangeClickEvent;
}
@Override
public Event2<Position, Boolean> getSetClickEvent() {
return setClickEvent;
}
}