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(""); }