cursor.x = (byte) ((playArea.x0 + playArea.x1) / 2); cursor.y = (byte) ((playArea.y0 + playArea.y1) / 2);
  public void notifyLoadReady() {    // log.debug("notifyLoadReady ");    // by default show the comment window for commented games    moveNb = 0;    board = model.getStartingBoard();    // isolate the interesting part of the game for a problem    switch (playMode) {    case GAME_MODE:    case REVIEW_MODE:    case ONLINE_MODE:    case OBSERVE_MODE:      playArea = board.getFullBoardArea();      break;    case JOSEKI_MODE:    case PROBLEM_MODE:      playArea = model.getStoneArea();      playArea.grow((byte) 3, (byte) 3);      break;    }    //            if (playArea == null || model.getViewArea().isValid()) {      playArea = Rectangle.union(playArea, model.getViewArea());    }    playArea = Rectangle.intersect(playArea, board.getFullBoardArea());    if (playArea == null || !playArea.isValid()) {      playArea = new Rectangle((byte) 0, (byte) 0, (byte) (board.getBoardSize() - 1), (byte) (board.getBoardSize() - 1));    }    cursor.x = (byte) ((playArea.x0 + playArea.x1) / 2);    cursor.y = (byte) ((playArea.y0 + playArea.y1) / 2);    switchCurrentNode(model.getFirstNode());    playNode(currentNode);    initPainter(); // setclockandcomment need the definitive painter for the layout    if (model.isCommented()) {      canvas.updateClockAndCommentMode(MainCanvas.COMMENT_MODE);    } else {      canvas.updateClockAndCommentMode(MainCanvas.NOTHING_TO_DISPLAY_MODE);    }  }