package org.dcache.webadmin.view.panels.poollist; import org.apache.wicket.AttributeModifier; import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import java.util.List; import org.dcache.webadmin.view.beans.PoolSpaceBean; import org.dcache.webadmin.view.pages.poollist.PoolList; import org.dcache.webadmin.view.panels.basepanel.BasePanel; import org.dcache.webadmin.view.panels.layout.LayoutHeaderPanel; import org.dcache.webadmin.view.panels.layout.LayoutItemPanel; import org.dcache.webadmin.view.util.EvenOddListView; import org.dcache.webadmin.view.util.Role; /** * Reusable Panel for the Listview on Poolspaces * * @author jans */ public class PoolListPanel extends BasePanel { private static final long serialVersionUID = 8191342980744557065L; private boolean _showCheckbox; private PoolList _poolList; public PoolListPanel(String id, IModel<? extends List<PoolSpaceBean>> model, boolean showCheckbox) { super(id); _showCheckbox = showCheckbox; Label selectBoxHeaderLabel = new Label("selectBoxHeader", getStringResource("PoolPanel.selected.header")); selectBoxHeaderLabel.setVisibilityAllowed(_showCheckbox); MetaDataRoleAuthorizationStrategy.authorize(selectBoxHeaderLabel, RENDER, Role.ADMIN); add(selectBoxHeaderLabel); add(new LayoutHeaderPanel("PoolPanel.layoutHeaderPanel")); add(new PoolBeanListView("poolPanelListview", model)); } private class PoolBeanListView extends EvenOddListView<PoolSpaceBean> { private static final long serialVersionUID = 5738279825189426773L; PoolBeanListView(String id, IModel<? extends List<PoolSpaceBean>> model) { super(id, model); } /* * This needs to be overridden to get the most recent data from Ajax * autorefresh. The sequence of calls is such that the behavior's * beforeRender is actually called after the form's, so the BasePage * refresh() adapter method cannot be used in this case. */ @Override protected void onBeforeRender() { /* * may be null if this panel is embedded * in a page other than PoolList */ if (_poolList != null) { setList(_poolList.getListViewList()); } super.onBeforeRender(); } @Override protected void populateItem(final ListItem<PoolSpaceBean> item) { PoolSpaceBean poolBean = item.getModelObject(); WebMarkupContainer checkboxColumn = new WebMarkupContainer("PoolPanel.checkboxRow"); checkboxColumn.setVisibilityAllowed(_showCheckbox); MetaDataRoleAuthorizationStrategy.authorize(checkboxColumn, RENDER, Role.ADMIN); CheckBox checkbox = new CheckBox("PoolPanel.selected", new PropertyModel<Boolean>(poolBean, "selected")); checkboxColumn.add(checkbox); item.add(checkboxColumn); String stateQualifier = ""; if (poolBean.isStatePending()) { item.add(AttributeModifier.replace("style", "color: #880000;")); stateQualifier = " (pending)"; } item.add(new Label("PoolPanel.name", poolBean.getName())); item.add(new Label("PoolPanel.domainName", poolBean.getDomainName())); item.add(new Label("PoolPanel.poolMode", poolBean.getPoolMode().toString() + stateQualifier)); item.add(new Label("PoolPanel.totalSpace", Long.valueOf(poolBean.getTotalSpace()).toString())); item.add(new Label("PoolPanel.freeSpace", Long.valueOf(poolBean.getFreeSpace()).toString())); item.add(new Label("PoolPanel.preciousSpace", Long.valueOf(poolBean.getPreciousSpace()).toString())); item.add(new LayoutItemPanel("PoolPanel.layoutItemPanel", poolBean.getPercentagePrecious(), poolBean.getPercentagePinned(), poolBean.getPercentageRemovable(), poolBean.getPercentageFree())); } } public void setPoolListPage(PoolList poolList) { _poolList = poolList; } }