Example usage for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow setInitialHeight

List of usage examples for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow setInitialHeight

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow setInitialHeight.

Prototype

public ModalWindow setInitialHeight(final int initialHeight) 

Source Link

Document

Sets the initial height of the window.

Usage

From source file:com.evolveum.midpoint.web.page.PageTemplate.java

License:Apache License

protected ModalWindow createModalWindow(final String id, IModel<String> title, int width, int height) {
    final ModalWindow modal = new ModalWindow(id);
    add(modal);/*from   ww  w.j av  a2s .  c om*/

    modal.setResizable(false);
    modal.setTitle(title);
    modal.setCookieName(PageTemplate.class.getSimpleName() + ((int) (Math.random() * 100)));

    modal.setInitialWidth(width);
    modal.setWidthUnit("px");
    modal.setInitialHeight(height);
    modal.setHeightUnit("px");

    modal.setCloseButtonCallback(new ModalWindow.CloseButtonCallback() {

        @Override
        public boolean onCloseButtonClicked(AjaxRequestTarget target) {
            return true;
        }
    });

    modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {

        @Override
        public void onClose(AjaxRequestTarget target) {
            modal.close(target);
        }
    });

    modal.add(new AbstractDefaultAjaxBehavior() {

        @Override
        public void renderHead(Component component, IHeaderResponse response) {
            response.render(OnDomReadyHeaderItem.forScript("Wicket.Window.unloadConfirmation = false;"));
            response.render(JavaScriptHeaderItem.forScript(
                    "$(document).ready(function() {\n" + "  $(document).bind('keyup', function(evt) {\n"
                            + "    if (evt.keyCode == 27) {\n" + getCallbackScript() + "\n"
                            + "        evt.preventDefault();\n" + "    }\n" + "  });\n" + "});",
                    id));
        }

        @Override
        protected void respond(AjaxRequestTarget target) {
            modal.close(target);
        }
    });

    return modal;
}

From source file:com.userweave.pages.test.DisplaySurveyUI.java

License:Open Source License

private void addModalWindow(SurveyExecution surveyExecution) {
    String ID = "modalWindow";
    if (surveyExecution == null || evaluateError(surveyExecution) != ErrorType.NONE
            || studyService.isAtLeastOneAdminRegistered(surveyExecution.getStudy().getParentProject())) {
        add(new WebMarkupContainer(ID));
    } else {/*w  ww. j  ava  2  s.  com*/
        final ModalWindow modalWindow = new CustomModalWindow(ID);
        modalWindow.setInitialHeight(379);
        add(modalWindow);

        modalWindow.add(new AbstractAjaxTimerBehavior(Duration.seconds(1)) {
            private static final long serialVersionUID = 1L;

            @Override
            protected void onTimer(AjaxRequestTarget target) {
                this.stop();
                modalWindow.show(target);
            }
        });

        modalWindow.setPageCreator(new ModalWindow.PageCreator() {
            private static final long serialVersionUID = 1L;

            @Override
            public Page createPage() {
                return new InformAboutIncompleteRegistrationPage(modalWindow);
            }
        });
    }

}

From source file:com.userweave.pages.user.verification.UserVerificationPanel.java

License:Open Source License

/**
 * @return//from w  w w  . j  a  va2  s  . c  om
 */
protected ModalWindow createAgbModal() {
    final ModalWindow agbModalWindow = new CustomModalWindow("agbModalWindow");

    agbModalWindow.setInitialHeight(550);
    agbModalWindow.setInitialWidth(600);

    agbModalWindow.setPageCreator(new ModalWindow.PageCreator() {
        public Page createPage() {
            return new TermsOfUsePage(agbModalWindow);
        }
    });

    return agbModalWindow;
}

From source file:de.alpharogroup.wicket.components.examples.ajaxtabs.addable.AddableTabbedPanel.java

License:Apache License

public AddableTabbedPanel(final String id, final IModel<TabbedPanelModels<String>> model) {
    super(id, model);

    setDefaultModel(new CompoundPropertyModel<TabbedPanelModels<String>>(model));
    final List<TabModel<String>> tabModels = model.getObject().getTabModels();
    for (int i = 0; i < tabModels.size(); i++) {
        tabs.add(new AbstractContentTab<TabModel<String>>(tabModels.get(i).getTitle(),
                Model.of(tabModels.get(i)), Model.of("x")) {
            private static final long serialVersionUID = 1L;

            @Override//  w w w  .j a va  2  s  . com
            public Panel getPanel(final String panelId) {
                final Panel p = new TabPanel(panelId, getContent().getObject().getContent());
                return p;
            }
        });
    }

    add(ajaxTabbedPanel = new AjaxAddableTabbedPanel<ICloseableTab>("tabs", tabs) {
        private static final long serialVersionUID = 1L;

        @Override
        protected Component newAddTab(final String id, final IModel<String> model) {
            final WebMarkupContainer addTabContainer = new WebMarkupContainer(id);
            addTabContainer.setOutputMarkupId(true);
            addTabContainer.add(new AttributeAppender("class", " label"));
            final ModalWindow modalWindow = newAddTabModalWindow("modalWindow", Model.of("Add new tab"));
            addTabContainer.add(modalWindow);
            final AjaxLink<Void> openModal = new AjaxLink<Void>("openModal") {
                private static final long serialVersionUID = 1L;

                @Override
                public void onClick(final AjaxRequestTarget target) {
                    target.prependJavaScript("Wicket.Window.unloadConfirmation = false;");
                    modalWindow.show(target);
                }
            };
            openModal.setOutputMarkupId(true);
            openModal.add(newAddTabButtonLabel("addTabLabel", Model.of("+")));
            openModal.add(new AttributeAppender("class", " label-success"));
            addTabContainer.add(openModal);
            return addTabContainer;
        }

        @Override
        protected Label newaddTabLabel(final String id, final IModel<String> model) {
            return ComponentFactory.newLabel(id, model);
        }

        @Override
        protected IModel<String> newAddTabLabelModel() {
            return Model.of("+");
        }

        @Override
        protected ModalWindow newAddTabModalWindow(final String id, final IModel<String> model) {
            final ModalWindow modalWindow = new ModalWindow(id);
            modalWindow.setOutputMarkupId(true);
            modalWindow.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
            modalWindow.setTitle(model.getObject());
            modalWindow.setInitialHeight(200);
            modalWindow.setInitialWidth(300);
            modalWindow.setContent(
                    new SaveDialogPanel<String>(modalWindow.getContentId(), Model.of(new String())) {
                        /**
                         * The serialVersionUID.
                         */
                        private static final long serialVersionUID = 1L;

                        @Override
                        protected void onCancel(final AjaxRequestTarget target, final Form<?> form) {
                            super.onCancel(target, form);
                            modalWindow.close(target);
                        }

                        @SuppressWarnings("unchecked")
                        @Override
                        protected void onSave(AjaxRequestTarget target, final Form<?> form) {
                            super.onSave(target, form);
                            if (target == null) {
                                target = ComponentFinder.findAjaxRequestTarget();
                            }
                            final Object value = getModel();
                            String v = null;
                            if (value instanceof IModel) {
                                final Object obj = ((IModel<?>) value).getObject();
                                if (obj instanceof String) {
                                    v = (String) obj;
                                }
                            }
                            target.add(ajaxTabbedPanel);

                            final TabModel<String> newTabModel = new TabModel<>(Model.of(v), Model.of(v),
                                    Model.of("x"));

                            final AbstractContentTab<TabModel<String>> tab = new AbstractContentTab<TabModel<String>>(
                                    newTabModel.getTitle(), Model.of(newTabModel), Model.of("x")) {
                                private static final long serialVersionUID = 1L;

                                @Override
                                public Panel getPanel(final String panelId) {
                                    final Panel p = new TabPanel(panelId,
                                            getContent().getObject().getContent());
                                    return p;
                                }
                            };
                            final Object object = AddableTabbedPanel.this.getDefaultModelObject();
                            final TabbedPanelModels<String> tabbedModel = (TabbedPanelModels<String>) object;
                            final List<TabModel<String>> tabModels = tabbedModel.getTabModels();
                            tabModels.add(newTabModel);
                            ajaxTabbedPanel.onNewTab(target, tab);
                            modalWindow.close(target);
                        }
                    });
            return modalWindow;
        }

        @Override
        protected WebMarkupContainer newCloseLink(final String linkId, final int index) {
            final WebMarkupContainer wmc = super.newCloseLink(linkId, index);
            wmc.add(new AttributeAppender("class", "close label label-warning"));
            return wmc;

        }

        @Override
        protected WebMarkupContainer newLink(final String linkId, final int index) {
            final WebMarkupContainer wmc = super.newLink(linkId, index);
            wmc.add(new AttributeAppender("class", "label label-success"));
            return wmc;
        }
    });
}

