Example usage for org.apache.wicket.ajax.markup.html AjaxLink setVisible

List of usage examples for org.apache.wicket.ajax.markup.html AjaxLink setVisible

Introduction

In this page you can find the example usage for org.apache.wicket.ajax.markup.html AjaxLink setVisible.

Prototype

public final Component setVisible(final boolean visible) 

Source Link

Document

Sets whether this component and any children are visible.

Usage

From source file:org.sakaiproject.dash.tool.panels.CalendarLinksPanel.java

License:Educational Community License

/**
 * /* w w w.  ja  v  a  2s  .c om*/
 */
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.NewsLinksPanel.java

License:Educational Community License

protected void initPanel() {

    if (this.selectedNewsTab == null) {
        this.selectedNewsTab = TAB_ID_CURRENT;
    }/*from ww w .j ava  2 s .c o  m*/

    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.profile2.tool.pages.MyProfile.java

License:Educational Community License

/**
 * Does the actual rendering of the page
 * @param userUuid//from   w w w  . j a va2 s . co  m
 */
private void renderMyProfile(final String userUuid) {

    //don't do this for super users viewing other people's profiles as otherwise there is no way back to own profile
    if (!sakaiProxy.isSuperUserAndProxiedToUser(userUuid)) {
        disableLink(myProfileLink);
    }

    //add the feedback panel for any error messages
    FeedbackPanel feedbackPanel = new FeedbackPanel("feedbackPanel");
    add(feedbackPanel);
    feedbackPanel.setVisible(false); //hide by default

    //get the prefs record, or a default if none exists yet
    final ProfilePreferences prefs = preferencesLogic.getPreferencesRecordForUser(userUuid);

    //if null, throw exception
    if (prefs == null) {
        throw new ProfilePreferencesNotDefinedException(
                "Couldn't create default preferences record for " + userUuid);
    }

    //get SakaiPerson for this user
    SakaiPerson sakaiPerson = sakaiProxy.getSakaiPerson(userUuid);
    //if null, create one 
    if (sakaiPerson == null) {
        log.warn("No SakaiPerson for " + userUuid + ". Creating one.");
        sakaiPerson = sakaiProxy.createSakaiPerson(userUuid);
        //if its still null, throw exception
        if (sakaiPerson == null) {
            throw new ProfileNotDefinedException("Couldn't create a SakaiPerson for " + userUuid);
        }
        //post create event
        sakaiProxy.postEvent(ProfileConstants.EVENT_PROFILE_NEW, userUuid, true);
    }

    //post view event
    sakaiProxy.postEvent(ProfileConstants.EVENT_PROFILE_VIEW_OWN, "/profile/" + userUuid, false);

    //get some values from SakaiPerson or SakaiProxy if empty
    //SakaiPerson returns NULL strings if value is not set, not blank ones

    //these must come from Account to keep it all in sync
    //we *could* get a User object here and get the values.
    String userDisplayName = sakaiProxy.getUserDisplayName(userUuid);
    /*
    String userFirstName = sakaiProxy.getUserFirstName(userId);
    String userLastName = sakaiProxy.getUserLastName(userId);
    */

    String userEmail = sakaiProxy.getUserEmail(userUuid);

    //create instance of the UserProfile class
    //we then pass the userProfile in the constructor to the child panels
    final UserProfile userProfile = new UserProfile();

    //get rest of values from SakaiPerson and setup UserProfile
    userProfile.setUserUuid(userUuid);

    userProfile.setNickname(sakaiPerson.getNickname());
    userProfile.setDateOfBirth(sakaiPerson.getDateOfBirth());
    userProfile.setDisplayName(userDisplayName);
    //userProfile.setFirstName(userFirstName);
    //userProfile.setLastName(userLastName);
    //userProfile.setMiddleName(sakaiPerson.getInitials());

    userProfile.setEmail(userEmail);
    userProfile.setHomepage(sakaiPerson.getLabeledURI());
    userProfile.setHomephone(sakaiPerson.getHomePhone());
    userProfile.setWorkphone(sakaiPerson.getTelephoneNumber());
    userProfile.setMobilephone(sakaiPerson.getMobile());
    userProfile.setFacsimile(sakaiPerson.getFacsimileTelephoneNumber());

    userProfile.setDepartment(sakaiPerson.getOrganizationalUnit());
    userProfile.setPosition(sakaiPerson.getTitle());
    userProfile.setSchool(sakaiPerson.getCampus());
    userProfile.setRoom(sakaiPerson.getRoomNumber());

    userProfile.setCourse(sakaiPerson.getEducationCourse());
    userProfile.setSubjects(sakaiPerson.getEducationSubjects());

    userProfile.setStaffProfile(sakaiPerson.getStaffProfile());
    userProfile.setAcademicProfileUrl(sakaiPerson.getAcademicProfileUrl());
    userProfile.setUniversityProfileUrl(sakaiPerson.getUniversityProfileUrl());
    userProfile.setPublications(sakaiPerson.getPublications());

    // business fields
    userProfile.setBusinessBiography(sakaiPerson.getBusinessBiography());
    userProfile.setCompanyProfiles(profileLogic.getCompanyProfiles(userUuid));

    userProfile.setFavouriteBooks(sakaiPerson.getFavouriteBooks());
    userProfile.setFavouriteTvShows(sakaiPerson.getFavouriteTvShows());
    userProfile.setFavouriteMovies(sakaiPerson.getFavouriteMovies());
    userProfile.setFavouriteQuotes(sakaiPerson.getFavouriteQuotes());
    userProfile.setPersonalSummary(sakaiPerson.getNotes());

    // social networking fields
    SocialNetworkingInfo socialInfo = profileLogic.getSocialNetworkingInfo(userProfile.getUserUuid());
    if (socialInfo == null) {
        socialInfo = new SocialNetworkingInfo();
    }
    userProfile.setSocialInfo(socialInfo);

    //PRFL-97 workaround. SakaiPerson table needs to be upgraded so locked is not null, but this handles it if not upgraded.
    if (sakaiPerson.getLocked() == null) {
        userProfile.setLocked(false);
        this.setLocked(false);
    } else {
        this.setLocked(sakaiPerson.getLocked());
        userProfile.setLocked(this.isLocked());
    }

    //what type of picture changing method do we use?
    int profilePictureType = sakaiProxy.getProfilePictureType();

    //change picture panel (upload or url depending on property)
    final Panel changePicture;

    //render appropriate panel with appropriate constructor ie if superUser etc
    if (profilePictureType == ProfileConstants.PICTURE_SETTING_UPLOAD) {

        if (sakaiProxy.isSuperUserAndProxiedToUser(userUuid)) {
            changePicture = new ChangeProfilePictureUpload("changePicture", userUuid);
        } else {
            changePicture = new ChangeProfilePictureUpload("changePicture");
        }
    } else if (profilePictureType == ProfileConstants.PICTURE_SETTING_URL) {
        if (sakaiProxy.isSuperUserAndProxiedToUser(userUuid)) {
            changePicture = new ChangeProfilePictureUrl("changePicture", userUuid);
        } else {
            changePicture = new ChangeProfilePictureUrl("changePicture");
        }
    } else if (profilePictureType == ProfileConstants.PICTURE_SETTING_OFFICIAL) {
        //cannot edit anything if using official images
        changePicture = new EmptyPanel("changePicture");
    } else {
        //no valid option for changing picture was returned from the Profile2 API.
        log.error("Invalid picture type returned: " + profilePictureType);
        changePicture = new EmptyPanel("changePicture");
    }
    changePicture.setOutputMarkupPlaceholderTag(true);
    changePicture.setVisible(false);
    add(changePicture);

    //add the current picture
    add(new ProfileImage("photo", new Model<String>(userUuid)));

    //change profile image button
    AjaxLink<Void> changePictureLink = new AjaxLink<Void>("changePictureLink") {
        private static final long serialVersionUID = 1L;

        public void onClick(AjaxRequestTarget target) {

            //show the panel
            changePicture.setVisible(true);
            target.add(changePicture);

            //resize iframe to fit it
            target.appendJavaScript("resizeFrame('grow');");
        }

    };
    changePictureLink.add(new Label("changePictureLabel", new ResourceModel("link.change.profile.picture")));

    //is picture changing disabled? (property, or locked)
    if ((!sakaiProxy.isProfilePictureChangeEnabled() || userProfile.isLocked()) && !sakaiProxy.isSuperUser()) {
        changePictureLink.setEnabled(false);
        changePictureLink.setVisible(false);
    }

    //if using official images, is the user allowed to select an alternate?
    //or have they specified the official image in their preferences.
    if (sakaiProxy.isOfficialImageEnabledGlobally()
            && (!sakaiProxy.isUsingOfficialImageButAlternateSelectionEnabled() || prefs.isUseOfficialImage())) {
        changePictureLink.setEnabled(false);
        changePictureLink.setVisible(false);
    }

    add(changePictureLink);

    /* SIDELINKS */
    WebMarkupContainer sideLinks = new WebMarkupContainer("sideLinks");
    int visibleSideLinksCount = 0;

    //ADMIN: ADD AS CONNECTION
    if (sakaiProxy.isSuperUserAndProxiedToUser(userUuid)) {

        //init
        boolean friend = false;
        boolean friendRequestToThisPerson = false;
        boolean friendRequestFromThisPerson = false;
        String currentUserUuid = sakaiProxy.getCurrentUserId();
        String nickname = userProfile.getNickname();
        if (StringUtils.isBlank(nickname)) {
            nickname = "";
        }

        //setup model to store the actions in the modal windows
        final FriendAction friendActionModel = new FriendAction();

        //setup friend status
        friend = connectionsLogic.isUserXFriendOfUserY(userUuid, currentUserUuid);
        if (!friend) {
            friendRequestToThisPerson = connectionsLogic.isFriendRequestPending(currentUserUuid, userUuid);
        }
        if (!friend && !friendRequestToThisPerson) {
            friendRequestFromThisPerson = connectionsLogic.isFriendRequestPending(userUuid, currentUserUuid);
        }

        WebMarkupContainer addFriendContainer = new WebMarkupContainer("addFriendContainer");
        final ModalWindow addFriendWindow = new ModalWindow("addFriendWindow");

        //link
        final AjaxLink<Void> addFriendLink = new AjaxLink<Void>("addFriendLink") {
            private static final long serialVersionUID = 1L;

            public void onClick(AjaxRequestTarget target) {
                addFriendWindow.show(target);
            }
        };
        final Label addFriendLabel = new Label("addFriendLabel");
        addFriendLink.add(addFriendLabel);
        addFriendContainer.add(addFriendLink);

        //setup link/label and windows
        if (friend) {
            addFriendLabel.setDefaultModel(new ResourceModel("text.friend.confirmed"));
            addFriendLink.add(new AttributeModifier("class", true,
                    new Model<String>("instruction icon connection-confirmed")));
            addFriendLink.setEnabled(false);
        } else if (friendRequestToThisPerson) {
            addFriendLabel.setDefaultModel(new ResourceModel("text.friend.requested"));
            addFriendLink.add(new AttributeModifier("class", true,
                    new Model<String>("instruction icon connection-request")));
            addFriendLink.setEnabled(false);
        } else if (friendRequestFromThisPerson) {
            //TODO (confirm pending friend request link)
            //could be done by setting the content off the addFriendWindow.
            //will need to rename some links to make more generic and set the onClick and setContent in here for link and window
            addFriendLabel.setDefaultModel(new ResourceModel("text.friend.pending"));
            addFriendLink.add(new AttributeModifier("class", true,
                    new Model<String>("instruction icon connection-request")));
            addFriendLink.setEnabled(false);
        } else {
            addFriendLabel.setDefaultModel(
                    new StringResourceModel("link.friend.add.name", null, new Object[] { nickname }));
            addFriendLink.add(new AttributeModifier("class", true, new Model<String>("icon connection-add")));
            addFriendWindow.setContent(new AddFriend(addFriendWindow.getContentId(), addFriendWindow,
                    friendActionModel, currentUserUuid, userUuid));
        }

        sideLinks.add(addFriendContainer);

        //ADD FRIEND MODAL WINDOW HANDLER 
        addFriendWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
            private static final long serialVersionUID = 1L;

            public void onClose(AjaxRequestTarget target) {
                if (friendActionModel.isRequested()) {
                    //friend was successfully requested, update label and link
                    addFriendLabel.setDefaultModel(new ResourceModel("text.friend.requested"));
                    addFriendLink.add(new AttributeModifier("class", true, new Model<String>("instruction")));
                    addFriendLink.setEnabled(false);
                    target.add(addFriendLink);
                }
            }
        });

        add(addFriendWindow);

        if (sakaiProxy.isConnectionsEnabledGlobally()) {
            visibleSideLinksCount++;
        } else {
            addFriendContainer.setVisible(false);
        }

        //ADMIN: LOCK/UNLOCK A PROFILE
        WebMarkupContainer lockProfileContainer = new WebMarkupContainer("lockProfileContainer");
        final Label lockProfileLabel = new Label("lockProfileLabel");

        final AjaxLink<Void> lockProfileLink = new AjaxLink<Void>("lockProfileLink") {
            private static final long serialVersionUID = 1L;

            public void onClick(AjaxRequestTarget target) {
                //toggle it to be opposite of what it currently is, update labels and icons
                boolean locked = isLocked();
                if (sakaiProxy.toggleProfileLocked(userUuid, !locked)) {
                    setLocked(!locked);
                    log.info("MyProfile(): SuperUser toggled lock status of profile for " + userUuid + " to "
                            + !locked);
                    lockProfileLabel.setDefaultModel(new ResourceModel("link.profile.locked." + isLocked()));
                    add(new AttributeModifier("title", true,
                            new ResourceModel("text.profile.locked." + isLocked())));
                    if (isLocked()) {
                        add(new AttributeModifier("class", true, new Model<String>("icon locked")));
                    } else {
                        add(new AttributeModifier("class", true, new Model<String>("icon unlocked")));
                    }
                    target.add(this);
                }
            }
        };

        //set init icon for locked
        if (isLocked()) {
            lockProfileLink.add(new AttributeModifier("class", true, new Model<String>("icon locked")));
        } else {
            lockProfileLink.add(new AttributeModifier("class", true, new Model<String>("icon unlocked")));
        }

        lockProfileLink.add(lockProfileLabel);

        //setup link/label and windows with special property based on locked status
        lockProfileLabel.setDefaultModel(new ResourceModel("link.profile.locked." + isLocked()));
        lockProfileLink.add(
                new AttributeModifier("title", true, new ResourceModel("text.profile.locked." + isLocked())));

        lockProfileContainer.add(lockProfileLink);

        sideLinks.add(lockProfileContainer);

        visibleSideLinksCount++;

    } else {
        //blank components
        WebMarkupContainer addFriendContainer = new WebMarkupContainer("addFriendContainer");
        addFriendContainer.add(new AjaxLink("addFriendLink") {
            public void onClick(AjaxRequestTarget target) {
            }
        }).add(new Label("addFriendLabel"));
        sideLinks.add(addFriendContainer);
        add(new WebMarkupContainer("addFriendWindow"));

        WebMarkupContainer lockProfileContainer = new WebMarkupContainer("lockProfileContainer");
        lockProfileContainer.add(new AjaxLink("lockProfileLink") {
            public void onClick(AjaxRequestTarget target) {
            }
        }).add(new Label("lockProfileLabel"));
        sideLinks.add(lockProfileContainer);
    }

    //hide entire list if no links to show
    if (visibleSideLinksCount == 0) {
        sideLinks.setVisible(false);
    }

    add(sideLinks);

    //status panel
    Panel myStatusPanel = new MyStatusPanel("myStatusPanel", userProfile);
    add(myStatusPanel);

    List<ITab> tabs = new ArrayList<ITab>();

    AjaxTabbedPanel tabbedPanel = new AjaxTabbedPanel("myProfileTabs", tabs) {

        private static final long serialVersionUID = 1L;

        // overridden so we can add tooltips to tabs
        @Override
        protected WebMarkupContainer newLink(String linkId, final int index) {
            WebMarkupContainer link = super.newLink(linkId, index);

            if (ProfileConstants.TAB_INDEX_PROFILE == index) {
                link.add(new AttributeModifier("title", true, new ResourceModel("link.tab.profile.tooltip")));

            } else if (ProfileConstants.TAB_INDEX_WALL == index) {
                link.add(new AttributeModifier("title", true, new ResourceModel("link.tab.wall.tooltip")));
            }
            return link;
        }
    };

    CookieUtils utils = new CookieUtils();
    Cookie tabCookie = utils.getCookie(ProfileConstants.TAB_COOKIE);

    if (sakaiProxy.isProfileFieldsEnabled()) {
        tabs.add(new AbstractTab(new ResourceModel("link.tab.profile")) {

            private static final long serialVersionUID = 1L;

            @Override
            public Panel getPanel(String panelId) {

                setTabCookie(ProfileConstants.TAB_INDEX_PROFILE);
                MyProfilePanelState panelState = new MyProfilePanelState();
                panelState.showBusinessDisplay = sakaiProxy.isBusinessProfileEnabled();
                panelState.showSocialNetworkingDisplay = sakaiProxy.isSocialProfileEnabled();
                panelState.showInterestsDisplay = sakaiProxy.isInterestsProfileEnabled();
                panelState.showStaffDisplay = sakaiProxy.isStaffProfileEnabled();
                panelState.showStudentDisplay = sakaiProxy.isStudentProfileEnabled();
                return new MyProfilePanel(panelId, userProfile, panelState);
            }

        });
    }

    if (true == sakaiProxy.isWallEnabledGlobally()) {

        tabs.add(new AbstractTab(new ResourceModel("link.tab.wall")) {

            private static final long serialVersionUID = 1L;

            @Override
            public Panel getPanel(String panelId) {

                setTabCookie(ProfileConstants.TAB_INDEX_WALL);
                if (true == sakaiProxy.isSuperUser()) {
                    return new MyWallPanel(panelId, userUuid);
                } else {
                    return new MyWallPanel(panelId);
                }
            }
        });

        if (true == sakaiProxy.isWallDefaultProfilePage() && null == tabCookie) {

            tabbedPanel.setSelectedTab(ProfileConstants.TAB_INDEX_WALL);
        }
    }

    if (null != tabCookie) {
        try {
            tabbedPanel.setSelectedTab(Integer.parseInt(tabCookie.getValue()));
        } catch (IndexOutOfBoundsException e) {
            //do nothing. This will be thrown if the cookie contains a value > the number of tabs but thats ok.
        }
    }

    add(tabbedPanel);

    //kudos panel
    add(new AjaxLazyLoadPanel("myKudos") {
        private static final long serialVersionUID = 1L;

        @Override
        public Component getLazyLoadComponent(String markupId) {
            if (sakaiProxy.isMyKudosEnabledGlobally() && prefs.isShowKudos()) {

                int score = kudosLogic.getKudos(userUuid);
                if (score > 0) {
                    return new KudosPanel(markupId, userUuid, userUuid, score);
                }
            }
            return new EmptyPanel(markupId);
        }
    });

    //friends feed panel for self - lazy loaded
    add(new NotifyingAjaxLazyLoadPanel("friendsFeed") {
        private static final long serialVersionUID = 1L;

        @Override
        public Component getLazyLoadComponent(String markupId) {
            if (sakaiProxy.isConnectionsEnabledGlobally()) {
                return new FriendsFeed(markupId, userUuid, userUuid);
            }
            return new EmptyPanel(markupId);
        }

        @Override
        public void renderHead(IHeaderResponse response) {
            response.render(OnLoadHeaderItem.forScript("resizeFrame('grow');"));
        }
    });

    //gallery feed panel
    add(new NotifyingAjaxLazyLoadPanel("galleryFeed") {
        private static final long serialVersionUID = 1L;

        @Override
        public Component getLazyLoadComponent(String markupId) {
            if (sakaiProxy.isProfileGalleryEnabledGlobally() && prefs.isShowGalleryFeed()) {
                return new GalleryFeed(markupId, userUuid, userUuid).setOutputMarkupId(true);
            } else {
                return new EmptyPanel(markupId);
            }
        }

        @Override
        public void renderHead(IHeaderResponse response) {
            response.render(OnLoadHeaderItem.forScript("resizeFrame('grow');"));
        }

    });
}

