Rev 3994 | Rev 4124 | 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.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.ResizeComposite;import com.google.gwt.user.client.ui.Widget;import com.google.gwt.user.client.ui.HTMLTable.Cell;public class OrderList extends ResizeComposite{private int selectedRow = -1;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 FlexTable header;@UiField FlexTable table;@UiField SelectionStyle selectionStyle;private final EventBus eventbus;private final List<Order> orders;public OrderList(EventBus eventbus, List<Order> orders){this.orders = orders;initWidget(binder.createAndBindUi(this));this.eventbus = eventbus;initTable();updateTable();selectedRow = -1;}private void initTable(){// Initialize the header.header.getColumnFormatter().setWidth(0, "40px");header.getColumnFormatter().setWidth(1, "50px");header.getColumnFormatter().setWidth(2, "60px");header.getColumnFormatter().setWidth(3, "60px");header.getColumnFormatter().setWidth(4, "250px");header.getColumnFormatter().setWidth(5, "150px");header.getColumnFormatter().setWidth(6, "150px");header.getColumnFormatter().setWidth(7, "150px");header.getColumnFormatter().setWidth(8, "200px");header.setText(0, 0, "Batch");header.setText(0, 1, "S. No");header.setText(0, 2, "Type");header.setText(0, 3, "Order Id");header.setText(0, 4, "Product Description");header.setText(0, 5, "Date Created");header.setText(0, 6, "Promised Delivery");header.setText(0, 7, "Expected Delivery");header.setText(0, 8, "Current Status");// Initialize the table.table.getColumnFormatter().setWidth(0, "40px");table.getColumnFormatter().setWidth(1, "50px");table.getColumnFormatter().setWidth(2, "60px");table.getColumnFormatter().setWidth(3, "60px");table.getColumnFormatter().setWidth(4, "250px");table.getColumnFormatter().setWidth(5, "150px");table.getColumnFormatter().setWidth(6, "150px");table.getColumnFormatter().setWidth(7, "150px");table.getColumnFormatter().setWidth(8, "200px");}@UiHandler("table")void onClick(ClickEvent event) {Cell cell = table.getCellForEvent(event);int newRowIndex = cell.getRowIndex();selectRow(newRowIndex);eventbus.fireEvent(new LoadOrderDetailsEvent(orders.get(newRowIndex)));}private void selectRow(int row) {// When a row (other than the first one, which is used as a header) is// selected, display its associated MailItem.if(selectedRow != -1){styleRow(selectedRow, false);}styleRow(row, true);selectedRow = row;}private void styleRow(int row, boolean selected) {if (row != -1) {String style = selectionStyle.selectedRow();if (selected) {table.getRowFormatter().addStyleName(row, style);} else {table.getRowFormatter().removeStyleName(row, style);}}}private String getDisplayableDate(Date date){String dateString = date.toString();dateString = dateString.substring(0, dateString.lastIndexOf(" "));dateString = dateString.substring(0, dateString.lastIndexOf(" "));return dateString;}private void updateTable(){int i = 0;for(final Order order : orders){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());table.setText(i, 0, "" + order.getBatchNo());table.setText(i, 1, "" + order.getSerialNo());table.setText(i, 2, order.isCod() ? "COD" : "Prepaid");table.setText(i, 3, "" + order.getOrderId());table.setText(i, 4, productDescription.toString());table.setText(i, 5, getDisplayableDate(new Date(order.getCreatedOn()))+"");table.setText(i, 6, getDisplayableDate(new Date(order.getPromisedDeliveryTime()))+"");table.setText(i, 7, getDisplayableDate(new Date(order.getExpectedDeliveryTime()))+"");table.setText(i, 8, order.getStatusMessage());applyAlertStyle(i, order.getAlert());i++;}}private void applyAlertStyle(int row, Alert alert){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();table.getRowFormatter().addStyleName(row, style);break;case ACCEPTANCE_DELAYED:case VERIFICATION_DELAYED:case ORDER_NOT_CONNECTED:style = selectionStyle.criticalRow();table.getRowFormatter().addStyleName(row, style);break;case WARNING:case NONE:}}}