From source file:de.tudarmstadt.ukp.clarin.webanno.webapp.page.annotation.AnnotationPage.java

License:Apache License

public AnnotationPage() {
    editor = new AnnotationDetailEditorPanel("annotationDetailEditorPanel",
            new Model<BratAnnotatorModel>(bModel)) {
        private static final long serialVersionUID = 2857345299480098279L;

        @Override//from  w ww  . j a  v  a  2s . c o  m
        protected void onChange(AjaxRequestTarget aTarget, BratAnnotatorModel aBModel) {
            aTarget.addChildren(getPage(), FeedbackPanel.class);

            try {
                annotator.bratRender(aTarget, getCas(aBModel));
            } catch (UIMAException | ClassNotFoundException | IOException e) {
                LOG.info("Error reading CAS " + e.getMessage());
                error("Error reading CAS " + e.getMessage());
                return;
            }

            annotator.bratRenderHighlight(aTarget, aBModel.getSelection().getAnnotation());

            annotator.onChange(aTarget, aBModel);
        }

        @Override
        protected void onAutoForward(AjaxRequestTarget aTarget, BratAnnotatorModel aBModel) {
            try {
                annotator.autoForward(aTarget, getCas(aBModel));
            } catch (UIMAException | ClassNotFoundException | IOException | BratAnnotationException e) {
                LOG.info("Error reading CAS " + e.getMessage());
                error("Error reading CAS " + e.getMessage());
                return;
            }
        }
    };

    editor.setOutputMarkupId(true);
    add(editor);

    annotator = new BratAnnotator("embedder1", new Model<BratAnnotatorModel>(bModel), editor) {

        private static final long serialVersionUID = 7279648231521710155L;

        @Override
        public void onChange(AjaxRequestTarget aTarget, BratAnnotatorModel aBratAnnotatorModel) {
            bModel = aBratAnnotatorModel;
            aTarget.add(numberOfPages);
        }

        @Override
        public void renderHead(IHeaderResponse aResponse) {
            super.renderHead(aResponse);

            // If the page is reloaded in the browser and a document was already open, we need
            // to render it. We use the "later" commands here to avoid polluting the Javascript
            // header items with document data and because loading times are not that critical
            // on a reload.
            if (getModelObject().getProject() != null) {
                // We want to trigger a late rendering only on a page reload, but not on a
                // Ajax request.
                if (!aResponse.getResponse().getClass().getName().endsWith("AjaxResponse")) {
                    aResponse.render(OnLoadHeaderItem.forScript(bratInitLaterCommand()));
                    aResponse.render(OnLoadHeaderItem.forScript(bratRenderLaterCommand()));
                }
            }
        }
    };

    // This is an Annotation Operation, set model to ANNOTATION mode
    bModel.setMode(Mode.ANNOTATION);
    add(annotator);

    add(documentNamePanel = (DocumentNamePanel) new DocumentNamePanel("documentNamePanel",
            new Model<BratAnnotatorModel>(bModel)).setOutputMarkupId(true));

    numberOfPages = new Label("numberOfPages", new Model<String>());
    numberOfPages.setOutputMarkupId(true);
    add(numberOfPages);

    final ModalWindow openDocumentsModal;
    add(openDocumentsModal = new ModalWindow("openDocumentsModal"));
    openDocumentsModal.setOutputMarkupId(true);

    openDocumentsModal.setInitialWidth(500);
    openDocumentsModal.setInitialHeight(300);
    openDocumentsModal.setResizable(true);
    openDocumentsModal.setWidthUnit("px");
    openDocumentsModal.setHeightUnit("px");
    openDocumentsModal.setTitle("Open document");
    openDocumentsModal.setCloseButtonCallback(new ModalWindow.CloseButtonCallback() {
        private static final long serialVersionUID = -5423095433535634321L;

        @Override
        public boolean onCloseButtonClicked(AjaxRequestTarget aTarget) {
            closeButtonClicked = true;
            return true;
        }
    });

    add(new AjaxLink<Void>("showOpenDocumentModal") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            editor.reset(aTarget);
            closeButtonClicked = false;
            openDocumentsModal.setContent(new OpenModalWindowPanel(openDocumentsModal.getContentId(), bModel,
                    openDocumentsModal, Mode.ANNOTATION) {

                private static final long serialVersionUID = -3434069761864809703L;

                @Override
                protected void onCancel(AjaxRequestTarget aTarget) {
                    closeButtonClicked = true;
                };
            });
            openDocumentsModal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
                private static final long serialVersionUID = -1746088901018629567L;

                @Override
                public void onClose(AjaxRequestTarget target) {
                    // A hack, the dialog opens for the first time, and if no document is
                    // selected window will be "blind down". Something in the brat js causes
                    // this!
                    if (bModel.getProject() == null || bModel.getDocument() == null) {
                        setResponsePage(WelcomePage.class);
                    }

                    // Dialog was cancelled rather that a document was selected.
                    if (closeButtonClicked) {
                        return;
                    }

                    loadDocumentAction(target);
                    String username = SecurityContextHolder.getContext().getAuthentication().getName();
                    User user = userRepository.get(username);
                    editor.setEnabled(
                            !FinishImage.isFinished(new Model<BratAnnotatorModel>(bModel), user, repository));

                }
            });
            // target.appendJavaScript("Wicket.Window.unloadConfirmation = false;");
            openDocumentsModal.show(aTarget);
        }
    });

    add(new AnnotationLayersModalPanel("annotationLayersModalPanel", new Model<BratAnnotatorModel>(bModel),
            editor) {
        private static final long serialVersionUID = -4657965743173979437L;

        @Override
        protected void onChange(AjaxRequestTarget aTarget) {

            try {
                JCas jCas = getJCas();
                annotator.bratRender(aTarget, jCas);
                updateSentenceAddress(jCas, aTarget);
            } catch (UIMAException | ClassNotFoundException | IOException e) {
                LOG.info("Error reading CAS " + e.getMessage());
                error("Error reading CAS " + e.getMessage());
                return;
            }

        }
    });

    add(new ExportModalPanel("exportModalPanel", new Model<BratAnnotatorModel>(bModel)));
    // Show the previous document, if exist
    add(new AjaxLink<Void>("showPreviousDocument") {
        private static final long serialVersionUID = 7496156015186497496L;

        /**
         * Get the current beginning sentence address and add on it the size of the display
         * window
         */
        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            editor.reset(aTarget);
            // List of all Source Documents in the project
            List<SourceDocument> listOfSourceDocuements = repository.listSourceDocuments(bModel.getProject());

            String username = SecurityContextHolder.getContext().getAuthentication().getName();
            User user = userRepository.get(username);

            List<SourceDocument> sourceDocumentsinIgnorState = new ArrayList<SourceDocument>();
            for (SourceDocument sourceDocument : listOfSourceDocuements) {
                if (repository.existsAnnotationDocument(sourceDocument, user)
                        && repository.getAnnotationDocument(sourceDocument, user).getState()
                                .equals(AnnotationDocumentState.IGNORE)) {
                    sourceDocumentsinIgnorState.add(sourceDocument);
                }
            }

            listOfSourceDocuements.removeAll(sourceDocumentsinIgnorState);

            // Index of the current source document in the list
            int currentDocumentIndex = listOfSourceDocuements.indexOf(bModel.getDocument());

            // If the first the document
            if (currentDocumentIndex == 0) {
                aTarget.appendJavaScript("alert('This is the first document!')");
                return;
            }
            bModel.setDocumentName(listOfSourceDocuements.get(currentDocumentIndex - 1).getName());
            bModel.setDocument(listOfSourceDocuements.get(currentDocumentIndex - 1));

            loadDocumentAction(aTarget);
        }
    }.add(new InputBehavior(new KeyType[] { KeyType.Shift, KeyType.Page_up }, EventType.click)));

    // Show the next document if exist
    add(new AjaxLink<Void>("showNextDocument") {
        private static final long serialVersionUID = 7496156015186497496L;

        /**
         * Get the current beginning sentence address and add on it the size of the display
         * window
         */
        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            editor.reset(aTarget);
            // List of all Source Documents in the project
            List<SourceDocument> listOfSourceDocuements = repository.listSourceDocuments(bModel.getProject());

            String username = SecurityContextHolder.getContext().getAuthentication().getName();
            User user = userRepository.get(username);

            List<SourceDocument> sourceDocumentsinIgnorState = new ArrayList<SourceDocument>();
            for (SourceDocument sourceDocument : listOfSourceDocuements) {
                if (repository.existsAnnotationDocument(sourceDocument, user)
                        && repository.getAnnotationDocument(sourceDocument, user).getState()
                                .equals(AnnotationDocumentState.IGNORE)) {
                    sourceDocumentsinIgnorState.add(sourceDocument);
                }
            }

            listOfSourceDocuements.removeAll(sourceDocumentsinIgnorState);

            // Index of the current source document in the list
            int currentDocumentIndex = listOfSourceDocuements.indexOf(bModel.getDocument());

            // If the first document
            if (currentDocumentIndex == listOfSourceDocuements.size() - 1) {
                aTarget.appendJavaScript("alert('This is the last document!')");
                return;
            }
            bModel.setDocumentName(listOfSourceDocuements.get(currentDocumentIndex + 1).getName());
            bModel.setDocument(listOfSourceDocuements.get(currentDocumentIndex + 1));

            loadDocumentAction(aTarget);
        }
    }.add(new InputBehavior(new KeyType[] { KeyType.Shift, KeyType.Page_down }, EventType.click)));

    // Show the next page of this document
    add(new AjaxLink<Void>("showNext") {
        private static final long serialVersionUID = 7496156015186497496L;

        /**
         * Get the current beginning sentence address and add on it the size of the display
         * window
         */
        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            try {
                if (bModel.getDocument() != null) {
                    JCas jCas = getJCas();
                    int nextSentenceAddress = BratAjaxCasUtil.getNextPageFirstSentenceAddress(jCas,
                            bModel.getSentenceAddress(), bModel.getPreferences().getWindowSize());
                    if (bModel.getSentenceAddress() != nextSentenceAddress) {

                        updateSentenceNumber(jCas, nextSentenceAddress);

                        aTarget.addChildren(getPage(), FeedbackPanel.class);
                        annotator.bratRenderLater(aTarget);
                        gotoPageTextField.setModelObject(
                                BratAjaxCasUtil.getFirstSentenceNumber(jCas, bModel.getSentenceAddress()) + 1);
                        updateSentenceAddress(jCas, aTarget);
                    }

                    else {
                        aTarget.appendJavaScript("alert('This is last page!')");
                    }
                } else {
                    aTarget.appendJavaScript("alert('Please open a document first!')");
                }
            } catch (Exception e) {
                error(e.getMessage());
                aTarget.addChildren(getPage(), FeedbackPanel.class);
            }
        }
    }.add(new InputBehavior(new KeyType[] { KeyType.Page_down }, EventType.click)));

    // Show the previous page of this document
    add(new AjaxLink<Void>("showPrevious") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            try {
                if (bModel.getDocument() != null) {

                    JCas jCas = getJCas();

                    int previousSentenceAddress = BratAjaxCasUtil.getPreviousDisplayWindowSentenceBeginAddress(
                            jCas, bModel.getSentenceAddress(), bModel.getPreferences().getWindowSize());
                    if (bModel.getSentenceAddress() != previousSentenceAddress) {

                        updateSentenceNumber(jCas, previousSentenceAddress);

                        aTarget.addChildren(getPage(), FeedbackPanel.class);
                        annotator.bratRenderLater(aTarget);
                        gotoPageTextField.setModelObject(
                                BratAjaxCasUtil.getFirstSentenceNumber(jCas, bModel.getSentenceAddress()) + 1);
                        updateSentenceAddress(jCas, aTarget);
                    } else {
                        aTarget.appendJavaScript("alert('This is First Page!')");
                    }
                } else {
                    aTarget.appendJavaScript("alert('Please open a document first!')");
                }
            } catch (Exception e) {
                error(e.getMessage());
                aTarget.addChildren(getPage(), FeedbackPanel.class);
            }
        }
    }.add(new InputBehavior(new KeyType[] { KeyType.Page_up }, EventType.click)));

    add(new AjaxLink<Void>("showFirst") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            try {
                if (bModel.getDocument() != null) {

                    JCas jCas = getJCas();

                    if (bModel.getFirstSentenceAddress() != bModel.getSentenceAddress()) {

                        updateSentenceNumber(jCas, bModel.getFirstSentenceAddress());

                        aTarget.addChildren(getPage(), FeedbackPanel.class);
                        annotator.bratRenderLater(aTarget);
                        gotoPageTextField.setModelObject(
                                BratAjaxCasUtil.getFirstSentenceNumber(jCas, bModel.getSentenceAddress()) + 1);
                        updateSentenceAddress(jCas, aTarget);
                    } else {
                        aTarget.appendJavaScript("alert('This is first page!')");
                    }
                } else {
                    aTarget.appendJavaScript("alert('Please open a document first!')");
                }
            } catch (Exception e) {
                error(e.getMessage());
                aTarget.addChildren(getPage(), FeedbackPanel.class);
            }
        }
    }.add(new InputBehavior(new KeyType[] { KeyType.Home }, EventType.click)));

    add(new AjaxLink<Void>("showLast") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            try {
                if (bModel.getDocument() != null) {

                    JCas jCas = getJCas();

                    int lastDisplayWindowBeginingSentenceAddress = BratAjaxCasUtil
                            .getLastDisplayWindowFirstSentenceAddress(jCas,
                                    bModel.getPreferences().getWindowSize());
                    if (lastDisplayWindowBeginingSentenceAddress != bModel.getSentenceAddress()) {

                        updateSentenceNumber(jCas, lastDisplayWindowBeginingSentenceAddress);

                        aTarget.addChildren(getPage(), FeedbackPanel.class);
                        annotator.bratRenderLater(aTarget);
                        gotoPageTextField.setModelObject(
                                BratAjaxCasUtil.getFirstSentenceNumber(jCas, bModel.getSentenceAddress()) + 1);
                        updateSentenceAddress(jCas, aTarget);
                    } else {
                        aTarget.appendJavaScript("alert('This is last Page!')");
                    }
                } else {
                    aTarget.appendJavaScript("alert('Please open a document first!')");
                }
            } catch (Exception e) {
                error(e.getMessage());
                aTarget.addChildren(getPage(), FeedbackPanel.class);
            }
        }
    }.add(new InputBehavior(new KeyType[] { KeyType.End }, EventType.click)));

    add(new AjaxLink<Void>("toggleScriptDirection") {
        private static final long serialVersionUID = -4332566542278611728L;

        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            if (ScriptDirection.LTR.equals(bModel.getScriptDirection())) {
                bModel.setScriptDirection(ScriptDirection.RTL);
            } else {
                bModel.setScriptDirection(ScriptDirection.LTR);
            }
            annotator.bratRenderLater(aTarget);
        }
    });
    add(new GuidelineModalPanel("guidelineModalPanel", new Model<BratAnnotatorModel>(bModel)));

    gotoPageTextField = (NumberTextField<Integer>) new NumberTextField<Integer>("gotoPageText",
            new Model<Integer>(0));
    Form<Void> gotoPageTextFieldForm = new Form<Void>("gotoPageTextFieldForm");
    gotoPageTextFieldForm.add(new AjaxFormSubmitBehavior(gotoPageTextFieldForm, "onsubmit") {
        private static final long serialVersionUID = -4549805321484461545L;

        @Override
        protected void onSubmit(AjaxRequestTarget aTarget) {
            try {
                if (gotoPageAddress == 0) {
                    aTarget.appendJavaScript("alert('The sentence number entered is not valid')");
                    return;
                }
                if (bModel.getSentenceAddress() != gotoPageAddress) {
                    JCas jCas = getJCas();

                    updateSentenceNumber(jCas, gotoPageAddress);

                    aTarget.addChildren(getPage(), FeedbackPanel.class);
                    annotator.bratRenderLater(aTarget);
                    aTarget.add(numberOfPages);
                    gotoPageTextField.setModelObject(
                            BratAjaxCasUtil.getFirstSentenceNumber(jCas, bModel.getSentenceAddress()) + 1);
                    aTarget.add(gotoPageTextField);
                }
            } catch (Exception e) {
                error(e.getMessage());
                aTarget.addChildren(getPage(), FeedbackPanel.class);
            }
        }
    });
    gotoPageTextField.setType(Integer.class);
    gotoPageTextField.setMinimum(1);
    gotoPageTextField.setDefaultModelObject(1);
    add(gotoPageTextFieldForm.add(gotoPageTextField));

    gotoPageTextField.add(new AjaxFormComponentUpdatingBehavior("onchange") {
        private static final long serialVersionUID = 56637289242712170L;

        @Override
        protected void onUpdate(AjaxRequestTarget aTarget) {
            try {
                if (gotoPageTextField.getModelObject() < 1) {
                    aTarget.appendJavaScript("alert('Page number shouldn't be less than 1')");
                } else {
                    updateSentenceAddress(getJCas(), aTarget);
                }
            } catch (Exception e) {
                error(e.getMessage());
                aTarget.addChildren(getPage(), FeedbackPanel.class);
            }
        }
    });

    add(new AjaxLink<Void>("gotoPageLink") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            try {
                if (gotoPageAddress == 0) {
                    aTarget.appendJavaScript("alert('The sentence number entered is not valid')");
                    return;
                }
                if (bModel.getDocument() == null) {
                    aTarget.appendJavaScript("alert('Please open a document first!')");
                    return;
                }
                if (bModel.getSentenceAddress() != gotoPageAddress) {
                    JCas jCas = getJCas();
                    updateSentenceNumber(jCas, gotoPageAddress);
                    updateSentenceAddress(jCas, aTarget);
                    annotator.bratRenderLater(aTarget);
                }
            } catch (Exception e) {
                error(e.getMessage());
                aTarget.addChildren(getPage(), FeedbackPanel.class);
            }
        }
    });

    finish = new FinishImage("finishImage", new Model<BratAnnotatorModel>(bModel));
    finish.setOutputMarkupId(true);

    add(new FinishLink("showYesNoModalPanel", new Model<BratAnnotatorModel>(bModel), finish) {
        private static final long serialVersionUID = -4657965743173979437L;
    });
}

