List of usage examples for org.apache.wicket.ajax.markup.html AjaxLink setVisible
public final Component setVisible(final boolean visible)
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())); } }); }