package org.brixcms.plugin.usermgmt.user;
import java.util.List;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
import org.brixcms.Brix;
import org.brixcms.plugin.jpa.JpaPluginLocator;
import org.brixcms.plugin.jpa.web.admin.GridDataSource;
import org.brixcms.plugin.usermgmt.BaseManagementPlugin;
import org.brixcms.plugin.usermgmt.ManagementService;
import org.brixcms.plugin.usermgmt.role.Role;
import org.brixcms.plugin.usermgmt.user.admin.UserEntityPlugin;
import org.brixcms.plugin.usermgmt.user.service.UserService;
import org.springframework.context.ApplicationContext;
import com.inmethod.grid.IGridColumn;
import com.inmethod.grid.column.PropertyColumn;
/**
* @author dan.simko@gmail.com
*/
public class UserPlugin extends BaseManagementPlugin<User, UserFilter> {
public static final String ID = UserPlugin.class.getName();
public UserPlugin(Brix brix, ApplicationContext context) {
super(brix, context);
registerEntityPlugin(new UserEntityPlugin(this));
}
public static UserPlugin get(Brix brix) {
return (UserPlugin) brix.getPlugin(ID);
}
public static UserPlugin get() {
return get(Brix.get());
}
@Override
public String getId() {
return ID;
}
@Override
protected IModel<String> getTabName() {
return new ResourceModel("usermgmt-plugin.usersTabName");
}
@Override
protected JpaPluginLocator<User, Long, UserFilter> getPluginLocator() {
return new UserPluginLocator();
}
@Override
public Class<User> getEntityClass() {
return User.class;
}
@Override
public void addGridColumns(List<IGridColumn<GridDataSource<User, Long, UserFilter>, User, Object>> columns) {
columns.add(new PropertyColumn<GridDataSource<User, Long, UserFilter>, User, Object, Object>(
new ResourceModel("usermgmt-plugin.username"), "username", "username"));
columns.add(new PropertyColumn<GridDataSource<User, Long, UserFilter>, User, Object, Object>(
new ResourceModel("usermgmt-plugin.email"), "email", "email"));
}
@Override
protected ManagementService<User> getManagementService() {
return context.getBean(UserService.class);
}
public boolean canEditUserRoles(User user) {
return true;
}
public boolean canEditRolePermissions(Role role) {
return true;
}
}