Added clickEvent to Board
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@30 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
5440eaba77
commit
36da8c8a17
5 changed files with 74 additions and 0 deletions
|
@ -9,6 +9,7 @@ import jrummikub.model.Position;
|
|||
import jrummikub.model.Stone;
|
||||
import jrummikub.model.StoneColor;
|
||||
import jrummikub.util.IListener;
|
||||
import jrummikub.util.IListener1;
|
||||
import jrummikub.view.IView;
|
||||
|
||||
public class JRummikub {
|
||||
|
@ -58,6 +59,13 @@ public class JRummikub {
|
|||
stones.put(new Stone(0, StoneColor.BLACK, true), new Position(3.5f, 0));
|
||||
|
||||
view.getPlayerPanel().getBoard().setStones(stones);
|
||||
view.getPlayerPanel().getBoard().getClickEvent().add(new IListener1<Position>(){
|
||||
|
||||
@Override
|
||||
public void fire(Position value) {
|
||||
System.out.println("Board clicked at "+value);
|
||||
|
||||
}});
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -21,5 +21,10 @@ public class Position {
|
|||
public float getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
return "Position[x="+x+",y="+y+"]";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,7 +4,10 @@ import java.util.Map;
|
|||
|
||||
import jrummikub.model.Position;
|
||||
import jrummikub.model.Stone;
|
||||
import jrummikub.util.IEvent1;
|
||||
|
||||
public interface IBoard {
|
||||
public void setStones(Map<Stone, Position> stones);
|
||||
|
||||
public IEvent1<Position> getClickEvent();
|
||||
}
|
||||
|
|
|
@ -5,6 +5,8 @@ import java.awt.Graphics;
|
|||
import java.awt.Graphics2D;
|
||||
import java.awt.Insets;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
|
@ -13,6 +15,9 @@ import javax.swing.JPanel;
|
|||
|
||||
import jrummikub.model.Position;
|
||||
import jrummikub.model.Stone;
|
||||
import jrummikub.util.Event1;
|
||||
import jrummikub.util.IEvent;
|
||||
import jrummikub.util.IEvent1;
|
||||
import jrummikub.view.IBoard;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
|
@ -21,11 +26,52 @@ public class Board extends JPanel implements IBoard {
|
|||
|
||||
private Map<Stone, Position> stones = Collections.emptyMap();
|
||||
private StonePainter stonePainter = new StonePainter(StonePainter.BOARD_SCALE);
|
||||
|
||||
private Event1<Position> clickEvent = new Event1<Position>();
|
||||
|
||||
Board() {
|
||||
super(true);
|
||||
|
||||
setBorder(new CustomBorder(Color.DARK_GRAY, 0, 1, 0, 1));
|
||||
|
||||
addMouseListener(new MouseListener(){
|
||||
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
Insets insets = getInsets();
|
||||
|
||||
clickEvent.fire(stonePainter.calculatePosition(e.getX()-insets.left, e.getY()-insets.top));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseReleased(MouseEvent e) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}});
|
||||
}
|
||||
|
||||
@Override
|
||||
public IEvent1<Position> getClickEvent() {
|
||||
return clickEvent;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -56,6 +56,18 @@ class StonePainter {
|
|||
public float getScale() {
|
||||
return scale;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param x x position in screen coordinates
|
||||
* @param y y position in screen coordinates
|
||||
* @return position in grid coordinates
|
||||
*/
|
||||
public Position calculatePosition(int x, int y){
|
||||
float width = even(DEFAULT_WIDTH*scale);
|
||||
float height = (int)(DEFAULT_WIDTH*scale/ASPECT_RATIO);
|
||||
|
||||
return new Position(x/width, y/height);
|
||||
}
|
||||
|
||||
StonePainter(float scale) {
|
||||
this.scale = scale;
|
||||
|
|
Reference in a new issue