Example usage for org.apache.wicket.markup.repeater.data DataView DataView

List of usage examples for org.apache.wicket.markup.repeater.data DataView DataView

Introduction

In this page you can find the example usage for org.apache.wicket.markup.repeater.data DataView DataView.

Prototype

protected DataView(String id, IDataProvider<T> dataProvider) 

Source Link

Usage

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")));
}