chess/src/main/java/org/apidesign/html/demo/chess/BoardModel.java
branchchess
changeset 34 1ebd52ae8ccb
parent 30 a46846115b83
     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 "";