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.Stone;
|
||||||
import jrummikub.model.StoneColor;
|
import jrummikub.model.StoneColor;
|
||||||
import jrummikub.util.IListener;
|
import jrummikub.util.IListener;
|
||||||
|
import jrummikub.util.IListener1;
|
||||||
import jrummikub.view.IView;
|
import jrummikub.view.IView;
|
||||||
|
|
||||||
public class JRummikub {
|
public class JRummikub {
|
||||||
|
@ -58,6 +59,13 @@ public class JRummikub {
|
||||||
stones.put(new Stone(0, StoneColor.BLACK, true), new Position(3.5f, 0));
|
stones.put(new Stone(0, StoneColor.BLACK, true), new Position(3.5f, 0));
|
||||||
|
|
||||||
view.getPlayerPanel().getBoard().setStones(stones);
|
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() {
|
public float getY() {
|
||||||
return y;
|
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.Position;
|
||||||
import jrummikub.model.Stone;
|
import jrummikub.model.Stone;
|
||||||
|
import jrummikub.util.IEvent1;
|
||||||
|
|
||||||
public interface IBoard {
|
public interface IBoard {
|
||||||
public void setStones(Map<Stone, Position> stones);
|
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.Graphics2D;
|
||||||
import java.awt.Insets;
|
import java.awt.Insets;
|
||||||
import java.awt.RenderingHints;
|
import java.awt.RenderingHints;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.awt.event.MouseListener;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -13,6 +15,9 @@ import javax.swing.JPanel;
|
||||||
|
|
||||||
import jrummikub.model.Position;
|
import jrummikub.model.Position;
|
||||||
import jrummikub.model.Stone;
|
import jrummikub.model.Stone;
|
||||||
|
import jrummikub.util.Event1;
|
||||||
|
import jrummikub.util.IEvent;
|
||||||
|
import jrummikub.util.IEvent1;
|
||||||
import jrummikub.view.IBoard;
|
import jrummikub.view.IBoard;
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
|
@ -21,11 +26,52 @@ public class Board extends JPanel implements IBoard {
|
||||||
|
|
||||||
private Map<Stone, Position> stones = Collections.emptyMap();
|
private Map<Stone, Position> stones = Collections.emptyMap();
|
||||||
private StonePainter stonePainter = new StonePainter(StonePainter.BOARD_SCALE);
|
private StonePainter stonePainter = new StonePainter(StonePainter.BOARD_SCALE);
|
||||||
|
|
||||||
|
private Event1<Position> clickEvent = new Event1<Position>();
|
||||||
|
|
||||||
Board() {
|
Board() {
|
||||||
super(true);
|
super(true);
|
||||||
|
|
||||||
setBorder(new CustomBorder(Color.DARK_GRAY, 0, 1, 0, 1));
|
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
|
@Override
|
||||||
|
|
|
@ -56,6 +56,18 @@ class StonePainter {
|
||||||
public float getScale() {
|
public float getScale() {
|
||||||
return scale;
|
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) {
|
StonePainter(float scale) {
|
||||||
this.scale = scale;
|
this.scale = scale;
|
||||||
|
|
Reference in a new issue