From source file:de.tudarmstadt.ukp.clarin.webanno.webapp.page.annotation.component.AnnotationLayersModalPanel.java

License:Apache License

public AnnotationLayersModalPanel(String id, final IModel<BratAnnotatorModel> aBModel,
        AnnotationDetailEditorPanel aEditor) {
    super(id, aBModel);
    // dialog window to select annotation layer preferences
    final ModalWindow annotationLayerSelectionModal;
    add(annotationLayerSelectionModal = new ModalWindow("annotationLayerModal"));
    annotationLayerSelectionModal.setOutputMarkupId(true);
    annotationLayerSelectionModal.setInitialWidth(450);
    annotationLayerSelectionModal.setInitialHeight(350);
    annotationLayerSelectionModal.setResizable(true);
    annotationLayerSelectionModal.setWidthUnit("px");
    annotationLayerSelectionModal.setHeightUnit("px");
    annotationLayerSelectionModal.setTitle("Annotation Layer and window size configuration Window");
    annotationLayerSelectionModal.setCloseButtonCallback(new ModalWindow.CloseButtonCallback() {
        private static final long serialVersionUID = -5423095433535634321L;

        @Override/*from  www .j av  a  2s.c  om*/
        public boolean onCloseButtonClicked(AjaxRequestTarget aTarget) {
            closeButtonClicked = true;
            return true;
        }
    });

    add(new AjaxLink<Void>("showannotationLayerModal") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            if (aBModel.getObject().getProject() == null) {
                target.appendJavaScript("alert('Please open a project first!')");
            } else {
                closeButtonClicked = false;

                annotationLayerSelectionModal.setContent(
                        new AnnotationPreferenceModalPanel(annotationLayerSelectionModal.getContentId(),
                                annotationLayerSelectionModal, aBModel.getObject(), aEditor) {

                            private static final long serialVersionUID = -3434069761864809703L;

                            @Override
                            protected void onCancel(AjaxRequestTarget aTarget) {
                                closeButtonClicked = true;
                            };
                        });

                annotationLayerSelectionModal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
                    private static final long serialVersionUID = 1643342179335627082L;

                    @Override
                    public void onClose(AjaxRequestTarget target) {
                        if (!closeButtonClicked) {
                            onChange(target);
                        }
                    }
                });
                annotationLayerSelectionModal.show(target);
            }

        }
    });

}