From source file:org.sakaiproject.profile2.tool.pages.panels.ConfirmedFriends.java

License:Educational Community License

public ConfirmedFriends(final String id, final String userUuid) {
    super(id);/*w w  w . j av a 2  s.c o  m*/

    log.debug("ConfirmedFriends()");

    //setup model to store the actions in the modal windows
    final FriendAction friendActionModel = new FriendAction();

    //get info for user viewing this page (will be the same if user is viewing own list, different if viewing someone else's)
    final String currentUserUuid = sakaiProxy.getCurrentUserId();
    //User currentUser = sakaiProxy.getUserQuietly(currentUserUuid);
    //final String currentUserType = currentUser.getType(); //to be used for checking if connection between users is allowed, when this is added

    //if viewing own friends, you can manage them.
    if (userUuid.equals(currentUserUuid)) {
        ownList = true;
    }

    //get our list of confirmed friends as an IDataProvider
    ConfirmedFriendsDataProvider provider = new ConfirmedFriendsDataProvider(userUuid);

    //init number of friends
    numConfirmedFriends = (int) provider.size();

    //model so we can update the number of friends
    IModel<Integer> numConfirmedFriendsModel = new Model<Integer>() {
        private static final long serialVersionUID = 1L;

        public Integer getObject() {
            return numConfirmedFriends;
        }
    };

    //heading
    final WebMarkupContainer confirmedFriendsHeading = new WebMarkupContainer("confirmedFriendsHeading");
    Label confirmedFriendsLabel = new Label("confirmedFriendsLabel");
    //if viewing own list, "my friends", else, "their name's friends"
    if (ownList) {
        confirmedFriendsLabel.setDefaultModel(new ResourceModel("heading.friends.my"));
    } else {
        String displayName = sakaiProxy.getUserDisplayName(userUuid);
        confirmedFriendsLabel.setDefaultModel(
                new StringResourceModel("heading.friends.view", null, new Object[] { displayName }));
    }
    confirmedFriendsHeading.add(confirmedFriendsLabel);
    confirmedFriendsHeading.add(new Label("confirmedFriendsNumber", numConfirmedFriendsModel));
    confirmedFriendsHeading.setOutputMarkupId(true);
    add(confirmedFriendsHeading);

    // actions
    Form<Void> confirmedFriendsButtonForm = new Form<Void>("confirmedFriendsButtonForm");
    add(confirmedFriendsButtonForm);

    //create worksite panel
    final CreateWorksitePanel createWorksitePanel = new CreateWorksitePanel("createWorksitePanel",
            connectionsLogic.getConnectionsForUser(userUuid));
    //create placeholder and set invisible initially
    createWorksitePanel.setOutputMarkupPlaceholderTag(true);
    createWorksitePanel.setVisible(false);

    confirmedFriendsButtonForm.add(createWorksitePanel);

    final AjaxButton createWorksiteButton = new AjaxButton("createWorksiteButton", confirmedFriendsButtonForm) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            createWorksitePanel.setVisible(true);
            target.add(createWorksitePanel);
            target.appendJavaScript("fixWindowVertical();");
        }

    };
    createWorksiteButton.setModel(new ResourceModel("link.worksite.create"));
    createWorksiteButton
            .add(new AttributeModifier("title", true, new ResourceModel("link.title.worksite.create")));
    createWorksiteButton.setVisible(sakaiProxy.isUserAllowedAddSite(userUuid));
    confirmedFriendsButtonForm.add(createWorksiteButton);

    //search for connections
    AjaxButton searchConnectionsButton = new AjaxButton("searchConnectionsButton", confirmedFriendsButtonForm) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            setResponsePage(new MySearch());
        }
    };
    searchConnectionsButton.setModel(new ResourceModel("link.my.friends.search"));
    confirmedFriendsButtonForm.add(searchConnectionsButton);

    //container which wraps list
    final WebMarkupContainer confirmedFriendsContainer = new WebMarkupContainer("confirmedFriendsContainer");
    confirmedFriendsContainer.setOutputMarkupId(true);

    //connection window
    final ModalWindow connectionWindow = new ModalWindow("connectionWindow");

    //results
    DataView<Person> confirmedFriendsDataView = new DataView<Person>("connections", provider) {
        private static final long serialVersionUID = 1L;

        protected void populateItem(final Item<Person> item) {

            Person person = (Person) item.getDefaultModelObject();
            final String personUuid = person.getUuid();

            //setup values
            String displayName = person.getDisplayName();
            boolean friend;

            //get friend status
            if (ownList) {
                friend = true; //viewing own page of conenctions, must be friend!
            } else {
                friend = connectionsLogic.isUserXFriendOfUserY(userUuid, personUuid); //other person viewing, check if they are friends
            }

            //get other objects
            ProfilePrivacy privacy = person.getPrivacy();
            ProfilePreferences prefs = person.getPreferences();

            //image wrapper, links to profile
            Link<String> friendItem = new Link<String>("connectionPhotoWrap", new Model<String>(personUuid)) {
                private static final long serialVersionUID = 1L;

                public void onClick() {
                    setResponsePage(new ViewProfile(getModelObject()));
                }
            };

            //image            
            ProfileImage connectionPhoto = new ProfileImage("connectionPhoto", new Model<String>(personUuid));
            connectionPhoto.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL);
            friendItem.add(connectionPhoto);

            item.add(friendItem);

            //name and link to profile
            Link<String> profileLink = new Link<String>("connectionLink", new Model<String>(personUuid)) {
                private static final long serialVersionUID = 1L;

                public void onClick() {
                    setResponsePage(new ViewProfile(getModelObject()));
                }

            };
            profileLink.add(new Label("connectionName", displayName));
            item.add(profileLink);

            //status component
            ProfileStatusRenderer status = new ProfileStatusRenderer("connectionStatus", person,
                    "connection-status-msg", "connection-status-date");
            status.setOutputMarkupId(true);
            item.add(status);

            /* ACTIONS */

            WebMarkupContainer c1 = new WebMarkupContainer("removeConnectionContainer");
            c1.setOutputMarkupId(true);

            //REMOVE FRIEND LINK AND WINDOW
            final AjaxLink<String> removeConnectionLink = new AjaxLink<String>("removeConnectionLink",
                    new Model<String>(personUuid)) {
                private static final long serialVersionUID = 1L;

                public void onClick(AjaxRequestTarget target) {

                    //get this item, and set content for modalwindow
                    String friendUuid = getModelObject();
                    connectionWindow.setContent(new RemoveFriend(connectionWindow.getContentId(),
                            connectionWindow, friendActionModel, userUuid, friendUuid));

                    //modalwindow handler 
                    connectionWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
                        private static final long serialVersionUID = 1L;

                        public void onClose(AjaxRequestTarget target) {
                            if (friendActionModel.isRemoved()) {

                                //decrement number of friends
                                numConfirmedFriends--;

                                //remove friend item from display
                                target.appendJavaScript("$('#" + item.getMarkupId() + "').slideUp();");

                                //update label
                                target.add(confirmedFriendsHeading);

                                //if none left, hide whole thing
                                if (numConfirmedFriends == 0) {
                                    target.appendJavaScript(
                                            "$('#" + confirmedFriendsContainer.getMarkupId() + "').fadeOut();");
                                }
                            }
                        }
                    });

                    connectionWindow.show(target);
                    target.appendJavaScript("fixWindowVertical();");
                }
            };
            //ContextImage removeConnectionIcon = new ContextImage("removeConnectionIcon",new Model<String>(ProfileConstants.DELETE_IMG));
            removeConnectionLink.add(new AttributeModifier("alt", true, new StringResourceModel(
                    "accessibility.connection.remove", null, new Object[] { displayName })));
            //removeConnectionLink.add(removeConnectionIcon);
            removeConnectionLink
                    .add(new AttributeModifier("title", true, new ResourceModel("link.title.removefriend")));
            removeConnectionLink
                    .add(new Label("removeConnectionLabel", new ResourceModel("button.friend.remove"))
                            .setOutputMarkupId(true));
            c1.add(removeConnectionLink);
            item.add(c1);

            //can only delete if own connections
            if (!ownList) {
                removeConnectionLink.setEnabled(false);
                removeConnectionLink.setVisible(false);
            }

            WebMarkupContainer c2 = new WebMarkupContainer("viewFriendsContainer");
            c2.setOutputMarkupId(true);

            final AjaxLink<String> viewFriendsLink = new AjaxLink<String>("viewFriendsLink") {
                private static final long serialVersionUID = 1L;

                public void onClick(AjaxRequestTarget target) {
                    // always ViewFriends because a user isn't connected to himself
                    setResponsePage(new ViewFriends(personUuid));
                }
            };
            final Label viewFriendsLabel = new Label("viewFriendsLabel",
                    new ResourceModel("link.view.friends"));
            viewFriendsLink.add(viewFriendsLabel);

            //hide if not allowed
            if (!privacyLogic.isActionAllowed(userUuid, currentUserUuid,
                    PrivacyType.PRIVACY_OPTION_MYFRIENDS)) {
                viewFriendsLink.setEnabled(false);
                c2.setVisible(false);
            }
            viewFriendsLink.setOutputMarkupId(true);
            c2.add(viewFriendsLink);
            item.add(c2);

            WebMarkupContainer c3 = new WebMarkupContainer("emailContainer");
            c3.setOutputMarkupId(true);

            ExternalLink emailLink = new ExternalLink("emailLink", "mailto:" + person.getProfile().getEmail(),
                    new ResourceModel("profile.email").getObject());

            c3.add(emailLink);

            if (StringUtils.isBlank(person.getProfile().getEmail())
                    || false == privacyLogic.isActionAllowed(person.getUuid(), currentUserUuid,
                            PrivacyType.PRIVACY_OPTION_CONTACTINFO)) {

                c3.setVisible(false);
            }
            item.add(c3);

            WebMarkupContainer c4 = new WebMarkupContainer("websiteContainer");
            c4.setOutputMarkupId(true);

            // TODO home page, university profile URL or academic/research URL (see PRFL-35)
            ExternalLink websiteLink = new ExternalLink("websiteLink", person.getProfile().getHomepage(),
                    new ResourceModel("profile.homepage").getObject()).setPopupSettings(new PopupSettings());

            c4.add(websiteLink);

            if (StringUtils.isBlank(person.getProfile().getHomepage())
                    || false == privacyLogic.isActionAllowed(person.getUuid(), currentUserUuid,
                            PrivacyType.PRIVACY_OPTION_CONTACTINFO)) {

                c4.setVisible(false);
            }
            item.add(c4);

            // basic info can be set to 'only me' so still need to check
            if (true == privacyLogic.isActionAllowed(person.getUuid(), currentUserUuid,
                    PrivacyType.PRIVACY_OPTION_BASICINFO)) {

                item.add(new Label("connectionSummary", StringUtils
                        .abbreviate(ProfileUtils.stripHtml(person.getProfile().getPersonalSummary()), 200)));
            } else {
                item.add(new Label("connectionSummary", ""));
            }

            item.setOutputMarkupId(true);
        }

    };
    confirmedFriendsDataView.setOutputMarkupId(true);
    confirmedFriendsDataView.setItemsPerPage(ProfileConstants.MAX_CONNECTIONS_PER_PAGE);

    confirmedFriendsContainer.add(confirmedFriendsDataView);

    //add results container
    add(confirmedFriendsContainer);

    //add window
    add(connectionWindow);

    //add pager
    AjaxPagingNavigator pager = new AjaxPagingNavigator("navigator", confirmedFriendsDataView);
    add(pager);

    //initially, if no friends, hide container and pager
    if (numConfirmedFriends == 0) {
        confirmedFriendsContainer.setVisible(false);
        pager.setVisible(false);
    }

    //also, if num less than num required for pager, hide it
    if (numConfirmedFriends <= ProfileConstants.MAX_CONNECTIONS_PER_PAGE) {
        pager.setVisible(false);
    }

}

