diff options
Diffstat (limited to 'src/jrummikub/view/impl/TablePanel.java')
-rw-r--r-- | src/jrummikub/view/impl/TablePanel.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/jrummikub/view/impl/TablePanel.java b/src/jrummikub/view/impl/TablePanel.java index 1e8a2b6..4b7ab9f 100644 --- a/src/jrummikub/view/impl/TablePanel.java +++ b/src/jrummikub/view/impl/TablePanel.java @@ -28,6 +28,7 @@ import jrummikub.util.IListener1; import jrummikub.util.Pair; import jrummikub.view.IStoneCollectionPanel; import jrummikub.view.ITablePanel; +import jrummikub.view.impl.StonePainter.StoneState; /** * The implementation of the table @@ -54,6 +55,8 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { private Iterable<Pair<StoneSet, Position>> stoneSets = Collections.emptySet(); private List<Pair<StoneSet, Position>> pauseStoneSets; + private Collection<StoneSet> invalidStoneSets = Collections.emptyList(); + private Collection<Stone> selectedStones = Collections.emptyList(); private Event1<StoneSet> leftConnectorClickEvent = new Event1<StoneSet>(); @@ -112,6 +115,11 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { repaint(); } + void setInvalidStoneSets(Collection<StoneSet> sets) { + invalidStoneSets = sets; + repaint(); + } + void createPauseStoneSets() { pauseStoneSets = new ArrayList<Pair<StoneSet, Position>>(); @@ -312,8 +320,12 @@ class TablePanel extends AbstractStonePanel implements ITablePanel { (int) (width * CONNECTOR_WIDTH), height))); for (Stone stone : stoneSet) { + StoneState state = invalidStoneSets.contains(stoneSet) ? StoneState.INVALID + : selectedStones.contains(stone) ? StoneState.SELECTED + : StoneState.NORMAL; + getStonePainter().paintStone(g, stone, new Position(x, pos.getY()), - selectedStones.contains(stone), stone == getHoveredStone()); + state, stone == getHoveredStone()); x++; } |