Rev 19060 | 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.client.event.LoadOrderListEvent;import in.shop2020.hotspot.dashbaord.shared.actions.OrderAlert;import in.shop2020.hotspot.dashbaord.shared.actions.Order;import in.shop2020.hotspot.dashbaord.shared.actions.OrderType;import java.util.Date;import java.util.List;import org.enunes.gwt.mvp.client.EventBus;import com.google.gwt.cell.client.CheckboxCell;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.Column;import com.google.gwt.user.cellview.client.DataGrid;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 {interface OrderListUiBinder extends UiBinder<Widget, OrderList>{}interface SelectionStyle extends CssResource {String selectedRow();String fatalRow();String criticalRow();String badInventory();String todayShippingInStockRow();String todayShippingNotInStockRow();String laterShippingRow();}//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;Column<Order, Boolean> checkboxColumn = new Column<Order, Boolean>(new CheckboxCell(true, false)) {@Overridepublic Boolean getValue(Order order) {return table.getSelectionModel().isSelected(order);}};private TextColumn<Order> transactionIdColumn = new TextColumn<Order>() {@Overridepublic String getValue(Order order) {return "" + order.getTransactionId();}};private TextColumn<Order> promisedShippingDateColumn = new TextColumn<Order>() {@Overridepublic String getValue(Order order) {return getDisplayableDate(new Date(order.getPromisedShippingTime()))+"";}};private TextColumn<Order> paymentModeColumn = new TextColumn<Order>() {@Overridepublic String getValue(Order order) {return order.isCod() ? "COD" : "Prepaid";}};private TextColumn<Order> orderFromColumn = new TextColumn<Order>() {@Overridepublic String getValue(Order order) {return order.getSource();}};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());if(order.getDealText()!=null)productDescription.append(" (" + order.getDealText() + ")");if(order.getQuantity() > 1)productDescription.append(" (" + order.getQuantity() + ")");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>() {// @Override// public String getValue(Order order) {// return getDisplayableDate(new Date(order.getPromisedDeliveryTime()))+"";// }// };//// private TextColumn<Order> expectedDeliveryDateColumn = new TextColumn<Order>() {// @Override// public 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 newStart = range.getStart();// This is to prevent the recursive firing of onRangeChanged events.// Every time fresh data is pushed into the DataProvider, this// method is called. This, in turn, fires an event to refresh the// data. If the start of the new range is same as that of the// currently loaded data, there is no point in proceeding further.GWT.log(this + "Current start: " + start + ", New start:" + newStart);if(newStart == start)return;int limit = range.getLength();eventbus.fireEvent(new LoadOrderListEvent(orderType, newStart, limit));}};private final EventBus eventbus;private final OrderType orderType;private final List<Order> orders;private int count;private final int start;public OrderList(EventBus eventbus, OrderType orderType, List<Order> orders, int start, int count){this.orders = orders;this.eventbus = eventbus;this.orderType = orderType;this.start = start;this.count = count;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) {if(order==null)return "";OrderAlert 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 TODAY_SHIPPING_IN_STOCK:style = selectionStyle.todayShippingInStockRow();break;case TODAY_SHIPPING_NOT_IN_STOCK:style = selectionStyle.todayShippingNotInStockRow();break;case LATER_SHIPPING_IN_STOCK:style = selectionStyle.laterShippingRow();break;case WARNING:case NONE:}if(order.getProductCondition()==1) {style = selectionStyle.badInventory();}return style;}});// Add the columns.table.addColumn(checkboxColumn,"");table.addColumn(promisedShippingDateColumn, "Promised Shipping");table.addColumn(transactionIdColumn, "Txn Id");table.addColumn(paymentModeColumn, "Type");table.addColumn(orderFromColumn, "Source");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(checkboxColumn, 30, Unit.PX);table.setColumnWidth(promisedShippingDateColumn, 120.0, Unit.PX);table.setColumnWidth(transactionIdColumn, 70.0, Unit.PX);table.setColumnWidth(paymentModeColumn, 50.0, Unit.PX);table.setColumnWidth(idColumn, 70.0, Unit.PX);table.setColumnWidth(orderFromColumn, 70.0, Unit.PX);table.setColumnWidth(productDescriptionColumn, 230.0, Unit.PX);table.setColumnWidth(creationDateColumn, 120.0, Unit.PX);// table.setColumnWidth(promisedDeliveryDateColumn, 140.0, Unit.PX);// table.setColumnWidth(expectedDeliveryDateColumn, 140.0, Unit.PX);table.setColumnWidth(statusMessageColumn, 160.0, Unit.PX);table.setRowCount(count, true);table.setVisibleRange(start, orders.size());// Connect the table to the data provider.asyncDataProvider.addDataDisplay(table);//Add paging supportpager.setDisplay(table);// Initialize the dataasyncDataProvider.updateRowCount(count, true);asyncDataProvider.updateRowData(start, orders);// 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;}}