From source file:org.sakaiproject.profile2.tool.pages.panels.GalleryFeed.java

License:Educational Community License

@SuppressWarnings("unchecked")
public GalleryFeed(String id, final String ownerUserId, final String viewingUserId) {

    super(id);//www  .j  av  a2 s. co  m

    log.debug("GalleryFeed()");

    Label heading;
    if (viewingUserId.equals(ownerUserId)) {
        heading = new Label("heading", new ResourceModel("heading.widget.my.pictures"));
    } else {
        heading = new Label("heading", new StringResourceModel("heading.widget.view.pictures", null,
                new Object[] { sakaiProxy.getUserDisplayName(ownerUserId) }));
    }
    add(heading);

    IDataProvider dataProvider = new GalleryImageRandomizedDataProvider(ownerUserId);

    GridView dataView = new GridView("rows", dataProvider) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void populateEmptyItem(Item item) {
            // TODO make "fake" clickable
            Link emptyImageLink = new Link("galleryFeedItem") {
                public void onClick() {
                }

            };

            Label galleryFeedPicture = new Label("galleryImageThumbnailRenderer", "");
            emptyImageLink.add(galleryFeedPicture);

            item.add(emptyImageLink);
        }

        @Override
        protected void populateItem(Item item) {

            final GalleryImage image = (GalleryImage) item.getModelObject();

            GalleryImageRenderer galleryImageThumbnailRenderer = new GalleryImageRenderer(
                    "galleryImageThumbnailRenderer", image.getThumbnailResource());

            AjaxLink galleryFeedItem = new AjaxLink("galleryFeedItem") {

                @Override
                public void onClick(AjaxRequestTarget target) {
                    // view-only (i.e. no edit functionality)
                    setResponsePage(new ViewPicture(image));
                }
            };
            galleryFeedItem.add(galleryImageThumbnailRenderer);

            item.add(galleryFeedItem);

        }

    };
    // limit gallery to 3x2 thumbnails
    dataView.setColumns(3);
    dataView.setRows(2);

    add(dataView);

    AjaxLink viewPicturesLink = new AjaxLink("viewPicturesLink") {

        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {

            if (sakaiProxy.isSuperUserAndProxiedToUser(ownerUserId)) {
                setResponsePage(new ViewPictures(ownerUserId));
            } else if (viewingUserId.equals(ownerUserId)) {
                setResponsePage(new MyPictures());
            } else {
                setResponsePage(new ViewPictures(ownerUserId));
            }
        }

    };

    Label numPicturesLabel = new Label("numPicturesLabel");
    add(numPicturesLabel);

    Label viewPicturesLabel;

    if (dataView.getItemCount() == 0) {
        numPicturesLabel.setDefaultModel(new ResourceModel("text.gallery.feed.num.none"));
        viewPicturesLabel = new Label("viewPicturesLabel", new ResourceModel("link.gallery.feed.addnew"));

        if (!viewingUserId.equals(ownerUserId) || sakaiProxy.isSuperUserAndProxiedToUser(ownerUserId)) {
            viewPicturesLink.setVisible(false);
        }

    } else {
        numPicturesLabel.setVisible(false);
        viewPicturesLabel = new Label("viewPicturesLabel", new ResourceModel("link.gallery.feed.view"));
    }

    viewPicturesLink.add(viewPicturesLabel);

    add(viewPicturesLink);
}

