public void fillSelected(@Nonnull final Map map) {
   final GroupAction action = new GroupAction();
   for (final MapPosition pos : map.getSelectedTiles()) {
     final MapTile tile = map.getTileAt(pos.getX(), pos.getY());
     if (tile != null) {
       paintSelected(pos.getX(), pos.getY(), map, action);
     }
   }
   if (!action.isEmpty()) {
     getHistory().addEntry(action);
   }
 }
  @Override
  public void renderMap(
      @Nonnull Map map, @Nonnull Rectangle viewport, int level, @Nonnull Graphics2D g) {
    int width = map.getWidth();
    int height = map.getHeight();
    int z = map.getZ() - level;
    AffineTransform transform = g.getTransform();

    for (int x = 0; x < width; ++x) {
      for (int y = 0; y < height; ++y) {
        MapTile tile = map.getTileAt(x, y);
        if (tile != null) {
          MapWarpPoint wp = tile.getMapWarpPoint();
          if (wp == null) {
            continue;
          }
          int xdisp = SwingLocation.displayCoordinateX(x + map.getX(), y + map.getY(), z);
          int ydisp = SwingLocation.displayCoordinateY(x + map.getX(), y + map.getY(), z);
          if (viewport.contains(
              (xdisp * getZoom()) + getTranslateX() + (getTileWidth() * getZoom()),
              (ydisp * getZoom()) + getTranslateY() + (getTileHeight() * getZoom()))) {

            g.setColor(Color.RED);
            g.drawString(
                "Warp", xdisp + (int) (XOFFSET * getZoom()), ydisp + (int) (YOFFSET * getZoom()));
            g.drawString(
                "X: " + wp.getXTarget(),
                xdisp + (int) (XOFFSET * getZoom()),
                ydisp + (int) ((YOFFSET + 10) * getZoom()));
            g.drawString(
                "Y: " + wp.getYTarget(),
                xdisp + (int) (XOFFSET * getZoom()),
                ydisp + (int) ((YOFFSET + 20) * getZoom()));
            g.drawString(
                "Z: " + wp.getZTarget(),
                xdisp + (int) (XOFFSET * getZoom()),
                ydisp + (int) ((YOFFSET + 30) * getZoom()));
          }
        }
      }
    }
    g.setTransform(transform);
  }