git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@52 72836036-5685-4462-b002-a69064685172
67 lines
1.6 KiB
Java
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;
|
|
}
|
|
|
|
}
|