Rev 4004 | Rev 4125 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.hotspot.dashbaord.client.inbox;import in.shop2020.hotspot.dashbaord.client.event.LoadOrderDetailsEvent;import in.shop2020.hotspot.dashbaord.shared.actions.Alert;import in.shop2020.hotspot.dashbaord.shared.actions.Order;import java.util.Date;import java.util.List;import org.enunes.gwt.mvp.client.EventBus;import com.google.gwt.core.client.GWT;import com.google.gwt.dom.client.Style.Unit;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.user.cellview.client.AbstractPager;import com.google.gwt.user.cellview.client.DataGrid;import com.google.gwt.user.cellview.client.PageSizePager;import com.google.gwt.user.cellview.client.RowStyles;import com.google.gwt.user.cellview.client.SimplePager;import com.google.gwt.user.cellview.client.TextColumn;import com.google.gwt.user.client.ui.ResizeComposite;import com.google.gwt.user.client.ui.Widget;import com.google.gwt.view.client.AsyncDataProvider;import com.google.gwt.view.client.HasData;import com.google.gwt.view.client.Range;import com.google.gwt.view.client.SelectionChangeEvent;import com.google.gwt.view.client.SingleSelectionModel;public class OrderList extends ResizeComposite{public interface Listener{void onSelectItem();}interface OrderListUiBinder extends UiBinder<Widget, OrderList>{ }interface SelectionStyle extends CssResource{String selectedRow();String fatalRow();String criticalRow();}//add gin hereprivate static final OrderListUiBinder binder = GWT.create(OrderListUiBinder.class);@UiField DataGrid<Order> table;// Create paging controls.@UiField SimplePager pager = new SimplePager();@UiField SelectionStyle selectionStyle;private TextColumn<Order> batchColumn = new TextColumn<Order>() {@Overridepublic String getValue(Order order) {return "" + order.getBatchNo();}};private TextColumn<Order> serialNoColumn = new TextColumn<Order>() {@Overridepublic String getValue(Order order) {return "" + order.getSerialNo();}};private TextColumn<Order> paymentModeColumn = new TextColumn<Order>() {@Overridepublic String getValue(Order order) {return order.isCod() ? "COD" : "Prepaid";}};private TextColumn<Order> idColumn = new TextColumn<Order>() {@Overridepublic String getValue(Order order) {return "" + order.getOrderId();}};private TextColumn<Order> productDescriptionColumn = new TextColumn<Order>() {@Overridepublic String getValue(Order order) {StringBuilder productDescription = new StringBuilder(order.getProductGroup());if(order.getBrand()!=null)productDescription.append(" " + order.getBrand());if(order.getModelNumber()!=null)productDescription.append(" " + order.getModelNumber());if(order.getModelName()!=null)productDescription.append(" " + order.getModelName());if(order.getColor()!=null)productDescription.append(" " + order.getColor());return productDescription.toString();}};private TextColumn<Order> creationDateColumn = new TextColumn<Order>() {@Overridepublic String getValue(Order order) {return getDisplayableDate(new Date(order.getCreatedOn()))+"";}};private TextColumn<Order> promisedDeliveryDateColumn = new TextColumn<Order>() {@Overridepublic String getValue(Order order) {return getDisplayableDate(new Date(order.getPromisedDeliveryTime()))+"";}};private TextColumn<Order> expectedDeliveryDateColumn = new TextColumn<Order>() {@Overridepublic String getValue(Order order) {return getDisplayableDate(new Date(order.getExpectedDeliveryTime()))+"";}};private TextColumn<Order> statusMessageColumn = new TextColumn<Order>() {@Overridepublic String getValue(Order order) {return order.getStatusMessage();}};AsyncDataProvider<Order> asyncDataProvider = new AsyncDataProvider<Order>() {@Overrideprotected void onRangeChanged(HasData<Order> display) {Range range = display.getVisibleRange();int start = range.getStart();int limit = range.getLength();int lastIndex = start + limit;if(lastIndex > orders.size()){lastIndex = orders.size();}asyncDataProvider.updateRowCount(orders.size(), true);asyncDataProvider.updateRowData(start, orders.subList(start, lastIndex));}};private final EventBus eventbus;private final List<Order> orders;public OrderList(EventBus eventbus, List<Order> orders){this.orders = orders;this.eventbus = eventbus;initWidget(binder.createAndBindUi(this));initTable();}private void initTable(){//Add custom styles to show in case we want to alert the usertable.setRowStyles(new RowStyles<Order>(){@Overridepublic String getStyleNames(Order order, int rowIndex) {Alert alert = order.getAlert();String style = "";switch(alert){case DELIVERY_TIME_EXCEEDED:case SHIPPING_TIME_EXCEEDED:case VERIFICATION_DELAYED_TOO_MUCH:case ACCEPTANCE_DELAYED_TOO_MUCH:case ORDER_NOT_CONNECTED_FOR_TOO_LONG:style = selectionStyle.fatalRow();break;case ACCEPTANCE_DELAYED:case VERIFICATION_DELAYED:case ORDER_NOT_CONNECTED:style = selectionStyle.criticalRow();break;case WARNING:case NONE:}return style;}});// Add the columns.table.addColumn(batchColumn, "Batch");table.addColumn(serialNoColumn, "S.No.");table.addColumn(paymentModeColumn, "Type");table.addColumn(idColumn, "Order Id");table.addColumn(productDescriptionColumn, "Product Description");table.addColumn(creationDateColumn, "Creation Date");table.addColumn(promisedDeliveryDateColumn, "Promised Delivery");table.addColumn(expectedDeliveryDateColumn, "Expected Delivery");table.addColumn(statusMessageColumn, "Current Status");//Set the widthstable.setWidth("100%");table.setColumnWidth(batchColumn, 40.0, Unit.PX);table.setColumnWidth(serialNoColumn, 50.0, Unit.PX);table.setColumnWidth(paymentModeColumn, 60.0, Unit.PX);table.setColumnWidth(idColumn, 60.0, Unit.PX);table.setColumnWidth(productDescriptionColumn, 250.0, Unit.PX);table.setColumnWidth(creationDateColumn, 150.0, Unit.PX);table.setColumnWidth(promisedDeliveryDateColumn, 150.0, Unit.PX);table.setColumnWidth(expectedDeliveryDateColumn, 150.0, Unit.PX);table.setColumnWidth(statusMessageColumn, 200.0, Unit.PX);// Connect the table to the data provider.asyncDataProvider.addDataDisplay(table);//Add paging supportpager.setDisplay(table);// Initialize the dataint lastIndex = pager.getPageSize();if(lastIndex > orders.size()){lastIndex = orders.size();}asyncDataProvider.updateRowCount(orders.size(), true);asyncDataProvider.updateRowData(0, orders.subList(0, lastIndex));// Add a selection model to handle item selection.final SingleSelectionModel<Order> selectionModel = new SingleSelectionModel<Order>();table.setSelectionModel(selectionModel);selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {@Overridepublic void onSelectionChange(SelectionChangeEvent event) {Order selectedOrder = selectionModel.getSelectedObject();eventbus.fireEvent(new LoadOrderDetailsEvent(selectedOrder));}});}private String getDisplayableDate(Date date){String dateString = date.toString();dateString = dateString.substring(0, dateString.lastIndexOf(" "));dateString = dateString.substring(0, dateString.lastIndexOf(" "));return dateString;}}