Subversion Repositories SmartDukaan

Rev

Rev 960 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.hotspot.dashbaord.client.inbox;

import in.shop2020.hotspot.dashbaord.client.event.LoadItemDetailsEvent;
import in.shop2020.hotspot.dashbaord.shared.actions.Item;

import java.util.List;

import org.enunes.gwt.mvp.client.EventBus;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTMLTable.Cell;
import com.google.gwt.user.client.ui.ResizeComposite;
import com.google.gwt.user.client.ui.Widget;

public class ItemList extends ResizeComposite{

        interface ItemListUiBinder extends UiBinder<Widget, ItemList> {
        }
        
        private static final ItemListUiBinder uiBinder = GWT.create(ItemListUiBinder.class);
        
        interface SelectionStyle extends CssResource{
                String selectedRow();
                String alertsRow();
        }

        @UiField FlexTable header;
        @UiField FlexTable itemDescriptionTable;
        @UiField SelectionStyle selectionStyle;
        
        private int selectedRow = -1;
        
        private final EventBus eventbus;
        
        private final List<Item> items;

        public ItemList(EventBus eventbus, List<Item> items) {
                this.items = items;
                this.eventbus = eventbus;
                initWidget(uiBinder.createAndBindUi(this));
                initHeader();
                updateItemDescriptionTable(this.items);
        }

        private void initHeader(){
                // Initialize the header.
            header.getColumnFormatter().setWidth(0, "128px");
            header.getColumnFormatter().setWidth(1, "128px");
            header.getColumnFormatter().setWidth(2, "200px");
            header.getColumnFormatter().setWidth(3, "200px");
            header.getColumnFormatter().setWidth(4, "200px");
            header.getColumnFormatter().setWidth(5, "128px");
            header.getColumnFormatter().setWidth(6, "128px");

            header.setText(0, 0, "Item Id");
            header.setText(0, 1, "Product Group");
            header.setText(0, 2, "Brand");
            header.setText(0, 3, "Model Number");
            header.setText(0, 4, "Model Name");
            header.setText(0, 5, "MRP");
            header.setText(0, 6, "Category");
        }
        
        private void updateItemDescriptionTable(List<Item> items){
                itemDescriptionTable.getColumnFormatter().setWidth(0, "128px");
                itemDescriptionTable.getColumnFormatter().setWidth(1, "128px");
                itemDescriptionTable.getColumnFormatter().setWidth(2, "200px");
                itemDescriptionTable.getColumnFormatter().setWidth(3, "200px");
                itemDescriptionTable.getColumnFormatter().setWidth(4, "200px");
                itemDescriptionTable.getColumnFormatter().setWidth(5, "128px");
                itemDescriptionTable.getColumnFormatter().setWidth(6, "128px");
                
                int i=0;
                for(final Item item : items){
                        int col = 0;
                        itemDescriptionTable.setText(i, col++, item.getId() + "");
                        itemDescriptionTable.setText(i, col++, item.getProductGroup());
                        itemDescriptionTable.setText(i, col++, item.getBrand());
                        itemDescriptionTable.setText(i, col++, item.getModelNumber());
                        itemDescriptionTable.setText(i, col++, item.getModelName());
                        itemDescriptionTable.setText(i, col++, item.getMrp()+"");
                        itemDescriptionTable.setText(i, col++, item.getCategory()+"");
                        i++;
                }
        }
        
        @UiHandler("itemDescriptionTable")
        void onClick(ClickEvent event) {
                Cell cell = itemDescriptionTable.getCellForEvent(event);
                int newRowIndex = cell.getRowIndex();
                selectRow(newRowIndex);
                String itemId = itemDescriptionTable.getText(newRowIndex, 0);
                eventbus.fireEvent(new LoadItemDetailsEvent(itemId));
        }

        private void selectRow(int row) {
                String style = selectionStyle.selectedRow();
                if(selectedRow != -1){
                        itemDescriptionTable.getRowFormatter().removeStyleName(selectedRow, style);
                }
                    
                itemDescriptionTable.getRowFormatter().addStyleName(row, style);
            selectedRow = row;
        }

}