Example usage for org.apache.wicket.markup.repeater DefaultItemReuseStrategy DefaultItemReuseStrategy

List of usage examples for org.apache.wicket.markup.repeater DefaultItemReuseStrategy DefaultItemReuseStrategy

Introduction

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

Prototype

DefaultItemReuseStrategy

Source Link

Usage

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