1.1 --- a/chess/src/main/java/org/apidesign/html/demo/chess/BoardModel.java Fri Jul 26 09:28:49 2013 +0200
1.2 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/BoardModel.java Fri Jul 26 17:14:25 2013 +0200
1.3 @@ -39,19 +39,24 @@
1.4 if (previoslySelected == null) {
1.5 if (data.getPiece() != null && data.getPieceColor() == b.getTurn()) {
1.6 data.setSelected(true);
1.7 + Rules.computeAccessible(b, data);
1.8 }
1.9 } else {
1.10 - previoslySelected.setSelected(false);
1.11 if (data.getPiece() != null && data.getPieceColor() == previoslySelected.getPieceColor()) {
1.12 previoslySelected.setSelected(false);
1.13 data.setSelected(true);
1.14 + Rules.computeAccessible(b, data);
1.15 return;
1.16 }
1.17 - data.setPieceColor(previoslySelected.getPieceColor());
1.18 - data.setPiece(previoslySelected.getPiece());
1.19 - b.setTurn(b.getTurn() == ColorType.WHITE ? ColorType.BLACK : ColorType.WHITE);
1.20 - previoslySelected.setPiece(null);
1.21 - previoslySelected.setPieceColor(null);
1.22 + if (data.isAccessible()) {
1.23 + previoslySelected.setSelected(false);
1.24 + data.setPieceColor(previoslySelected.getPieceColor());
1.25 + data.setPiece(previoslySelected.getPiece());
1.26 + b.setTurn(b.getTurn() == ColorType.WHITE ? ColorType.BLACK : ColorType.WHITE);
1.27 + previoslySelected.setPiece(null);
1.28 + previoslySelected.setPieceColor(null);
1.29 + Rules.computeAccessible(b, null);
1.30 + }
1.31 }
1.32 }
1.33
1.34 @@ -124,7 +129,8 @@
1.35 @Property(name = "color", type = ColorType.class),
1.36 @Property(name = "x", type = int.class),
1.37 @Property(name = "y", type = int.class),
1.38 - @Property(name = "selected", type = boolean.class)
1.39 + @Property(name = "selected", type = boolean.class),
1.40 + @Property(name = "accessible", type = boolean.class),
1.41 })
1.42 static class PieceImpl {
1.43 @ComputedProperty static String pieceEntity(
1.44 @@ -136,10 +142,15 @@
1.45 return piece.computeEntity(pieceColor);
1.46 }
1.47
1.48 - @ComputedProperty static String squareColor(ColorType color, boolean selected) {
1.49 + @ComputedProperty static String squareColor(
1.50 + ColorType color, boolean selected, boolean accessible
1.51 + ) {
1.52 if (selected) {
1.53 return "selected";
1.54 }
1.55 + if (accessible) {
1.56 + return "accessible";
1.57 + }
1.58
1.59 if (color == null) {
1.60 return "";