From source file:de.tudarmstadt.ukp.clarin.webanno.webapp.page.annotation.component.ExportModalPanel.java

License:Apache License

public ExportModalPanel(String id, final IModel<BratAnnotatorModel> aModel) {
    super(id, aModel);

    final ModalWindow exportModal;
    add(exportModal = new ModalWindow("exportModal"));

    exportModal.setCookieName("modal-1");
    exportModal.setInitialWidth(550);//from  w  w w.  ja  v a  2 s  .c  o  m
    exportModal.setInitialHeight(450);
    exportModal.setResizable(true);
    exportModal.setWidthUnit("px");
    exportModal.setHeightUnit("px");
    exportModal.setTitle("Export Annotated data to a given Format");
    exportModal.setContent(
            new ExportModalWindowPanel(exportModal.getContentId(), exportModal, aModel.getObject()));

    add(new AjaxLink<Void>("showExportModal") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            if (aModel.getObject().getDocument() == null) {
                target.appendJavaScript("alert('Please open a document first!')");
            } else {
                exportModal.show(target);
            }
        }
    });
}

From source file:de.tudarmstadt.ukp.clarin.webanno.webapp.page.annotation.component.FinishLink.java

License:Apache License

public FinishLink(String id, final IModel<BratAnnotatorModel> aModel, final FinishImage finishImag) {
    super(id, aModel);

    final ModalWindow FinishModal;
    add(FinishModal = new ModalWindow("yesNoModal"));
    FinishModal.setOutputMarkupId(true);

    FinishModal.setInitialWidth(400);/*  www .ja v  a 2  s. c om*/
    FinishModal.setInitialHeight(50);
    FinishModal.setResizable(true);
    FinishModal.setWidthUnit("px");
    FinishModal.setHeightUnit("px");
    FinishModal.setTitle("Are you sure you want to finish annotating?");

    AjaxLink<Void> showYesNoModal;

    add(showYesNoModal = new AjaxLink<Void>("showYesNoModal") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            String username = SecurityContextHolder.getContext().getAuthentication().getName();
            User user = userRepository.get(username);
            if (FinishImage.isFinished(aModel, user, repository)) {
                target.appendJavaScript("alert('Document already closed!')");
            } else {
                FinishModal.setContent(new YesNoFinishModalPanel(FinishModal.getContentId(), aModel.getObject(),
                        FinishModal, Mode.ANNOTATION));
                FinishModal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
                    private static final long serialVersionUID = -1746088901018629567L;

                    @Override
                    public void onClose(AjaxRequestTarget target) {
                        target.add(finishImag.setOutputMarkupId(true));
                    }
                });
                FinishModal.show(target);
            }

        }
    });
    showYesNoModal.add(finishImag);
}

