/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.security.web.user;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.repeater.DefaultItemReuseStrategy;
import org.apache.wicket.model.IModel;
import org.geoserver.security.impl.GeoServerUser;
import org.geoserver.web.CatalogIconFactory;
import org.geoserver.web.wicket.GeoServerDataProvider;
import org.geoserver.web.wicket.GeoServerTablePanel;
import org.geoserver.web.wicket.Icon;
import org.geoserver.web.wicket.SimpleAjaxLink;
import org.geoserver.web.wicket.GeoServerDataProvider.Property;
@SuppressWarnings("serial")
public class UserTablePanel extends GeoServerTablePanel<GeoServerUser> {
String ugServiceName;
public UserTablePanel(String id, String ugServiceName, GeoServerDataProvider<GeoServerUser> dataProvider) {
super(id, dataProvider);
this.ugServiceName = ugServiceName;
}
public UserTablePanel(String id, String ugServiceName, GeoServerDataProvider<GeoServerUser> dataProvider, boolean selectable) {
super(id, dataProvider, selectable);
this.ugServiceName = ugServiceName;
setItemReuseStrategy(new DefaultItemReuseStrategy());
}
@Override
protected Component getComponentForProperty(String id, IModel<GeoServerUser> itemModel,
Property<GeoServerUser> property) {
if (property == UserListProvider.USERNAME) {
return editUserLink(id, itemModel, property);
} else if (property == UserListProvider.ENABLED) {
if((Boolean) property.getModel(itemModel).getObject())
return new Icon(id, CatalogIconFactory.ENABLED_ICON);
else
return new Label(id, "");
} else if (property == UserListProvider.HASATTRIBUTES) {
if((Boolean) property.getModel(itemModel).getObject())
return new Icon(id, CatalogIconFactory.ENABLED_ICON);
else
return new Label(id, "");
}
throw new RuntimeException("Uknown property " + property);
}
protected Component editUserLink(String id, IModel itemModel, Property<GeoServerUser> property) {
return new SimpleAjaxLink(id, itemModel, property.getModel(itemModel)) {
@Override
protected void onClick(AjaxRequestTarget target) {
setResponsePage(new EditUserPage(ugServiceName,(GeoServerUser) getDefaultModelObject())
.setReturnPage(getPage()));
}
};
}
}