Changed view implementation to use Iterable of Pairs
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@129 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
e2f82f3f28
commit
50f1d6c05a
5 changed files with 22 additions and 22 deletions
|
@ -1,9 +1,8 @@
|
||||||
package jrummikub.view;
|
package jrummikub.view;
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import jrummikub.model.Position;
|
import jrummikub.model.Position;
|
||||||
import jrummikub.model.Stone;
|
import jrummikub.model.Stone;
|
||||||
|
import jrummikub.util.Pair;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The view for a player's hand that displays his stones
|
* The view for a player's hand that displays his stones
|
||||||
|
@ -15,5 +14,5 @@ public interface IHandPanel extends IStonePanel, IClickable {
|
||||||
* @param stones
|
* @param stones
|
||||||
* the stones
|
* the stones
|
||||||
*/
|
*/
|
||||||
public void setStones(Map<Stone, Position> stones);
|
public void setStones(Iterable<Pair<Stone, Position>> stones);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,6 @@ import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
@ -30,7 +29,7 @@ abstract class AbstractStonePanel extends JPanel implements IStonePanel,
|
||||||
private Event2<Stone, Boolean> rangeClickEvent = new Event2<Stone, Boolean>();
|
private Event2<Stone, Boolean> rangeClickEvent = new Event2<Stone, Boolean>();
|
||||||
private Event2<Stone, Boolean> setClickEvent = new Event2<Stone, Boolean>();
|
private Event2<Stone, Boolean> setClickEvent = new Event2<Stone, Boolean>();
|
||||||
|
|
||||||
private Map<Stone, Position> stones = Collections.emptyMap();
|
private Iterable<Pair<Stone, Position>> stones = Collections.emptySet();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the stone painter
|
* @return the stone painter
|
||||||
|
@ -98,9 +97,9 @@ abstract class AbstractStonePanel extends JPanel implements IStonePanel,
|
||||||
}
|
}
|
||||||
|
|
||||||
private Stone getStoneAt(Position pos) {
|
private Stone getStoneAt(Position pos) {
|
||||||
for (Map.Entry<Stone, Position> entry : stones.entrySet()) {
|
for (Pair<Stone, Position> entry : stones) {
|
||||||
Stone stone = entry.getKey();
|
Stone stone = entry.getFirst();
|
||||||
Position p = entry.getValue();
|
Position p = entry.getSecond();
|
||||||
Rectangle2D rect = new Rectangle2D.Float(p.getX(), p.getY(), 1, 1);
|
Rectangle2D rect = new Rectangle2D.Float(p.getX(), p.getY(), 1, 1);
|
||||||
|
|
||||||
if (rect.contains(pos.getX(), pos.getY()))
|
if (rect.contains(pos.getX(), pos.getY()))
|
||||||
|
@ -116,7 +115,7 @@ abstract class AbstractStonePanel extends JPanel implements IStonePanel,
|
||||||
* @param stones
|
* @param stones
|
||||||
* the stones and positions
|
* the stones and positions
|
||||||
*/
|
*/
|
||||||
protected void setStones(Map<Stone, Position> stones) {
|
protected void setStones(Iterable<Pair<Stone, Position>> stones) {
|
||||||
this.stones = stones;
|
this.stones = stones;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +133,7 @@ abstract class AbstractStonePanel extends JPanel implements IStonePanel,
|
||||||
*
|
*
|
||||||
* @return the stones
|
* @return the stones
|
||||||
*/
|
*/
|
||||||
protected Map<Stone, Position> getStones() {
|
protected Iterable<Pair<Stone, Position>> getStones() {
|
||||||
return stones;
|
return stones;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ import javax.swing.border.MatteBorder;
|
||||||
|
|
||||||
import jrummikub.model.Position;
|
import jrummikub.model.Position;
|
||||||
import jrummikub.model.Stone;
|
import jrummikub.model.Stone;
|
||||||
|
import jrummikub.util.Pair;
|
||||||
import jrummikub.view.IHandPanel;
|
import jrummikub.view.IHandPanel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -96,14 +97,14 @@ class HandPanel extends AbstractStonePanel implements IHandPanel {
|
||||||
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
||||||
RenderingHints.VALUE_ANTIALIAS_ON);
|
RenderingHints.VALUE_ANTIALIAS_ON);
|
||||||
|
|
||||||
for (Map.Entry<Stone, Position> entry : getStones().entrySet()) {
|
for (Pair<Stone, Position> entry : getStones()) {
|
||||||
getStonePainter().paintStone(g, entry.getKey(), entry.getValue(),
|
getStonePainter().paintStone(g, entry.getFirst(), entry.getSecond(),
|
||||||
selectedStones.contains(entry.getKey()));
|
selectedStones.contains(entry.getFirst()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setStones(Map<Stone, Position> stones) {
|
public void setStones(Iterable<Pair<Stone, Position>> stones) {
|
||||||
super.setStones(stones);
|
super.setStones(stones);
|
||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,15 +4,16 @@ import java.awt.Color;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.Insets;
|
import java.awt.Insets;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.swing.border.EmptyBorder;
|
import javax.swing.border.EmptyBorder;
|
||||||
|
|
||||||
import jrummikub.model.Position;
|
import jrummikub.model.Position;
|
||||||
import jrummikub.model.Stone;
|
import jrummikub.model.Stone;
|
||||||
|
import jrummikub.util.Pair;
|
||||||
import jrummikub.view.IStoneCollectionPanel;
|
import jrummikub.view.IStoneCollectionPanel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -61,11 +62,11 @@ class StoneCollectionPanel extends AbstractStonePanel implements
|
||||||
void setSelectedStones(Collection<Stone> selectedStones) {
|
void setSelectedStones(Collection<Stone> selectedStones) {
|
||||||
this.selectedStones = selectedStones;
|
this.selectedStones = selectedStones;
|
||||||
|
|
||||||
Map<Stone, Position> stones = new HashMap<Stone, Position>();
|
List<Pair<Stone, Position>> stones = new ArrayList<Pair<Stone, Position>>();
|
||||||
float x = 0;
|
float x = 0;
|
||||||
|
|
||||||
for (Stone stone : selectedStones) {
|
for (Stone stone : selectedStones) {
|
||||||
stones.put(stone, new Position(x, 0));
|
stones.add(new Pair<Stone, Position>(stone, new Position(x, 0)));
|
||||||
x++;
|
x++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,10 +10,10 @@ import java.awt.event.ComponentEvent;
|
||||||
import java.awt.event.ComponentListener;
|
import java.awt.event.ComponentListener;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.swing.ImageIcon;
|
import javax.swing.ImageIcon;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
|
@ -78,13 +78,13 @@ class TablePanel extends AbstractStonePanel implements ITablePanel {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setStoneSets(Iterable<Pair<StoneSet, Position>> stoneSets) {
|
public void setStoneSets(Iterable<Pair<StoneSet, Position>> stoneSets) {
|
||||||
Map<Stone, Position> stones = new HashMap<Stone, Position>();
|
List<Pair<Stone, Position>> stones = new ArrayList<Pair<Stone, Position>>();
|
||||||
|
|
||||||
for (Pair<StoneSet, Position> entry : stoneSets) {
|
for (Pair<StoneSet, Position> entry : stoneSets) {
|
||||||
float x = entry.getSecond().getX(), y = entry.getSecond().getY();
|
float x = entry.getSecond().getX(), y = entry.getSecond().getY();
|
||||||
|
|
||||||
for (Stone stone : entry.getFirst()) {
|
for (Stone stone : entry.getFirst()) {
|
||||||
stones.put(stone, new Position(x, y));
|
stones.add(new Pair<Stone, Position>(stone, new Position(x, y)));
|
||||||
x++;
|
x++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue