public void followOutlineItem(OutlineItem o) {
        if (o == null)
            return;

        // capture the action if no destination is found and point to the
        // actions destination information
        Destination dest = o.getDest();
        if (o.getAction() != null) {
            Action action = o.getAction();
            if (action instanceof GoToAction) {
                dest = ((GoToAction) action).getDestination();
            } else if (action instanceof URIAction) {
                BareBonesBrowserLaunch.openURL(
                        ((URIAction) action).getURI());
            } else {
                Library library = action.getLibrary();
                Hashtable entries = action.getEntries();
                dest = new Destination(library, library.getObject(entries, "D"));
            }
        }

        // Process the destination information
        if (dest == null)
            return;

        int oldTool = getDocumentViewToolMode();
        try {
            // set hour glass
            setDisplayTool(DocumentViewModelImpl.DISPLAY_TOOL_WAIT);
            // let the document view controller resolve the destination
            documentViewController.setDestinationTarget(dest);
        } finally {
            // set the icon back to the pointer
            setDisplayTool(oldTool);
        }
    }