예제 #1
0
  public void selected(SelectEvent event) {
    // Select/unselect object on left click,
    // or follow URL if one was clicked
    if (event.getEventAction().equals(SelectEvent.LEFT_CLICK)) {
      if (event.hasObjects()) {
        if (event.getTopObject() instanceof Annotation) {
          // if URL was clicked, open in browser
          PickedObject po = event.getTopPickedObject();

          if (po.getValue(AVKey.URL) != null && po.getValue(AVKey.URL) instanceof String) {
            // Execute the URL.
            this.processUrl((String) po.getValue(AVKey.URL), true);

            return;
          }
        }

        if (event.getTopObject() instanceof Selectable) {
          if (this.selectedObject != event.getTopObject()
              || (this.selectedObject instanceof Selectable
                  && !((Selectable) this.selectedObject).isSelected())) {
            // either a new object was clicked, or this.selectedObject was clicked
            // but it's been unselected already from outside this listener
            select(
                event.getTopObject(),
                event.getTopPickedObject().getParentLayer(),
                event.getTopPickedObject().getPosition());
            return;
          } else {
            // same, already selected object clikcked
            select(null, null, null);
            return;
          }
        }
      }
    } // Highlight on rollover
    else if (event.getEventAction().equals(SelectEvent.ROLLOVER)) {
      if (!(event.getTopObject() instanceof DialogAnnotation)) {
        highlight(event.getTopObject());

        // if URL was rollod-over, show it in status bar
        PickedObject po = event.getTopPickedObject();

        if (po != null
            && po.getValue(AVKey.URL) != null
            && po.getValue(AVKey.URL) instanceof String) {
          // show the URL.
          this.processUrl((String) po.getValue(AVKey.URL), false);

          return;
        }
      } // if
    }

    setStatusText("");
  }