From source file:org.sakaiproject.profile2.tool.pages.panels.WallItemPanel.java

License:Educational Community License

/**
 * Creates a new instance of <code>WallItemPanel</code>.
 * //ww  w. j av  a 2  s  .c  om
 * @param id
 * @param userUuid the id of the user whose wall this item panel is on.
 * @param wallItem
 * @param myWallPanel a reference to my wall panel for repainting.
 */
public WallItemPanel(String id, final String userUuid, final WallItem wallItem, final MyWallPanel myWallPanel) {
    super(id);

    setOutputMarkupId(true);

    // image wrapper, links to profile
    Link<String> wallItemPhoto = new Link<String>("wallItemPhotoWrap",
            new Model<String>(wallItem.getCreatorUuid())) {

        private static final long serialVersionUID = 1L;

        public void onClick() {
            setResponsePage(new ViewProfile(getModelObject()));
        }
    };

    // image
    ProfileImage photo = new ProfileImage("wallItemPhoto", new Model<String>(wallItem.getCreatorUuid()));
    photo.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL);
    wallItemPhoto.add(photo);

    add(wallItemPhoto);

    // name and link to profile
    Link<String> wallItemProfileLink = new Link<String>("wallItemProfileLink",
            new Model<String>(wallItem.getCreatorUuid())) {

        private static final long serialVersionUID = 1L;

        public void onClick() {
            setResponsePage(new ViewProfile(getModelObject()));
        }

    };
    wallItemProfileLink
            .add(new Label("wallItemName", sakaiProxy.getUserDisplayName(wallItem.getCreatorUuid())));
    add(wallItemProfileLink);

    add(new Label("wallItemDate",
            ProfileUtils.convertDateToString(wallItem.getDate(), ProfileConstants.WALL_DISPLAY_DATE_FORMAT)));

    // ACTIONS

    final ModalWindow wallItemActionWindow = new ModalWindow("wallItemActionWindow");
    add(wallItemActionWindow);

    final WallAction wallAction = new WallAction();
    // delete link
    final AjaxLink<WallItem> removeItemLink = new AjaxLink<WallItem>("removeWallItemLink",
            new Model<WallItem>(wallItem)) {

        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {

            wallItemActionWindow.setContent(new RemoveWallItem(wallItemActionWindow.getContentId(),
                    wallItemActionWindow, wallAction, userUuid, this.getModelObject()));

            wallItemActionWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {

                private static final long serialVersionUID = 1L;

                @Override
                public void onClose(AjaxRequestTarget target) {
                    if (wallAction.isItemRemoved()) {
                        myWallPanel.replaceSelf(target, userUuid);
                    }
                }
            });

            wallItemActionWindow.show(target);
            target.appendJavaScript("fixWindowVertical();");
        }
    };

    removeItemLink.add(new Label("removeWallItemLabel", new ResourceModel("link.wall.item.remove")));
    removeItemLink.add(new AttributeModifier("title", true, new ResourceModel("link.title.wall.remove")));

    // not visible when viewing another user's wall
    if (false == sakaiProxy.getCurrentUserId().equals(userUuid)) {
        removeItemLink.setVisible(false);
    }

    add(removeItemLink);

    // panel for posting a comment that slides up/down
    final WallItemPostCommentPanel postCommentPanel = new WallItemPostCommentPanel("wallItemPostCommentPanel",
            userUuid, wallItem, this, myWallPanel);
    postCommentPanel.setOutputMarkupPlaceholderTag(true);
    postCommentPanel.setVisible(false);
    add(postCommentPanel);

    final AjaxLink<WallItem> commentItemLink = new AjaxLink<WallItem>("commentWallItemLink",
            new Model<WallItem>(wallItem)) {

        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {

            postCommentPanel.setVisible(true);
            target.add(postCommentPanel);
            target.appendJavaScript("$('#" + postCommentPanel.getMarkupId() + "').slideDown();");
        }
    };

    commentItemLink.add(new Label("commentWallItemLabel", new ResourceModel("link.wall.item.comment")));
    commentItemLink.add(new AttributeModifier("title", true, new StringResourceModel("link.title.wall.comment",
            null, new Object[] { sakaiProxy.getUserDisplayName(wallItem.getCreatorUuid()) })));

    add(commentItemLink);

    if (ProfileConstants.WALL_ITEM_TYPE_EVENT == wallItem.getType()) {
        add(new Label("wallItemText", new ResourceModel(wallItem.getText())));

    } else if (ProfileConstants.WALL_ITEM_TYPE_POST == wallItem.getType()) {
        add(new Label("wallItemText", ProfileUtils.processHtml(wallItem.getText()))
                .setEscapeModelStrings(false));

    } else if (ProfileConstants.WALL_ITEM_TYPE_STATUS == wallItem.getType()) {
        add(new Label("wallItemText", wallItem.getText()));

    }

    // COMMENTS

    ListView<WallItemComment> wallItemCommentsListView = new ListView<WallItemComment>("wallItemComments",
            wallItem.getComments()) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<WallItemComment> item) {

            WallItemComment comment = (WallItemComment) item.getDefaultModelObject();

            item.add(new WallItemCommentPanel("wallItemCommentPanel", comment));
        }

    };
    wallItemCommentsListView.setOutputMarkupId(true);
    add(wallItemCommentsListView);

}

