package org.ovirt.engine.ui.common.widget.uicommon.permissions;
import java.util.Date;
import org.ovirt.engine.core.common.businessentities.Permission;
import org.ovirt.engine.ui.common.CommonApplicationConstants;
import org.ovirt.engine.ui.common.gin.AssetProvider;
import org.ovirt.engine.ui.common.system.ClientStorage;
import org.ovirt.engine.ui.common.uicommon.model.SearchableTableModelProvider;
import org.ovirt.engine.ui.common.widget.action.UiCommandButtonDefinition;
import org.ovirt.engine.ui.common.widget.renderer.FullDateTimeRenderer;
import org.ovirt.engine.ui.common.widget.table.column.AbstractRenderedTextColumn;
import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
import org.ovirt.engine.ui.common.widget.table.column.PermissionTypeColumn;
import org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundTableWidget;
import org.ovirt.engine.ui.uicommonweb.UICommand;
import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel;
import com.google.gwt.event.shared.EventBus;
public class PermissionListModelTable<P extends PermissionListModel<?>> extends AbstractModelBoundTableWidget<Permission, P> {
private static final CommonApplicationConstants constants = AssetProvider.getConstants();
public PermissionListModelTable(
SearchableTableModelProvider<Permission, P> modelProvider,
EventBus eventBus, ClientStorage clientStorage) {
super(modelProvider, eventBus, clientStorage, false);
}
@Override
public void initTable() {
getTable().enableColumnResizing();
//add columns
addTypeColumn();
addUserColumn();
addAuthzColumn();
addNameSpaceColumn();
addRoleColumn();
addCreationDateColum();
// add buttons
addAddPermissionsButton();
addRemovePermissionsButton();
}
private void addTypeColumn() {
PermissionTypeColumn typeColumn = new PermissionTypeColumn();
typeColumn.setContextMenuTitle(constants.typePermission());
getTable().addColumn(typeColumn, constants.empty(), "30px"); //$NON-NLS-1$
}
private void addUserColumn() {
AbstractTextColumn<Permission> userColumn = new AbstractTextColumn<Permission>() {
@Override
public String getValue(Permission object) {
return object.getOwnerName();
}
};
userColumn.makeSortable();
getTable().addColumn(userColumn, constants.userPermission(), "300px"); //$NON-NLS-1$
}
private void addAuthzColumn() {
AbstractTextColumn<Permission> authzColumn = new AbstractTextColumn<Permission>() {
@Override
public String getValue(Permission object) {
return object.getAuthz();
}
};
authzColumn.makeSortable();
getTable().addColumn(authzColumn, constants.authz(), "150px"); //$NON-NLS-1$
}
private void addNameSpaceColumn() {
AbstractTextColumn<Permission> namespaceColumn = new AbstractTextColumn<Permission>() {
@Override
public String getValue(Permission object) {
return object.getNamespace();
}
};
namespaceColumn.makeSortable();
getTable().addColumn(namespaceColumn, constants.namespace(), "150px"); //$NON-NLS-1$
}
private void addRoleColumn() {
AbstractTextColumn<Permission> roleColumn = new AbstractTextColumn<Permission>() {
@Override
public String getValue(Permission object) {
return object.getRoleName();
}
};
roleColumn.makeSortable();
getTable().addColumn(roleColumn, constants.rolePermission(), "300px"); //$NON-NLS-1$
}
private void addCreationDateColum() {
AbstractTextColumn<Permission> creationDateColumn = new AbstractRenderedTextColumn<Permission, Date>(new FullDateTimeRenderer()) {
@Override
public Date getRawValue(Permission object) {
return new Date(object.getCreationDate() * 1000); // GWT doesn't have TimeUnit.java
}
};
getTable().addColumn(creationDateColumn, constants.permissionsCreationDate(), "300px"); //$NON-NLS-1$
creationDateColumn.makeSortable();
}
private void addAddPermissionsButton() {
getTable().addActionButton(new UiCommandButtonDefinition<Permission>(getEventBus(), constants.addPermission()) {
@Override
protected UICommand resolveCommand() {
return getModel().getAddCommand();
}
});
}
private void addRemovePermissionsButton() {
getTable().addActionButton(new UiCommandButtonDefinition<Permission>(getEventBus(), constants.removePermission()) {
@Override
protected UICommand resolveCommand() {
return getModel().getRemoveCommand();
}
});
}
}