List of usage examples for org.apache.wicket.markup.repeater.data DataView DataView
protected DataView(String id, IDataProvider<T> dataProvider)
From source file:org.sakaiproject.attendance.tool.pages.StudentOverview.java
License:Educational Community License
private void createStatsTableHeader(WebMarkupContainer t) { //headers for the table Label studentName = new Label("header-student-name", new ResourceModel("attendance.header.student")); Label grade = new Label("header-grade", new ResourceModel("attendance.header.grade")); Label totalPoints = new Label("total-points", "Total: " + attendanceLogic.getCurrentAttendanceSite().getMaximumGrade()); DataView<AttendanceStatus> statusHeaders = new DataView<AttendanceStatus>("status-headers", attendanceStatusProvider) {//from w w w.j a v a2 s . c om @Override protected void populateItem(Item<AttendanceStatus> item) { item.add(new Label("header-status-name", getStatusString(item.getModelObject().getStatus()))); } }; Link<Void> settings = new Link<Void>("settings-link") { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage(new GradingPage()); } }; t.add(studentName); t.add(grade); t.add(totalPoints); t.add(statusHeaders); t.add(settings); }
From source file:org.sakaiproject.attendance.tool.pages.StudentOverview.java
License:Educational Community License
private void createStatsTableData(WebMarkupContainer t) { final Map<String, AttendanceGrade> gradeMap = attendanceLogic.getAttendanceGrades(); // Add form to filter table final Form<?> filterForm = new Form<Void>("filter-table-form") { @Override//from w w w . ja v a 2s .co m protected void onSubmit() { setResponsePage(new StudentOverview(groupChoice.getModelObject())); } }; add(filterForm); List<String> groupIds = sakaiProxy.getAvailableGroupsForCurrentSite(); Collections.sort(groupIds, new Comparator<String>() { @Override public int compare(String o1, String o2) { return sakaiProxy.getGroupTitleForCurrentSite(o1) .compareTo(sakaiProxy.getGroupTitleForCurrentSite(o2)); } }); groupChoice = new DropDownChoice<String>("group-choice", new PropertyModel<String>(this, "selectedGroup"), groupIds, new IChoiceRenderer<String>() { @Override public Object getDisplayValue(String s) { return sakaiProxy.getGroupTitleForCurrentSite(s); } @Override public String getIdValue(String s, int i) { return s; } }); groupChoice.setNullValid(true); groupChoice.add(new AjaxFormSubmitBehavior("onchange") { @Override protected void onSubmit(AjaxRequestTarget target) { super.onSubmit(target); } }); filterForm.add(groupChoice); filterForm.add(new Label("group-choice-label", new ResourceModel("attendance.event.view.filter"))); List<AttendanceUserStats> userStatsList = attendanceLogic.getUserStatsForCurrentSite(selectedGroup); final ListView<AttendanceUserStats> uListView = new ListView<AttendanceUserStats>("students", userStatsList) { @Override protected void populateItem(ListItem<AttendanceUserStats> item) { final String id = item.getModelObject().getUserID(); Link<Void> studentLink = new Link<Void>("student-link") { public void onClick() { setResponsePage(new StudentView(id, BasePage.STUDENT_OVERVIEW_PAGE)); } }; studentLink.add(new Label("student-name", sakaiProxy.getUserSortName(id) + " (" + sakaiProxy.getUserDisplayId(id) + ")")); item.add(studentLink); DataView<AttendanceStatus> activeStatusStats = new DataView<AttendanceStatus>("active-status-stats", attendanceStatusProvider) { @Override protected void populateItem(Item<AttendanceStatus> statusItem) { Status itemStatus = statusItem.getModelObject().getStatus(); int stat = attendanceLogic.getStatsForStatus(item.getModelObject(), itemStatus); statusItem.add(new Label("student-stats", stat)); } }; item.add(activeStatusStats); item.add(new AttendanceGradePanel("attendance-grade", gradeMap.get(id), feedbackPanel)); } }; Label noStudents = new Label("no-students", new ResourceModel("attendance.student.overview.no.students")) { @Override public boolean isVisible() { return uListView.size() <= 0; } }; Label noStudents2 = new Label("no-students2", new ResourceModel("attendance.student.overview.no.students.2")) { @Override public boolean isVisible() { return uListView.size() <= 0; } }; t.add(uListView); t.add(noStudents); t.add(noStudents2); }
From source file:org.sakaiproject.attendance.tool.pages.StudentView.java
License:Educational Community License
private DataView<AttendanceRecord> createData() { DataView<AttendanceRecord> dataView = new DataView<AttendanceRecord>("records", new AttendanceRecordProvider(this.studentId)) { @Override/*from w ww .j av a2s. co m*/ protected void populateItem(final Item<AttendanceRecord> item) { Link<Void> eventLink = new Link<Void>("event-link") { private static final long serialVersionUID = 1L; public void onClick() { setResponsePage(new EventView(item.getModelObject().getAttendanceEvent(), returnPage)); } }; eventLink.add(new Label("record-name", item.getModelObject().getAttendanceEvent().getName())); if (isStudent) { disableLink(eventLink); } item.add(eventLink); item.add(new Label("event-date", item.getModelObject().getAttendanceEvent().getStartDateTime())); item.add(new AttendanceRecordFormDataPanel("record", item.getModel(), returnPage, feedbackPanel)); } }; return dataView; }
From source file:org.sakaiproject.attendance.tool.panels.AttendanceRecordFormDataPanel.java
License:Educational Community License
private void createStatusRadio(final Form<AttendanceRecord> rF) { AttendanceStatusProvider attendanceStatusProvider = new AttendanceStatusProvider( attendanceLogic.getCurrentAttendanceSite(), AttendanceStatusProvider.ACTIVE); DataView<AttendanceStatus> attendanceStatusRadios = new DataView<AttendanceStatus>("status-radios", attendanceStatusProvider) {//from ww w . j av a 2 s . c o m @Override protected void populateItem(Item<AttendanceStatus> item) { final Status itemStatus = item.getModelObject().getStatus(); Radio statusRadio = new Radio<Status>("record-status", new Model<Status>(itemStatus)); item.add(statusRadio); statusRadio.add(new AjaxFormSubmitBehavior(rF, "onclick") { protected void onSubmit(AjaxRequestTarget target) { target.appendJavaScript( "attendance.recordFormRowSetup(" + this.getAttributes().getFormId() + ");"); for (Component c : ajaxTargets) { target.add(c); } } }); ajaxTargets.add(statusRadio); statusRadio.setLabel(Model.of(getStatusString(itemStatus))); item.add(new SimpleFormComponentLabel("record-status-name", statusRadio)); item.add(new Label("record-status-name-raw", itemStatus.toString())); } }; RadioGroup group = new RadioGroup<Status>("attendance-record-status-group", new PropertyModel<Status>(this.recordIModel, "status")); group.setOutputMarkupPlaceholderTag(true); group.setRenderBodyOnly(false); group.add(attendanceStatusRadios); group.setEnabled(!this.restricted); rF.add(group); }
From source file:org.sakaiproject.attendance.tool.panels.GradingRulesListPanel.java
License:Educational Community License
public GradingRulesListPanel(String id, FeedbackPanel feedbackPanel, boolean needRegrade) { super(id);/*from w ww . ja v a2 s .c o m*/ enable(feedbackPanel); this.needRegrade = needRegrade; final ListDataProvider<GradingRule> rulesProvider = new ListDataProvider<GradingRule>() { @Override protected List<GradingRule> getData() { return attendanceLogic.getGradingRulesForSite(attendanceLogic.getCurrentAttendanceSite()); } }; final DataView<GradingRule> rules = new DataView<GradingRule>("rules", rulesProvider) { @Override protected void populateItem(Item<GradingRule> item) { GradingRule gradingRule = item.getModelObject(); final Label rule = new Label("rule", MessageFormat.format(getString("attendance.settings.grading.rule.sentence"), String.valueOf(gradingRule.getPoints()), getStatusString(gradingRule.getStatus()), String.valueOf(gradingRule.getStartRange()), String.valueOf(gradingRule.getEndRange()))); rule.setEscapeModelStrings(false); item.add(rule); final Form<GradingRule> deleteForm = new Form<>("delete-form", item.getModel()); item.add(deleteForm); deleteForm.add(new AjaxButton("delete-rule-button", deleteForm) { private static final long serialVersionUID = 1L; @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { super.onSubmit(target, form); final boolean result = attendanceLogic .deleteGradingRule((GradingRule) form.getModelObject()); if (result) { setNeedRegrade(true); target.add(GradingRulesListPanel.this.regradeForm); } else { GradingRulesListPanel.this.pageFeedbackPanel .error(getString("attendance.grading.delete.rule.error")); target.add(GradingRulesListPanel.this.pageFeedbackPanel); } target.add(GradingRulesListPanel.this); } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { target.add(GradingRulesListPanel.this.pageFeedbackPanel); } }); } }; rules.setOutputMarkupId(true); add(rules); this.regradeForm = new Form("regrade-form1") { @Override public boolean isVisible() { return getNeedRegrade(); } }; regradeForm.add(new AjaxButton("regrade-submit1", regradeForm) { @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { super.onSubmit(target, form); attendanceLogic.regradeAll(attendanceLogic.getCurrentAttendanceSite()); GradingRulesListPanel.this.pageFeedbackPanel.info(getString("attendance.grading.regrade.success")); target.add(GradingRulesListPanel.this); target.add(GradingRulesListPanel.this.pageFeedbackPanel); setNeedRegrade(false); target.add(GradingRulesListPanel.this.regradeForm); } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { target.add(GradingRulesListPanel.this.pageFeedbackPanel); } }); this.regradeForm.setOutputMarkupId(true); add(regradeForm); }
From source file:org.sakaiproject.attendance.tool.panels.StatisticsPanel.java
License:Educational Community License
private WebMarkupContainer createTable() { WebMarkupContainer infoContainer = new WebMarkupContainer("info-container"); infoContainer.add(createRefreshLink()); infoContainer.setOutputMarkupId(true); if (attendanceEvent != null) { infoContainer.add(new Label("item-info-header", new ResourceModel("attendance.event.view.item.info"))); stats = attendanceLogic.getStatsForEvent(attendanceEvent); } else {/* w ww .jav a 2 s . c om*/ infoContainer .add(new Label("item-info-header", new ResourceModel("attendance.student.view.item.info"))); stats = attendanceLogic.getStatsForUser(userId); } AttendanceStatusProvider attendanceStatusProvider = new AttendanceStatusProvider( attendanceLogic.getCurrentAttendanceSite(), AttendanceStatusProvider.ACTIVE); DataView<AttendanceStatus> statusHeaders = new DataView<AttendanceStatus>("status-headers", attendanceStatusProvider) { @Override protected void populateItem(Item<AttendanceStatus> item) { item.add(new Label("header-status-name", getStatusString(item.getModelObject().getStatus()))); } }; infoContainer.add(statusHeaders); DataView<AttendanceStatus> activeStatusStats = new DataView<AttendanceStatus>("active-status-stats", attendanceStatusProvider) { @Override protected void populateItem(Item<AttendanceStatus> item) { Status status = item.getModelObject().getStatus(); int stat = attendanceLogic.getStatsForStatus(stats, status); item.add(new Label("stats", stat)); } }; infoContainer.add(activeStatusStats); infoContainer.add(new Label("info", new ResourceModel("attendance.statistics.info"))); return infoContainer; }
From source file:org.sakaiproject.dash.tool.panels.CalendarLinksPanel.java
License:Educational Community License
/** * /*from w w w . j a v a 2 s.com*/ */ protected void initPanel() { if (selectedCalendarTab == null) { selectedCalendarTab = TAB_ID_UPCOMING; } if (this.calendarLinksDivId != null) { this.remove(calendarLinksDivId); } ResourceLoader rl = new ResourceLoader("dash_entity"); final WebMarkupContainer calendarLinksDiv = new WebMarkupContainer("calendarLinksDiv"); calendarLinksDiv.setOutputMarkupId(true); add(calendarLinksDiv); this.calendarLinksDivId = calendarLinksDiv.getId(); calendarLinksDiv.add(new Label("calendarTitle", rl.getString("dash.calendar.title"))); AjaxLink<IModel<List<CalendarLink>>> upcomingCalendarLink = new AjaxLink<IModel<List<CalendarLink>>>( "link") { @Override public void onClick(AjaxRequestTarget target) { logger.debug("upcomingCalendarLink onClick called"); // set currentCalendarTab to "upcoming" selectedCalendarTab = TAB_ID_UPCOMING; // reset calendar dataview to show upcoming stuff if (calendarLinksProvider == null) { calendarLinksProvider = new CalendarLinksDataProvider(selectedCalendarTab); } else { calendarLinksProvider.setCalendarTab(selectedCalendarTab); } // refresh calendarItemsDiv initPanel(); target.addComponent(CalendarLinksPanel.this); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_TABBING, "/dashboard/calendar/upcoming"); } }; upcomingCalendarLink.add(new Label("label", rl.getString("dash.calendar.upcoming"))); WebMarkupContainer upcomingCalendarTab = new WebMarkupContainer("upcomingCalendarTab"); if (selectedCalendarTab == null || TAB_ID_UPCOMING.equalsIgnoreCase(selectedCalendarTab)) { upcomingCalendarTab.add(new SimpleAttributeModifier("class", "activeTab")); } upcomingCalendarTab.add(upcomingCalendarLink); calendarLinksDiv.add(upcomingCalendarTab); AjaxLink<IModel<List<CalendarLink>>> pastCalendarLink = new AjaxLink<IModel<List<CalendarLink>>>("link") { @Override public void onClick(AjaxRequestTarget target) { logger.debug("pastCalendarLink onClick called"); // set currentCalendarTab to "past" selectedCalendarTab = TAB_ID_PAST; // reset calendar dataview to show past stuff if (calendarLinksProvider == null) { calendarLinksProvider = new CalendarLinksDataProvider(selectedCalendarTab); } else { calendarLinksProvider.setCalendarTab(selectedCalendarTab); } // refresh calendarItemsDiv initPanel(); target.addComponent(CalendarLinksPanel.this); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_TABBING, "/dashboard/calendar/past"); } }; pastCalendarLink.add(new Label("label", rl.getString("dash.calendar.past"))); WebMarkupContainer pastCalendarTab = new WebMarkupContainer("pastCalendarTab"); if (selectedCalendarTab != null && TAB_ID_PAST.equalsIgnoreCase(selectedCalendarTab)) { pastCalendarTab.add(new SimpleAttributeModifier("class", "activeTab")); } pastCalendarTab.add(pastCalendarLink); calendarLinksDiv.add(pastCalendarTab); AjaxLink<IModel<List<CalendarLink>>> starredCalendarLink = new AjaxLink<IModel<List<CalendarLink>>>( "link") { @Override public void onClick(AjaxRequestTarget target) { logger.debug("starredCalendarLink onClick called"); // set currentCalendarTab to "starred" selectedCalendarTab = TAB_ID_STARRED; // reset calendar dataview to show starred stuff if (calendarLinksProvider == null) { calendarLinksProvider = new CalendarLinksDataProvider(selectedCalendarTab); } else { calendarLinksProvider.setCalendarTab(selectedCalendarTab); } // refresh calendarItemsDiv initPanel(); target.addComponent(CalendarLinksPanel.this); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_TABBING, "/dashboard/calendar/starred"); } }; starredCalendarLink.add(new Label("label", rl.getString("dash.calendar.starred"))); WebMarkupContainer starredCalendarTab = new WebMarkupContainer("starredCalendarTab"); if (selectedCalendarTab != null && TAB_ID_STARRED.equalsIgnoreCase(selectedCalendarTab)) { starredCalendarTab.add(new SimpleAttributeModifier("class", "activeTab")); } starredCalendarTab.add(starredCalendarLink); calendarLinksDiv.add(starredCalendarTab); AjaxLink<IModel<List<CalendarLink>>> hiddenCalendarLink = new AjaxLink<IModel<List<CalendarLink>>>("link") { @Override public void onClick(AjaxRequestTarget target) { logger.debug("hiddenCalendarLink onClick called"); // set currentCalendarTab to "hidden" selectedCalendarTab = TAB_ID_HIDDEN; // reset calendar dataview to show hidden stuff if (calendarLinksProvider == null) { calendarLinksProvider = new CalendarLinksDataProvider(selectedCalendarTab); } else { calendarLinksProvider.setCalendarTab(selectedCalendarTab); } // refresh calendarItemsDiv initPanel(); target.addComponent(CalendarLinksPanel.this); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_TABBING, "/dashboard/calendar/hidden"); } }; hiddenCalendarLink.add(new Label("label", rl.getString("dash.calendar.hidden"))); WebMarkupContainer hiddenCalendarTab = new WebMarkupContainer("hiddenCalendarTab"); if (selectedCalendarTab != null && TAB_ID_HIDDEN.equalsIgnoreCase(selectedCalendarTab)) { hiddenCalendarTab.add(new SimpleAttributeModifier("class", "activeTab")); } hiddenCalendarTab.add(hiddenCalendarLink); calendarLinksDiv.add(hiddenCalendarTab); if (calendarLinksProvider == null) { calendarLinksProvider = new CalendarLinksDataProvider(selectedCalendarTab); } else { calendarLinksProvider.setCalendarTab(selectedCalendarTab); } WebMarkupContainer haveLinks = new WebMarkupContainer("haveLinks"); calendarLinksDiv.add(haveLinks); //present the calendar data in a table final DataView<CalendarLink> calendarDataView = new DataView<CalendarLink>("calendarItems", calendarLinksProvider) { @Override public void populateItem(final Item item) { if (item != null && item.getModelObject() != null) { item.setOutputMarkupId(true); ResourceLoader rl = new ResourceLoader("dash_entity"); final CalendarLink cLink = (CalendarLink) item.getModelObject(); final CalendarItem cItem = cLink.getCalendarItem(); if (logger.isDebugEnabled()) { logger.debug(this + "populateItem() item: " + item); } String itemType = cItem.getSourceType().getIdentifier(); item.add(new Label("itemType", itemType)); item.add(new Label("itemCount", "1")); item.add(new Label("entityReference", cItem.getEntityReference())); Component timeLabel = new Label("calendarDate", DateUtil.getCalendarTimeString(cItem.getCalendarTime())); timeLabel.add(new AttributeModifier("title", true, new AbstractReadOnlyModel() { @Override public Object getObject() { // TODO Auto-generated method stub return DateUtil.getFullDateString(cItem.getCalendarTime()); } })); item.add(timeLabel); //item.add(new Label("calendarTime", new SimpleDateFormat(TIME_FORMAT).format(cItem.getCalendarTime()))); Image icon = new Image("icon"); icon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { // TODO Auto-generated method stub return dashboardCommonLogic.getEntityIconUrl(cItem.getSourceType().getIdentifier(), cItem.getSubtype()); } })); item.add(icon); StringBuilder errorMessages = new StringBuilder(); String title = FormattedText.processFormattedText(cItem.getTitle(), errorMessages, true, true); if (errorMessages != null && errorMessages.length() > 0) { logger.warn("Error(s) encountered while cleaning calendarItem title:\n" + errorMessages); } ExternalLink itemLink = new ExternalLink("itemLink", "#itemEvent"); itemLink.add(new Label("itemTitle", title)); itemLink.add(new Label("itemClick", rl.getString("dash.details"))); item.add(itemLink); String calendarItemLabel = dashboardCommonLogic.getString(cItem.getCalendarTimeLabelKey(), "", itemType); if (calendarItemLabel == null) { calendarItemLabel = ""; } item.add(new Label("itemLabel", calendarItemLabel)); item.add(new ExternalLink("siteLink", cItem.getContext().getContextUrl(), cItem.getContext().getContextTitle())); if (cLink.isSticky()) { AjaxLink<CalendarLink> starringAction = new AjaxLink<CalendarLink>("starringAction") { protected long calendarItemId = cItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("starringAction onClick() called -- unstar "); // need to keep one item logger.debug(calendarItemId); //logger.debug(this.getModelObject()); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.unkeepCalendarItem(sakaiUserId, calendarItemId); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_UNSTAR, "/dashboard/calendar/" + selectedCalendarTab + "/" + calendarItemId); // if success adjust UI, else report failure? if (success) { target.addComponent(CalendarLinksPanel.this); if (TAB_ID_STARRED.equals(selectedCalendarTab)) { ResourceLoader rl = new ResourceLoader("dash_entity"); CalendarItem changedItem = dashboardCommonLogic .getCalendarItem(calendarItemId); JsonHelper jsonHelper = new JsonHelper(dashboardCommonLogic, dashboardConfig); String jsonStr = jsonHelper.getJsonObjectFromCalendarItem(changedItem) .toString(); String javascript = "reportSuccess('" + rl.getString("dash.ajax.unstar.success") + "'," + jsonStr + ",'" + "not-sure-about-url-yet" + "');"; target.appendJavascript(javascript); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); } } } }; starringAction.setDefaultModel(item.getModel()); item.add(starringAction); Image starringActionIcon = new Image("starringActionIcon"); starringActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return dashboardConfig.getActionIcon(dashboardConfig.ACTION_UNSTAR); } })); starringActionIcon.add(new AttributeModifier("alt", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.unstar"); } })); starringAction.add(starringActionIcon); //starringAction.add(new Label("starringActionLabel", "Unstar")); if (cLink.isHidden()) { // this shouldn't happen, but just in case ... starringAction.setVisible(false); starringAction.setVisibilityAllowed(false); } } else { AjaxLink<CalendarLink> starringAction = new AjaxLink<CalendarLink>("starringAction") { protected long calendarItemId = cItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("starringAction onClick() called -- star "); // need to keep one item logger.debug(calendarItemId); //logger.debug(this.getModelObject()); ResourceLoader rl = new ResourceLoader("dash_entity"); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.keepCalendarItem(sakaiUserId, calendarItemId); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_STAR, "/dashboard/calendar/" + selectedCalendarTab + "/" + calendarItemId); // if success adjust UI, else report failure? if (success) { target.addComponent(CalendarLinksPanel.this); //String javascript = "alert('success. (" + thisRow.getMarkupId() + ")');"; //target.appendJavascript(javascript ); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); } } }; Image starringActionIcon = new Image("starringActionIcon"); starringActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return dashboardConfig.getActionIcon(dashboardConfig.ACTION_STAR); } })); starringActionIcon.add(new AttributeModifier("alt", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.star"); } })); starringAction.add(starringActionIcon); //starringAction.add(new Label("starringActionLabel", "Star")); item.add(starringAction); if (cLink.isHidden()) { starringAction.setVisible(false); starringAction.setVisibilityAllowed(false); } } if (cLink.isHidden()) { AjaxLink<CalendarLink> hidingAction = new AjaxLink<CalendarLink>("hidingAction") { protected long calendarItemId = cItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("hidingAction onClick() called -- show"); // need to trash one item logger.debug(calendarItemId); //logger.debug(this.getModelObject()); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.unhideCalendarItem(sakaiUserId, calendarItemId); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_SHOW, "/dashboard/calendar/" + selectedCalendarTab + "/" + calendarItemId); // if success adjust UI, else report failure? if (success) { ResourceLoader rl = new ResourceLoader("dash_entity"); target.addComponent(CalendarLinksPanel.this); CalendarItem changedItem = dashboardCommonLogic.getCalendarItem(calendarItemId); JsonHelper jsonHelper = new JsonHelper(dashboardCommonLogic, dashboardConfig); String jsonStr = jsonHelper.getJsonObjectFromCalendarItem(changedItem) .toString(); String javascript = "reportSuccess('" + rl.getString("dash.ajax.show.success") + "'," + jsonStr + ",'" + "not-sure-about-url-yet" + "');"; target.appendJavascript(javascript); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); } } }; hidingAction.setDefaultModel(item.getModel()); //actionHideThisLink.setModelObject(cItem); item.add(hidingAction); Image hidingActionIcon = new Image("hidingActionIcon"); hidingActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return dashboardConfig.getActionIcon(dashboardConfig.ACTION_SHOW); } })); hidingActionIcon.add(new AttributeModifier("alt", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.show"); } })); hidingAction.add(hidingActionIcon); //hidingAction.add(new Label("hidingActionLabel", "Show")); if (cLink.isSticky() || TAB_ID_PAST.equals(selectedCalendarTab)) { // this shouldn't happen, but just in case ... hidingAction.setVisible(false); hidingAction.setVisibilityAllowed(false); } } else { AjaxLink<CalendarLink> hidingAction = new AjaxLink<CalendarLink>("hidingAction") { protected long calendarItemId = cItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("hidingAction onClick() called -- hide"); // need to trash one item logger.debug(calendarItemId); //logger.debug(this.getModelObject()); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.hideCalendarItem(sakaiUserId, calendarItemId); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_HIDE, "/dashboard/calendar/" + selectedCalendarTab + "/" + calendarItemId); // if success adjust UI, else report failure? if (success) { ResourceLoader rl = new ResourceLoader("dash_entity"); //renderItemCounter(calendarLinksDiv, calendarDataView); target.addComponent(CalendarLinksPanel.this); CalendarItem changedItem = dashboardCommonLogic.getCalendarItem(calendarItemId); JsonHelper jsonHelper = new JsonHelper(dashboardCommonLogic, dashboardConfig); String jsonStr = jsonHelper.getJsonObjectFromCalendarItem(changedItem) .toString(); String javascript = "reportSuccess('" + rl.getString("dash.ajax.hide.success") + "'," + jsonStr + ",'" + "not-sure-about-url-yet" + "');"; target.appendJavascript(javascript); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); } } }; hidingAction.setDefaultModel(item.getModel()); //actionHideThisLink.setModelObject(cItem); item.add(hidingAction); Image hidingActionIcon = new Image("hidingActionIcon"); hidingActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return dashboardConfig.getActionIcon(dashboardConfig.ACTION_HIDE); } })); hidingActionIcon.add(new AttributeModifier("alt", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.hide"); } })); hidingAction.add(hidingActionIcon); //hidingAction.add(new Label("hidingActionLabel", "Hide")); if (cLink.isSticky() || TAB_ID_PAST.equals(selectedCalendarTab)) { hidingAction.setVisible(false); hidingAction.setVisibilityAllowed(false); } } } } }; calendarDataView.setItemReuseStrategy(new DefaultItemReuseStrategy()); calendarDataView.setItemsPerPage(pageSize); haveLinks.add(calendarDataView); IPagingLabelProvider pagingLabelProvider = new IPagingLabelProvider() { public String getPageLabel(int page) { ResourceLoader rl = new ResourceLoader("dash_entity"); int itemCount = 0; String pagerStatus = ""; if (calendarDataView != null) { int first = 0; int last = 0; itemCount = calendarDataView.getItemCount(); int pageSize = calendarDataView.getItemsPerPage(); if (itemCount > pageSize) { //int page = calendarDataView.getCurrentPage(); first = page * pageSize + 1; last = Math.min(itemCount, (page + 1) * pageSize); if (first == last) { pagerStatus = Integer.toString(first); } else { pagerStatus = rl.getFormattedMessage("dash.pager.range", new Object[] { new Integer(first), new Integer(last) }); } } else if (itemCount > 1) { pagerStatus = rl.getFormattedMessage("dash.pager.range", new Object[] { new Integer(1), new Integer(itemCount) }); } else if (itemCount > 0) { pagerStatus = "1"; } else { pagerStatus = "0"; } } if (logger.isDebugEnabled()) { logger.debug("getPageLabel() " + pagerStatus); } return pagerStatus; } }; //add a pager to our table, only visible if we have more than 5 items calendarLinksDiv.add(new PagingNavigator("calendarNavigator", calendarDataView, pagingLabelProvider) { protected int currentPage = 1; @Override public boolean isVisible() { if (calendarLinksProvider != null && calendarLinksProvider.size() > pageSize) { return true; } return false; } @Override public void onBeforeRender() { super.onBeforeRender(); if (this.getPageable().getCurrentPage() != currentPage) { dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_PAGING, "/dashboard/calendar/" + selectedCalendarTab); currentPage = this.getPageable().getCurrentPage(); } //renderItemCounter(calendarLinksDiv, (DataView<CalendarLink>) getPageable()); //clear the feedback panel messages //clearFeedback(feedbackPanel); } }); WebMarkupContainer haveNoLinks = new WebMarkupContainer("haveNoLinks"); calendarLinksDiv.add(haveNoLinks); String noCalendarLinksLabel = null; if (TAB_ID_UPCOMING.equals(selectedCalendarTab)) { noCalendarLinksLabel = rl.getString("dash.calendar.noupcoming"); } else if (TAB_ID_PAST.equals(selectedCalendarTab)) { noCalendarLinksLabel = rl.getString("dash.calendar.nopast"); } else if (TAB_ID_STARRED.equals(selectedCalendarTab)) { noCalendarLinksLabel = rl.getString("dash.calendar.nostarred"); } else if (TAB_ID_HIDDEN.equals(selectedCalendarTab)) { noCalendarLinksLabel = rl.getString("dash.calendar.nohidden"); } haveNoLinks.add(new Label("message", noCalendarLinksLabel)); //renderItemCounter(calendarLinksDiv, calendarDataView); int itemCount = 0; if (calendarDataView != null) { itemCount = calendarDataView.getItemCount(); } if (itemCount > 0) { // show the haveLinks haveLinks.setVisible(true); // hide the haveNoLinks haveNoLinks.setVisible(false); } else { // show the haveNoLinks haveNoLinks.setVisible(true); // hide the haveLinks haveLinks.setVisible(false); } }
From source file:org.sakaiproject.dash.tool.panels.MOTDPanel.java
License:Educational Community License
protected void initPanel() { if (this.motdDivId != null) { this.remove(motdDivId); }//from w w w . j a v a 2 s . co m ResourceLoader rl = new ResourceLoader("dash_entity"); //get list of items from db, wrapped in a dataprovider motdProvider = new NewsLinksDataProvider(); final WebMarkupContainer motdDiv = new WebMarkupContainer("motdDiv"); motdDiv.setOutputMarkupId(true); add(motdDiv); this.motdDivId = motdDiv.getId(); motdDiv.add(new Label("motdPanelTitle", rl.getString("dash.motd.title"))); WebMarkupContainer haveLinks = new WebMarkupContainer("haveLinks"); motdDiv.add(haveLinks); //present the news data in a table final DataView<NewsItem> newsDataView = new DataView<NewsItem>("motd", motdProvider) { @Override public void populateItem(final Item item) { item.setOutputMarkupId(true); final NewsItem nItem = (NewsItem) item.getModelObject(); if (logger.isDebugEnabled()) { logger.debug(this + "populateItem() item: " + item); } String itemType = nItem.getSourceType().getIdentifier(); item.add(new Label("itemType", itemType)); item.add(new Label("itemCount", Integer.toString(nItem.getItemCount()))); item.add(new Label("entityReference", nItem.getEntityReference())); String siteTitle = nItem.getContext().getContextTitle(); StringBuilder errorMessages = new StringBuilder(); String title = FormattedText.processFormattedText(nItem.getTitle(), errorMessages, true, true); if (errorMessages != null && errorMessages.length() > 0) { logger.warn("Error(s) encountered while processing newsItem title:\n" + errorMessages); } item.add(new ExternalLink("itemLink", "#", title)); Image icon = new Image("icon"); icon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { // TODO Auto-generated method stub return dashboardCommonLogic.getEntityIconUrl(nItem.getSourceType().getIdentifier(), nItem.getSubtype()); } })); item.add(icon); String newsItemLabel = dashboardCommonLogic.getString(nItem.getNewsTimeLabelKey(), "", itemType); if (newsItemLabel == null) { newsItemLabel = ""; } item.add(new Label("itemLabel", newsItemLabel)); item.add(new ExternalLink("siteLink", nItem.getContext().getContextUrl(), siteTitle)); Component timeLabel = new Label("newsTime", DateUtil.getNewsTimeString(nItem.getNewsTime())); timeLabel.add(new AttributeModifier("title", true, new AbstractReadOnlyModel() { @Override public Object getObject() { // TODO Auto-generated method stub return DateUtil.getFullDateString(nItem.getNewsTime()); } })); item.add(timeLabel); AjaxLink<NewsLink> starringAction = new AjaxLink<NewsLink>("starringAction") { protected long newsItemId = nItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("starringAction onClick() called -- star "); // need to keep one item logger.debug(newsItemId); //logger.debug(this.getModelObject()); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.keepNewsItem(sakaiUserId, newsItemId); // if success adjust UI, else report failure? if (success) { target.addComponent(MOTDPanel.this); //String javascript = "alert('success. (" + thisRow.getMarkupId() + ")');"; //target.appendJavascript(javascript ); } target.appendJavascript("resizeFrame('grow');"); } }; Image starringActionIcon = new Image("starringActionIcon"); starringActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return "/dashboard-tool/css/img/star-inact.png"; } })); starringActionIcon.add(new AttributeModifier("title", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.star"); } })); starringAction.add(starringActionIcon); // starringAction.add(new Label("starringActionLabel", "Star")); item.add(starringAction); } }; newsDataView.setItemReuseStrategy(new DefaultItemReuseStrategy()); newsDataView.setItemsPerPage(pageSize); haveLinks.add(newsDataView); //add a pager to our table, only visible if we have more than 5 items motdDiv.add(new PagingNavigator("newsNavigator", newsDataView) { @Override public boolean isVisible() { if (motdProvider.size() > pageSize) { return true; } return false; } @Override public void onBeforeRender() { super.onBeforeRender(); renderItemCounter(motdDiv, newsDataView); //clear the feedback panel messages //clearFeedback(feedbackPanel); } }); WebMarkupContainer haveNoLinks = new WebMarkupContainer("haveNoLinks"); motdDiv.add(haveNoLinks); String noNewsLinksLabel = null; noNewsLinksLabel = rl.getString("dash.news.nocurrent"); haveNoLinks.add(new Label("message", noNewsLinksLabel)); renderItemCounter(motdDiv, newsDataView); int itemCount = 0; if (newsDataView != null) { itemCount = newsDataView.getItemCount(); } if (itemCount > 0) { // show the haveLinks haveLinks.setVisible(true); // hide the noNewsLinksDiv haveNoLinks.setVisible(false); } else { // show the noNewsLinksDiv haveNoLinks.setVisible(true); // hide the haveLinks haveLinks.setVisible(false); } if (motdMode != MOTD_MODE_LIST || itemCount < 1) { motdDiv.setVisibilityAllowed(false); motdDiv.setVisible(false); } }
From source file:org.sakaiproject.dash.tool.panels.NewsLinksPanel.java
License:Educational Community License
protected void initPanel() { if (this.selectedNewsTab == null) { this.selectedNewsTab = TAB_ID_CURRENT; }//from w w w. j a va 2s .com if (this.newsLinksDivId != null) { this.remove(newsLinksDivId); } ResourceLoader rl = new ResourceLoader("dash_entity"); //get list of items from db, wrapped in a dataprovider newsLinksProvider = new NewsLinksDataProvider(this.selectedNewsTab); final WebMarkupContainer newsLinksDiv = new WebMarkupContainer("newsLinksDiv"); newsLinksDiv.setOutputMarkupId(true); add(newsLinksDiv); this.newsLinksDivId = newsLinksDiv.getId(); newsLinksDiv.add(new Label("newsTitle", rl.getString("dash.news.title"))); AjaxLink<IModel<List<NewsLink>>> currentNewsLink = new AjaxLink<IModel<List<NewsLink>>>("link") { @Override public void onClick(AjaxRequestTarget target) { if (logger.isDebugEnabled()) { logger.debug("currentNewsLink onClick called"); } // set currentNewsTab to "current" selectedNewsTab = TAB_ID_CURRENT; // reset news dataview to show current stuff if (newsLinksProvider == null) { newsLinksProvider = new NewsLinksDataProvider(selectedNewsTab); } else { newsLinksProvider.setNewsTab(selectedNewsTab); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_TABBING, "/dashboard/news/" + selectedNewsTab); } initPanel(); // refresh newsLinksDiv target.addComponent(NewsLinksPanel.this); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#newsPanel').focus();"); } }; currentNewsLink.add(new Label("label", rl.getString("dash.news.current"))); WebMarkupContainer currentNewsTab = new WebMarkupContainer("currentNewsTab"); if (selectedNewsTab == null || TAB_ID_CURRENT.equalsIgnoreCase(selectedNewsTab)) { currentNewsTab.add(new SimpleAttributeModifier("class", "activeTab")); } currentNewsTab.add(currentNewsLink); newsLinksDiv.add(currentNewsTab); AjaxLink<IModel<List<NewsLink>>> starredNewsLink = new AjaxLink<IModel<List<NewsLink>>>("link") { @Override public void onClick(AjaxRequestTarget target) { if (logger.isDebugEnabled()) { logger.debug("starredNewsLink onClick called"); } // set currentNewsTab to "starred" selectedNewsTab = TAB_ID_STARRED; // reset news dataview to show starred stuff if (newsLinksProvider == null) { newsLinksProvider = new NewsLinksDataProvider(selectedNewsTab); } else { newsLinksProvider.setNewsTab(selectedNewsTab); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_TABBING, "/dashboard/news/" + selectedNewsTab); } initPanel(); // refresh newsLinksDiv target.addComponent(NewsLinksPanel.this); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#newsPanel').focus();"); } }; starredNewsLink.add(new Label("label", rl.getString("dash.news.starred"))); WebMarkupContainer starredNewsTab = new WebMarkupContainer("starredNewsTab"); if (selectedNewsTab != null && TAB_ID_STARRED.equalsIgnoreCase(selectedNewsTab)) { starredNewsTab.add(new SimpleAttributeModifier("class", "activeTab")); } starredNewsTab.add(starredNewsLink); newsLinksDiv.add(starredNewsTab); AjaxLink<IModel<List<NewsLink>>> hiddenNewsLink = new AjaxLink<IModel<List<NewsLink>>>("link") { @Override public void onClick(AjaxRequestTarget target) { if (logger.isDebugEnabled()) { logger.debug("hiddenNewsLink onClick called"); } // set currentNewsTab to "hidden" selectedNewsTab = TAB_ID_HIDDEN; // reset news dataview to show hidden stuff if (newsLinksProvider == null) { newsLinksProvider = new NewsLinksDataProvider(selectedNewsTab); } else { newsLinksProvider.setNewsTab(selectedNewsTab); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_TABBING, "/dashboard/news/" + selectedNewsTab); } initPanel(); // refresh newsLinksDiv target.addComponent(NewsLinksPanel.this); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#newsPanel').focus();"); } }; hiddenNewsLink.add(new Label("label", rl.getString("dash.news.hidden"))); WebMarkupContainer hiddenNewsTab = new WebMarkupContainer("hiddenNewsTab"); if (selectedNewsTab != null && TAB_ID_HIDDEN.equalsIgnoreCase(selectedNewsTab)) { hiddenNewsTab.add(new SimpleAttributeModifier("class", "activeTab")); } hiddenNewsTab.add(hiddenNewsLink); newsLinksDiv.add(hiddenNewsTab); WebMarkupContainer haveLinks = new WebMarkupContainer("haveLinks"); newsLinksDiv.add(haveLinks); //present the news data in a table final DataView<NewsLink> newsDataView = new DataView<NewsLink>("newsLinks", newsLinksProvider) { @Override public void populateItem(final Item item) { item.setOutputMarkupId(true); ResourceLoader rl = new ResourceLoader("dash_entity"); final NewsLink nLink = (NewsLink) item.getModelObject(); final NewsItem nItem = nLink.getNewsItem(); if (logger.isDebugEnabled()) { logger.debug(this + "populateItem() item: " + item); } boolean hideActionLinks = nItem.getItemCount() > 1; String itemType = nItem.getSourceType().getIdentifier(); item.add(new Label("itemType", itemType)); item.add(new Label("itemCount", Integer.toString(nItem.getItemCount()))); item.add(new Label("entityReference", nItem.getEntityReference())); String siteTitle = nItem.getContext().getContextTitle(); StringBuilder errorMessages = new StringBuilder(); String title = FormattedText.processFormattedText(nItem.getTitle(), errorMessages, true, true); if (errorMessages != null && errorMessages.length() > 0) { logger.warn("Error(s) encountered while processing newsItem title:\n" + errorMessages); } ExternalLink itemLink = new ExternalLink("itemLink", "#itemEvent"); itemLink.add(new Label("itemTitle", title)); itemLink.add(new Label("itemClick", rl.getString("dash.details"))); item.add(itemLink); Image icon = new Image("icon"); icon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { // TODO Auto-generated method stub return dashboardCommonLogic.getEntityIconUrl(nItem.getSourceType().getIdentifier(), nItem.getSubtype()); } })); item.add(icon); String newsItemLabel = dashboardCommonLogic.getString(nItem.getNewsTimeLabelKey(), "", itemType); if (newsItemLabel == null || hideActionLinks) { newsItemLabel = ""; } Label itemLabel = new Label("itemLabel", newsItemLabel); if (!"".equals(newsItemLabel)) { itemLabel.add(new SimpleAttributeModifier("class", "itemLabel")); } item.add(itemLabel); item.add(new ExternalLink("siteLink", nItem.getContext().getContextUrl(), siteTitle)); Component timeLabel = new Label("newsTime", DateUtil.getNewsTimeString(nItem.getNewsTime())); timeLabel.add(new AttributeModifier("title", true, new AbstractReadOnlyModel() { @Override public Object getObject() { // TODO Auto-generated method stub return DateUtil.getFullDateString(nItem.getNewsTime()); } })); item.add(timeLabel); if (nLink.isSticky()) { AjaxLink<NewsLink> starringAction = new AjaxLink<NewsLink>("starringAction") { protected long newsItemId = nItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("starringAction onClick() called -- unstar "); // need to keep one item logger.debug(newsItemId); //logger.debug(this.getModelObject()); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.unkeepNewsItem(sakaiUserId, newsItemId); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_UNSTAR, "/dashboard/news/" + selectedNewsTab + "/" + newsItemId); // if success adjust UI, else report failure? if (success) { target.addComponent(NewsLinksPanel.this); if (TAB_ID_STARRED.equals(selectedNewsTab)) { ResourceLoader rl = new ResourceLoader("dash_entity"); NewsItem changedItem = dashboardCommonLogic.getNewsItem(newsItemId); JsonHelper jsonHelper = new JsonHelper(dashboardCommonLogic, dashboardConfig); String jsonStr = jsonHelper.getJsonObjectFromNewsItem(changedItem).toString(); String javascript = "reportSuccess('" + rl.getString("dash.ajax.unstar.success") + "'," + jsonStr + ",'" + "not-sure-about-url-yet" + "');"; target.appendJavascript(javascript); } target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#newsPanel').focus();"); } } }; starringAction.setDefaultModel(item.getModel()); item.add(starringAction); Image starringActionIcon = new Image("starringActionIcon"); starringActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return dashboardConfig.getActionIcon(dashboardConfig.ACTION_UNSTAR); } })); starringActionIcon.add(new AttributeModifier("alt", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.unstar"); } })); starringAction.add(starringActionIcon); //starringAction.add(new Label("starringActionLabel", "Unstar")); if (nLink.isHidden() || hideActionLinks) { starringAction.setVisible(false); starringAction.setVisibilityAllowed(false); } } else { AjaxLink<NewsLink> starringAction = new AjaxLink<NewsLink>("starringAction") { protected long newsItemId = nItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("starringAction onClick() called -- star "); // need to keep one item logger.debug(newsItemId); //logger.debug(this.getModelObject()); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.keepNewsItem(sakaiUserId, newsItemId); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_STAR, "/dashboard/news/" + selectedNewsTab + "/" + newsItemId); // if success adjust UI, else report failure? if (success) { target.addComponent(NewsLinksPanel.this); //String javascript = "alert('success. (" + thisRow.getMarkupId() + ")');"; //target.appendJavascript(javascript ); } target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#newsPanel').focus();"); } }; Image starringActionIcon = new Image("starringActionIcon"); starringActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return dashboardConfig.getActionIcon(dashboardConfig.ACTION_STAR); } })); starringActionIcon.add(new AttributeModifier("alt", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.star"); } })); starringAction.add(starringActionIcon); // starringAction.add(new Label("starringActionLabel", "Star")); item.add(starringAction); if (nLink.isHidden() || hideActionLinks) { starringAction.setVisible(false); starringAction.setVisibilityAllowed(false); } } if (nLink.isHidden()) { AjaxLink<NewsLink> hidingAction = new AjaxLink<NewsLink>("hidingAction") { protected long newsItemId = nItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("hidingAction onClick() called -- show"); // need to trash one item logger.debug(newsItemId); //logger.debug(this.getModelObject()); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.unhideNewsItem(sakaiUserId, newsItemId); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_SHOW, "/dashboard/news/" + selectedNewsTab + "/" + newsItemId); // if success adjust UI, else report failure? if (success) { ResourceLoader rl = new ResourceLoader("dash_entity"); target.addComponent(NewsLinksPanel.this); NewsItem changedItem = dashboardCommonLogic.getNewsItem(newsItemId); JsonHelper jsonHelper = new JsonHelper(dashboardCommonLogic, dashboardConfig); String jsonStr = jsonHelper.getJsonObjectFromNewsItem(changedItem).toString(); String javascript = "reportSuccess('" + rl.getString("dash.ajax.show.success") + "'," + jsonStr + ",'" + "not-sure-about-url-yet" + "');"; target.appendJavascript(javascript); } target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#newsPanel').focus();"); } }; hidingAction.setDefaultModel(item.getModel()); //actionHideThisLink.setModelObject(nItem); item.add(hidingAction); Image hidingActionIcon = new Image("hidingActionIcon"); hidingActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return dashboardConfig.getActionIcon(dashboardConfig.ACTION_SHOW); } })); hidingActionIcon.add(new AttributeModifier("alt", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.show"); } })); hidingAction.add(hidingActionIcon); //hidingAction.add(new Label("hidingActionLabel", "Show")); if (nLink.isSticky() || hideActionLinks) { hidingAction.setVisible(false); hidingAction.setVisibilityAllowed(false); } } else { AjaxLink<NewsLink> hidingAction = new AjaxLink<NewsLink>("hidingAction") { protected long newsItemId = nItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("hidingAction onClick() called -- hide"); // need to trash one item logger.debug(newsItemId); //logger.debug(this.getModelObject()); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.hideNewsItem(sakaiUserId, newsItemId); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_HIDE, "/dashboard/news/" + selectedNewsTab + "/" + newsItemId); // if success adjust UI, else report failure? if (success) { ResourceLoader rl = new ResourceLoader("dash_entity"); target.addComponent(NewsLinksPanel.this); NewsItem changedItem = dashboardCommonLogic.getNewsItem(newsItemId); JsonHelper jsonHelper = new JsonHelper(dashboardCommonLogic, dashboardConfig); String jsonStr = jsonHelper.getJsonObjectFromNewsItem(changedItem).toString(); String javascript = "reportSuccess('" + rl.getString("dash.ajax.hide.success") + "'," + jsonStr + ",'" + "not-sure-about-url-yet" + "');"; target.appendJavascript(javascript); } target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#newsPanel').focus();"); } }; hidingAction.setDefaultModel(item.getModel()); //actionHideThisLink.setModelObject(nItem); item.add(hidingAction); Image hidingActionIcon = new Image("hidingActionIcon"); hidingActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return dashboardConfig.getActionIcon(dashboardConfig.ACTION_HIDE); } })); hidingActionIcon.add(new AttributeModifier("alt", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.hide"); } })); hidingAction.add(hidingActionIcon); //hidingAction.add(new Label("hidingActionLabel", "Hide")); if (nLink.isSticky() || hideActionLinks) { hidingAction.setVisible(false); hidingAction.setVisibilityAllowed(false); } } } }; newsDataView.setItemReuseStrategy(new DefaultItemReuseStrategy()); newsDataView.setItemsPerPage(pageSize); haveLinks.add(newsDataView); IPagingLabelProvider pagingLabelProvider = new IPagingLabelProvider() { public String getPageLabel(int page) { ResourceLoader rl = new ResourceLoader("dash_entity"); int itemCount = 0; String pagerStatus = ""; if (newsDataView != null) { int first = 0; int last = 0; itemCount = newsDataView.getItemCount(); int pageSize = newsDataView.getItemsPerPage(); if (itemCount > pageSize) { //int page = calendarDataView.getCurrentPage(); first = page * pageSize + 1; last = Math.min(itemCount, (page + 1) * pageSize); if (first == last) { pagerStatus = Integer.toString(first); } else { pagerStatus = rl.getFormattedMessage("dash.pager.range", new Object[] { new Integer(first), new Integer(last) }); } } else if (itemCount > 1) { pagerStatus = rl.getFormattedMessage("dash.pager.range", new Object[] { new Integer(1), new Integer(itemCount) }); } else if (itemCount > 0) { pagerStatus = "1"; } else { pagerStatus = "0"; } } if (logger.isDebugEnabled()) { logger.debug("getPageLabel() " + pagerStatus); } return pagerStatus; } }; //add a pager to our table, only visible if we have more than 5 items newsLinksDiv.add(new PagingNavigator("newsNavigator", newsDataView, pagingLabelProvider) { protected int currentPage = 1; @Override public boolean isVisible() { if (newsLinksProvider.size() > pageSize) { return true; } return false; } @Override public void onBeforeRender() { if (this.getPageable().getCurrentPage() != currentPage) { dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_PAGING, "/dashboard/news/" + selectedNewsTab); currentPage = this.getPageable().getCurrentPage(); } //renderItemCounter(newsLinksDiv, newsDataView); //clear the feedback panel messages //clearFeedback(feedbackPanel); super.onBeforeRender(); } }); WebMarkupContainer haveNoLinks = new WebMarkupContainer("haveNoLinks"); newsLinksDiv.add(haveNoLinks); String noNewsLinksLabel = null; if (TAB_ID_CURRENT.equals(selectedNewsTab)) { noNewsLinksLabel = rl.getString("dash.news.nocurrent"); } else if (TAB_ID_STARRED.equals(selectedNewsTab)) { noNewsLinksLabel = rl.getString("dash.news.nostarred"); } else if (TAB_ID_HIDDEN.equals(selectedNewsTab)) { noNewsLinksLabel = rl.getString("dash.news.nohidden"); } haveNoLinks.add(new Label("message", noNewsLinksLabel)); //renderItemCounter(newsLinksDiv, newsDataView); int itemCount = 0; if (newsDataView != null) { itemCount = newsDataView.getItemCount(); } if (itemCount > 0) { // show the haveLinks haveLinks.setVisible(true); // hide the noNewsLinksDiv haveNoLinks.setVisible(false); } else { // show the noNewsLinksDiv haveNoLinks.setVisible(true); // hide the haveLinks haveLinks.setVisible(false); } }
From source file:org.sakaiproject.ddo.tool.pages.AdminPage.java
License:Educational Community License
public AdminPage() { disableLink(adminPageLink);/*from w w w.j ava 2s .co m*/ final WebMarkupContainer staffContainer = new WebMarkupContainer("staffContainer"); staffContainer.setOutputMarkupId(true); add(staffContainer); ListDataProvider<String> studentWorkerList = new ListDataProvider<String>() { @Override protected List<String> getData() { return new ArrayList<String>(sakaiProxy.getStudentWorkerIds()); } }; DataView staffDataView = new DataView<String>("ddoStaff", studentWorkerList) { @Override protected void populateItem(Item item) { final String userId = (String) item.getModelObject(); item.add(new Label("staff-name", sakaiProxy.getUserSortName(userId))); item.add(new Label("staff-username", sakaiProxy.getUserDisplayId(userId))); item.add(new TextField<String>("staff-userId", Model.of(userId))); } }; staffContainer.add(staffDataView); final AddBean addStaffBean = new AddBean(); final Form<AddBean> addStaffForm = new Form<AddBean>("addStaffForm", new CompoundPropertyModel<AddBean>(addStaffBean)); FormComponent formComponent; formComponent = new RequiredTextField<String>("userName"); formComponent.setLabel(new ResourceModel("form.addstaff")); addStaffForm.add(formComponent); addStaffForm.add(new SimpleFormComponentLabel("add-staff-label", formComponent)); addStaffForm.add(new AjaxButton("ajax-add-staff", addStaffForm) { @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { String userId = sakaiProxy.getUserIdForEid(addStaffBean.getUserName()); boolean success = sakaiProxy.addUserToDDO(userId, DDOConstants.DDO_STAFF_ROLE); if (success) { info("User " + addStaffBean.getUserName() + " added to DDO Staff."); //refresh list target.add(staffContainer); } else { error("Failed to add user " + addStaffBean.getUserName() + " to DDO Staff."); } target.add(feedbackPanel); } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { target.add(feedbackPanel); } }); add(addStaffForm); final RemoveBean removeStaffBean = new RemoveBean(); final Form<RemoveBean> removeStaffForm = new Form<RemoveBean>("removeStaffForm", new CompoundPropertyModel<RemoveBean>(removeStaffBean)); FormComponent fc; fc = new RequiredTextField<String>("userId"); removeStaffForm.add(fc); removeStaffForm.add(new AjaxButton("ajax-remove-staff", removeStaffForm) { @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { boolean success = sakaiProxy.removeUserFromDDO(removeStaffBean.getUserId()); if (success) { info("User " + sakaiProxy.getUserDisplayId(removeStaffBean.getUserId()) + " removed from DDO Staff."); //refresh list target.add(staffContainer); } else { error("Failed to remove user " + sakaiProxy.getUserDisplayId(removeStaffBean.getUserId()) + " from DDO Staff."); } target.add(feedbackPanel); } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { target.add(feedbackPanel); } }); add(removeStaffForm); Link<Void> refreshPage = new Link<Void>("refreshPage") { public void onClick() { setResponsePage(new AdminPage()); } }; add(refreshPage); final WebMarkupContainer closedContainer = new WebMarkupContainer("closedContainer"); closedContainer.setOutputMarkupId(true); add(closedContainer); final ClosedBean closedBean = new ClosedBean(); final Form<ClosedBean> closedForm = new Form<>("closedForm", new CompoundPropertyModel<>(closedBean)); FormComponent closedValue = new CheckBox("closed"); FormComponent closedMessage = new TextArea<String>("message"); closedForm.add(closedValue); closedForm.add(closedMessage); closedForm.add(new AjaxButton("ajax-close-ddo", closedForm) { @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { boolean closeDDO = closedBean.isClosed(); sakaiProxy.setDDORealmProperty(DDOConstants.PROP_CLOSED, closeDDO); sakaiProxy.setDDORealmProperty(DDOConstants.PROP_CLOSED_MESSAGE, closedBean.getMessage()); info(closeDDO ? getString("ddo.closed.true") : getString("ddo.closed.false")); target.add(closedContainer); target.add(feedbackPanel); } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { target.add(feedbackPanel); } }); closedForm.add(new Label("closed-section-label", getString("ddo.closed.header"))); closedContainer.add(closedForm); add(new Label("closedSectionHeader", getString("ddo.closed.section.header"))); }