package org.ovirt.engine.ui.userportal.client.binders.specific; import java.util.ArrayList; import org.ovirt.engine.core.common.businessentities.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.VmNetworkInterface; import org.ovirt.engine.ui.uicommon.models.Model; import org.ovirt.engine.ui.uicommon.models.templates.TemplateInterfaceListModel; import org.ovirt.engine.ui.uicommon.models.vms.VmInterfaceModel; import org.ovirt.engine.ui.uicompat.EnumTranslator; import org.ovirt.engine.ui.uicompat.Translator; 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.ItemRemoveModalPanel; import org.ovirt.engine.ui.userportal.client.modalpanels.NewNICModalPanel; 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 TemplateInterfaceListModelBinder implements ListModelWithActionsBinder { TemplateInterfaceListModel model; RendererType rendererType = RendererType.GridWithToolbar; private static ListGridField[] fields = { new ListGridField("name", "Name"), new ListGridField("networkName", "Network Name"), new ListGridField("type", "Type", 120), }; public void setModel(Model model) { this.model = (TemplateInterfaceListModel)model; } @Override public RendererType getRendererType() { return rendererType; } @Override public ToolbarAction[] getCommands(final GridController gridController) { ToolbarAction[] actions = new ToolbarAction[] { new ToolbarAction(model.getNewCommand(), new ClickHandler() { @Override public void onClick(ClickEvent event) { model.getNewCommand().Execute(); NewNICModalPanel panel = new NewNICModalPanel(model, (VmInterfaceModel)model.getWindow()); panel.draw(); } }), new ToolbarAction(model.getEditCommand(), new ClickHandler() { @Override public void onClick(ClickEvent event) { model.getEditCommand().Execute(); NewNICModalPanel panel = new NewNICModalPanel(model, (VmInterfaceModel)model.getWindow()); 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 ((VmNetworkInterface)o).getName(); } }, gridController); panel.draw(); } }) }; return actions; } @Override public ListGridField[] getFields() { return fields; } @Override public RecordList calcRecords() { RecordList records = new RecordList(); ArrayList<VmNetworkInterface> interfaces = (ArrayList<VmNetworkInterface>)model.getItems(); Translator translator = EnumTranslator.Create(VmInterfaceType.class); if (interfaces != null) { for (VmNetworkInterface intrface : interfaces) { ListGridRecord r = new ListGridRecord(); r.setAttribute("name", intrface.getName()); r.setAttribute("networkName", intrface.getNetworkName()); r.setAttribute("type", translator.get(VmInterfaceType.forValue(intrface.getType()))); r.setAttribute("entity", intrface); r.setAttribute("entityGuid", intrface.getId()); records.add(r); } } return records; } }