package org.ovirt.engine.ui.userportal.client.views.extended.maingrid;
import com.google.gwt.core.client.GWT;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.vm_pools;
import org.ovirt.engine.ui.uicommon.models.userportal.UserPortalItemModel;
import org.ovirt.engine.ui.userportal.client.components.GridController;
import org.ovirt.engine.ui.userportal.client.components.GridElement;
import org.ovirt.engine.ui.userportal.client.views.extended.maingrid.components.MainGridItem;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;
public class UserPortalItemsGrid extends GridController<UserPortalItemModel> {
public VLayout gridLayout;
private MainGrid parent;
public UserPortalItemsGrid(MainGrid parent) {
this.parent = parent;
gridLayout = new VLayout();
gridLayout.setOverflow(Overflow.AUTO);
gridLayout.setResizeBarTarget("next");
}
public VLayout getLayout() {
return gridLayout;
}
@Override
public Object getId(UserPortalItemModel item) {
return item.getIsPool() ? ((vm_pools)item.getEntity()).getvm_pool_id() : ((VM)item.getEntity()).getvm_guid();
}
@Override
public GridElement<UserPortalItemModel> addItem(UserPortalItemModel item, int position) {
GWT.log("Adding " + item.getName());
final MainGridItem gridItem = new MainGridItem(this, item);
gridItem.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
select(gridItem);
}
});
gridLayout.addMember(gridItem, position);
return gridItem;
}
@Override
public void removeItem(GridElement<UserPortalItemModel> itemView) {
gridLayout.removeMember((HLayout)itemView);
}
public void keyPressed(String keyName) {
if (keyName.equals("Arrow_Up")) {
if (selectedElement != null) {
int selectedElementPos = gridLayout.getMemberNumber((Canvas)selectedElement);
if (selectedElementPos > 0)
select((GridElement<UserPortalItemModel>)gridLayout.getMember(selectedElementPos - 1));
}
}
if (keyName.equals("Arrow_Down")) {
if (selectedElement != null) {
int selectedElementPos = gridLayout.getMemberNumber((Canvas)selectedElement);
if (selectedElementPos < gridLayout.getMembers().length-1)
select((GridElement<UserPortalItemModel>)gridLayout.getMember(selectedElementPos + 1));
}
}
}
public MainGrid getMainGrid() {
return parent;
}
}