Subversion Repositories SmartDukaan

Rev

Rev 1224 | Rev 2313 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
167 ashish 1
package in.shop2020.hotspot.dashbaord.client.inbox;
2
 
3
import in.shop2020.hotspot.dashbaord.client.event.LoadOrderDetailsEvent;
4
import in.shop2020.hotspot.dashbaord.shared.actions.Order;
5
 
6
import java.util.Date;
7
import java.util.List;
8
 
9
import org.enunes.gwt.mvp.client.EventBus;
10
 
11
import com.google.gwt.core.client.GWT;
12
import com.google.gwt.event.dom.client.ClickEvent;
13
import com.google.gwt.event.dom.client.ClickHandler;
14
import com.google.gwt.resources.client.CssResource;
15
import com.google.gwt.uibinder.client.UiBinder;
16
import com.google.gwt.uibinder.client.UiField;
584 chandransh 17
import com.google.gwt.uibinder.client.UiHandler;
167 ashish 18
import com.google.gwt.user.client.ui.Anchor;
19
import com.google.gwt.user.client.ui.FlexTable;
20
import com.google.gwt.user.client.ui.ResizeComposite;
21
import com.google.gwt.user.client.ui.Widget;
584 chandransh 22
import com.google.gwt.user.client.ui.HTMLTable.Cell;
167 ashish 23
 
24
public class OrderList extends ResizeComposite{
25
 
26
	private int selectedRow = -1;
306 ashish 27
 
28
	private boolean selectedRowIsAlerted = false;
167 ashish 29
 
30
	public interface Listener{
31
		void onSelectItem();
32
	}
33
 
584 chandransh 34
	interface OrderListUiBinder extends UiBinder<Widget, OrderList>{ }
167 ashish 35
 
36
	interface SelectionStyle extends CssResource{
37
		String selectedRow();
306 ashish 38
		String alertsRow();
167 ashish 39
	}
40
	//add gin here
584 chandransh 41
	private static final OrderListUiBinder binder = GWT.create(OrderListUiBinder.class);
167 ashish 42
 
43
	@UiField FlexTable header;
44
	@UiField FlexTable table;
45
	@UiField SelectionStyle selectionStyle;
46
 
47
	private final EventBus eventbus;
48
 
49
	private final List<Order> orders;
50
 
51
	public OrderList(EventBus eventbus, List<Order> orders){
52
		this.orders = orders;
53
		initWidget(binder.createAndBindUi(this));
54
		this.eventbus = eventbus;
55
		initTable();
56
		updateTable();
57
		selectedRow = -1;
58
	}
59
 
60
	private void initTable(){
61
		// Initialize the header.
1224 chandransh 62
		header.getColumnFormatter().setWidth(0, "128px");
63
		header.getColumnFormatter().setWidth(1, "128px");
64
	    header.getColumnFormatter().setWidth(2, "128px");
65
	    header.getColumnFormatter().setWidth(3, "250px");
66
	    header.getColumnFormatter().setWidth(4, "150px");
67
	    header.getColumnFormatter().setWidth(5, "150px");
68
	    header.getColumnFormatter().setWidth(6, "200px");
167 ashish 69
 
1224 chandransh 70
	    header.setText(0, 0, "Batch No");
71
	    header.setText(0, 1, "Serial No");
72
	    header.setText(0, 2, "Order Id");
73
	    header.setText(0, 3, "Product Description");
74
	    header.setText(0, 4, "Date Created");
75
	    header.setText(0, 5, "Expected Delivery");
76
	    header.setText(0, 6, "Current Status");
167 ashish 77
 
78
	    // Initialize the table.
1224 chandransh 79
		table.getColumnFormatter().setWidth(0, "128px");
80
		table.getColumnFormatter().setWidth(1, "128px");
81
	    table.getColumnFormatter().setWidth(2, "128px");
82
	    table.getColumnFormatter().setWidth(3, "250px");
83
	    table.getColumnFormatter().setWidth(4, "150px");
84
	    table.getColumnFormatter().setWidth(5, "150px");
85
	    table.getColumnFormatter().setWidth(6, "200px");    
167 ashish 86
	}
87
 
88
	private void selectRow(int row) {
89
	    // When a row (other than the first one, which is used as a header) is
90
	    // selected, display its associated MailItem.
91
		if(selectedRow != -1){
92
			styleRow(selectedRow, false);
93
		}
94
 
95
	    styleRow(row, true);
534 chandransh 96
	    selectedRow = row;
167 ashish 97
	  }
98
 
99
 
100
	private void styleRow(int row, boolean selected) {
101
	    if (row != -1) {
102
	      String style = selectionStyle.selectedRow();
103
 
104
	      if (selected) {
105
	        table.getRowFormatter().addStyleName(row, style);
106
	      } else {
107
	        table.getRowFormatter().removeStyleName(row, style);
108
	      }
109
	    }
110
	  }
111
 
306 ashish 112
	private void alertRow(int row, boolean remove){
113
		if (row != -1) {
114
		      String style = selectionStyle.alertsRow();
115
		      if(!remove)
116
		    	  table.getRowFormatter().addStyleName(row, style);
117
		      else{
118
		    	  table.getRowFormatter().removeStyleName(row, style);
119
		      }
120
		}		      
121
	}
122
 
123
	private String getDisplayableDate(Date date){
124
		String dateString = date.toString();
125
		dateString = dateString.substring(0, dateString.lastIndexOf(" "));
126
		dateString = dateString.substring(0, dateString.lastIndexOf(" "));
127
		return dateString;		
128
	}
129
 
167 ashish 130
	private void updateTable(){
131
		int i = 0;
534 chandransh 132
		for(final Order order : orders){
985 chandransh 133
			StringBuilder productDescription = new StringBuilder(order.getProductGroup());
134
			if(order.getBrand()!=null)
135
				productDescription.append(" " + order.getBrand());
136
			if(order.getModelNumber()!=null)
137
				productDescription.append(" " + order.getModelNumber());
138
			if(order.getModelName()!=null)
139
				productDescription.append(" " + order.getModelName());
140
			if(order.getColor()!=null)
141
				productDescription.append(" " + order.getColor());
142
 
534 chandransh 143
			Anchor orderIdAnchor = new Anchor(order.getOrderId() + "");
1224 chandransh 144
			table.setText(i, 0, "" + order.getBatchNo());
145
			table.setText(i, 1, "" + order.getSerialNo());
146
			table.setWidget(i, 2, orderIdAnchor);
147
			table.setText(i, 3, productDescription.toString());
148
			table.setText(i, 4, getDisplayableDate(new Date(order.getCreatedOn()))+"");
149
			table.setText(i, 5, getDisplayableDate(new Date(order.getExpectedDeliveryTime()))+"");
150
			table.setText(i, 6, order.getStatusMessage());
167 ashish 151
			i++;
152
			final int j =i-1;
306 ashish 153
 
534 chandransh 154
			if (order.isAlert()){
306 ashish 155
				alertRow(i-1, false);
156
			}
157
 
534 chandransh 158
			orderIdAnchor.addClickHandler(new ClickHandler() {
167 ashish 159
 
160
				@Override
161
				public void onClick(ClickEvent event) {
162
					selectRow(j);
534 chandransh 163
					eventbus.fireEvent(new LoadOrderDetailsEvent(order));
167 ashish 164
				}
165
			});
166
		}
167
	}
168
}