List of usage examples for org.apache.wicket.markup.repeater DefaultItemReuseStrategy DefaultItemReuseStrategy
DefaultItemReuseStrategy
From source file:org.geoserver.security.web.group.GroupPanel.java
License:Open Source License
public GroupPanel(String id, String serviceName) { super(id);/*from www. j av a 2 s. c o m*/ this.serviceName = serviceName; GroupListProvider provider = new GroupListProvider(serviceName); add(groups = new GeoServerTablePanel<GeoServerUserGroup>("table", provider, true) { @Override protected Component getComponentForProperty(String id, IModel itemModel, Property<GeoServerUserGroup> property) { if (property == GroupListProvider.GROUPNAME) { return editGroupLink(id, itemModel, property); } else if (property == GroupListProvider.ENABLED) { if ((Boolean) property.getModel(itemModel).getObject()) return new Icon(id, CatalogIconFactory.ENABLED_ICON); else return new Label(id, ""); } throw new RuntimeException("Uknown property " + property); } @Override protected void onSelectionUpdate(AjaxRequestTarget target) { removal.setEnabled(groups.getSelection().size() > 0); target.addComponent(removal); removalWithRoles.setEnabled(groups.getSelection().size() > 0); target.addComponent(removalWithRoles); } }); groups.setItemReuseStrategy(new DefaultItemReuseStrategy()); groups.setOutputMarkupId(true); add(dialog = new GeoServerDialog("dialog")); headerComponents(); }
From source file:org.geoserver.security.web.role.RolePanel.java
License:Open Source License
public RolePanel(String id, String serviceName) { super(id);/*from w w w . j a v a 2 s. co m*/ this.roleServiceName = serviceName; RoleListProvider provider = new RoleListProvider(this.roleServiceName); add(roles = new GeoServerTablePanel<GeoServerRole>("table", provider, true) { @Override protected Component getComponentForProperty(String id, IModel itemModel, Property<GeoServerRole> property) { if (property == RoleListProvider.ROLENAME) { return editRoleLink(id, itemModel, property); } else if (RoleListProvider.ParentPropertyName.equals(property.getName())) { return editParentRoleLink(id, itemModel, property); } else if (property == RoleListProvider.HASROLEPARAMS) { if ((Boolean) property.getModel(itemModel).getObject()) return new Icon(id, CatalogIconFactory.ENABLED_ICON); else return new Label(id, ""); } throw new RuntimeException("Uknown property " + property); } @Override protected void onSelectionUpdate(AjaxRequestTarget target) { removal.setEnabled(roles.getSelection().size() > 0); target.addComponent(removal); } }); roles.setItemReuseStrategy(new DefaultItemReuseStrategy()); roles.setOutputMarkupId(true); add(dialog = new GeoServerDialog("dialog")); headerComponents(); }
From source file:org.geoserver.security.web.user.UserTablePanel.java
License:Open Source License
public UserTablePanel(String id, String ugServiceName, GeoServerDataProvider<GeoServerUser> dataProvider, boolean selectable) { super(id, dataProvider, selectable); this.ugServiceName = ugServiceName; setItemReuseStrategy(new DefaultItemReuseStrategy()); }
From source file:org.geoserver.web.data.layergroup.LayerGroupEntryPanel.java
License:Open Source License
public LayerGroupEntryPanel(String id, LayerGroupInfo layerGroup) { super(id);/*from w w w . ja v a2 s. co m*/ items = new ArrayList<LayerGroupEntry>(); for (int i = 0; i < layerGroup.getLayers().size(); i++) { PublishedInfo layer = layerGroup.getLayers().get(i); StyleInfo style = layerGroup.getStyles().get(i); items.add(new LayerGroupEntry(layer, style)); } add(popupWindow = new ModalWindow("popup")); add(dialog = new GeoServerDialog("dialog")); add(new HelpLink("layersHelp").setDialog(dialog)); //layers add(layerTable = new ReorderableTablePanel<LayerGroupEntry>("layers", items, PROPERTIES) { @Override protected Component getComponentForProperty(String id, IModel itemModel, Property<LayerGroupEntry> property) { if (property == LAYER) { return layerLink(id, itemModel); } if (property == DEFAULT_STYLE) { return defaultStyleCheckbox(id, itemModel); } if (property == STYLE) { return styleLink(id, itemModel); } if (property == REMOVE) { return removeLink(id, itemModel); } return null; } }.setFilterable(false)); layerTable.setItemReuseStrategy(new DefaultItemReuseStrategy()); layerTable.setOutputMarkupId(true); add(new AjaxLink("addLayer") { @Override public void onClick(AjaxRequestTarget target) { popupWindow.setInitialHeight(375); popupWindow.setInitialWidth(525); popupWindow.setTitle(new ParamResourceModel("chooseLayer", this)); popupWindow.setContent(new LayerListPanel(popupWindow.getContentId()) { @Override protected void handleLayer(LayerInfo layer, AjaxRequestTarget target) { popupWindow.close(target); items.add(new LayerGroupEntry(layer, layer.getDefaultStyle())); //getCatalog().save( lg ); target.addComponent(layerTable); } }); popupWindow.show(target); } }); add(new AjaxLink("addLayerGroup") { @Override public void onClick(AjaxRequestTarget target) { popupWindow.setInitialHeight(375); popupWindow.setInitialWidth(525); popupWindow.setTitle(new ParamResourceModel("chooseLayerGroup", this)); popupWindow.setContent(new LayerGroupListPanel(popupWindow.getContentId()) { @Override protected void handleLayerGroup(LayerGroupInfo layerGroup, AjaxRequestTarget target) { popupWindow.close(target); items.add(new LayerGroupEntry(layerGroup, null)); target.addComponent(layerTable); } }); popupWindow.show(target); } }); }
From source file:org.geoserver.wms.eo.web.EoLayerGroupEntryPanel.java
License:Open Source License
public EoLayerGroupEntryPanel(String id, LayerGroupInfo layerGroup, ModalWindow popupWindow) { super(id);/*ww w . ja v a 2 s . c o m*/ this.popupWindow = popupWindow; Catalog catalog = GeoServerApplication.get().getCatalog(); this.layerGroupName = layerGroup.getName(); items = new ArrayList<EoLayerGroupEntry>(); for (int i = 0; i < layerGroup.getLayers().size(); i++) { PublishedInfo layer = layerGroup.getLayers().get(i); StyleInfo style = layerGroup.getStyles().get(i); if (style == null) { LayerInfo li = catalog.getLayer(layer.getId()); if (layer != null) { style = li.getDefaultStyle(); } } items.add(new EoLayerGroupEntry((LayerInfo) layer, style, layerGroup.getName())); } // layers final EoLayerTypeRenderer eoLayerTypeRenderer = new EoLayerTypeRenderer(); entryProvider = new LayerGroupEntryProvider(items); layerTable = new GeoServerTablePanel<EoLayerGroupEntry>("layers", entryProvider) { @Override protected Component getComponentForProperty(String id, IModel itemModel, Property<EoLayerGroupEntry> property) { if (property == LayerGroupEntryProvider.LAYER) { EoLayerGroupEntry entry = (EoLayerGroupEntry) itemModel.getObject(); return new Label(id, entry.getLayer().prefixedName()); } if (property == LayerGroupEntryProvider.TYPE) { EoLayerType type = (EoLayerType) property.getModel(itemModel).getObject(); return new Label(id, (String) eoLayerTypeRenderer.getDisplayValue(type)); } if (property == LayerGroupEntryProvider.STYLE) { return styleLink(id, itemModel); } if (property == LayerGroupEntryProvider.REMOVE) { return removeLink(id, itemModel); } if (property == LayerGroupEntryProvider.POSITION) { return positionPanel(id, itemModel); } return null; } }; layerTable.setFilterable(false); layerTable.setSortable(false); layerTable.setOutputMarkupId(true); layerTable.setItemReuseStrategy(new DefaultItemReuseStrategy()); add(layerTable); }
From source file:org.geoserver.wps.web.ProcessLimitsPage.java
License:Open Source License
public ProcessLimitsPage(Page returnPage, final FilteredProcess process) { setReturnPage(returnPage);/*from ww w. jav a 2 s. c o m*/ this.process = process; Form form = new Form("form"); add(form); final List<InputLimit> inputLimits = buildInputLimits(process); GeoServerDataProvider<InputLimit> inputLimitsProvider = new GeoServerDataProvider<ProcessLimitsPage.InputLimit>() { @Override protected List<org.geoserver.web.wicket.GeoServerDataProvider.Property<InputLimit>> getProperties() { List<Property<InputLimit>> result = new ArrayList<>(); result.add(new BeanProperty<InputLimit>("name", "name")); result.add(new PropertyPlaceholder("type")); result.add(new BeanProperty<InputLimit>("editor", "validator")); return result; } @Override protected List<InputLimit> getItems() { return inputLimits; } }; table = new GeoServerTablePanel<InputLimit>("table", inputLimitsProvider) { @Override protected Component getComponentForProperty(String id, IModel itemModel, Property<InputLimit> property) { InputLimit limit = (InputLimit) itemModel.getObject(); String propertyName = property.getName(); if (propertyName.equals("type")) { String type; try { String key = "type." + limit.getValidator().getClass().getName(); type = new ParamResourceModel(key, ProcessLimitsPage.this).getString(); } catch (Exception e) { type = limit.validator.getClass().getSimpleName(); } return new Label(id, type); } else if (propertyName.equals("editor")) { WPSInputValidator validator = limit.getValidator(); if (validator instanceof MaxSizeValidator) { Fragment f = new Fragment(id, "textEditor", ProcessLimitsPage.this); PropertyModel maxSizeModel = new PropertyModel(itemModel, "validator.maxSizeMB"); TextField<Integer> text = new TextField<Integer>("text", maxSizeModel, Integer.class); f.add(text); return f; } else if (validator instanceof MultiplicityValidator) { Fragment f = new Fragment(id, "textEditor", ProcessLimitsPage.this); PropertyModel maxMultiplicityModel = new PropertyModel(itemModel, "validator.maxInstances"); TextField<Integer> text = new TextField<Integer>("text", maxMultiplicityModel, Integer.class); f.add(text); return f; } else if (validator instanceof NumberRangeValidator) { Fragment f = new Fragment(id, "rangeEditor", ProcessLimitsPage.this); PropertyModel rangeModel = new PropertyModel(itemModel, "validator.range"); RangePanel rangeEditor = new RangePanel("range", rangeModel); f.add(rangeEditor); return f; } } // have the base class create a label for us return null; } }; table.setOutputMarkupId(true); table.setFilterable(false); table.setPageable(false); table.setItemReuseStrategy(new DefaultItemReuseStrategy()); table.setSortable(false); form.add(table); SubmitLink apply = new SubmitLink("apply") { @Override public void onSubmit() { // super.onSubmit(); process.setValidators(buildValidators(inputLimits)); doReturn(); } }; form.add(apply); Link cancel = new Link("cancel") { @Override public void onClick() { doReturn(); } }; form.add(cancel); }
From source file:org.sakaiproject.dash.tool.panels.CalendarLinksPanel.java
License:Educational Community License
/** * /*from w w w . j a v a 2 s . com*/ */ protected void initPanel() { if (selectedCalendarTab == null) { selectedCalendarTab = TAB_ID_UPCOMING; } if (this.calendarLinksDivId != null) { this.remove(calendarLinksDivId); } ResourceLoader rl = new ResourceLoader("dash_entity"); final WebMarkupContainer calendarLinksDiv = new WebMarkupContainer("calendarLinksDiv"); calendarLinksDiv.setOutputMarkupId(true); add(calendarLinksDiv); this.calendarLinksDivId = calendarLinksDiv.getId(); calendarLinksDiv.add(new Label("calendarTitle", rl.getString("dash.calendar.title"))); AjaxLink<IModel<List<CalendarLink>>> upcomingCalendarLink = new AjaxLink<IModel<List<CalendarLink>>>( "link") { @Override public void onClick(AjaxRequestTarget target) { logger.debug("upcomingCalendarLink onClick called"); // set currentCalendarTab to "upcoming" selectedCalendarTab = TAB_ID_UPCOMING; // reset calendar dataview to show upcoming stuff if (calendarLinksProvider == null) { calendarLinksProvider = new CalendarLinksDataProvider(selectedCalendarTab); } else { calendarLinksProvider.setCalendarTab(selectedCalendarTab); } // refresh calendarItemsDiv initPanel(); target.addComponent(CalendarLinksPanel.this); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_TABBING, "/dashboard/calendar/upcoming"); } }; upcomingCalendarLink.add(new Label("label", rl.getString("dash.calendar.upcoming"))); WebMarkupContainer upcomingCalendarTab = new WebMarkupContainer("upcomingCalendarTab"); if (selectedCalendarTab == null || TAB_ID_UPCOMING.equalsIgnoreCase(selectedCalendarTab)) { upcomingCalendarTab.add(new SimpleAttributeModifier("class", "activeTab")); } upcomingCalendarTab.add(upcomingCalendarLink); calendarLinksDiv.add(upcomingCalendarTab); AjaxLink<IModel<List<CalendarLink>>> pastCalendarLink = new AjaxLink<IModel<List<CalendarLink>>>("link") { @Override public void onClick(AjaxRequestTarget target) { logger.debug("pastCalendarLink onClick called"); // set currentCalendarTab to "past" selectedCalendarTab = TAB_ID_PAST; // reset calendar dataview to show past stuff if (calendarLinksProvider == null) { calendarLinksProvider = new CalendarLinksDataProvider(selectedCalendarTab); } else { calendarLinksProvider.setCalendarTab(selectedCalendarTab); } // refresh calendarItemsDiv initPanel(); target.addComponent(CalendarLinksPanel.this); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_TABBING, "/dashboard/calendar/past"); } }; pastCalendarLink.add(new Label("label", rl.getString("dash.calendar.past"))); WebMarkupContainer pastCalendarTab = new WebMarkupContainer("pastCalendarTab"); if (selectedCalendarTab != null && TAB_ID_PAST.equalsIgnoreCase(selectedCalendarTab)) { pastCalendarTab.add(new SimpleAttributeModifier("class", "activeTab")); } pastCalendarTab.add(pastCalendarLink); calendarLinksDiv.add(pastCalendarTab); AjaxLink<IModel<List<CalendarLink>>> starredCalendarLink = new AjaxLink<IModel<List<CalendarLink>>>( "link") { @Override public void onClick(AjaxRequestTarget target) { logger.debug("starredCalendarLink onClick called"); // set currentCalendarTab to "starred" selectedCalendarTab = TAB_ID_STARRED; // reset calendar dataview to show starred stuff if (calendarLinksProvider == null) { calendarLinksProvider = new CalendarLinksDataProvider(selectedCalendarTab); } else { calendarLinksProvider.setCalendarTab(selectedCalendarTab); } // refresh calendarItemsDiv initPanel(); target.addComponent(CalendarLinksPanel.this); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_TABBING, "/dashboard/calendar/starred"); } }; starredCalendarLink.add(new Label("label", rl.getString("dash.calendar.starred"))); WebMarkupContainer starredCalendarTab = new WebMarkupContainer("starredCalendarTab"); if (selectedCalendarTab != null && TAB_ID_STARRED.equalsIgnoreCase(selectedCalendarTab)) { starredCalendarTab.add(new SimpleAttributeModifier("class", "activeTab")); } starredCalendarTab.add(starredCalendarLink); calendarLinksDiv.add(starredCalendarTab); AjaxLink<IModel<List<CalendarLink>>> hiddenCalendarLink = new AjaxLink<IModel<List<CalendarLink>>>("link") { @Override public void onClick(AjaxRequestTarget target) { logger.debug("hiddenCalendarLink onClick called"); // set currentCalendarTab to "hidden" selectedCalendarTab = TAB_ID_HIDDEN; // reset calendar dataview to show hidden stuff if (calendarLinksProvider == null) { calendarLinksProvider = new CalendarLinksDataProvider(selectedCalendarTab); } else { calendarLinksProvider.setCalendarTab(selectedCalendarTab); } // refresh calendarItemsDiv initPanel(); target.addComponent(CalendarLinksPanel.this); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_TABBING, "/dashboard/calendar/hidden"); } }; hiddenCalendarLink.add(new Label("label", rl.getString("dash.calendar.hidden"))); WebMarkupContainer hiddenCalendarTab = new WebMarkupContainer("hiddenCalendarTab"); if (selectedCalendarTab != null && TAB_ID_HIDDEN.equalsIgnoreCase(selectedCalendarTab)) { hiddenCalendarTab.add(new SimpleAttributeModifier("class", "activeTab")); } hiddenCalendarTab.add(hiddenCalendarLink); calendarLinksDiv.add(hiddenCalendarTab); if (calendarLinksProvider == null) { calendarLinksProvider = new CalendarLinksDataProvider(selectedCalendarTab); } else { calendarLinksProvider.setCalendarTab(selectedCalendarTab); } WebMarkupContainer haveLinks = new WebMarkupContainer("haveLinks"); calendarLinksDiv.add(haveLinks); //present the calendar data in a table final DataView<CalendarLink> calendarDataView = new DataView<CalendarLink>("calendarItems", calendarLinksProvider) { @Override public void populateItem(final Item item) { if (item != null && item.getModelObject() != null) { item.setOutputMarkupId(true); ResourceLoader rl = new ResourceLoader("dash_entity"); final CalendarLink cLink = (CalendarLink) item.getModelObject(); final CalendarItem cItem = cLink.getCalendarItem(); if (logger.isDebugEnabled()) { logger.debug(this + "populateItem() item: " + item); } String itemType = cItem.getSourceType().getIdentifier(); item.add(new Label("itemType", itemType)); item.add(new Label("itemCount", "1")); item.add(new Label("entityReference", cItem.getEntityReference())); Component timeLabel = new Label("calendarDate", DateUtil.getCalendarTimeString(cItem.getCalendarTime())); timeLabel.add(new AttributeModifier("title", true, new AbstractReadOnlyModel() { @Override public Object getObject() { // TODO Auto-generated method stub return DateUtil.getFullDateString(cItem.getCalendarTime()); } })); item.add(timeLabel); //item.add(new Label("calendarTime", new SimpleDateFormat(TIME_FORMAT).format(cItem.getCalendarTime()))); Image icon = new Image("icon"); icon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { // TODO Auto-generated method stub return dashboardCommonLogic.getEntityIconUrl(cItem.getSourceType().getIdentifier(), cItem.getSubtype()); } })); item.add(icon); StringBuilder errorMessages = new StringBuilder(); String title = FormattedText.processFormattedText(cItem.getTitle(), errorMessages, true, true); if (errorMessages != null && errorMessages.length() > 0) { logger.warn("Error(s) encountered while cleaning calendarItem title:\n" + errorMessages); } ExternalLink itemLink = new ExternalLink("itemLink", "#itemEvent"); itemLink.add(new Label("itemTitle", title)); itemLink.add(new Label("itemClick", rl.getString("dash.details"))); item.add(itemLink); String calendarItemLabel = dashboardCommonLogic.getString(cItem.getCalendarTimeLabelKey(), "", itemType); if (calendarItemLabel == null) { calendarItemLabel = ""; } item.add(new Label("itemLabel", calendarItemLabel)); item.add(new ExternalLink("siteLink", cItem.getContext().getContextUrl(), cItem.getContext().getContextTitle())); if (cLink.isSticky()) { AjaxLink<CalendarLink> starringAction = new AjaxLink<CalendarLink>("starringAction") { protected long calendarItemId = cItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("starringAction onClick() called -- unstar "); // need to keep one item logger.debug(calendarItemId); //logger.debug(this.getModelObject()); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.unkeepCalendarItem(sakaiUserId, calendarItemId); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_UNSTAR, "/dashboard/calendar/" + selectedCalendarTab + "/" + calendarItemId); // if success adjust UI, else report failure? if (success) { target.addComponent(CalendarLinksPanel.this); if (TAB_ID_STARRED.equals(selectedCalendarTab)) { ResourceLoader rl = new ResourceLoader("dash_entity"); CalendarItem changedItem = dashboardCommonLogic .getCalendarItem(calendarItemId); JsonHelper jsonHelper = new JsonHelper(dashboardCommonLogic, dashboardConfig); String jsonStr = jsonHelper.getJsonObjectFromCalendarItem(changedItem) .toString(); String javascript = "reportSuccess('" + rl.getString("dash.ajax.unstar.success") + "'," + jsonStr + ",'" + "not-sure-about-url-yet" + "');"; target.appendJavascript(javascript); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); } } } }; starringAction.setDefaultModel(item.getModel()); item.add(starringAction); Image starringActionIcon = new Image("starringActionIcon"); starringActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return dashboardConfig.getActionIcon(dashboardConfig.ACTION_UNSTAR); } })); starringActionIcon.add(new AttributeModifier("alt", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.unstar"); } })); starringAction.add(starringActionIcon); //starringAction.add(new Label("starringActionLabel", "Unstar")); if (cLink.isHidden()) { // this shouldn't happen, but just in case ... starringAction.setVisible(false); starringAction.setVisibilityAllowed(false); } } else { AjaxLink<CalendarLink> starringAction = new AjaxLink<CalendarLink>("starringAction") { protected long calendarItemId = cItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("starringAction onClick() called -- star "); // need to keep one item logger.debug(calendarItemId); //logger.debug(this.getModelObject()); ResourceLoader rl = new ResourceLoader("dash_entity"); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.keepCalendarItem(sakaiUserId, calendarItemId); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_STAR, "/dashboard/calendar/" + selectedCalendarTab + "/" + calendarItemId); // if success adjust UI, else report failure? if (success) { target.addComponent(CalendarLinksPanel.this); //String javascript = "alert('success. (" + thisRow.getMarkupId() + ")');"; //target.appendJavascript(javascript ); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); } } }; Image starringActionIcon = new Image("starringActionIcon"); starringActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return dashboardConfig.getActionIcon(dashboardConfig.ACTION_STAR); } })); starringActionIcon.add(new AttributeModifier("alt", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.star"); } })); starringAction.add(starringActionIcon); //starringAction.add(new Label("starringActionLabel", "Star")); item.add(starringAction); if (cLink.isHidden()) { starringAction.setVisible(false); starringAction.setVisibilityAllowed(false); } } if (cLink.isHidden()) { AjaxLink<CalendarLink> hidingAction = new AjaxLink<CalendarLink>("hidingAction") { protected long calendarItemId = cItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("hidingAction onClick() called -- show"); // need to trash one item logger.debug(calendarItemId); //logger.debug(this.getModelObject()); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.unhideCalendarItem(sakaiUserId, calendarItemId); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_SHOW, "/dashboard/calendar/" + selectedCalendarTab + "/" + calendarItemId); // if success adjust UI, else report failure? if (success) { ResourceLoader rl = new ResourceLoader("dash_entity"); target.addComponent(CalendarLinksPanel.this); CalendarItem changedItem = dashboardCommonLogic.getCalendarItem(calendarItemId); JsonHelper jsonHelper = new JsonHelper(dashboardCommonLogic, dashboardConfig); String jsonStr = jsonHelper.getJsonObjectFromCalendarItem(changedItem) .toString(); String javascript = "reportSuccess('" + rl.getString("dash.ajax.show.success") + "'," + jsonStr + ",'" + "not-sure-about-url-yet" + "');"; target.appendJavascript(javascript); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); } } }; hidingAction.setDefaultModel(item.getModel()); //actionHideThisLink.setModelObject(cItem); item.add(hidingAction); Image hidingActionIcon = new Image("hidingActionIcon"); hidingActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return dashboardConfig.getActionIcon(dashboardConfig.ACTION_SHOW); } })); hidingActionIcon.add(new AttributeModifier("alt", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.show"); } })); hidingAction.add(hidingActionIcon); //hidingAction.add(new Label("hidingActionLabel", "Show")); if (cLink.isSticky() || TAB_ID_PAST.equals(selectedCalendarTab)) { // this shouldn't happen, but just in case ... hidingAction.setVisible(false); hidingAction.setVisibilityAllowed(false); } } else { AjaxLink<CalendarLink> hidingAction = new AjaxLink<CalendarLink>("hidingAction") { protected long calendarItemId = cItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("hidingAction onClick() called -- hide"); // need to trash one item logger.debug(calendarItemId); //logger.debug(this.getModelObject()); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.hideCalendarItem(sakaiUserId, calendarItemId); dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_HIDE, "/dashboard/calendar/" + selectedCalendarTab + "/" + calendarItemId); // if success adjust UI, else report failure? if (success) { ResourceLoader rl = new ResourceLoader("dash_entity"); //renderItemCounter(calendarLinksDiv, calendarDataView); target.addComponent(CalendarLinksPanel.this); CalendarItem changedItem = dashboardCommonLogic.getCalendarItem(calendarItemId); JsonHelper jsonHelper = new JsonHelper(dashboardCommonLogic, dashboardConfig); String jsonStr = jsonHelper.getJsonObjectFromCalendarItem(changedItem) .toString(); String javascript = "reportSuccess('" + rl.getString("dash.ajax.hide.success") + "'," + jsonStr + ",'" + "not-sure-about-url-yet" + "');"; target.appendJavascript(javascript); target.appendJavascript("resizeFrame('grow');"); target.appendJavascript("$('#schedPanel').focus();"); } } }; hidingAction.setDefaultModel(item.getModel()); //actionHideThisLink.setModelObject(cItem); item.add(hidingAction); Image hidingActionIcon = new Image("hidingActionIcon"); hidingActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return dashboardConfig.getActionIcon(dashboardConfig.ACTION_HIDE); } })); hidingActionIcon.add(new AttributeModifier("alt", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.hide"); } })); hidingAction.add(hidingActionIcon); //hidingAction.add(new Label("hidingActionLabel", "Hide")); if (cLink.isSticky() || TAB_ID_PAST.equals(selectedCalendarTab)) { hidingAction.setVisible(false); hidingAction.setVisibilityAllowed(false); } } } } }; calendarDataView.setItemReuseStrategy(new DefaultItemReuseStrategy()); calendarDataView.setItemsPerPage(pageSize); haveLinks.add(calendarDataView); IPagingLabelProvider pagingLabelProvider = new IPagingLabelProvider() { public String getPageLabel(int page) { ResourceLoader rl = new ResourceLoader("dash_entity"); int itemCount = 0; String pagerStatus = ""; if (calendarDataView != null) { int first = 0; int last = 0; itemCount = calendarDataView.getItemCount(); int pageSize = calendarDataView.getItemsPerPage(); if (itemCount > pageSize) { //int page = calendarDataView.getCurrentPage(); first = page * pageSize + 1; last = Math.min(itemCount, (page + 1) * pageSize); if (first == last) { pagerStatus = Integer.toString(first); } else { pagerStatus = rl.getFormattedMessage("dash.pager.range", new Object[] { new Integer(first), new Integer(last) }); } } else if (itemCount > 1) { pagerStatus = rl.getFormattedMessage("dash.pager.range", new Object[] { new Integer(1), new Integer(itemCount) }); } else if (itemCount > 0) { pagerStatus = "1"; } else { pagerStatus = "0"; } } if (logger.isDebugEnabled()) { logger.debug("getPageLabel() " + pagerStatus); } return pagerStatus; } }; //add a pager to our table, only visible if we have more than 5 items calendarLinksDiv.add(new PagingNavigator("calendarNavigator", calendarDataView, pagingLabelProvider) { protected int currentPage = 1; @Override public boolean isVisible() { if (calendarLinksProvider != null && calendarLinksProvider.size() > pageSize) { return true; } return false; } @Override public void onBeforeRender() { super.onBeforeRender(); if (this.getPageable().getCurrentPage() != currentPage) { dashboardCommonLogic.recordDashboardActivity(DashboardCommonLogic.EVENT_DASH_PAGING, "/dashboard/calendar/" + selectedCalendarTab); currentPage = this.getPageable().getCurrentPage(); } //renderItemCounter(calendarLinksDiv, (DataView<CalendarLink>) getPageable()); //clear the feedback panel messages //clearFeedback(feedbackPanel); } }); WebMarkupContainer haveNoLinks = new WebMarkupContainer("haveNoLinks"); calendarLinksDiv.add(haveNoLinks); String noCalendarLinksLabel = null; if (TAB_ID_UPCOMING.equals(selectedCalendarTab)) { noCalendarLinksLabel = rl.getString("dash.calendar.noupcoming"); } else if (TAB_ID_PAST.equals(selectedCalendarTab)) { noCalendarLinksLabel = rl.getString("dash.calendar.nopast"); } else if (TAB_ID_STARRED.equals(selectedCalendarTab)) { noCalendarLinksLabel = rl.getString("dash.calendar.nostarred"); } else if (TAB_ID_HIDDEN.equals(selectedCalendarTab)) { noCalendarLinksLabel = rl.getString("dash.calendar.nohidden"); } haveNoLinks.add(new Label("message", noCalendarLinksLabel)); //renderItemCounter(calendarLinksDiv, calendarDataView); int itemCount = 0; if (calendarDataView != null) { itemCount = calendarDataView.getItemCount(); } if (itemCount > 0) { // show the haveLinks haveLinks.setVisible(true); // hide the haveNoLinks haveNoLinks.setVisible(false); } else { // show the haveNoLinks haveNoLinks.setVisible(true); // hide the haveLinks haveLinks.setVisible(false); } }
From source file:org.sakaiproject.dash.tool.panels.MOTDPanel.java
License:Educational Community License
protected void initPanel() { if (this.motdDivId != null) { this.remove(motdDivId); }/* w w w. j a v a 2s . c om*/ ResourceLoader rl = new ResourceLoader("dash_entity"); //get list of items from db, wrapped in a dataprovider motdProvider = new NewsLinksDataProvider(); final WebMarkupContainer motdDiv = new WebMarkupContainer("motdDiv"); motdDiv.setOutputMarkupId(true); add(motdDiv); this.motdDivId = motdDiv.getId(); motdDiv.add(new Label("motdPanelTitle", rl.getString("dash.motd.title"))); WebMarkupContainer haveLinks = new WebMarkupContainer("haveLinks"); motdDiv.add(haveLinks); //present the news data in a table final DataView<NewsItem> newsDataView = new DataView<NewsItem>("motd", motdProvider) { @Override public void populateItem(final Item item) { item.setOutputMarkupId(true); final NewsItem nItem = (NewsItem) item.getModelObject(); if (logger.isDebugEnabled()) { logger.debug(this + "populateItem() item: " + item); } String itemType = nItem.getSourceType().getIdentifier(); item.add(new Label("itemType", itemType)); item.add(new Label("itemCount", Integer.toString(nItem.getItemCount()))); item.add(new Label("entityReference", nItem.getEntityReference())); String siteTitle = nItem.getContext().getContextTitle(); StringBuilder errorMessages = new StringBuilder(); String title = FormattedText.processFormattedText(nItem.getTitle(), errorMessages, true, true); if (errorMessages != null && errorMessages.length() > 0) { logger.warn("Error(s) encountered while processing newsItem title:\n" + errorMessages); } item.add(new ExternalLink("itemLink", "#", title)); Image icon = new Image("icon"); icon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { // TODO Auto-generated method stub return dashboardCommonLogic.getEntityIconUrl(nItem.getSourceType().getIdentifier(), nItem.getSubtype()); } })); item.add(icon); String newsItemLabel = dashboardCommonLogic.getString(nItem.getNewsTimeLabelKey(), "", itemType); if (newsItemLabel == null) { newsItemLabel = ""; } item.add(new Label("itemLabel", newsItemLabel)); item.add(new ExternalLink("siteLink", nItem.getContext().getContextUrl(), siteTitle)); Component timeLabel = new Label("newsTime", DateUtil.getNewsTimeString(nItem.getNewsTime())); timeLabel.add(new AttributeModifier("title", true, new AbstractReadOnlyModel() { @Override public Object getObject() { // TODO Auto-generated method stub return DateUtil.getFullDateString(nItem.getNewsTime()); } })); item.add(timeLabel); AjaxLink<NewsLink> starringAction = new AjaxLink<NewsLink>("starringAction") { protected long newsItemId = nItem.getId(); protected Component thisRow = item; @Override public void onClick(AjaxRequestTarget target) { logger.debug("starringAction onClick() called -- star "); // need to keep one item logger.debug(newsItemId); //logger.debug(this.getModelObject()); String sakaiUserId = sakaiProxy.getCurrentUserId(); boolean success = dashboardCommonLogic.keepNewsItem(sakaiUserId, newsItemId); // if success adjust UI, else report failure? if (success) { target.addComponent(MOTDPanel.this); //String javascript = "alert('success. (" + thisRow.getMarkupId() + ")');"; //target.appendJavascript(javascript ); } target.appendJavascript("resizeFrame('grow');"); } }; Image starringActionIcon = new Image("starringActionIcon"); starringActionIcon.add(new AttributeModifier("src", true, new AbstractReadOnlyModel() { @Override public Object getObject() { return "/dashboard-tool/css/img/star-inact.png"; } })); starringActionIcon.add(new AttributeModifier("title", true, new AbstractReadOnlyModel() { @Override public Object getObject() { ResourceLoader rl = new ResourceLoader("dash_entity"); return rl.getString("dash.star"); } })); starringAction.add(starringActionIcon); // starringAction.add(new Label("starringActionLabel", "Star")); item.add(starringAction); } }; newsDataView.setItemReuseStrategy(new DefaultItemReuseStrategy()); newsDataView.setItemsPerPage(pageSize); haveLinks.add(newsDataView); //add a pager to our table, only visible if we have more than 5 items motdDiv.add(new PagingNavigator("newsNavigator", newsDataView) { @Override public boolean isVisible() { if (motdProvider.size() > pageSize) { return true; } return false; } @Override public void onBeforeRender() { super.onBeforeRender(); renderItemCounter(motdDiv, newsDataView); //clear the feedback panel messages //clearFeedback(feedbackPanel); } }); WebMarkupContainer haveNoLinks = new WebMarkupContainer("haveNoLinks"); motdDiv.add(haveNoLinks); String noNewsLinksLabel = null; noNewsLinksLabel = rl.getString("dash.news.nocurrent"); haveNoLinks.add(new Label("message", noNewsLinksLabel)); renderItemCounter(motdDiv, newsDataView); int itemCount = 0; if (newsDataView != null) { itemCount = newsDataView.getItemCount(); } if (itemCount > 0) { // show the haveLinks haveLinks.setVisible(true); // hide the noNewsLinksDiv haveNoLinks.setVisible(false); } else { // show the noNewsLinksDiv haveNoLinks.setVisible(true); // hide the haveLinks haveLinks.setVisible(false); } if (motdMode != MOTD_MODE_LIST || itemCount < 1) { motdDiv.setVisibilityAllowed(false); motdDiv.setVisible(false); } }
From source file:org.sakaiproject.dash.tool.panels.NewsLinksPanel.java
License:Educational Community License
protected void initPanel() { if (this.selectedNewsTab == null) { this.selectedNewsTab = TAB_ID_CURRENT; }/*from w w w . ja va2 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.ddo.tool.pages.ArchivePage.java
License:Educational Community License
public ArchivePage() { disableLink(archivePageLink);//from w ww. j av a2s. co m // Add a link to refresh the tables on the page Link<Void> refreshPage = new Link<Void>("refreshPage") { public void onClick() { setResponsePage(new ArchivePage()); } }; add(refreshPage); add(new Label("restore-header", getString("table.header.restore")).setVisible(sakaiProxy.isDDOAdmin())); //get list of items from db, wrapped in a dataprovider submissionDataProvider = new SubmissionDataProvider(SubmissionListType.ALL_ARCHIVED); //present the reviewed data in a table final DataView<Submission> dataViewArchived = new DataView<Submission>("archived", submissionDataProvider) { @Override public void populateItem(final Item item) { DateFormat df = new SimpleDateFormat("MMM d, yyyy h:mm a"); final Submission submission = (Submission) item.getModelObject(); final String submissionStatus = submission.getStatus(); item.add(new Label("submittedBy", sakaiProxy.getUserDisplayName(submission.getSubmittedBy()))); item.add(new Label("username", sakaiProxy.getUserDisplayId(submission.getSubmittedBy()))); item.add(new Label("submissiondate", df.format(submission.getSubmissionDate()))); item.add(new Label("status", submissionStatus)); Link<Void> feedback; Label feedbackLabel; Link<Void> editFeedback; Label editFeedbackLabel; final List<Feedback> feedbackList = projectLogic .getFeedbackForSubmission(submission.getSubmissionId()); if (feedbackList != null && !feedbackList.isEmpty()) { Feedback f = feedbackList.get(0); final long feedbackId = f.getFeedbackId(); item.add(new Label("reviewedBy", sakaiProxy.getUserDisplayName(f.getReviewedBy()))); item.add(new Label("reviewDate", df.format(f.getReviewDate()))); feedback = new Link<Void>("feedback") { @Override public void onClick() { setResponsePage(new FeedbackPage(feedbackId, "staff")); } }; editFeedback = new Link<Void>("editFeedback") { @Override public void onClick() { setResponsePage(new EditFeedback(feedbackId)); } }; feedbackLabel = new Label("feedbackLabel", "View"); editFeedbackLabel = new Label("editFeedbackLabel", "Edit"); } else { item.add(new Label("reviewedBy", "")); item.add(new Label("reviewDate", "")); feedback = new Link<Void>("feedback") { @Override public void onClick() { } }; editFeedback = new Link<Void>("editFeedback") { @Override public void onClick() { } }; feedbackLabel = new Label("feedbackLabel", ""); editFeedbackLabel = new Label("editFeedbackLabel", ""); } feedback.add(feedbackLabel); item.add(feedback); editFeedback.add(editFeedbackLabel); item.add(editFeedback); Link<Void> streamDownloadLink = new Link<Void>("document") { @Override public void onClick() { AbstractResourceStreamWriter rstream = new AbstractResourceStreamWriter() { @Override public void write(OutputStream output) throws IOException { output.write(sakaiProxy.getResource(submission.getDocumentRef()).getBytes()); } }; ResourceStreamRequestHandler handler = new ResourceStreamRequestHandler(rstream, sakaiProxy.getResource(submission.getDocumentRef()).getFileName()); getRequestCycle().scheduleRequestHandlerAfterCurrent(handler); } }; item.add(streamDownloadLink); SubmissionFile sf = sakaiProxy.getResource(submission.getDocumentRef()); streamDownloadLink.add(new Label("fileName", sf == null ? "Cannot find file." : sf.getFileName())); item.add(new ContextImage("submissionIcon", new Model<String>(sakaiProxy.getResourceIconUrl(submission.getDocumentRef())))); item.add(new Label("fileSize", sakaiProxy.getResourceFileSize(submission.getDocumentRef()))); // Restore link Link<Void> restoreLink = new Link<Void>("restore-link") { @Override public void onClick() { submission.setStatus(Submission.STATUS_REVIEWED); if (projectLogic.updateSubmissionStatus(submission)) { getSession().info(getString("success.restored_submission")); setResponsePage(new ArchivePage()); } else { error(getString("error.restored_submission")); } } }; item.add(restoreLink); restoreLink.setVisible(sakaiProxy.isDDOAdmin()); } }; dataViewArchived.setItemReuseStrategy(new DefaultItemReuseStrategy()); dataViewArchived.setItemsPerPage(7); add(dataViewArchived); add(new Label("reviewedHeader", MessageFormat.format(getString("archive.reviews.header"), submissionDataProvider.size()))); //add a pager to our table, only visible if we have more than 5 items add(new PagingNavigator("archivedNavigator", dataViewArchived) { @Override public boolean isVisible() { if (submissionDataProvider.size() > 7) { return true; } return false; } @Override public void onBeforeRender() { super.onBeforeRender(); //clear the feedback panel messages clearFeedback(feedbackPanel); } }); }