public void select(Object o, Layer parentLayer, Position pickPosition) {
    if (this.selectedAnnotLayer == null) {
      selectedAnnotLayer = new SelectedAnnotationLayer();
      selectedAnnotLayer.setEnabled(true);
      selectedAnnotLayer.setName("Layers.SelectedFeatureAnnotationLayer");

      wwd.getModel().getLayers().add(selectedAnnotLayer);
    } // if

    synchronized (selectedAnnotLayer) {
      // unselect the currently selected object
      unselect();

      // select o
      if (null != o) {
        if (o instanceof Annotation) {
          Annotation ann = (Annotation) o;

          this.savedAnnotationBorderColor = ann.getAttributes().getBorderColor();
          ann.getAttributes().setBorderColor(SELECTED_ANNOTATION_BORDER_COLOR);
          storeSelection(o, parentLayer);
        } else if (o instanceof Selectable) {
          ((Selectable) o).select(this.wwd, this.selectedAnnotLayer, pickPosition);
          storeSelection(o, parentLayer);
        } else {
          Logging.logger().severe("Unsupported object type selected!");
        }
      }
    }
  }
  private void highlight(Object o) {
    // Manage highlighting of features
    if (this.lastPickedObject == o) {
      return;
    } // same thing picked

    // Turn off highlight if on.
    if (this.lastPickedObject != null) {
      if (this.lastPickedObject instanceof Annotation) {
        Annotation ann = (Annotation) this.lastPickedObject;

        ann.getAttributes().setHighlighted(false);
        this.lastPickedObject = null;
      } else if (this.lastPickedObject instanceof SelectableIcon) {
        ((SelectableIcon) this.lastPickedObject).setHighlighted(false);
        this.lastPickedObject = null;
      } else {
        Logging.logger().severe("Unsupported object type highlighted!");
      }
    }

    // Turn on highlight if object selected.
    if (o != null) {
      if (o instanceof Annotation) {
        // highlight the annotation UNLESS it's the annotation of the selected icon
        if (!(this.selectedObject instanceof Selectable)

        /* || ((Selectable)this.selectedObject).getAnnotation() != o*/ ) {
          Annotation ann = (Annotation) o;

          ann.getAttributes().setHighlighted(true);
        }

        this.lastPickedObject = o;
      } else if (o instanceof SelectableIcon) {
        ((SelectableIcon) o).setHighlighted(true);
        this.lastPickedObject = o;
      }
    }
  }
  protected void setupAnnotationAttributes(Annotation annotation) {
    java.awt.Color transparentBlack = new java.awt.Color(0, 0, 0, 0);

    AnnotationAttributes defaultAttribs = new AnnotationAttributes();
    defaultAttribs.setAdjustWidthToText(AVKey.SIZE_FIXED);
    defaultAttribs.setBackgroundColor(transparentBlack);
    defaultAttribs.setBorderColor(transparentBlack);
    defaultAttribs.setBorderWidth(0);
    defaultAttribs.setCornerRadius(0);
    defaultAttribs.setDrawOffset(new java.awt.Point(0, 0));
    defaultAttribs.setHighlightScale(1);
    defaultAttribs.setInsets(new java.awt.Insets(0, 0, 0, 0));
    defaultAttribs.setImageScale(1);
    defaultAttribs.setImageOffset(new java.awt.Point(0, 0));
    defaultAttribs.setImageOpacity(1);
    defaultAttribs.setImageRepeat(AVKey.REPEAT_NONE);
    defaultAttribs.setLeader(AVKey.SHAPE_NONE);
    defaultAttribs.setSize(new java.awt.Dimension(0, 0));

    annotation.setPickEnabled(false);
    annotation.getAttributes().setDefaults(defaultAttribs);
  }