package org.atricore.idbus.capabilities.sso.ui.page.selfsvcs.dashboard; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder; import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable; import org.apache.wicket.extensions.markup.html.repeater.data.table.DefaultDataTable; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.atricore.idbus.capabilities.sso.ui.model.PartnerAppModel; import org.atricore.idbus.kernel.main.provisioning.domain.User; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * @author: sgonzalez@atriocore.com * @date: 3/12/13 */ public class DashboardPanel extends Panel { private static final Log logger = LogFactory.getLog(DashboardPanel.class); private User user ; private List<PartnerAppModel> apps; public DashboardPanel(String id, User user, List<PartnerAppModel> apps) { super(id); this.user = user; this.apps = apps; } @Override protected void onInitialize() { super.onInitialize(); // Build dashbord table List<IColumn<PartnerAppModel, String>> columns = new ArrayList<IColumn<PartnerAppModel, String>>(); // Application ICON //<td class="gt-avatar"><img src="images/gt/avatar.gif" alt="avatar" width="53" height="53"/></td> columns.add(new PropertyColumn<PartnerAppModel, String>(new Model<String>("Type"), "displayName") { @Override public String getCssClass() { return "gt-avatar"; } @Override public void populateItem(Item<ICellPopulator<PartnerAppModel>> cellItem, String componentId, IModel<PartnerAppModel> model) { cellItem.add(new AppLogoPanel(componentId, model)); } } ); columns.add(new PropertyColumn<PartnerAppModel, String>(new Model<String>("Details"), "displayName") { @Override public void populateItem(Item<ICellPopulator<PartnerAppModel>> cellItem, String componentId, IModel<PartnerAppModel> model) { cellItem.add(new AppDetailsPanel(componentId, model)); } }); columns.add(new PropertyColumn<PartnerAppModel, String>(new Model<String>(" "), "displayName") { @Override public void populateItem(Item<ICellPopulator<PartnerAppModel>> cellItem, String componentId, IModel<PartnerAppModel> model) { cellItem.add(new SpDetailsPanel(componentId, model)); } }); DataTable dataTable = new DefaultDataTable<PartnerAppModel, String>("ssoApps", columns, new PartnerAppDataProvider(apps), 8); //dataTable.addBottomToolbar(new ExportToolbar(dataTable).addDataExporter(new CSVDataExporter())); add(dataTable); } public class PartnerAppDataProvider extends SortableDataProvider<PartnerAppModel, String> { private List<PartnerAppModel> apps; public PartnerAppDataProvider(List<PartnerAppModel> apps) { setSort("name", SortOrder.ASCENDING); this.apps = apps; } public final Iterator<PartnerAppModel> iterator(long first, long count) { return apps.iterator(); } public final long size() { return apps.size(); } public IModel<PartnerAppModel> model(PartnerAppModel partnerAppModel) { return new CompoundPropertyModel<PartnerAppModel>(partnerAppModel); } } }