package org.ovirt.engine.ui.webadmin.section.main.view.popup.configure; import org.ovirt.engine.core.common.businessentities.Permission; import org.ovirt.engine.ui.common.MainTableHeaderlessResources; import org.ovirt.engine.ui.common.MainTableResources; import org.ovirt.engine.ui.common.system.ClientStorage; import org.ovirt.engine.ui.common.widget.table.SimpleActionTable; 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.uicommonweb.UICommand; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.gin.AssetProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.SystemPermissionModelProvider; import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition; import com.google.gwt.core.client.GWT; import com.google.gwt.event.shared.EventBus; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.cellview.client.CellTable.Resources; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.SplitLayoutPanel; import com.google.inject.Inject; public class SystemPermissionView extends Composite { interface ViewUiBinder extends UiBinder<SimplePanel, SystemPermissionView> { ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); } @UiField SimplePanel tabContent; SplitLayoutPanel content; private SimpleActionTable<Permission> table; private final SystemPermissionModelProvider modelProvider; private final EventBus eventBus; private final ClientStorage clientStorage; private static final ApplicationConstants constants = AssetProvider.getConstants(); @Inject public SystemPermissionView(SystemPermissionModelProvider modelProvider, EventBus eventBus, ClientStorage clientStorage) { super(); this.modelProvider = modelProvider; this.eventBus = eventBus; this.clientStorage = clientStorage; initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); localize(); content = new SplitLayoutPanel(); content.setWidth("100%"); //$NON-NLS-1$ content.setHeight("100%"); //$NON-NLS-1$ tabContent.add(content); initTable(); } private void localize() { } private void initTable() { table = new SimpleActionTable<>(modelProvider, getTableHeaderlessResources(), getTableResources(), eventBus, clientStorage); content.add(table); table.enableColumnResizing(); table.addColumn(new PermissionTypeColumn(), constants.empty(), "30px"); //$NON-NLS-1$ AbstractTextColumn<Permission> userColumn = new AbstractTextColumn<Permission>() { @Override public String getValue(Permission object) { return object.getOwnerName(); } }; table.addColumn(userColumn, constants.userPermission(), "300px"); //$NON-NLS-1$ AbstractTextColumn<Permission> authzColumn = new AbstractTextColumn<Permission>() { @Override public String getValue(Permission object) { return object.getAuthz(); } }; table.addColumn(authzColumn, constants.authz(), "200px"); //$NON-NLS-1$ AbstractTextColumn<Permission> namespaceColumn = new AbstractTextColumn<Permission>() { @Override public String getValue(Permission object) { return object.getNamespace(); } }; table.addColumn(namespaceColumn, constants.namespace(), "200px"); //$NON-NLS-1$ AbstractTextColumn<Permission> roleColumn = new AbstractTextColumn<Permission>() { @Override public String getValue(Permission object) { return object.getRoleName(); } }; table.addColumn(roleColumn, constants.rolePermission()); table.addActionButton(new WebAdminButtonDefinition<Permission>(constants.addPermission()) { @Override protected UICommand resolveCommand() { return modelProvider.getModel().getAddCommand(); } }); table.addActionButton(new WebAdminButtonDefinition<Permission>(constants.removePermission()) { @Override protected UICommand resolveCommand() { return modelProvider.getModel().getRemoveCommand(); } }); table.getSelectionModel().addSelectionChangeHandler(event -> modelProvider.setSelectedItems(table.getSelectionModel().getSelectedList())); } protected Resources getTableHeaderlessResources() { return (Resources) GWT.create(MainTableHeaderlessResources.class); } protected Resources getTableResources() { return (Resources) GWT.create(MainTableResources.class); } }