public void mouseExited(MouseEvent e) {
    Object source = e.getSource();
    if (!(source instanceof JLabel)) return;

    if (!tokenMode && !correctionTokenMode) {
      // tile mode
      HexLabel tile = (HexLabel) e.getSource();
      tile.setToolTipText(null);
    }
  }
  public void mouseEntered(MouseEvent e) {
    Object source = e.getSource();
    if (!(source instanceof JLabel)) return;

    if (!tokenMode && !correctionTokenMode) {
      // tile mode
      HexLabel tile = (HexLabel) e.getSource();
      String tooltip = tile.getToolTip();
      if (tooltip != "") {
        tile.setToolTipText(tooltip);
      }
    }
  }
  public void mouseClicked(MouseEvent e) {

    Object source = e.getSource();
    if (!(source instanceof JLabel)) return;

    if (tokenMode) {
      if (tokenLabels.contains(source)) {
        orUIManager.tokenSelected((LayToken) ((ActionLabel) source).getPossibleActions().get(0));
        setDoneEnabled(true);
      } else {
        orUIManager.tokenSelected(null);
      }
      setSelectedToken();
    } else if (correctionTokenMode) {
      int id = correctionTokenLabels.indexOf(source);
      selectedTokenIndex = id;
      log.info("Correction Token index = " + selectedTokenIndex + " selected");
    } else {

      int id = ((HexLabel) e.getSource()).getInternalId();

      orUIManager.tileSelected(id);
    }
  }