From source file:de.tudarmstadt.ukp.clarin.webanno.webapp.page.annotation.component.GuidelineModalPanel.java

License:Apache License

public GuidelineModalPanel(String id, final IModel<BratAnnotatorModel> aModel) {
    super(id, aModel);
    final ModalWindow guidelineModal;
    add(guidelineModal = new ModalWindow("guidelineModal"));

    guidelineModal.setInitialWidth(550);
    guidelineModal.setInitialHeight(450);
    guidelineModal.setResizable(true);/* www  . j av  a 2  s  .co m*/
    guidelineModal.setWidthUnit("px");
    guidelineModal.setHeightUnit("px");
    guidelineModal.setTitle("Open Annotation Guideline, in separate window");

    add(new AjaxLink<Void>("showGuidelineModal") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            guidelineModal.setContent(
                    new GuidelineModalWindowPanel(guidelineModal.getContentId(), guidelineModal, aModel));

            guidelineModal.show(target);

        }
    });

}

From source file:de.tudarmstadt.ukp.clarin.webanno.webapp.page.automation.AutomationPage.java

License:Apache License

public AutomationPage() {
    bModel = new BratAnnotatorModel();
    bModel.setMode(Mode.AUTOMATION);/*  w  w w  .ja  v  a 2s. c o  m*/

    LinkedList<CurationUserSegmentForAnnotationDocument> sentences = new LinkedList<CurationUserSegmentForAnnotationDocument>();
    CurationUserSegmentForAnnotationDocument curationUserSegmentForAnnotationDocument = new CurationUserSegmentForAnnotationDocument();
    if (bModel.getDocument() != null) {
        curationUserSegmentForAnnotationDocument
                .setAnnotationSelectionByUsernameAndAddress(annotationSelectionByUsernameAndAddress);
        curationUserSegmentForAnnotationDocument.setBratAnnotatorModel(bModel);
        sentences.add(curationUserSegmentForAnnotationDocument);
    }
    automateView = new SuggestionViewPanel("automateView",
            new Model<LinkedList<CurationUserSegmentForAnnotationDocument>>(sentences)) {
        private static final long serialVersionUID = 2583509126979792202L;

        @Override
        public void onChange(AjaxRequestTarget aTarget) {
            try {
                // update begin/end of the curationsegment based on bratAnnotatorModel changes
                // (like sentence change in auto-scroll mode,....
                aTarget.addChildren(getPage(), FeedbackPanel.class);
                curationContainer.setBratAnnotatorModel(bModel);
                setCurationSegmentBeginEnd();

                CuratorUtil.updatePanel(aTarget, this, curationContainer, annotator, repository,
                        annotationSelectionByUsernameAndAddress, curationSegment, annotationService,
                        userRepository);
            } catch (UIMAException e) {
                error(ExceptionUtils.getRootCause(e));
            } catch (ClassNotFoundException e) {
                error(e.getMessage());
            } catch (IOException e) {
                error(e.getMessage());
            } catch (BratAnnotationException e) {
                error(e.getMessage());
            }
            annotator.bratRenderLater(aTarget);
            aTarget.add(numberOfPages);
            update(aTarget);
        }
    };

    automateView.setOutputMarkupId(true);
    add(automateView);

    editor = new AnnotationDetailEditorPanel("annotationDetailEditorPanel",
            new Model<BratAnnotatorModel>(bModel)) {
        private static final long serialVersionUID = 2857345299480098279L;

        @Override
        protected void onChange(AjaxRequestTarget aTarget, BratAnnotatorModel aBModel) {
            aTarget.addChildren(getPage(), FeedbackPanel.class);

            try {
                annotator.bratRender(aTarget, getCas(aBModel));
            } catch (UIMAException | ClassNotFoundException | IOException e) {
                LOG.info("Error reading CAS " + e.getMessage());
                error("Error reading CAS " + e.getMessage());
                return;
            }

            annotator.bratRenderHighlight(aTarget, aBModel.getSelection().getAnnotation());

            annotator.onChange(aTarget, aBModel);
        }

        @Override
        protected void onAutoForward(AjaxRequestTarget aTarget, BratAnnotatorModel aBModel) {
            try {
                annotator.autoForward(aTarget, getCas(aBModel));
            } catch (UIMAException | ClassNotFoundException | IOException | BratAnnotationException e) {
                LOG.info("Error reading CAS " + e.getMessage());
                error("Error reading CAS " + e.getMessage());
                return;
            }
        }

        @Override
        public void onAnnotate(AjaxRequestTarget aTarget, BratAnnotatorModel aBModel, int aStart, int aEnd) {
            AnnotationLayer layer = aBModel.getSelectedAnnotationLayer();
            int address = aBModel.getSelection().getAnnotation().getId();
            try {
                AnnotationDocument annodoc = repository.createOrGetAnnotationDocument(aBModel.getDocument(),
                        aBModel.getUser());
                JCas jCas = repository.readAnnotationCas(annodoc);
                AnnotationFS fs = selectByAddr(jCas, address);

                for (AnnotationFeature f : annotationService.listAnnotationFeature(layer)) {
                    Type type = CasUtil.getType(fs.getCAS(), layer.getName());
                    Feature feat = type.getFeatureByBaseName(f.getName());
                    if (!automationService.existsMiraTemplate(f)) {
                        continue;
                    }
                    if (!automationService.getMiraTemplate(f).isAnnotateAndRepeat()) {
                        continue;
                    }
                    TagSet tagSet = f.getTagset();
                    boolean isRepeatabl = false;
                    // repeat only if the value is in the tagset
                    for (Tag tag : annotationService.listTags(tagSet)) {
                        if (fs.getFeatureValueAsString(feat) == null) {
                            break; // this is new annotation without values
                        }
                        if (fs.getFeatureValueAsString(feat).equals(tag.getName())) {
                            isRepeatabl = true;
                            break;
                        }
                    }
                    if (automationService.getMiraTemplate(f) != null && isRepeatabl) {

                        if (layer.getType().endsWith(WebAnnoConst.RELATION_TYPE)) {
                            AutomationUtil.repeateRelationAnnotation(aBModel, repository, annotationService, fs,
                                    f, fs.getFeatureValueAsString(feat));
                            update(aTarget);
                            break;
                        } else if (layer.getType().endsWith(WebAnnoConst.SPAN_TYPE)) {
                            AutomationUtil.repeateSpanAnnotation(aBModel, repository, annotationService, aStart,
                                    aEnd, f, fs.getFeatureValueAsString(feat));
                            update(aTarget);
                            break;
                        }

                    }
                }
            } catch (UIMAException e) {
                error(ExceptionUtils.getRootCause(e));
            } catch (ClassNotFoundException e) {
                error(e.getMessage());
            } catch (IOException e) {
                error(e.getMessage());
            } catch (BratAnnotationException e) {
                error(e.getMessage());
            }
        }

        @Override
        public void onDelete(AjaxRequestTarget aTarget, BratAnnotatorModel aBModel, AnnotationFS aFs) {
            AnnotationLayer layer = aBModel.getSelectedAnnotationLayer();
            for (AnnotationFeature f : annotationService.listAnnotationFeature(layer)) {
                if (!automationService.existsMiraTemplate(f)) {
                    continue;
                }
                if (!automationService.getMiraTemplate(f).isAnnotateAndRepeat()) {
                    continue;
                }
                try {
                    Type type = CasUtil.getType(aFs.getCAS(), layer.getName());
                    Feature feat = type.getFeatureByBaseName(f.getName());
                    if (layer.getType().endsWith(WebAnnoConst.RELATION_TYPE)) {
                        AutomationUtil.deleteRelationAnnotation(aBModel, repository, annotationService, aFs, f,
                                aFs.getFeatureValueAsString(feat));
                    } else {
                        AutomationUtil.deleteSpanAnnotation(aBModel, repository, annotationService,
                                aFs.getBegin(), aFs.getEnd(), f, aFs.getFeatureValueAsString(feat));
                    }
                    update(aTarget);
                } catch (UIMAException e) {
                    error(ExceptionUtils.getRootCause(e));
                } catch (ClassNotFoundException e) {
                    error(e.getMessage());
                } catch (IOException e) {
                    error(e.getMessage());
                } catch (BratAnnotationException e) {
                    error(e.getMessage());
                }
            }

        }
    };

    editor.setOutputMarkupId(true);
    add(editor);

    annotator = new BratAnnotator("mergeView", new Model<BratAnnotatorModel>(bModel), editor) {
        private static final long serialVersionUID = 7279648231521710155L;

        @Override
        public void onChange(AjaxRequestTarget aTarget, BratAnnotatorModel aBratAnnotatorModel) {
            try {
                aTarget.addChildren(getPage(), FeedbackPanel.class);
                // info(bratAnnotatorModel.getMessage());
                aTarget.addChildren(getPage(), FeedbackPanel.class);
                bModel = aBratAnnotatorModel;
                SuggestionBuilder builder = new SuggestionBuilder(repository, annotationService,
                        userRepository);
                curationContainer = builder.buildCurationContainer(bModel);
                setCurationSegmentBeginEnd();
                curationContainer.setBratAnnotatorModel(bModel);

                CuratorUtil.updatePanel(aTarget, automateView, curationContainer, this, repository,
                        annotationSelectionByUsernameAndAddress, curationSegment, annotationService,
                        userRepository);
                aTarget.add(automateView);
                aTarget.add(numberOfPages);
            } catch (UIMAException e) {
                error(ExceptionUtils.getRootCause(e));
            } catch (ClassNotFoundException e) {
                error(e.getMessage());
            } catch (IOException e) {
                error(e.getMessage());
            } catch (BratAnnotationException e) {
                error(e.getMessage());
            }
            update(aTarget);
        }
    };
    // reset sentenceAddress and lastSentenceAddress to the orginal once

    annotator.setOutputMarkupId(true);
    add(annotator);

    curationContainer = new CurationContainer();
    curationContainer.setBratAnnotatorModel(bModel);

    add(documentNamePanel = new DocumentNamePanel("documentNamePanel", new Model<BratAnnotatorModel>(bModel)));

    add(numberOfPages = (Label) new Label("numberOfPages", new LoadableDetachableModel<String>() {
        private static final long serialVersionUID = 891566759811286173L;

        @Override
        protected String load() {
            if (bModel.getDocument() != null) {

                JCas mergeJCas = null;
                try {

                    mergeJCas = repository.readCorrectionCas(bModel.getDocument());

                    totalNumberOfSentence = getNumberOfPages(mergeJCas);

                    // If only one page, start displaying from sentence 1
                    /*
                     * if (totalNumberOfSentence == 1) {
                     * bratAnnotatorModel.setSentenceAddress(bratAnnotatorModel
                     * .getFirstSentenceAddress()); }
                     */
                    int address = getAddr(selectSentenceAt(mergeJCas, bModel.getSentenceBeginOffset(),
                            bModel.getSentenceEndOffset()));
                    sentenceNumber = getFirstSentenceNumber(mergeJCas, address);
                    int firstSentenceNumber = sentenceNumber + 1;
                    int lastSentenceNumber;
                    if (firstSentenceNumber + bModel.getPreferences().getWindowSize()
                            - 1 < totalNumberOfSentence) {
                        lastSentenceNumber = firstSentenceNumber + bModel.getPreferences().getWindowSize() - 1;
                    } else {
                        lastSentenceNumber = totalNumberOfSentence;
                    }

                    return "showing " + firstSentenceNumber + "-" + lastSentenceNumber + " of "
                            + totalNumberOfSentence + " sentences";
                } catch (UIMAException e) {
                    return "";
                } catch (DataRetrievalFailureException e) {
                    return "";
                } catch (ClassNotFoundException e) {
                    return "";
                } catch (FileNotFoundException e) {
                    return "";
                } catch (IOException e) {
                    return "";
                }

            } else {
                return "";// no document yet selected
            }

        }
    }).setOutputMarkupId(true));

    final ModalWindow openDocumentsModal;
    add(openDocumentsModal = new ModalWindow("openDocumentsModal"));
    openDocumentsModal.setOutputMarkupId(true);

    openDocumentsModal.setInitialWidth(500);
    openDocumentsModal.setInitialHeight(300);
    openDocumentsModal.setResizable(true);
    openDocumentsModal.setWidthUnit("px");
    openDocumentsModal.setHeightUnit("px");
    openDocumentsModal.setTitle("Open document");

    add(new AjaxLink<Void>("showOpenDocumentModal") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            editor.reset(aTarget);
            openDocumentsModal.setContent(new OpenModalWindowPanel(openDocumentsModal.getContentId(), bModel,
                    openDocumentsModal, Mode.AUTOMATION));
            openDocumentsModal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
                private static final long serialVersionUID = -1746088901018629567L;

                @Override
                public void onClose(AjaxRequestTarget target) {
                    if (bModel.getDocument() == null) {
                        setResponsePage(WelcomePage.class);
                        return;
                    }

                    try {
                        target.addChildren(getPage(), FeedbackPanel.class);
                        bModel.setDocument(bModel.getDocument());
                        bModel.setProject(bModel.getProject());

                        String username = SecurityContextHolder.getContext().getAuthentication().getName();

                        loadDocumentAction();
                        setCurationSegmentBeginEnd();
                        update(target);
                        User user = userRepository.get(username);
                        editor.setEnabled(!FinishImage.isFinished(new Model<BratAnnotatorModel>(bModel), user,
                                repository));

                    } catch (UIMAException e) {
                        target.addChildren(getPage(), FeedbackPanel.class);
                        error(ExceptionUtils.getRootCause(e));
                    } catch (ClassNotFoundException e) {
                        target.addChildren(getPage(), FeedbackPanel.class);
                        error(e.getMessage());
                    } catch (IOException e) {
                        target.addChildren(getPage(), FeedbackPanel.class);
                        error(e.getMessage());
                    } catch (BratAnnotationException e) {
                        error(e.getMessage());
                    }
                    finish.setModelObject(bModel);
                    target.add(finish.setOutputMarkupId(true));
                    target.appendJavaScript("Wicket.Window.unloadConfirmation=false;window.location.reload()");
                    target.add(documentNamePanel.setOutputMarkupId(true));
                    target.add(numberOfPages);
                }
            });
            openDocumentsModal.show(aTarget);
        }
    });

    add(new AnnotationLayersModalPanel("annotationLayersModalPanel", new Model<BratAnnotatorModel>(bModel),
            editor) {
        private static final long serialVersionUID = -4657965743173979437L;

        @Override
        protected void onChange(AjaxRequestTarget aTarget) {
            curationContainer.setBratAnnotatorModel(bModel);
            try {
                aTarget.addChildren(getPage(), FeedbackPanel.class);
                setCurationSegmentBeginEnd();
            } catch (UIMAException e) {
                error(ExceptionUtils.getRootCauseMessage(e));
            } catch (ClassNotFoundException e) {
                error(e.getMessage());
            } catch (IOException e) {
                error(e.getMessage());
            }
            update(aTarget);
            // mergeVisualizer.reloadContent(aTarget);
            aTarget.appendJavaScript("Wicket.Window.unloadConfirmation = false;window.location.reload()");

        }
    });

    add(new ExportModalPanel("exportModalPanel", new Model<BratAnnotatorModel>(bModel)));

    gotoPageTextField = (NumberTextField<Integer>) new NumberTextField<Integer>("gotoPageText",
            new Model<Integer>(0));
    Form<Void> gotoPageTextFieldForm = new Form<Void>("gotoPageTextFieldForm");
    gotoPageTextFieldForm.add(new AjaxFormSubmitBehavior(gotoPageTextFieldForm, "onsubmit") {
        private static final long serialVersionUID = -4549805321484461545L;

        @Override
        protected void onSubmit(AjaxRequestTarget aTarget) {
            if (gotoPageAddress == 0) {
                aTarget.appendJavaScript("alert('The sentence number entered is not valid')");
                return;
            }
            JCas mergeJCas = null;
            try {
                aTarget.addChildren(getPage(), FeedbackPanel.class);
                mergeJCas = repository.readCorrectionCas(bModel.getDocument());
                if (bModel.getSentenceAddress() != gotoPageAddress) {

                    updateSentenceNumber(mergeJCas, gotoPageAddress);

                    SuggestionBuilder builder = new SuggestionBuilder(repository, annotationService,
                            userRepository);
                    curationContainer = builder.buildCurationContainer(bModel);
                    setCurationSegmentBeginEnd();
                    curationContainer.setBratAnnotatorModel(bModel);
                    update(aTarget);
                    annotator.bratRenderLater(aTarget);
                }
            } catch (UIMAException e) {
                error(ExceptionUtils.getRootCause(e));
            } catch (ClassNotFoundException e) {
                error(e.getMessage());
            } catch (IOException e) {
                error(e.getMessage());
            } catch (BratAnnotationException e) {
                error(e.getMessage());
            }
        }
    });

    gotoPageTextField.setType(Integer.class);
    gotoPageTextField.setMinimum(1);
    gotoPageTextField.setDefaultModelObject(1);
    add(gotoPageTextFieldForm.add(gotoPageTextField));
    gotoPageTextField.add(new AjaxFormComponentUpdatingBehavior("onchange") {
        private static final long serialVersionUID = -3853194405966729661L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            JCas mergeJCas = null;
            try {
                mergeJCas = repository.readCorrectionCas(bModel.getDocument());
                gotoPageAddress = getSentenceAddress(mergeJCas, gotoPageTextField.getModelObject());
            } catch (UIMAException e) {
                error(ExceptionUtils.getRootCause(e));
            } catch (ClassNotFoundException e) {
                error(ExceptionUtils.getRootCause(e));
            } catch (IOException e) {
                error(e.getMessage());
            }

        }
    });

    add(new AjaxLink<Void>("gotoPageLink") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget aTarget) {

            if (gotoPageAddress == 0) {
                aTarget.appendJavaScript("alert('The sentence number entered is not valid')");
                return;
            }
            if (bModel.getDocument() == null) {
                aTarget.appendJavaScript("alert('Please open a document first!')");
                return;
            }
            JCas mergeJCas = null;
            try {
                aTarget.addChildren(getPage(), FeedbackPanel.class);
                mergeJCas = repository.readCorrectionCas(bModel.getDocument());
                if (bModel.getSentenceAddress() != gotoPageAddress) {

                    updateSentenceNumber(mergeJCas, gotoPageAddress);

                    SuggestionBuilder builder = new SuggestionBuilder(repository, annotationService,
                            userRepository);
                    curationContainer = builder.buildCurationContainer(bModel);
                    setCurationSegmentBeginEnd();
                    curationContainer.setBratAnnotatorModel(bModel);
                    update(aTarget);
                    annotator.bratRenderLater(aTarget);
                }
            } catch (UIMAException e) {
                error(ExceptionUtils.getRootCause(e));
            } catch (ClassNotFoundException e) {
                error(e.getMessage());
            } catch (IOException e) {
                error(e.getMessage());
            } catch (BratAnnotationException e) {
                error(e.getMessage());
            }
        }
    });

    finish = new FinishImage("finishImage", new LoadableDetachableModel<BratAnnotatorModel>() {
        private static final long serialVersionUID = -2737326878793568454L;

        @Override
        protected BratAnnotatorModel load() {
            return bModel;
        }
    });

    add(new FinishLink("showYesNoModalPanel", new Model<BratAnnotatorModel>(bModel), finish) {
        private static final long serialVersionUID = -4657965743173979437L;
    });

    // Show the previous document, if exist
    add(new AjaxLink<Void>("showPreviousDocument") {
        private static final long serialVersionUID = 7496156015186497496L;

        /**
         * Get the current beginning sentence address and add on it the size of the display
         * window
         */
        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            editor.reset(aTarget);
            aTarget.addChildren(getPage(), FeedbackPanel.class);
            // List of all Source Documents in the project
            List<SourceDocument> listOfSourceDocuements = repository.listSourceDocuments(bModel.getProject());

            String username = SecurityContextHolder.getContext().getAuthentication().getName();
            User user = userRepository.get(username);

            List<SourceDocument> sourceDocumentsinIgnorState = new ArrayList<SourceDocument>();
            for (SourceDocument sourceDocument : listOfSourceDocuements) {
                if (repository.existsAnnotationDocument(sourceDocument, user)
                        && repository.getAnnotationDocument(sourceDocument, user).getState()
                                .equals(AnnotationDocumentState.IGNORE)) {
                    sourceDocumentsinIgnorState.add(sourceDocument);
                } else if (sourceDocument.isTrainingDocument()) {
                    sourceDocumentsinIgnorState.add(sourceDocument);
                }
            }

            listOfSourceDocuements.removeAll(sourceDocumentsinIgnorState);

            // Index of the current source document in the list
            int currentDocumentIndex = listOfSourceDocuements.indexOf(bModel.getDocument());

            // If the first the document
            if (currentDocumentIndex == 0) {
                aTarget.appendJavaScript("alert('This is the first document!')");
            } else {
                bModel.setDocumentName(listOfSourceDocuements.get(currentDocumentIndex - 1).getName());
                bModel.setDocument(listOfSourceDocuements.get(currentDocumentIndex - 1));

                try {
                    repository.upgradeCasAndSave(bModel.getDocument(), Mode.AUTOMATION,
                            bModel.getUser().getUsername());
                    loadDocumentAction();
                    setCurationSegmentBeginEnd();
                    update(aTarget);

                } catch (UIMAException e) {
                    error(ExceptionUtils.getRootCause(e));
                } catch (ClassNotFoundException e) {
                    error(ExceptionUtils.getRootCause(e));
                } catch (IOException e) {
                    error(ExceptionUtils.getRootCause(e));
                } catch (BratAnnotationException e) {
                    aTarget.addChildren(getPage(), FeedbackPanel.class);
                    error(e.getMessage());
                }

                finish.setModelObject(bModel);
                aTarget.add(finish.setOutputMarkupId(true));
                aTarget.add(numberOfPages);
                aTarget.add(documentNamePanel);
                annotator.bratRenderLater(aTarget);
            }
        }
    }.add(new InputBehavior(new KeyType[] { KeyType.Shift, KeyType.Page_up }, EventType.click)));

    // Show the next document if exist
    add(new AjaxLink<Void>("showNextDocument") {
        private static final long serialVersionUID = 7496156015186497496L;

        /**
         * Get the current beginning sentence address and add on it the size of the display
         * window
         */
        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            editor.reset(aTarget);
            aTarget.addChildren(getPage(), FeedbackPanel.class);
            // List of all Source Documents in the project
            List<SourceDocument> listOfSourceDocuements = repository.listSourceDocuments(bModel.getProject());

            String username = SecurityContextHolder.getContext().getAuthentication().getName();
            User user = userRepository.get(username);

            List<SourceDocument> sourceDocumentsinIgnorState = new ArrayList<SourceDocument>();
            for (SourceDocument sourceDocument : listOfSourceDocuements) {
                if (repository.existsAnnotationDocument(sourceDocument, user)
                        && repository.getAnnotationDocument(sourceDocument, user).getState()
                                .equals(AnnotationDocumentState.IGNORE)) {
                    sourceDocumentsinIgnorState.add(sourceDocument);
                } else if (sourceDocument.isTrainingDocument()) {
                    sourceDocumentsinIgnorState.add(sourceDocument);
                }
            }

            listOfSourceDocuements.removeAll(sourceDocumentsinIgnorState);

            // Index of the current source document in the list
            int currentDocumentIndex = listOfSourceDocuements.indexOf(bModel.getDocument());

            // If the first document
            if (currentDocumentIndex == listOfSourceDocuements.size() - 1) {
                aTarget.appendJavaScript("alert('This is the last document!')");
                return;
            }
            bModel.setDocumentName(listOfSourceDocuements.get(currentDocumentIndex + 1).getName());
            bModel.setDocument(listOfSourceDocuements.get(currentDocumentIndex + 1));

            try {
                repository.upgradeCasAndSave(bModel.getDocument(), Mode.AUTOMATION,
                        bModel.getUser().getUsername());
                loadDocumentAction();
                setCurationSegmentBeginEnd();
                update(aTarget);

            } catch (UIMAException e) {
                error(ExceptionUtils.getRootCause(e));
            } catch (ClassNotFoundException e) {
                error(ExceptionUtils.getRootCause(e));
            } catch (IOException e) {
                error(ExceptionUtils.getRootCause(e));
            } catch (BratAnnotationException e) {
                aTarget.addChildren(getPage(), FeedbackPanel.class);
                error(e.getMessage());
            }

            finish.setModelObject(bModel);
            aTarget.add(finish.setOutputMarkupId(true));
            aTarget.add(numberOfPages);
            aTarget.add(documentNamePanel);
            annotator.bratRenderLater(aTarget);
        }
    }.add(new InputBehavior(new KeyType[] { KeyType.Shift, KeyType.Page_down }, EventType.click)));

    // Show the next page of this document
    add(new AjaxLink<Void>("showNext") {
        private static final long serialVersionUID = 7496156015186497496L;

        /**
         * Get the current beginning sentence address and add on it the size of the display
         * window
         */
        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            if (bModel.getDocument() != null) {
                JCas mergeJCas = null;
                try {
                    aTarget.addChildren(getPage(), FeedbackPanel.class);
                    mergeJCas = repository.readCorrectionCas(bModel.getDocument());
                    int address = getAddr(selectSentenceAt(mergeJCas, bModel.getSentenceBeginOffset(),
                            bModel.getSentenceEndOffset()));
                    int nextSentenceAddress = getNextPageFirstSentenceAddress(mergeJCas, address,
                            bModel.getPreferences().getWindowSize());
                    if (address != nextSentenceAddress) {
                        updateSentenceNumber(mergeJCas, nextSentenceAddress);

                        SuggestionBuilder builder = new SuggestionBuilder(repository, annotationService,
                                userRepository);
                        curationContainer = builder.buildCurationContainer(bModel);
                        setCurationSegmentBeginEnd();
                        curationContainer.setBratAnnotatorModel(bModel);
                        update(aTarget);
                        annotator.bratRenderLater(aTarget);
                    }

                    else {
                        aTarget.appendJavaScript("alert('This is last page!')");
                    }
                } catch (UIMAException e) {
                    error(ExceptionUtils.getRootCause(e));
                } catch (ClassNotFoundException e) {
                    error(e.getMessage());
                } catch (IOException e) {
                    error(e.getMessage());
                } catch (BratAnnotationException e) {
                    error(e.getMessage());
                }
            } else {
                aTarget.appendJavaScript("alert('Please open a document first!')");
            }
        }
    }.add(new InputBehavior(new KeyType[] { KeyType.Page_down }, EventType.click)));

    // SHow the previous page of this document
    add(new AjaxLink<Void>("showPrevious") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            if (bModel.getDocument() != null) {

                JCas mergeJCas = null;
                try {
                    aTarget.addChildren(getPage(), FeedbackPanel.class);
                    mergeJCas = repository.readCorrectionCas(bModel.getDocument());
                    int previousSentenceAddress = BratAjaxCasUtil.getPreviousDisplayWindowSentenceBeginAddress(
                            mergeJCas, bModel.getSentenceAddress(), bModel.getPreferences().getWindowSize());
                    if (bModel.getSentenceAddress() != previousSentenceAddress) {
                        updateSentenceNumber(mergeJCas, previousSentenceAddress);

                        SuggestionBuilder builder = new SuggestionBuilder(repository, annotationService,
                                userRepository);

                        curationContainer = builder.buildCurationContainer(bModel);
                        setCurationSegmentBeginEnd();
                        curationContainer.setBratAnnotatorModel(bModel);
                        update(aTarget);
                        annotator.bratRenderLater(aTarget);
                    } else {
                        aTarget.appendJavaScript("alert('This is First Page!')");
                    }
                } catch (UIMAException e) {
                    error(ExceptionUtils.getRootCause(e));
                } catch (ClassNotFoundException e) {
                    error(e.getMessage());
                } catch (IOException e) {
                    ;
                    error(e.getMessage());
                } catch (BratAnnotationException e) {
                    error(e.getMessage());
                }
            } else {
                aTarget.appendJavaScript("alert('Please open a document first!')");
            }
        }
    }.add(new InputBehavior(new KeyType[] { KeyType.Page_up }, EventType.click)));

    add(new AjaxLink<Void>("showFirst") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            if (bModel.getDocument() != null) {
                JCas mergeJCas = null;
                try {
                    aTarget.addChildren(getPage(), FeedbackPanel.class);
                    mergeJCas = repository.readCorrectionCas(bModel.getDocument());

                    int address = getAddr(selectSentenceAt(mergeJCas, bModel.getSentenceBeginOffset(),
                            bModel.getSentenceEndOffset()));
                    int firstAddress = getFirstSentenceAddress(mergeJCas);

                    if (firstAddress != address) {
                        updateSentenceNumber(mergeJCas, firstAddress);

                        SuggestionBuilder builder = new SuggestionBuilder(repository, annotationService,
                                userRepository);
                        curationContainer = builder.buildCurationContainer(bModel);
                        setCurationSegmentBeginEnd();
                        curationContainer.setBratAnnotatorModel(bModel);
                        update(aTarget);
                        annotator.bratRenderLater(aTarget);
                    } else {
                        aTarget.appendJavaScript("alert('This is first page!')");
                    }
                } catch (UIMAException e) {
                    error(ExceptionUtils.getRootCause(e));
                } catch (ClassNotFoundException e) {
                    error(e.getMessage());
                } catch (IOException e) {
                    error(e.getMessage());
                } catch (BratAnnotationException e) {
                    error(e.getMessage());
                }
            } else {
                aTarget.appendJavaScript("alert('Please open a document first!')");
            }
        }
    }.add(new InputBehavior(new KeyType[] { KeyType.Home }, EventType.click)));

    add(new AjaxLink<Void>("showLast") {
        private static final long serialVersionUID = 7496156015186497496L;

        @Override
        public void onClick(AjaxRequestTarget aTarget) {
            if (bModel.getDocument() != null) {
                JCas mergeJCas = null;
                try {
                    aTarget.addChildren(getPage(), FeedbackPanel.class);
                    mergeJCas = repository.readCorrectionCas(bModel.getDocument());
                    int lastDisplayWindowBeginingSentenceAddress = BratAjaxCasUtil
                            .getLastDisplayWindowFirstSentenceAddress(mergeJCas,
                                    bModel.getPreferences().getWindowSize());
                    if (lastDisplayWindowBeginingSentenceAddress != bModel.getSentenceAddress()) {
                        updateSentenceNumber(mergeJCas, lastDisplayWindowBeginingSentenceAddress);

                        SuggestionBuilder builder = new SuggestionBuilder(repository, annotationService,
                                userRepository);
                        curationContainer = builder.buildCurationContainer(bModel);
                        setCurationSegmentBeginEnd();
                        curationContainer.setBratAnnotatorModel(bModel);
                        update(aTarget);
                        annotator.bratRenderLater(aTarget);

                    } else {
                        aTarget.appendJavaScript("alert('This is last Page!')");
                    }
                } catch (UIMAException e) {
                    error(ExceptionUtils.getRootCause(e));
                } catch (ClassNotFoundException e) {
                    error(e.getMessage());
                } catch (IOException e) {
                    error(e.getMessage());
                } catch (BratAnnotationException e) {
                    error(e.getMessage());
                }
            } else {
                aTarget.appendJavaScript("alert('Please open a document first!')");
            }
        }
    }.add(new InputBehavior(new KeyType[] { KeyType.End }, EventType.click)));

    add(new GuidelineModalPanel("guidelineModalPanel", new Model<BratAnnotatorModel>(bModel)));
}