package org.ovirt.engine.ui.webadmin.section.main.view.popup.configure; import org.ovirt.engine.core.common.businessentities.permissions; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.ApplicationResources; import org.ovirt.engine.ui.webadmin.gin.ClientGinjector; import org.ovirt.engine.ui.webadmin.uicommon.model.SystemPermissionModelProvider; import org.ovirt.engine.ui.webadmin.widget.action.UiCommandButtonDefinition; import org.ovirt.engine.ui.webadmin.widget.table.SimpleActionTable; import org.ovirt.engine.ui.webadmin.widget.table.column.PermissionTypeColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.TextColumnWithTooltip; 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; 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.gwt.view.client.SelectionChangeEvent; 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<permissions> table; private final SystemPermissionModelProvider modelProvider; @Inject public SystemPermissionView(ClientGinjector ginjector, EventBus eventBus, ApplicationResources resources, ApplicationConstants constants, SystemPermissionModelProvider modelProvider) { super(); this.modelProvider = modelProvider; initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); localize(constants); content = new SplitLayoutPanel(); content.setWidth("100%"); content.setHeight("100%"); tabContent.add(content); initTable(); } private void localize(ApplicationConstants constants) { } private void initTable() { table = new SimpleActionTable<permissions>(modelProvider, getTableHeaderlessResources(), getTableResources()); content.add(table); table.addColumn(new PermissionTypeColumn(), "", "30px"); TextColumnWithTooltip<permissions> userColumn = new TextColumnWithTooltip<permissions>() { @Override public String getValue(permissions object) { return object.getOwnerName(); } }; table.addColumn(userColumn, "User"); TextColumnWithTooltip<permissions> roleColumn = new TextColumnWithTooltip<permissions>() { @Override public String getValue(permissions object) { return object.getRoleName(); } }; table.addColumn(roleColumn, "Role"); table.addActionButton(new UiCommandButtonDefinition<permissions>("Add") { @Override protected UICommand resolveCommand() { return modelProvider.getModel().getAddCommand(); } }); table.addActionButton(new UiCommandButtonDefinition<permissions>("Remove") { @Override protected UICommand resolveCommand() { return modelProvider.getModel().getRemoveCommand(); } }); table.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { modelProvider.setSelectedItems(table.getSelectionModel().getSelectedList()); } }); } protected Resources getTableHeaderlessResources() { return (Resources) GWT.create(MainTableHeaderlessResources.class); } protected Resources getTableResources() { return (Resources) GWT.create(MainTableResources.class); } public interface MainTableHeaderlessResources extends CellTable.Resources { interface TableStyle extends CellTable.Style { } @Override @Source({ CellTable.Style.DEFAULT_CSS, "org/ovirt/engine/ui/webadmin/css/TabCellTableHeaderless.css" }) TableStyle cellTableStyle(); } public interface MainTableResources extends CellTable.Resources { interface TableStyle extends CellTable.Style { } @Override @Source({ CellTable.Style.DEFAULT_CSS, "org/ovirt/engine/ui/webadmin/css/TabCellTable.css" }) TableStyle cellTableStyle(); } }