From source file:org.syncope.console.wicket.markup.html.form.MultiValueSelectorPanel.java

License:Apache License

private void init(final String id, final IModel<List<E>> model, final Class reference,
        final FieldPanel panelTemplate, final boolean sendEvent) {

    // -----------------------
    // Object container definition
    // -----------------------
    container = new WebMarkupContainer("multiValueContainer");
    container.setOutputMarkupId(true);/*from  w ww .  j a  v a2  s.c o  m*/
    add(container);
    // -----------------------

    view = new ListView<E>("view", model) {

        private static final long serialVersionUID = -9180479401817023838L;

        @Override
        protected void populateItem(final ListItem<E> item) {

            final FieldPanel fieldPanel = panelTemplate.clone();

            if (sendEvent) {
                fieldPanel.getField().add(new AjaxFormComponentUpdatingBehavior("onchange") {

                    private static final long serialVersionUID = -1107858522700306810L;

                    @Override
                    protected void onUpdate(final AjaxRequestTarget target) {

                        send(getPage(), Broadcast.BREADTH, new MultiValueSelectorEvent(target));
                    }
                });
            }

            fieldPanel.setNewModel(item, reference);
            item.add(fieldPanel);

            AjaxLink minus = new IndicatingAjaxLink("drop") {

                private static final long serialVersionUID = -7978723352517770644L;

                @Override
                public void onClick(final AjaxRequestTarget target) {
                    //Drop current component
                    model.getObject().remove(item.getModelObject());
                    fieldPanel.getField().clearInput();
                    target.add(container);

                    if (sendEvent) {
                        send(getPage(), Broadcast.BREADTH, new MultiValueSelectorEvent(target));
                    }
                }
            };

            item.add(minus);

            if (model.getObject().size() <= 1) {
                minus.setVisible(false);
                minus.setEnabled(false);
            } else {
                minus.setVisible(true);
                minus.setEnabled(true);
            }

            if (item.getIndex() == model.getObject().size() - 1) {
                final AjaxLink plus = new IndicatingAjaxLink("add") {

                    private static final long serialVersionUID = -7978723352517770644L;

                    @Override
                    public void onClick(final AjaxRequestTarget target) {
                        //Add current component
                        model.getObject().add(null);
                        target.add(container);
                    }
                };

                final Fragment fragment = new Fragment("panelPlus", "fragmentPlus", container);

                fragment.add(plus);
                item.add(fragment);
            } else {
                final Fragment fragment = new Fragment("panelPlus", "emptyFragment", container);
                item.add(fragment);
            }
        }
    };

    container.add(view.setOutputMarkupId(true));
    setOutputMarkupId(true);
}

