package org.ovirt.engine.ui.userportal.client.binders.specific; import java.util.ArrayList; import org.ovirt.engine.core.common.businessentities.permissions; import org.ovirt.engine.ui.uicommon.models.Model; import org.ovirt.engine.ui.uicommon.models.configure.PermissionListModel; import org.ovirt.engine.ui.userportal.client.binders.ObjectNameResolver; import org.ovirt.engine.ui.userportal.client.binders.RendererType; import org.ovirt.engine.ui.userportal.client.binders.ToolbarAction; import org.ovirt.engine.ui.userportal.client.binders.interfaces.ListModelWithActionsBinder; import org.ovirt.engine.ui.userportal.client.components.GridController; import org.ovirt.engine.ui.userportal.client.modalpanels.AddPermissionsModalPanel; import org.ovirt.engine.ui.userportal.client.modalpanels.ItemRemoveModalPanel; import com.smartgwt.client.data.RecordList; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; public class PermissionListModelBinder implements ListModelWithActionsBinder { PermissionListModel model; RendererType rendererType = RendererType.GridWithToolbar; public void setModel(Model model) { this.model = (PermissionListModel)model; } @Override public ListGridField[] getFields() { return fields; } @Override public RecordList calcRecords() { RecordList records = new RecordList(); ArrayList<permissions> permissions_list = (ArrayList<permissions>)model.getItems(); if (permissions_list != null) { for (permissions p : permissions_list) { ListGridRecord r = new ListGridRecord(); r.setAttribute("user", p.getOwnerName()); r.setAttribute("role", p.getRoleName()); r.setAttribute("entity", p); r.setAttribute("entityGuid", p.getId()); records.add(r); } } return records; } private static ListGridField[] fields = { new ListGridField("user", "User", 400), new ListGridField("role", "Role"), }; @Override public RendererType getRendererType() { return rendererType; } @Override public ToolbarAction[] getCommands(final GridController gridController) { ToolbarAction[] actions = new ToolbarAction[] { new ToolbarAction(model.getAddCommand(), new ClickHandler() { @Override public void onClick(ClickEvent event) { model.getAddCommand().Execute(); AddPermissionsModalPanel panel = new AddPermissionsModalPanel(model); panel.draw(); } }), new ToolbarAction(model.getRemoveCommand(), new ClickHandler() { @Override public void onClick(ClickEvent event) { model.getRemoveCommand().Execute(); ItemRemoveModalPanel panel = new ItemRemoveModalPanel(model.getWindow().getTitle(), model.getWindow().getMessage(), model, new ObjectNameResolver() { @Override public String getItemName(Object o) { return "Role " + ((permissions)o).getRoleName() + " on User " + ((permissions)o).getOwnerName(); } }, gridController); panel.draw(); } }) }; return actions; } }