List of usage examples for com.google.gwt.user.client Window alert
public static void alert(String msg)
From source file:cl.uai.client.MarkingInterface.java
License:Open Source License
public void updateGeneralFeedback(final String generalFeedback) { addLoading(true);/*from w ww.j a v a 2 s . co m*/ // Invokes the ajax Moodle interface to save the mark AjaxRequest.ajaxRequest("action=updgeneralfeedback" + "&feedback=" + URL.encode(generalFeedback), new AsyncCallback<AjaxData>() { @Override public void onSuccess(AjaxData result) { // Parse json results and check if there was an error if (!result.getError().equals("")) { logger.severe(result.getError()); Window.alert(result.getError()); return; } finishLoading(); } @Override public void onFailure(Throwable caught) { if (EMarkingConfiguration.isDebugging()) { caught.printStackTrace(); logger.severe(caught.getMessage()); } finishLoading(); } }); }
From source file:cl.uai.client.MarkingInterface.java
License:Open Source License
/** * Add a mark to both the page and update the rubric interface * /*from ww w. j a v a 2s . co m*/ * @param mark the mark to add */ public void addMark(final Mark mark, final MarkingPage page) { RootPanel.get().getElement().getStyle().setCursor(Cursor.WAIT); Mark.loadingIcon.removeFromParent(); page.getAbsolutePanel().add(Mark.loadingIcon, mark.getPosx(), mark.getPosy()); Mark.loadingIcon.setVisible(true); //por defecto el criterionid = 0 y la clase para el color es criterion0 int cid = 0; if (EMarkingConfiguration.isColoredRubric()) { Criterion c = EMarkingWeb.markingInterface.getToolbar().getMarkingButtons().getSelectedCriterion(); if (c != null) { cid = c.getId(); } } int markposx = mark.getPosx(); int markposy = mark.getPosy(); String path = ""; if (mark instanceof HighlightMark) { HighlightMark hmark = (HighlightMark) mark; path = "&path=" + URL.encode(hmark.getEnd().getX() + "," + hmark.getEnd().getY()); logger.fine("sending " + markposx + "," + markposy + " -> " + hmark.getEnd().getX() + "," + hmark.getEnd().getY() + " path:" + path); } else if (mark instanceof PathMark) { path = "&path=" + URL.encode(((PathMark) mark).getPath()); } // Invokes the ajax Moodle interface to save the mark AjaxRequest.ajaxRequest("action=addcomment" + "&comment=" + URL.encode(mark.getRawtext()) + "&posx=" + markposx + "&posy=" + markposy + "&width=" + page.getWidth() + "&height=" + page.getHeight() + "&format=" + mark.getFormat() + "&pageno=" + mark.getPageno() + "&criterionid=" + cid + path + "&colour=" + mark.getCriterionId() + "&windowswidth=" + page.getWidth() + "&windowsheight=" + page.getHeight(), new AsyncCallback<AjaxData>() { @Override public void onFailure(Throwable caught) { Mark.loadingIcon.setVisible(false); logger.severe("Exception adding mark."); logger.severe(caught.getMessage()); Window.alert(caught.getMessage()); RootPanel.get().getElement().getStyle().setCursor(Cursor.AUTO); } @Override public void onSuccess(AjaxData result) { Mark.loadingIcon.setVisible(false); Map<String, String> values = AjaxRequest.getValueFromResult(result); // Parse json results and check if there was an error if (!result.getError().equals("")) { Window.alert(messages.ErrorAddingMark()); RootPanel.get().getElement().getStyle().setCursor(Cursor.AUTO); return; } // Parses important values from result int id = Integer.parseInt(values.get("id")); long timemodified = Long.parseLong(values.get("timemodified")); int markerid = Integer.parseInt(values.get("markerid")); String markername = values.get("markername"); float newgrade = 0; if (mark instanceof RubricMark) { newgrade = Float.parseFloat(values.get("grade")); } else { newgrade = MarkingInterface.submissionData.getFinalgrade(); } // Sets the values for the new mark mark.setId(id); mark.setMarkerid(markerid); mark.setMarkername(markername); mark.setTimeCreated(timemodified); // Adds the mark to the marking interface markingPagesInterface.addMarkWidget(mark, -1, page); // If it is a comment And to the rubric interface toolbar.getMarkingButtons().updateStats(); if (!(mark instanceof CustomMark) && mark.getFormat() != 5) { EMarkingWeb.markingInterface.getRubricInterface().getToolsPanel().getPreviousComments() .addMarkAsCommentToInterface(mark, true); } // Updates toolbar setTimemodified(timemodified); // Update the marking interface with the final grade and time EMarkingWeb.markingInterface.setFinalgrade(newgrade, timemodified); RootPanel.get().getElement().getStyle().setCursor(Cursor.AUTO); } }); }
From source file:cl.uai.client.MarkingInterface.java
License:Open Source License
/** * Adds a mark to current submission.//from www . ja v a 2s . c o m * * @param level the mark to assign * @param posx X coordinate where to draw mark in page * @param posy Y coordinate where to draw mark in page */ public void addRubricMark(final int level, final int posx, final int posy, final MarkingPage page) { // Shows comment dialog // 0 for regradeid as we are creating a mark final EditMarkDialog dialog = new EditMarkDialog(posx, posy, level, 0); if (this.setBonus >= 0) { dialog.setBonus(this.setBonus); this.setBonus = -1; } dialog.addCloseHandler(new CloseHandler<PopupPanel>() { @Override public void onClose(CloseEvent<PopupPanel> event) { // If dialog was not cancelled and contains a comment, try to add the mark if (!dialog.isCancelled()) { // Calculate parameters for adding mark final String comment = dialog.getTxtComment(); // Comment from dialog final float bonus = dialog.getBonus(); final int levelid = dialog.getLevelId(); final String feedbackToAjax; if (dialog.haveFeedback()) { feedbackToAjax = dialog.getFeedback(); } else { feedbackToAjax = ""; } // Ajax URL for adding mark String url = "action=addmark" + "&level=" + levelid + "&posx=" + posx + "&posy=" + posy + "&pageno=" + (page.getPageNumber()) + "&sesskey=" + EMarkingConfiguration.getSessKey() + "&bonus=" + bonus + "&comment=" + URL.encode(comment) + "&windowswidth=" + page.getWidth() + "&windowsheight=" + page.getHeight() + "&feedback=" + feedbackToAjax; // Add loading icon Mark.loadingIcon.removeFromParent(); page.getAbsolutePanel().add(Mark.loadingIcon, posx, posy); Mark.loadingIcon.setVisible(true); rubricInterface.getRubricPanel().loadingRubricCriterion(levelid); // Make Ajax request AjaxRequest.ajaxRequest(url, new AsyncCallback<AjaxData>() { @Override public void onFailure(Throwable caught) { Mark.loadingIcon.setVisible(false); rubricInterface.getRubricPanel().finishloadingRubricCriterion(levelid); logger.severe("Error adding mark to Moodle!"); logger.severe(caught.getMessage()); Window.alert(caught.getMessage()); } @Override public void onSuccess(AjaxData result) { Mark.loadingIcon.setVisible(false); rubricInterface.getRubricPanel().finishloadingRubricCriterion(levelid); Mark.hideIcons(); // Parse Json values Map<String, String> values = AjaxRequest.getValueFromResult(result); if (!values.get("error").equals("")) { Mark.loadingIcon.setVisible(false); rubricInterface.getRubricPanel().finishloadingRubricCriterion(levelid); logger.severe("Error adding mark to Moodle!"); Window.alert(MarkingInterface.messages.ErrorAddingMark()); return; } // Get main values int previd = Integer.parseInt(values.get("replaceid")); int newid = Integer.parseInt(values.get("id")); float newgrade = Float.parseFloat(values.get("grade")); long timemodified = Long.parseLong(values.get("timemodified")); String markername = values.get("markername"); int pageno = page.getPageNumber(); int regradeid = Integer.parseInt(values.get("regradeid")); int regradeaccepted = Integer.parseInt(values.get("regradeaccepted")); int regrademotive = Integer.parseInt(values.get("regrademotive")); String regradecomment = values.get("regradecomment"); String regrademarkercomment = values.get("regrademarkercomment"); int criterionId = Integer.parseInt(values.get("criterionid")); // If there was a previous mark with the same level, remove it if (previd > 0) { page.deleteMarkWidget(previd); } long unixtime = System.currentTimeMillis() / 1000L; // Add mark to marking pages interface RubricMark mark = new RubricMark(newid, posx, posy, pageno, EMarkingConfiguration.getMarkerId(), dialog.getLevelId(), unixtime, criterionId, markername, comment); if (dialog.haveFeedback()) { mark.setFeedback(dialog.getFeedbackArray()); } mark.setRegradeid(regradeid); mark.setRegradeaccepted(regradeaccepted); mark.setRegradecomment(regradecomment); mark.setRegrademarkercomment(regrademarkercomment); mark.setRegrademotive(regrademotive); Criterion criterion = MarkingInterface.submissionData.getLevelById(mark.getLevelId()) .getCriterion(); criterion.setSelectedLevel(mark.getLevelId()); criterion.setBonus(bonus); markingPagesInterface.addMarkWidget(mark, previd, page); rubricInterface.getRubricPanel().addMarkToRubric(mark); toolbar.getMarkingButtons().updateStats(); toolbar.getMarkingButtons().changeColor(criterion.getId()); EMarkingWeb.markingInterface.getRubricInterface().getToolsPanel().getPreviousComments() .addMarkAsCommentToInterface(mark, true); setFinalgrade(newgrade, timemodified); } }); } } }); dialog.center(); }
From source file:cl.uai.client.MarkingInterface.java
License:Open Source License
/** * Deletes a mark from the interface//from w ww . ja v a 2 s . co m * * @param mark The Mark to be deleted */ public void deleteMark(final Mark mark) { // Check if the mark is a rubric mark final RubricMark rubricMark = mark instanceof RubricMark ? (RubricMark) mark : null; logger.fine("Deleting comment " + mark.getId()); // Delete from view for user mark.setVisible(false); // Set cursor waiting RootPanel.get().getElement().getStyle().setCursor(Cursor.WAIT); String url = null; if (rubricMark == null) { // Ajax URL for deleting comment url = "action=deletecomment" + "&id=" + mark.getId() + "&sesskey=" + EMarkingConfiguration.getSessKey(); } else { // Ajax URL for deleting mark url = "action=deletemark" + "&level=" + rubricMark.getLevelId() + "&sesskey=" + EMarkingConfiguration.getSessKey(); rubricInterface.getRubricPanel().loadingRubricCriterion(rubricMark.getLevelId()); } // Make Ajax request AjaxRequest.ajaxRequest(url, new AsyncCallback<AjaxData>() { @Override public void onFailure(Throwable caught) { logger.severe("Exception deleting mark."); logger.severe(caught.getMessage()); if (rubricMark != null) rubricInterface.getRubricPanel().finishloadingRubricCriterion(rubricMark.getLevelId()); Window.alert(caught.getMessage()); mark.setVisible(true); RootPanel.get().getElement().getStyle().setCursor(Cursor.AUTO); } @Override public void onSuccess(AjaxData result) { // Parse Json values Map<String, String> values = AjaxRequest.getValueFromResult(result); if (rubricMark != null) rubricInterface.getRubricPanel().finishloadingRubricCriterion(rubricMark.getLevelId()); // Get main values float newgrade = 0; if (rubricMark != null) newgrade = Float.parseFloat(values.get("grade")); // Get main values long timemodified = Long.parseLong(values.get("timemodified")); if (rubricMark != null) { // Then add resulting mark it to the rubric interface rubricMark.getLevel().getCriterion().setSelectedLevel(0); rubricInterface.getRubricPanel().deleteMarkFromRubric(rubricMark); if (EMarkingConfiguration .getMarkingType() == EMarkingConfiguration.EMARKING_TYPE_MARKER_TRAINING) { rubricMark.removeCollaborativeButtons(); } rubricInterface.getToolsPanel().getPreviousComments() .deletePreviousComment(rubricMark.getRawtext()); setFinalgrade(newgrade, timemodified); Mark.markPopup.setVisible(false); } else { markingPagesInterface.deleteMarkWidget(mark.getId()); setTimemodified(timemodified); } toolbar.getMarkingButtons().updateStats(); EMarkingWeb.markingInterface.getRubricInterface().getToolsPanel().loadSumissionData(); RootPanel.get().getElement().getStyle().setCursor(Cursor.AUTO); } }); }
From source file:cl.uai.client.MarkingInterface.java
License:Open Source License
/** * Loads submission data using global submission id */// w w w .ja v a 2 s .c o m public void loadSubmissionData() { // Checks that global submission id is valid if (MarkingInterface.draftId <= 0) return; addLoading(false); // Ajax requesto to submission data AjaxRequest.ajaxRequest("action=getsubmission", new AsyncCallback<AjaxData>() { @Override public void onFailure(Throwable caught) { logger.severe("Error getting submission from Moodle!"); logger.severe(caught.getMessage()); Window.alert(caught.getMessage()); finishLoading(); } @Override public void onSuccess(AjaxData result) { // Parse Json values Map<String, String> values = AjaxRequest.getValueFromResult(result); // Reset submission data submissionData = SubmissionGradeData.createFromConfiguration(values); if (submissionData != null) { EMarkingWeb.markingInterface.loadInterface(); } else { Window.alert(MarkingInterface.messages.InvalidSubmissionData()); } Window.setTitle( "Emarking " + submissionData.getCoursename() + " " + submissionData.getActivityname()); if (EMarkingConfiguration.isChatEnabled()) { activateChat(); } finishLoading(); Window.addResizeHandler(new ResizeHandler() { @Override public void onResize(ResizeEvent event) { resizeTime = new Date(); if (!resizeTimeout) { resizeTimeout = true; resizeTimer.schedule(200); } } }); } }); }
From source file:cl.uai.client.MarkingInterface.java
License:Open Source License
@Override protected void onLoad() { // Ajax request to load submission data AjaxRequest.ajaxRequest("action=ping", new AsyncCallback<AjaxData>() { @Override/*from w w w .j a v a 2 s. c o m*/ public void onFailure(Throwable caught) { // Keep trying if something fails every few seconds timer.scheduleRepeating(1000); } @Override public void onSuccess(AjaxData result) { //Check if values are ok if (result.getError().equals("")) { // Parse Json values Map<String, String> value = AjaxRequest.getValueFromResult(result); try { EMarkingConfiguration.loadConfiguration(value); } catch (Exception e) { e.printStackTrace(); Window.alert(MarkingInterface.messages.ErrorLoadingSubmission()); return; } // Clear interface (submission and rubric interfaces) interfacePanel.clear(); // Cancel timer, we don't need to ping again timer.cancel(); // Load submission data loadSubmissionData(); focusPanel.getElement().focus(); // Schedule heartbeat if configured as if ((value.get("heartbeat") != null && value.get("heartbeat").equals("1"))) { // Every two minutes heartBeatTimer.scheduleRepeating(2 * 60 * 1000); } } else { // Keep trying if something fails every few seconds timer.scheduleRepeating(1000); } } }); }
From source file:cl.uai.client.MarkingInterface.java
License:Open Source License
public void regradeMark(final RubricMark mark, final String comment, final int motive) { RootPanel.get().getElement().getStyle().setCursor(Cursor.WAIT); final MarkingPage page = markingPagesInterface.getPageByIndex(mark.getPageno() - 1); if (page == null) { logger.severe("Page is null for page index " + mark.getPageno()); return;//from w w w . jav a 2s.c o m } Mark.loadingIcon.removeFromParent(); page.getAbsolutePanel().add(Mark.loadingIcon, mark.getPosx(), mark.getPosy()); Mark.loadingIcon.setVisible(true); // Invokes the ajax Moodle interface to save the mark AjaxRequest.ajaxRequest("action=addregrade" + "&comment=" + URL.encode(comment) + "&motive=" + motive + "&level=" + mark.getLevelId(), new AsyncCallback<AjaxData>() { @Override public void onFailure(Throwable caught) { Mark.loadingIcon.setVisible(false); logger.severe("Exception regrading mark."); logger.severe(caught.getMessage()); Window.alert(caught.getMessage()); RootPanel.get().getElement().getStyle().setCursor(Cursor.AUTO); } @Override public void onSuccess(AjaxData result) { Mark.loadingIcon.setVisible(false); Map<String, String> values = AjaxRequest.getValueFromResult(result); // Parse json results and check if there was an error if (!result.getError().equals("")) { Window.alert(messages.ErrorAddingMark()); RootPanel.get().getElement().getStyle().setCursor(Cursor.AUTO); return; } // Parses important values from result int regradeid = Integer.parseInt(values.get("regradeid")); long timemodified = Long.parseLong(values.get("timemodified")); // Sets the values for the new mark mark.setRegradeid(regradeid); mark.setRegradecomment(comment); mark.setRegrademotive(motive); // Add the mark to the rubric so it updates the information in the rubric panel EMarkingWeb.markingInterface.getRubricInterface().getRubricPanel().addMarkToRubric(mark); mark.setMarkHTML(); // Updates toolbar setTimemodified(timemodified); RootPanel.get().getElement().getStyle().setCursor(Cursor.AUTO); } }); }
From source file:cl.uai.client.MarkingInterface.java
License:Open Source License
/** * Reloads main interface for a new submission * /* ww w .j a v a 2 s.c om*/ * @param newSubmissionId the new submission id */ public void reload(int newSubmissionId) { // Validate new submission id value if (newSubmissionId < 0) { Window.alert("Invalid submission id value " + draftId); return; } draftId = newSubmissionId; reloadPage(); }
From source file:cl.uai.client.marks.Mark.java
License:Open Source License
/** * Updates a mark's comment, position or bonus * // ww w.ja va 2 s . co m * @param newcomment the new comment * @param newposx the new X coordinate in the page * @param newposy the new Y coordinate in the page * @param newbonus the new bonus */ public void update(final String newcomment, int newposx, int newposy, final int newlevel, final float newbonus, final String newregrademarkercomment, final int newregradeaccepted, int widthPage, int heightPage) { final Mark mark = this; int regradeid = 0; if (mark instanceof RubricMark) regradeid = ((RubricMark) mark).getRegradeid(); // This shouldn't happen so log it for debugging if (this.id == 0) { logger.severe("Fatal error! A comment with id 0!"); return; } EMarkingWeb.markingInterface.addLoading(true); this.setLoading(); final String feedbackToAjax; if (feedback.size() > 0) { feedbackToAjax = getFeedbackToAjax(); } else { feedbackToAjax = ""; } logger.severe(feedbackToAjax); // Call the ajax request to update the data AjaxRequest.ajaxRequest("action=updcomment&cid=" + this.id + "&posx=" + newposx + "&posy=" + newposy + "&bonus=" + newbonus + "&format=" + this.format + "&levelid=" + newlevel + "®radeid=" + regradeid + "®radeaccepted=" + newregradeaccepted + "®rademarkercomment=" + newregrademarkercomment + "&markerid=" + EMarkingConfiguration.getMarkerId() + "&width=" + this.width + "&height=" + this.height + "&comment=" + URL.encode(newcomment) + "&windowswidth=" + widthPage + "&windowsheight=" + heightPage + "&feedback=" + URL.encode(feedbackToAjax), new AsyncCallback<AjaxData>() { @Override public void onFailure(Throwable caught) { logger.severe("Error updating mark to Moodle!"); logger.severe(caught.getMessage()); Window.alert(caught.getMessage()); EMarkingWeb.markingInterface.finishLoading(); } @Override public void onSuccess(AjaxData result) { Map<String, String> value = AjaxRequest.getValueFromResult(result); if (!result.getError().equals("")) { Window.alert(result.getError()); setMarkHTML(); removeStyleName(Resources.INSTANCE.css().updating()); EMarkingWeb.markingInterface.finishLoading(); return; } // Parse json values from Moodle long timemodified = Long.parseLong(value.get("timemodified")); float newgrade = Float.parseFloat(value.get("newgrade")); mark.setPreviousText(mark.getRawtext()); mark.setRawtext(newcomment); if (mark instanceof RubricMark) { RubricMark rmark = (RubricMark) mark; // Update submission data int previousLevelid = rmark.getLevelId(); float previousBonus = rmark.getBonus(); rmark.setLevelId(newlevel); rmark.setBonus(newbonus); rmark.setRegradeaccepted(newregradeaccepted); rmark.setRegrademarkercomment(newregrademarkercomment); if (rmark.getLevelId() != previousLevelid || rmark.getBonus() != previousBonus) { rmark.setMarkername(MarkingInterface.submissionData.getMarkerfirstname() + " " + MarkingInterface.submissionData.getMarkerlastname()); rmark.setMarkerid(MarkingInterface.submissionData.getMarkerid()); Mark.showIcons(rmark, 0); } EMarkingWeb.markingInterface.getRubricInterface().getRubricPanel() .addMarkToRubric(rmark); EMarkingWeb.markingInterface.getRubricInterface().getRubricPanel() .finishloadingRubricCriterion(newlevel); } // Update the marking interface with the final grade and time EMarkingWeb.markingInterface.setFinalgrade(newgrade, timemodified); setMarkHTML(); EMarkingWeb.markingInterface.getRubricInterface().getToolsPanel().getPreviousComments() .addMarkAsCommentToInterface(mark, true); removeStyleName(Resources.INSTANCE.css().updating()); EMarkingWeb.markingInterface.finishLoading(); } }); }
From source file:cl.uai.client.page.EditMarkDialog.java
License:Open Source License
/** * Creates a comment dialog at a specific position * //w ww. j a va2 s . c o m * @param posx Top position for the dialog * @param posy Left position for the dialog * @param level An optional rubric level in case we are editing one */ public EditMarkDialog(int posx, int posy, int level, int regradeid) { super(true, false); this.regradeId = regradeid; this.levelId = level; Level lvl = MarkingInterface.submissionData.getLevelById(levelId); if (EMarkingConfiguration.getKeywords() != null && EMarkingConfiguration.getKeywords().length() > 0) { logger.fine("Keywords: " + EMarkingConfiguration.getKeywords()); } if (!EMarkingConfiguration.getKeywords().equals("") && (level > 0 || regradeid > 0)) { feedbackArray = new ArrayList<FeedbackObject>(); feedbackPanel = new FeedbackInterface(); feedbackPanel.setParent(this); } else { simplePanel = true; } superPanel = new HorizontalPanel(); superPanel.addStyleName(Resources.INSTANCE.css().feedbackdialog()); feedbackForStudent = new VerticalPanel(); feedbackForStudent.addStyleName(Resources.INSTANCE.css().feedbackforstudent()); feedbackSummary = new ScrollPanel(feedbackForStudent); feedbackSummary.addStyleName(Resources.INSTANCE.css().feedbacksummary()); mainPanel = new VerticalPanel(); mainPanel.addStyleName(Resources.INSTANCE.css().editmarkdialog()); // Adds the CSS style and other settings this.addStyleName(Resources.INSTANCE.css().commentdialog()); this.setAnimationEnabled(true); this.setGlassEnabled(true); bonusTxt = new TextBox(); bonusTxt.addStyleName(Resources.INSTANCE.css().bonuslist()); this.levelsList = new ListBox(); this.levelsList.addStyleName(Resources.INSTANCE.css().levelslist()); this.levelsList.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { int levelid = Integer.parseInt(levelsList.getValue(levelsList.getSelectedIndex())); levelId = levelid; Level lvl = MarkingInterface.submissionData.getLevelById(levelId); setBonus(lvl.getBonus()); } }); // If there's a rubric level we should edit a Mark // otherwise we are just editing its comment if (this.levelId == 0) { this.setHTML(MarkingInterface.messages.AddEditComment()); } else { this.setHTML(MarkingInterface.messages.AddEditMark() + "<br/>" + lvl.getCriterion().getDescription()); } // Position the dialog if (simplePanel) { this.setPopupPosition(posx, posy); } else { // The Dialog is more big, so we need to fix the position this.setPopupPosition((int) (Window.getClientWidth() * 0.08), (int) (Window.getClientHeight() * 0.15)); } if (this.levelId > 0) { loadLevelsList(); HorizontalPanel hpanelLevels = new HorizontalPanel(); hpanelLevels.setWidth("100%"); Label messages = new Label(MarkingInterface.messages.Level()); hpanelLevels.add(messages); hpanelLevels.add(levelsList); hpanelLevels.setCellHorizontalAlignment(levelsList, HasHorizontalAlignment.ALIGN_RIGHT); mainPanel.add(hpanelLevels); mainPanel.setCellHorizontalAlignment(hpanelLevels, HasHorizontalAlignment.ALIGN_RIGHT); } // Save button Button btnSave = new Button(MarkingInterface.messages.Save()); btnSave.addStyleName(Resources.INSTANCE.css().btnsave()); btnSave.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if (levelId > 0 && !bonusIsValid()) { Window.alert(MarkingInterface.messages.InvalidBonusValue()); return; } cancelled = false; hide(); } }); // Cancel button Button btnCancel = new Button(MarkingInterface.messages.Cancel()); btnSave.addStyleName(Resources.INSTANCE.css().btncancel()); btnCancel.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { cancelled = true; hide(); } }); // The comment text box TextArea txt = new TextArea(); txt.setVisibleLines(5); txt.getElement().getStyle().setMarginBottom(5, Unit.PT); txtComment = new SuggestBox(EMarkingWeb.markingInterface.previousCommentsOracle, txt); txtComment.setAutoSelectEnabled(false); txtComment.addStyleName(Resources.INSTANCE.css().editmarksuggestbox()); HorizontalPanel hpanelComment = new HorizontalPanel(); hpanelComment.setWidth("100%"); hpanelComment.add(new Label(MarkingInterface.messages.Comment())); hpanelComment.add(txtComment); hpanelComment.setCellHorizontalAlignment(txtComment, HasHorizontalAlignment.ALIGN_RIGHT); mainPanel.add(hpanelComment); mainPanel.setCellHorizontalAlignment(hpanelComment, HasHorizontalAlignment.ALIGN_RIGHT); // If the rubric level is not null then create the bonus list and add it to the dialog if (this.levelId > 0) { setBonus(lvl.getBonus()); HorizontalPanel hpanelBonus = new HorizontalPanel(); hpanelBonus.setWidth("100%"); hpanelBonus.add(new Label(MarkingInterface.messages.SetBonus())); hpanelBonus.add(bonusTxt); hpanelBonus.setCellHorizontalAlignment(bonusTxt, HasHorizontalAlignment.ALIGN_RIGHT); if (EMarkingConfiguration.isFormativeFeedbackOnly()) { hpanelBonus.setVisible(false); } mainPanel.add(hpanelBonus); mainPanel.setCellHorizontalAlignment(hpanelBonus, HasHorizontalAlignment.ALIGN_RIGHT); } // The regrade comment text box txt = new TextArea(); txt.setVisibleLines(5); txt.getElement().getStyle().setMarginBottom(5, Unit.PT); txtRegradeComment = new SuggestBox(EMarkingWeb.markingInterface.previousCommentsOracle, txt); if (this.regradeId > 0) { mainPanel.add(new HTML("<hr>")); mainPanel.add(new Label(MarkingInterface.messages.Regrade())); // Add the textbox HorizontalPanel hpanelRegradeComment = new HorizontalPanel(); hpanelRegradeComment.setWidth("100%"); hpanelRegradeComment.add(new Label(MarkingInterface.messages.RegradeComment())); hpanelRegradeComment.add(txtRegradeComment); hpanelRegradeComment.setCellHorizontalAlignment(txtRegradeComment, HasHorizontalAlignment.ALIGN_RIGHT); mainPanel.add(hpanelRegradeComment); mainPanel.setCellHorizontalAlignment(hpanelRegradeComment, HasHorizontalAlignment.ALIGN_RIGHT); } // Add buttons HorizontalPanel hpanel = new HorizontalPanel(); hpanel.setSpacing(2); hpanel.setWidth("100%"); hpanel.add(btnSave); hpanel.add(btnCancel); hpanel.setCellWidth(btnSave, "100%"); hpanel.setCellWidth(btnCancel, "0px"); hpanel.setCellHorizontalAlignment(btnCancel, HasHorizontalAlignment.ALIGN_RIGHT); hpanel.setCellHorizontalAlignment(btnSave, HasHorizontalAlignment.ALIGN_RIGHT); mainPanel.add(hpanel); mainPanel.setCellHorizontalAlignment(hpanel, HasHorizontalAlignment.ALIGN_RIGHT); if (simplePanel) { // No feedback this.setWidget(mainPanel); } else { // Remove CSS Style mainPanel.removeStyleName(Resources.INSTANCE.css().editmarkdialog()); mainPanel.addStyleName(Resources.INSTANCE.css().editmarkdialogWithFeedback()); bonusTxt.removeStyleName(Resources.INSTANCE.css().bonuslist()); bonusTxt.addStyleName(Resources.INSTANCE.css().bonuslistWithFeedback()); this.levelsList.removeStyleName(Resources.INSTANCE.css().levelslist()); this.levelsList.addStyleName(Resources.INSTANCE.css().levelslistWithFeedback()); txtComment.removeStyleName(Resources.INSTANCE.css().editmarksuggestbox()); txtComment.addStyleName(Resources.INSTANCE.css().editmarksuggestboxWithFeedback()); // Add feedback panel mainPanel.add(new HTML("<h4>Feedback</h4>")); mainPanel.add(feedbackSummary); superPanel.add(mainPanel); superPanel.add(feedbackPanel); this.setWidget(superPanel); } }