From source file:org.xaloon.wicket.plugin.admin.PluginAdministrationPanel.java

License:Apache License

private void init() {
    List<List<GenericTreeNode<MenuItem>>> menuItems = new ArrayList<List<GenericTreeNode<MenuItem>>>();
    menuItems.add(getCategoryMenuPlugin().getTree().getChildren());
    FlatDynamicMenuPanel hierarchyMenu = new FlatDynamicMenuPanel("hierarchy-menu", menuItems);
    hierarchyMenu.setMenuItemPageClass(PluginAdministrationPage.class);
    add(hierarchyMenu);/*  w ww .  jav a2 s .  co  m*/

    String filter = pageParameters.get(CategoryConstants.PAGE_NAMED_PARAMETER_PARENT_CATEGORY).toString();
    List<GenericTreeNode<Plugin>> pluginCollection;
    if (StringUtils.isEmpty(filter)) {
        pluginCollection = getCategoryGroupPlugin().getTree().getChildren();
    } else {
        pluginCollection = getCategoryGroupPlugin().getTreeNodesByContext().get("/" + filter).getChildren();
    }
    add(new ListView<GenericTreeNode<Plugin>>("plugin-view", pluginCollection) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final ListItem<GenericTreeNode<Plugin>> item) {
            item.setOutputMarkupId(true);
            final ValueMap properties = new ValueMap();

            final Plugin plugin = item.getModelObject().getData();
            if (plugin == null || plugin.getAdministratorFormClass() == null) {
                item.setVisible(false);
                return;
            }
            boolean pluginEnabled = getPluginRegistry().isEnabled(plugin);
            properties.put(PLUGIN_PROPERTY_CONTAINER, pluginEnabled);

            item.add(new Label("plugin-name", new Model<String>(plugin.getName())));
            item.add(new Label("plugin-version", new Model<String>(plugin.getVersion())));
            item.add(new Label("plugin-description", new Model<String>(plugin.getDescription()))
                    .setVisible(!StringUtils.isEmpty(plugin.getDescription())));
            final ModalWindow pluginConfigurationModalWindow = new CustomModalWindow("plugin-config", "title");
            item.add(pluginConfigurationModalWindow);

            pluginConfigurationModalWindow.setContent(
                    new PluginConfigurationPanel(pluginConfigurationModalWindow, new Model<Plugin>(plugin)));

            // add link to open configuration window
            final AjaxLink<Void> openConfigWindow = new AjaxLink<Void>("link-plugin-config") {
                private static final long serialVersionUID = 1L;

                @Override
                public void onClick(AjaxRequestTarget target) {
                    pluginConfigurationModalWindow.show(target);
                }
            };
            item.add(openConfigWindow);
            openConfigWindow.setVisible(pluginEnabled);

            // } catch (CreateClassInstanceException e) {
            // setVisible(false);// TODO double check
            // if (logger.isWarnEnabled()) {
            // logger.warn("Could not create instance for administration class: " + plugin.getAdministratorFormClass());
            // }
            // }

            AjaxCheckBox pluginEnabledCheckbox = new AjaxCheckBox(PLUGIN_PROPERTY_CONTAINER,
                    new PropertyModel<Boolean>(properties, PLUGIN_PROPERTY_CONTAINER)) {

                /**
                 * 
                 */
                private static final long serialVersionUID = 1L;

                @Override
                protected void onUpdate(AjaxRequestTarget target) {
                    Boolean pluginEnabled = getModelObject();
                    getPluginRegistry().setEnabled(plugin, pluginEnabled);
                    openConfigWindow.setVisible(pluginEnabled);
                    target.add(item);
                }
            };
            item.add(pluginEnabledCheckbox);
            pluginEnabledCheckbox
                    .setEnabled(!DefaultPluginCategories.ADMINISTRATION.equals(plugin.getCategory()));
        }
    });
}