public InterviewPage() { super(); 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); } }
private AjaxLink createReinstateInterviewLink() { String stateName = null; if (activeInterviewService.getInterview().getStatus() == InterviewStatus.CANCELLED) { stateName = "Cancelled"; } else if (activeInterviewService.getInterview().getStatus() == InterviewStatus.CLOSED) { stateName = "Closed"; } final ActionDefinition reinstateInterviewDef = actionDefinitionConfiguration.getActionDefinition( ActionType.EXECUTE, stateName, null, null); final ActionWindow reinstateInterviewActionWindow = new ActionWindow("reinstateModal") { private static final long serialVersionUID = 1L; @Override public void onActionPerformed(AjaxRequestTarget target, Stage stage, Action action) { activeInterviewService.reinstateInterview(); setResponsePage(InterviewPage.class); } }; add(reinstateInterviewActionWindow); AjaxLink reinstateLink = new AjaxLink("reinstateInterview") { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { Label label = new Label( "content", new StringResourceModel( "ConfirmReinstatementOfInterview", InterviewPage.this, null)); label.add( new AttributeModifier("class", true, new Model("confirmation-dialog-content"))); ConfirmationDialog confirmationDialog = getConfirmationDialog(); confirmationDialog.setContent(label); confirmationDialog.setTitle( new StringResourceModel("ConfirmReinstatementOfInterviewTitle", this, null)); confirmationDialog.setYesButtonCallback( new OnYesCallback() { private static final long serialVersionUID = -6691702933562884991L; public void onYesButtonClicked(AjaxRequestTarget target) { reinstateInterviewActionWindow.show(target, null, reinstateInterviewDef); } }); confirmationDialog.show(target); } @Override public boolean isVisible() { InterviewStatus status = activeInterviewService.getInterview().getStatus(); return (status == InterviewStatus.CANCELLED || status == InterviewStatus.CLOSED); } }; MetaDataRoleAuthorizationStrategy.authorize(reinstateLink, RENDER, "PARTICIPANT_MANAGER"); return reinstateLink; }