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:
Jannis Harder 2011-05-04 23:28:39 +02:00
parent e2f82f3f28
commit 50f1d6c05a
5 changed files with 22 additions and 22 deletions

View file

@ -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);
} }

View file

@ -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;
} }

View file

@ -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();
} }

View file

@ -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++;
} }

View file

@ -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++;
} }
} }