List of usage examples for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow setHeightUnit
public ModalWindow setHeightUnit(final String heightUnit)
From source file:de.tudarmstadt.ukp.clarin.webanno.webapp.page.curation.CurationPage.java
License:Apache License
@SuppressWarnings("deprecation") public CurationPage() { bModel = new BratAnnotatorModel(); bModel.setMode(Mode.CURATION);//from www . j a va2 s.c om reMerge = new ReMergeCasModel(); curationContainer = new CurationContainer(); curationContainer.setBratAnnotatorModel(bModel); curationPanel = new CurationPanel("curationPanel", new Model<CurationContainer>(curationContainer)) { private static final long serialVersionUID = 2175915644696513166L; @Override protected void onChange(AjaxRequestTarget aTarget) { JCas mergeJCas = null; try { mergeJCas = repository.readCurationCas(bModel.getDocument()); } catch (UIMAException e) { error(e.getMessage()); } catch (ClassNotFoundException e) { error(e.getMessage()); } catch (IOException e) { error(e.getMessage()); } aTarget.add(numberOfPages); gotoPageTextField .setModelObject(getFirstSentenceNumber(mergeJCas, bModel.getSentenceAddress()) + 1); gotoPageAddress = getSentenceAddress(mergeJCas, gotoPageTextField.getModelObject()); aTarget.add(gotoPageTextField); aTarget.add(curationPanel); } }; curationPanel.setOutputMarkupId(true); add(curationPanel); add(documentNamePanel = new DocumentNamePanel("documentNamePanel", new Model<BratAnnotatorModel>(bModel))); documentNamePanel.setOutputMarkupId(true); add(numberOfPages = (Label) new Label("numberOfPages", new LoadableDetachableModel<String>() { private static final long serialVersionUID = 1L; @Override protected String load() { if (bModel.getDocument() != null) { JCas mergeJCas = null; try { mergeJCas = repository.readCurationCas(bModel.getDocument()); totalNumberOfSentence = getNumberOfPages(mergeJCas); // If only one page, start displaying from // sentence 1 if (totalNumberOfSentence == 1) { bModel.setSentenceAddress(bModel.getFirstSentenceAddress()); } sentenceNumber = getFirstSentenceNumber(mergeJCas, bModel.getSentenceAddress()); 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 (ClassNotFoundException 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 project and document information at the top add(new AjaxLink<Void>("showOpenDocumentModal") { private static final long serialVersionUID = 7496156015186497496L; @Override public void onClick(AjaxRequestTarget aTarget) { curationPanel.resetEditor(aTarget); openDocumentsModal.setContent(new OpenModalWindowPanel(openDocumentsModal.getContentId(), bModel, openDocumentsModal, Mode.CURATION)); openDocumentsModal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() { private static final long serialVersionUID = -1746088901018629567L; @Override public void onClose(AjaxRequestTarget target) { String username = SecurityContextHolder.getContext().getAuthentication().getName(); /* * Changed for #152, getDocument was returning null even after opening a document * Also, surrounded following code into if block to avoid error. */ if (bModel.getProject() == null) { setResponsePage(WelcomePage.class); return; } if (bModel.getDocument() != null) { User user = userRepository.get(username); // Update source document state to // CURRATION_INPROGRESS, if it was not // ANNOTATION_FINISHED if (!bModel.getDocument().getState().equals(SourceDocumentState.CURATION_FINISHED)) { bModel.getDocument().setState(SourceDocumentState.CURATION_IN_PROGRESS); } try { repository.createSourceDocument(bModel.getDocument(), user); repository.upgradeCasAndSave(bModel.getDocument(), Mode.CURATION, username); loadDocumentAction(target); } catch (IOException | UIMAException | ClassNotFoundException | BratAnnotationException e) { target.add(getFeedbackPanel()); error(e.getCause().getMessage()); } } } }); openDocumentsModal.show(aTarget); } }); add(new AnnotationLayersModalPanel("annotationLayersModalPanel", new Model<BratAnnotatorModel>(bModel), curationPanel.editor) { private static final long serialVersionUID = -4657965743173979437L; @Override protected void onChange(AjaxRequestTarget aTarget) { aTarget.add(getFeedbackPanel()); aTarget.add(numberOfPages); JCas mergeJCas = null; try { aTarget.add(getFeedbackPanel()); mergeJCas = repository.readCurationCas(bModel.getDocument()); curationPanel.updatePanel(aTarget, curationContainer); updatePanel(curationContainer, aTarget); updateSentenceNumber(mergeJCas, bModel.getSentenceAddress()); } catch (UIMAException e) { error(ExceptionUtils.getRootCauseMessage(e)); } catch (ClassNotFoundException e) { error(e.getMessage()); } catch (IOException e) { error(e.getMessage()); } catch (BratAnnotationException e) { error(e.getMessage()); } } }); // 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) { curationPanel.resetEditor(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.existFinishedDocument(sourceDocument, bModel.getProject())) { 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.CURATION, bModel.getUser().getUsername()); loadDocumentAction(aTarget); } catch (IOException | UIMAException | ClassNotFoundException | BratAnnotationException e) { aTarget.add(getFeedbackPanel()); error(e.getCause().getMessage()); } } } }.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) { curationPanel.resetEditor(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.existFinishedDocument(sourceDocument, bModel.getProject())) { 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!')"); } else { bModel.setDocumentName(listOfSourceDocuements.get(currentDocumentIndex + 1).getName()); bModel.setDocument(listOfSourceDocuements.get(currentDocumentIndex + 1)); try { aTarget.add(getFeedbackPanel()); repository.upgradeCasAndSave(bModel.getDocument(), Mode.CURATION, bModel.getUser().getUsername()); loadDocumentAction(aTarget); } catch (IOException | UIMAException | ClassNotFoundException | BratAnnotationException e) { aTarget.add(getFeedbackPanel()); error(e.getCause().getMessage()); } } } }.add(new InputBehavior(new KeyType[] { KeyType.Shift, KeyType.Page_down }, EventType.click))); 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.add(getFeedbackPanel()); mergeJCas = repository.readCurationCas(bModel.getDocument()); if (bModel.getSentenceAddress() != gotoPageAddress) { updateSentenceNumber(mergeJCas, gotoPageAddress); aTarget.add(numberOfPages); updatePanel(curationContainer, aTarget); } } catch (UIMAException e) { error(ExceptionUtils.getRootCauseMessage(e)); } catch (ClassNotFoundException e) { error(e.getMessage()); } catch (IOException 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 = 1244526899787707931L; @Override protected void onUpdate(AjaxRequestTarget aTarget) { JCas mergeJCas = null; try { aTarget.add(getFeedbackPanel()); mergeJCas = repository.readCurationCas(bModel.getDocument()); gotoPageAddress = getSentenceAddress(mergeJCas, gotoPageTextField.getModelObject()); } catch (UIMAException e) { error(ExceptionUtils.getRootCause(e)); } catch (ClassNotFoundException e) { error(e.getMessage()); } 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.add(getFeedbackPanel()); mergeJCas = repository.readCurationCas(bModel.getDocument()); if (bModel.getSentenceAddress() != gotoPageAddress) { updateSentenceNumber(mergeJCas, gotoPageAddress); aTarget.add(numberOfPages); curationPanel.updatePanel(aTarget, curationContainer); } } catch (UIMAException e) { error(ExceptionUtils.getRootCauseMessage(e)); } catch (ClassNotFoundException e) { error(e.getMessage()); } catch (IOException e) { error(e.getMessage()); } catch (BratAnnotationException e) { error(e.getMessage()); } } }); finish = new WebMarkupContainer("finishImage"); finish.setOutputMarkupId(true); finish.add(new AttributeModifier("src", new LoadableDetachableModel<String>() { private static final long serialVersionUID = 1562727305401900776L; @Override protected String load() { if (bModel.getProject() != null && bModel.getDocument() != null) { if (repository .getSourceDocument(bModel.getDocument().getProject(), bModel.getDocument().getName()) .getState().equals(SourceDocumentState.CURATION_FINISHED)) { return "images/accept.png"; } else { return "images/inprogress.png"; } } else { return "images/inprogress.png"; } } })); final ModalWindow finishCurationModal; add(finishCurationModal = new ModalWindow("finishCurationModal")); finishCurationModal.setOutputMarkupId(true); finishCurationModal.setInitialWidth(700); finishCurationModal.setInitialHeight(50); finishCurationModal.setResizable(true); finishCurationModal.setWidthUnit("px"); finishCurationModal.setHeightUnit("px"); AjaxLink<Void> showFinishCurationModal; add(showFinishCurationModal = new AjaxLink<Void>("showFinishCurationModal") { private static final long serialVersionUID = 7496156015186497496L; @Override public void onClick(AjaxRequestTarget target) { if (bModel.getDocument() != null && bModel.getDocument().getState().equals(SourceDocumentState.CURATION_FINISHED)) { finishCurationModal.setTitle( "Curation was finished. Are you sure you want to re-open document for curation?"); } else { finishCurationModal.setTitle("Are you sure you want to finish curating?"); } finishCurationModal.setContent(new YesNoFinishModalPanel(finishCurationModal.getContentId(), bModel, finishCurationModal, Mode.CURATION)); finishCurationModal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() { private static final long serialVersionUID = -1746088901018629567L; @Override public void onClose(AjaxRequestTarget target) { target.add(finish); target.appendJavaScript("Wicket.Window.unloadConfirmation=false;window.location.reload()"); } }); finishCurationModal.show(target); } }); showFinishCurationModal.add(finish); add(new GuidelineModalPanel("guidelineModalPanel", new Model<BratAnnotatorModel>(bModel))); final ModalWindow reCreateMergeCas; add(reCreateMergeCas = new ModalWindow("reCreateMergeCasModal")); reCreateMergeCas.setOutputMarkupId(true); reCreateMergeCas.setInitialWidth(400); reCreateMergeCas.setInitialHeight(50); reCreateMergeCas.setResizable(true); reCreateMergeCas.setWidthUnit("px"); reCreateMergeCas.setHeightUnit("px"); reCreateMergeCas.setTitle("are you sure? all curation annotations for this document will be lost"); add(showreCreateMergeCasModal = new AjaxLink<Void>("showreCreateMergeCasModal") { private static final long serialVersionUID = 7496156015186497496L; @Override protected void onConfigure() { setEnabled(bModel.getDocument() != null && !bModel.getDocument().getState().equals(SourceDocumentState.CURATION_FINISHED)); } @Override public void onClick(AjaxRequestTarget target) { reCreateMergeCas.setContent( new ReCreateMergeCASModalPanel(reCreateMergeCas.getContentId(), reCreateMergeCas, reMerge)); reCreateMergeCas.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() { private static final long serialVersionUID = 4816615910398625993L; @Override public void onClose(AjaxRequestTarget aTarget) { if (reMerge.isReMerege()) { try { aTarget.add(getFeedbackPanel()); repository.removeCurationDocumentContent(bModel.getDocument(), bModel.getUser().getUsername()); loadDocumentAction(aTarget); aTarget.appendJavaScript("alert('remerege finished!')"); } catch (IOException | UIMAException | ClassNotFoundException | BratAnnotationException e) { aTarget.add(getFeedbackPanel()); error(e.getCause().getMessage()); } } } }); reCreateMergeCas.show(target); } }); // 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 { mergeJCas = repository.readCurationCas(bModel.getDocument()); int nextSentenceAddress = getNextPageFirstSentenceAddress(mergeJCas, bModel.getSentenceAddress(), bModel.getPreferences().getWindowSize()); if (bModel.getSentenceAddress() != nextSentenceAddress) { aTarget.add(getFeedbackPanel()); updateSentenceNumber(mergeJCas, nextSentenceAddress); aTarget.add(numberOfPages); curationPanel.updatePanel(aTarget, curationContainer); updatePanel(curationContainer, aTarget); } else { aTarget.appendJavaScript("alert('This is last page!')"); } } catch (UIMAException e) { error(ExceptionUtils.getRootCauseMessage(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.add(getFeedbackPanel()); mergeJCas = repository.readCurationCas(bModel.getDocument()); int previousSentenceAddress = BratAjaxCasUtil.getPreviousDisplayWindowSentenceBeginAddress( mergeJCas, bModel.getSentenceAddress(), bModel.getPreferences().getWindowSize()); if (bModel.getSentenceAddress() != previousSentenceAddress) { updateSentenceNumber(mergeJCas, previousSentenceAddress); aTarget.add(numberOfPages); curationPanel.updatePanel(aTarget, curationContainer); updatePanel(curationContainer, aTarget); } else { aTarget.appendJavaScript("alert('This is First Page!')"); } } catch (UIMAException e) { error(ExceptionUtils.getRootCauseMessage(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.add(getFeedbackPanel()); mergeJCas = repository.readCurationCas(bModel.getDocument()); int address = getAddr(selectSentenceAt(mergeJCas, bModel.getSentenceBeginOffset(), bModel.getSentenceEndOffset())); int firstAddress = getFirstSentenceAddress(mergeJCas); if (firstAddress != address) { updateSentenceNumber(mergeJCas, firstAddress); aTarget.add(numberOfPages); curationPanel.updatePanel(aTarget, curationContainer); updatePanel(curationContainer, aTarget); } else { aTarget.appendJavaScript("alert('This is first page!')"); } } catch (UIMAException e) { error(ExceptionUtils.getRootCauseMessage(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.add(getFeedbackPanel()); mergeJCas = repository.readCurationCas(bModel.getDocument()); int lastDisplayWindowBeginingSentenceAddress = BratAjaxCasUtil .getLastDisplayWindowFirstSentenceAddress(mergeJCas, bModel.getPreferences().getWindowSize()); if (lastDisplayWindowBeginingSentenceAddress != bModel.getSentenceAddress()) { updateSentenceNumber(mergeJCas, lastDisplayWindowBeginingSentenceAddress); aTarget.add(numberOfPages); curationPanel.updatePanel(aTarget, curationContainer); updatePanel(curationContainer, aTarget); } else { aTarget.appendJavaScript("alert('This is last Page!')"); } } catch (UIMAException e) { error(ExceptionUtils.getRootCauseMessage(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))); }
From source file:gr.interamerican.wicket.factories.ModalWindowFactory.java
License:Open Source License
/** * Create a modalWindow with a specific properties file. * The properties file have to contains the properties of modalWindow. * @param path Path to the properties file. * //from ww w. java2 s .c om * @return the ModalWindow */ public static ModalWindow createModalWindow(String path) { initializeProperties(path); ModalWindow modalWindow = new ModalWindow(wicketId); modalWindow.setTitle(title); modalWindow.setInitialWidth(initialWidth); modalWindow.setInitialHeight(initialHeight); modalWindow.setWidthUnit(widthUnit); modalWindow.setHeightUnit(heightUnit); modalWindow.setResizable(resizable); modalWindow.setUseInitialHeight(useInitialHeight); return modalWindow; }
From source file:org.obiba.onyx.webapp.participant.page.InterviewPage.java
License:Open Source License
public InterviewPage() { super();/*w w w .j a v a2 s. c om*/ if (activeInterviewService.getParticipant() == null || activeInterviewService.getInterview() == null) { setResponsePage(WebApplication.get().getHomePage()); } else { addOrReplace(new EmptyPanel("header")); // // Modify menu bar. // remove("menuBar"); add(new InterviewMenuBar("menuBar")); final InterviewLogPanel interviewLogPanel; final Dialog interviewLogsDialog; interviewLogPanel = new InterviewLogPanel("content", 338, new LoadableInterviewLogModel()); interviewLogsDialog = DialogBuilder .buildDialog("interviewLogsDialog", new StringResourceModel("Log", this, null), interviewLogPanel) .setOptions(Option.CLOSE_OPTION).setFormCssClass("interview-log-dialog-form").getDialog(); interviewLogsDialog.setHeightUnit("em"); interviewLogsDialog.setWidthUnit("em"); interviewLogsDialog.setInitialHeight(34); interviewLogsDialog.setInitialWidth(59); interviewLogsDialog.setCloseButtonCallback(new CloseButtonCallback() { private static final long serialVersionUID = 1L; public boolean onCloseButtonClicked(AjaxRequestTarget target, Status status) { // Update comment count on interview page once the modal window closes. User may have added comments. updateCommentCount(target); return true; } }); interviewLogPanel.setup(interviewLogsDialog); interviewLogPanel.add(new AttributeModifier("class", true, new Model("interview-log-panel-content"))); interviewLogPanel.setMarkupId("interviewLogPanel"); interviewLogPanel.setOutputMarkupId(true); add(interviewLogsDialog); Participant participant = activeInterviewService.getParticipant(); add(new ParticipantPanel("participant", new DetachableEntityModel(queryService, participant), true)); // Create modal comments window final ModalWindow commentsWindow; add(commentsWindow = new ModalWindow("addCommentsModal")); commentsWindow.setCssClassName("onyx"); commentsWindow.setTitle(new StringResourceModel("CommentsWindow", this, null)); commentsWindow.setHeightUnit("em"); commentsWindow.setWidthUnit("em"); commentsWindow.setInitialHeight(34); commentsWindow.setInitialWidth(50); commentsWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() { private static final long serialVersionUID = 1L; public void onClose(AjaxRequestTarget target) { } }); ViewInterviewLogsLink viewCommentsIconLink = createIconLink("viewCommentsIconLink", interviewLogsDialog, interviewLogPanel, true); add(viewCommentsIconLink); ContextImage commentIcon = createContextImage("commentIcon", "icons/note.png"); viewCommentsIconLink.add(commentIcon); ViewInterviewLogsLink viewLogIconLink = createIconLink("viewLogIconLink", interviewLogsDialog, interviewLogPanel, false); add(viewLogIconLink); ContextImage logIcon = createContextImage("logIcon", "icons/loupe_button.png"); viewLogIconLink.add(logIcon); // Add view interview comments action add(viewComments = new ViewInterviewLogsLink("viewComments", interviewLogsDialog, interviewLogPanel, true) { private static final long serialVersionUID = -5561038138085317724L; @Override public void onClick(AjaxRequestTarget target) { interviewLogPanel.setCommentsOnly(true); // Disable Show All Button target.appendJavascript( "$('[name=showAll]').attr('disabled','true');$('[name=showAll]').css('color','rgba(0, 0, 0, 0.2)');$('[name=showAll]').css('border-color','rgba(0, 0, 0, 0.2)');"); super.onClick(target); } }); add(new ViewInterviewLogsLink("viewLog", interviewLogsDialog, interviewLogPanel, false) { private static final long serialVersionUID = -5561038138085317724L; @Override public void onClick(AjaxRequestTarget target) { interviewLogPanel.setCommentsOnly(false); // Disable Show All Button target.appendJavascript( "$('[name=showAll]').attr('disabled','true');$('[name=showAll]').css('color','rgba(0, 0, 0, 0.2)');$('[name=showAll]').css('border-color','rgba(0, 0, 0, 0.2)');"); super.onClick(target); } }); // Add create interview comments action add(addCommentDialog = createAddCommentDialog()); add(new AjaxLink("addComment") { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { addCommentDialog.show(target); } }); // Initialize comments counter updateCommentsCount(); ActiveInterviewModel interviewModel = new ActiveInterviewModel(); kvPanel = new KeyValueDataPanel("interview"); kvPanel.addRow(new StringResourceModel("StartDate", this, null), new PropertyModel(interviewModel, "startDate")); kvPanel.addRow(new StringResourceModel("EndDate", this, null), new PropertyModel(interviewModel, "endDate")); kvPanel.addRow(new StringResourceModel("Status", this, null), new PropertyModel(interviewModel, "status")); add(kvPanel); // Interview cancellation final ActionDefinition cancelInterviewDef = actionDefinitionConfiguration .getActionDefinition(ActionType.STOP, "Interview", null, null); final ActionWindow interviewActionWindow = new ActionWindow("modal") { private static final long serialVersionUID = 1L; @Override public void onActionPerformed(AjaxRequestTarget target, Stage stage, Action action) { activeInterviewService.setStatus(InterviewStatus.CANCELLED); setResponsePage(InterviewPage.class); } }; add(interviewActionWindow); AjaxLink link = new AjaxLink("cancelInterview") { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { Label label = new Label("content", new StringResourceModel("ConfirmCancellationOfInterview", InterviewPage.this, null)); label.add(new AttributeModifier("class", true, new Model("confirmation-dialog-content"))); ConfirmationDialog confirmationDialog = getConfirmationDialog(); confirmationDialog.setContent(label); confirmationDialog .setTitle(new StringResourceModel("ConfirmCancellationOfInterviewTitle", this, null)); confirmationDialog.setYesButtonCallback(new OnYesCallback() { private static final long serialVersionUID = -6691702933562884991L; public void onYesButtonClicked(AjaxRequestTarget target) { interviewActionWindow.show(target, null, cancelInterviewDef); } }); confirmationDialog.show(target); } @Override public boolean isVisible() { InterviewStatus status = activeInterviewService.getInterview().getStatus(); return (status == InterviewStatus.IN_PROGRESS || status == InterviewStatus.COMPLETED); } }; MetaDataRoleAuthorizationStrategy.authorize(link, RENDER, "PARTICIPANT_MANAGER"); add(link); // Interview closing final ActionDefinition closeInterviewDef = actionDefinitionConfiguration .getActionDefinition(ActionType.STOP, "Closed.Interview", null, null); final ActionWindow closeInterviewActionWindow = new ActionWindow("closeModal") { private static final long serialVersionUID = 1L; @Override public void onActionPerformed(AjaxRequestTarget target, Stage stage, Action action) { activeInterviewService.setStatus(InterviewStatus.CLOSED); setResponsePage(InterviewPage.class); } }; add(closeInterviewActionWindow); AjaxLink closeLink = new AjaxLink("closeInterview") { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { Label label = new Label("content", new StringResourceModel("ConfirmClosingOfInterview", InterviewPage.this, null)); label.add(new AttributeModifier("class", true, new Model("confirmation-dialog-content"))); ConfirmationDialog confirmationDialog = getConfirmationDialog(); confirmationDialog.setContent(label); confirmationDialog .setTitle(new StringResourceModel("ConfirmClosingOfInterviewTitle", this, null)); confirmationDialog.setYesButtonCallback(new OnYesCallback() { private static final long serialVersionUID = -6691702933562884991L; public void onYesButtonClicked(AjaxRequestTarget target) { closeInterviewActionWindow.show(target, null, closeInterviewDef); } }); confirmationDialog.show(target); } @Override public boolean isVisible() { InterviewStatus status = activeInterviewService.getInterview().getStatus(); return (status == InterviewStatus.IN_PROGRESS); } }; MetaDataRoleAuthorizationStrategy.authorize(link, RENDER, "PARTICIPANT_MANAGER"); add(closeLink); // Reinstate interview link add(createReinstateInterviewLink()); // Print report link class ReportLink extends AjaxLink { private static final long serialVersionUID = 1L; public ReportLink(String id) { super(id); } @Override public void onClick(AjaxRequestTarget target) { getPrintableReportsDialog().show(target); } } ReportLink printReportLink = new ReportLink("printReport"); printReportLink.add(new Label("reportLabel", new ResourceModel("PrintReport"))); add(printReportLink); add(new StageSelectionPanel("stage-list", getFeedbackWindow()) { private static final long serialVersionUID = 1L; @Override public void onViewComments(AjaxRequestTarget target, String stage) { commentsWindow.setContent(new CommentsModalPanel("content", commentsWindow, stage) { private static final long serialVersionUID = 1L; @Override public void onAddComments(AjaxRequestTarget target) { InterviewPage.this.updateCommentsCount(); target.addComponent(InterviewPage.this.commentsCount); } }); commentsWindow.show(target); } @Override public void onViewLogs(AjaxRequestTarget target, String stage, boolean commentsOnly) { interviewLogPanel.setStageName(stage); interviewLogPanel.setCommentsOnly(commentsOnly); interviewLogPanel.setReadOnly(true); interviewLogPanel.addInterviewLogComponent(); interviewLogsDialog.show(target); } @Override public void onActionPerformed(AjaxRequestTarget target, Stage stage, Action action) { if (activeInterviewService.getStageExecution(action.getStage()).isFinal()) { setResponsePage(InterviewPage.class); } else { InterviewPage.this.updateCommentsCount(); target.addComponent(InterviewPage.this.commentsCount); } } }); AjaxLink exitLink = new AjaxLink("exitInterview") { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { interviewManager.releaseInterview(); setResponsePage(HomePage.class); } }; add(exitLink); } }