public void selected(SelectEvent event) {
    if (event == null) {
      String msg = Logging.getMessage("nullValue.EventIsNull");
      Logging.logger().log(java.util.logging.Level.FINE, msg);
      throw new IllegalArgumentException(msg);
    }

    if (event.getTopObject() != null && !(event.getTopObject() instanceof RegionShape)) {
      this.setCursor(null);
      return;
    }

    if (event.getEventAction().equals(SelectEvent.LEFT_PRESS)) {
      this.setPreviousPosition(this.getWwd().getCurrentPosition());
    } else if (event.getEventAction().equals(SelectEvent.DRAG)) {
      DragSelectEvent dragEvent = (DragSelectEvent) event;
      Object topObject = dragEvent.getTopObject();
      if (topObject == null) return;

      RegionShape dragObject = (RegionShape) topObject;

      if (this.getOperation() == SIZING) {
        Sector newSector = this.resizeShape(dragObject, this.getSide());
        if (newSector != null) dragObject.setSector(newSector);
      } else {
        this.setSide(this.determineAdjustmentSide(dragObject, this.getEdgeFactor()));

        if (this.getSide() == NONE || this.getOperation() == MOVING) {
          this.setOperation(MOVING);
          this.dragWholeShape(dragEvent, dragObject);
        } else {
          Sector newSector = this.resizeShape(dragObject, this.getSide());
          if (newSector != null) dragObject.setSector(newSector);
          this.setOperation(SIZING);
        }
      }

      this.setPreviousPosition(this.getWwd().getCurrentPosition());
      this.notifySectorChanged();
    } else if (event.getEventAction().equals(SelectEvent.DRAG_END)) {
      this.setOperation(NONE);
      this.setPreviousPosition(null);
    } else if (event.getEventAction().equals(SelectEvent.ROLLOVER)) {
      if (!(this.getWwd() instanceof Component)) return;

      if (event.getTopObject() == null || event.getTopPickedObject().isTerrain()) {
        this.setCursor(null);
        return;
      }

      if (!(event.getTopObject() instanceof Movable)) return;

      this.setCursor(
          this.determineAdjustmentSide((Movable) event.getTopObject(), this.getEdgeFactor()));
    }
  }
  public void selected(SelectEvent event) {
    try {
      if (event.isRollover()) {
        if (this.lastSelectedObject == event.getTopObject()) return; // same thing selected

        if (this.lastSelectedObject != null) {
          this.hideAnnotationPanel();
          this.lastSelectedObject = null;
        }

        if (event.getTopObject() != null && event.getTopObject() instanceof AVList) {
          String annoText =
              ((AVList) event.getTopObject()).getStringValue(Constants.INFO_PANEL_TEXT);
          if (!WWUtil.isEmpty(annoText)) {
            this.lastSelectedObject = (AVList) event.getTopObject();
            this.showAnnotationPanel(annoText);
          }
        }
      }
    } catch (Exception e) {
      // Wrap the handler in a try/catch to keep exceptions from bubbling up
      Util.getLogger().warning(e.getMessage() != null ? e.getMessage() : e.toString());
    }
  }