/**
  * Handle mouse releases.
  *
  * @param event the event to handle
  */
 @SuppressWarnings("ParameterNameDiffersFromOverriddenParameter")
 @Override
 public void mouseReleased(@Nullable final MouseEvent event) {
   if ((event != null) && event.isPopupTrigger()) {
     menu.show(event.getComponent(), event.getX(), event.getY());
   }
 }
 /**
  * Handle mouse clicks.
  *
  * @param event the event to handle
  */
 @SuppressWarnings("ParameterNameDiffersFromOverriddenParameter")
 @Override
 public void mouseClicked(@Nullable final MouseEvent event) {
   if (event != null) {
     event.getComponent().requestFocusInWindow();
     final java.awt.Point eventPoint = event.getPoint();
     final VisibleDimensions dimensions = model.getDimensions();
     final MapDimensions mapDim = model.getMapDimensions();
     final int tileSize = TileViewSize.scaleZoom(model.getZoomLevel(), mapDim.getVersion());
     final Point point =
         PointFactory.point(
             (eventPoint.y / tileSize) + dimensions.getMinimumRow(),
             (eventPoint.x / tileSize) + dimensions.getMinimumCol());
     if ((point.getRow() < mapDim.getRows()) && (point.getCol() < mapDim.getColumns())) {
       model.setSelection(point);
       if (event.isPopupTrigger()) {
         menu.show(event.getComponent(), event.getX(), event.getY());
       }
     }
   }
 }
 /**
  * @param list something that no longer wants to listen for changes to the tile type of the
  *     selected tile
  */
 @Override
 public void removeSelectionChangeListener(final SelectionChangeListener list) {
   menu.removeSelectionChangeListener(list);
 }
 /** @param list Something to listen for changes to the tile type of the selected tile */
 @Override
 public void addSelectionChangeListener(final SelectionChangeListener list) {
   menu.addSelectionChangeListener(list);
 }