public void deleteCurrentAnnotation() {
        // make sure there is a current annotation in model
        AnnotationComponentImpl annotationComponent =
                documentViewModel.getCurrentAnnotation();
        if (documentViewModel != null && annotationComponent !=null ){

            // parent component
            AbstractPageViewComponent pageComponent =
                    annotationComponent.getPageViewComponent();

            // store the annotation state in the caretaker
            AnnotationState preDeleteState =
                    new AnnotationState(annotationComponent);

            // remove annotation
            Document document = getDocument();
            PageTree pageTree = document.getPageTree();
            Page page = pageTree.getPage(pageComponent.getPageIndex(), this);
            // remove from page
            page.deleteAnnotation(annotationComponent.getAnnotation());
            // remove from page view.
            pageComponent.removeAnnotation(annotationComponent);
            // release the page
            pageTree.releasePage(pageComponent.getPageIndex(), this);

            // store the post delete state.
            AnnotationState postDeleteState =
                    new AnnotationState(annotationComponent);

            documentViewModel.getAnnotationCareTaker().addState(preDeleteState,
                    postDeleteState);

            // fire event notification
            firePropertyChange(PropertyConstants.ANNOTATION_DELETED,
                    documentViewModel.getCurrentAnnotation(),
                    null);

            // clear previously selected annotation and fire event.
            assignSelectedAnnotation(null);

            // repaint the view.
            documentView.repaint();
        }
    }