Add highlighting to board and table

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@37 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Matthias Schiffer 2011-04-30 22:12:00 +02:00
parent 9ea9b11501
commit dd46130c8c
5 changed files with 39 additions and 8 deletions

View file

@ -1,5 +1,6 @@
package jrummikub.view;
import java.util.Collection;
import java.util.Map;
import jrummikub.model.Position;
@ -8,6 +9,7 @@ import jrummikub.util.IEvent1;
public interface IBoard {
public void setStones(Map<Stone, Position> stones);
public void setHighlightedStones(Collection<Stone> stones);
public IEvent1<Position> getClickEvent();
}

View file

@ -1,8 +1,10 @@
package jrummikub.view;
import java.util.Collection;
import java.util.Map;
import jrummikub.model.Position;
import jrummikub.model.Stone;
import jrummikub.model.StoneSet;
import jrummikub.util.IEvent1;
@ -10,6 +12,9 @@ public interface ITable {
public void setLeftPlayerName(String playerName);
public void setTopPlayerName(String playerName);
public void setRightPlayerName(String playerName);
public void setStoneSets(Map<StoneSet, Position> stoneSets);
public void setHighlightedStones(Collection<Stone> stones);
public IEvent1<Position> getClickEvent();
}

View file

@ -7,6 +7,7 @@ import java.awt.Insets;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
@ -24,6 +25,8 @@ public class Board extends JPanel implements IBoard {
private final static ImageIcon background = new ImageIcon(Board.class.getResource("/jrummikub/resource/wood.png"));
private Map<Stone, Position> stones = Collections.emptyMap();
private Collection<Stone> highlightedStones = Collections.emptyList();
private StonePainter stonePainter = new StonePainter(StonePainter.BOARD_SCALE);
private Event1<Position> clickEvent = new Event1<Position>();
@ -65,8 +68,9 @@ public class Board extends JPanel implements IBoard {
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
for (Map.Entry<Stone, Position> stone : stones.entrySet()) {
stonePainter.paintStone(g, stone.getKey(), stone.getValue(), false);
for (Map.Entry<Stone, Position> entry : stones.entrySet()) {
stonePainter.paintStone(g, entry.getKey(), entry.getValue(),
highlightedStones.contains(entry.getKey()));
}
}
@ -74,4 +78,9 @@ public class Board extends JPanel implements IBoard {
public void setStones(Map<Stone, Position> stones) {
this.stones = stones;
}
@Override
public void setHighlightedStones(Collection<Stone> stones) {
highlightedStones = stones;
}
}

View file

@ -8,6 +8,7 @@ import java.awt.Insets;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
@ -33,6 +34,7 @@ public class Table extends JPanel implements ITable {
private StonePainter stonePainter = new StonePainter(1);
private Map<StoneSet, Position> stoneSets = Collections.emptyMap();
private Collection<Stone> highlightedStones = Collections.emptyList();
private Event1<Position> clickEvent = new Event1<Position>();
@ -57,6 +59,12 @@ public class Table extends JPanel implements ITable {
this.stoneSets = stoneSets;
}
@Override
public void setHighlightedStones(Collection<Stone> stones) {
highlightedStones = stones;
}
@Override
public IEvent1<Position> getClickEvent() {
return clickEvent;
@ -97,9 +105,10 @@ public class Table extends JPanel implements ITable {
public void paintStoneSet(Graphics2D g, StoneSet stoneSet, Position pos) {
float x = pos.getX();
for(Stone stone : stoneSet){
stonePainter.paintStone(g, stone, new Position(x, pos.getY()), false);
for (Stone stone : stoneSet) {
stonePainter.paintStone(g, stone, new Position(x, pos.getY()),
highlightedStones.contains(stone));
x++;
}
}