package org.ovirt.engine.ui.userportal.client.components; import java.util.ArrayList; import java.util.List; import org.ovirt.engine.ui.uicommon.models.ListModel; import com.google.gwt.core.client.GWT; import com.smartgwt.client.data.Record; import com.smartgwt.client.data.RecordList; import com.smartgwt.client.widgets.grid.ListGridRecord; import com.smartgwt.client.widgets.grid.events.SelectionChangedHandler; import com.smartgwt.client.widgets.grid.events.SelectionEvent; public class SubTabGridWithToolbar extends SubTabGrid { private ToolBar toolBar; private List<Object> selectedItemsIds = new ArrayList<Object>(); public SubTabGridWithToolbar(final ListModel model) { super(); grid.addSelectionChangedHandler(new SelectionChangedHandler() { @Override public void onSelectionChanged(SelectionEvent event) { if (grid.getSelection().length == 1) { model.setSelectedItem(grid.getSelectedRecord().getAttributeAsObject("entity")); } List<Object> selectedItems = new ArrayList<Object>(); selectedItemsIds.clear(); for (ListGridRecord lgr : grid.getSelection()) { selectedItems.add(lgr.getAttributeAsObject("entity")); selectedItemsIds.add(lgr.getAttributeAsObject("entityGuid")); GWT.log("Adding: " + lgr.getAttributeAsObject("entityGuid")); } model.setSelectedItems(selectedItems); } }); } protected void addLayer() { toolBar = new ToolBar(); addMember(toolBar); super.addLayer(); } public ToolBar getToolbar() { return toolBar; } @Override public void setData(RecordList data) { if (selectedItemsIds.isEmpty() || data.getLength() == 0) { super.setData(data); return; } ArrayList<Record> recordsToSelect = new ArrayList<Record>(); for (int i=0; i<data.getLength(); i++) { Record currRecord = data.get(i); if (selectedItemsIds.contains(currRecord.getAttributeAsObject("entityGuid"))) recordsToSelect.add(currRecord); } GWT.log("Rows to select: "); for (Record r : recordsToSelect) { GWT.log("*** " + r.getAttribute("name")); } super.setData(data); grid.selectRecords(recordsToSelect.toArray(new Record[0])); } }