package fi.utu.ville.exercises.stub; import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Label; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; import fi.utu.ville.exercises.model.Executor; import fi.utu.ville.exercises.model.SubmissionResult; import fi.utu.ville.standardutils.Localizer; import fi.utu.ville.standardutils.StandardUIConstants; import fi.utu.ville.standardutils.StandardUIFactory; /** * A pop-up view imitating the view presented for student in real ViLLE after a successful submission. This view might also contain a feedback component if such * is present in {@link SubmissionResult} returned from the {@link Executor}. * * @author Riku Haavisto * */ class SubmissionPopup extends Window { private static final String submissionPopupId = "submissionpopup"; private static final String submissionPopupRootId = "submissionpopup.root"; private static final String submpopupCloseButtonId = "submpopup.close"; private static final long serialVersionUID = -6955458439605857198L; public SubmissionPopup(Localizer localizer, SubmissionResult<?> submission) { setId(submissionPopupId); setStyleName("opaque"); addStyleName("unclosable-window"); setModal(true); center(); VerticalLayout root = new VerticalLayout(); root.setId(submissionPopupRootId); root.setSpacing(true); root.setMargin(true); root.setWidth("700px"); setContent(root); String title = localizer.getUIText(StandardUIConstants.SUBMISSION); title = (title.charAt(0) + "").toUpperCase() + title.substring(1) + " - "; title += localizer.getUIText(StandardUIConstants.TEST); setCaption(title); Label result = new Label(); result.setContentMode(ContentMode.HTML); result.setValue("<b>" + localizer.getUIText(StandardUIConstants.RESULT) + "<b> " + submission.getCorrectness()); root.addComponent(result); root.setComponentAlignment(result, Alignment.MIDDLE_LEFT); if (submission.getFeedbackComponent() != null) { root.addComponent(submission.getFeedbackComponent()); root.setComponentAlignment(submission.getFeedbackComponent(), Alignment.MIDDLE_CENTER); } Button close = StandardUIFactory.getCloseButton(localizer); close.addClickListener(new Button.ClickListener() { private static final long serialVersionUID = 7996549476059355446L; @Override public void buttonClick(ClickEvent event) { getUI().removeWindow(SubmissionPopup.this); } }); close.setId(submpopupCloseButtonId); root.addComponent(close); root.setComponentAlignment(close, Alignment.MIDDLE_CENTER); } public SubmissionPopup(Localizer localizer, SubmissionResult<?> submission, boolean isModal) { setId(submissionPopupId); setStyleName("opaque"); addStyleName("unclosable-window"); setModal(isModal); center(); VerticalLayout root = new VerticalLayout(); root.setId(submissionPopupRootId); root.setSpacing(true); root.setMargin(true); root.setWidth("700px"); setContent(root); String title = localizer.getUIText(StandardUIConstants.SUBMISSION); title = (title.charAt(0) + "").toUpperCase() + title.substring(1) + " - "; title += localizer.getUIText(StandardUIConstants.TEST); setCaption(title); Label result = new Label(); result.setContentMode(ContentMode.HTML); result.setValue("<b>" + localizer.getUIText(StandardUIConstants.RESULT) + "<b> " + submission.getCorrectness()); root.addComponent(result); root.setComponentAlignment(result, Alignment.MIDDLE_LEFT); if (submission.getFeedbackComponent() != null) { root.addComponent(submission.getFeedbackComponent()); root.setComponentAlignment(submission.getFeedbackComponent(), Alignment.MIDDLE_CENTER); } Button close = StandardUIFactory.getCloseButton(localizer); close.addClickListener(new Button.ClickListener() { private static final long serialVersionUID = 7996549476059355446L; @Override public void buttonClick(ClickEvent event) { getUI().removeWindow(SubmissionPopup.this); } }); close.setId(submpopupCloseButtonId); root.addComponent(close); root.setComponentAlignment(close, Alignment.MIDDLE_CENTER); } }