Subversion Repositories SmartDukaan

Rev

Rev 4004 | Rev 4125 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4004 Rev 4124
Line 8... Line 8...
8
import java.util.List;
8
import java.util.List;
9
 
9
 
10
import org.enunes.gwt.mvp.client.EventBus;
10
import org.enunes.gwt.mvp.client.EventBus;
11
 
11
 
12
import com.google.gwt.core.client.GWT;
12
import com.google.gwt.core.client.GWT;
13
import com.google.gwt.event.dom.client.ClickEvent;
13
import com.google.gwt.dom.client.Style.Unit;
14
import com.google.gwt.resources.client.CssResource;
14
import com.google.gwt.resources.client.CssResource;
15
import com.google.gwt.uibinder.client.UiBinder;
15
import com.google.gwt.uibinder.client.UiBinder;
16
import com.google.gwt.uibinder.client.UiField;
16
import com.google.gwt.uibinder.client.UiField;
-
 
17
import com.google.gwt.user.cellview.client.AbstractPager;
-
 
18
import com.google.gwt.user.cellview.client.DataGrid;
-
 
19
import com.google.gwt.user.cellview.client.PageSizePager;
17
import com.google.gwt.uibinder.client.UiHandler;
20
import com.google.gwt.user.cellview.client.RowStyles;
18
import com.google.gwt.user.client.ui.FlexTable;
21
import com.google.gwt.user.cellview.client.SimplePager;
-
 
22
import com.google.gwt.user.cellview.client.TextColumn;
19
import com.google.gwt.user.client.ui.ResizeComposite;
23
import com.google.gwt.user.client.ui.ResizeComposite;
20
import com.google.gwt.user.client.ui.Widget;
24
import com.google.gwt.user.client.ui.Widget;
21
import com.google.gwt.user.client.ui.HTMLTable.Cell;
25
import com.google.gwt.view.client.AsyncDataProvider;
-
 
26
import com.google.gwt.view.client.HasData;
-
 
27
import com.google.gwt.view.client.Range;
-
 
28
import com.google.gwt.view.client.SelectionChangeEvent;
-
 
29
import com.google.gwt.view.client.SingleSelectionModel;
22
 
30
 
23
public class OrderList extends ResizeComposite{
31
public class OrderList extends ResizeComposite{
24
	
32
	
25
	private int selectedRow = -1;
-
 
26
	
-
 
27
	public interface Listener{
33
	public interface Listener{
28
		void onSelectItem();
34
		void onSelectItem();
29
	}
35
	}
30
	
36
	
31
	interface OrderListUiBinder extends UiBinder<Widget, OrderList>{ }
37
	interface OrderListUiBinder extends UiBinder<Widget, OrderList>{ }
Line 36... Line 42...
36
		String criticalRow();
42
		String criticalRow();
37
	}
43
	}
38
	//add gin here
44
	//add gin here
39
	private static final OrderListUiBinder binder = GWT.create(OrderListUiBinder.class);
45
	private static final OrderListUiBinder binder = GWT.create(OrderListUiBinder.class);
40
	
46
	
41
	@UiField FlexTable header;
47
	@UiField DataGrid<Order> table;
42
	@UiField FlexTable table;
48
    // Create paging controls.
-
 
49
    @UiField SimplePager pager = new SimplePager();
43
	@UiField SelectionStyle selectionStyle;
50
	@UiField SelectionStyle selectionStyle;
44
	
51
	
-
 
52
    private TextColumn<Order> batchColumn = new TextColumn<Order>() {
-
 
53
        @Override
-
 
54
        public String getValue(Order order) {
-
 
55
            return "" + order.getBatchNo();
-
 
56
        }
-
 
57
    };
-
 
58
    
-
 
59
    private TextColumn<Order> serialNoColumn = new TextColumn<Order>() {
-
 
60
        @Override
-
 
61
        public String getValue(Order order) {
-
 
62
            return "" + order.getSerialNo();
-
 
63
        }
-
 
64
    };
-
 
65
    
-
 
66
    private TextColumn<Order> paymentModeColumn = new TextColumn<Order>() {
-
 
67
        @Override
-
 
68
        public String getValue(Order order) {
-
 
69
            return order.isCod() ? "COD" : "Prepaid";
-
 
70
        }
-
 
71
    };
-
 
72
    
-
 
73
    private TextColumn<Order> idColumn = new TextColumn<Order>() {
-
 
74
        @Override
-
 
75
        public String getValue(Order order) {
-
 
76
            return "" + order.getOrderId();
-
 
77
        }
-
 
78
    };
-
 
79
    
-
 
80
    private TextColumn<Order> productDescriptionColumn = new TextColumn<Order>() {
-
 
81
        @Override
-
 
82
        public String getValue(Order order) {
-
 
83
        	StringBuilder productDescription = new StringBuilder(order.getProductGroup());
-
 
84
			if(order.getBrand()!=null)
-
 
85
				productDescription.append(" " + order.getBrand());
-
 
86
			if(order.getModelNumber()!=null)
-
 
87
				productDescription.append(" " + order.getModelNumber());
-
 
88
			if(order.getModelName()!=null)
-
 
89
				productDescription.append(" " + order.getModelName());
-
 
90
			if(order.getColor()!=null)
-
 
91
				productDescription.append(" " + order.getColor());
-
 
92
            return productDescription.toString();
-
 
93
        }
-
 
94
    };
-
 
95
    
-
 
96
    private TextColumn<Order> creationDateColumn = new TextColumn<Order>() {
-
 
97
        @Override
-
 
98
        public String getValue(Order order) {
-
 
99
            return getDisplayableDate(new Date(order.getCreatedOn()))+"";
-
 
100
        }
-
 
101
    };
-
 
102
    
-
 
103
    private TextColumn<Order> promisedDeliveryDateColumn = new TextColumn<Order>() {
-
 
104
        @Override
-
 
105
        public String getValue(Order order) {
-
 
106
            return getDisplayableDate(new Date(order.getPromisedDeliveryTime()))+"";
-
 
107
        }
-
 
108
    };
-
 
109
    
-
 
110
    private TextColumn<Order> expectedDeliveryDateColumn = new TextColumn<Order>() {
-
 
111
        @Override
-
 
112
        public String getValue(Order order) {
-
 
113
            return getDisplayableDate(new Date(order.getExpectedDeliveryTime()))+"";
-
 
114
        }
-
 
115
    };
-
 
116
    
-
 
117
    private TextColumn<Order> statusMessageColumn = new TextColumn<Order>() {
-
 
118
        @Override
-
 
119
        public String getValue(Order order) {
-
 
120
            return order.getStatusMessage();
-
 
121
        }
-
 
122
    };
-
 
123
    
-
 
124
    AsyncDataProvider<Order> asyncDataProvider = new AsyncDataProvider<Order>() {
-
 
125
 
-
 
126
		@Override
-
 
127
		protected void onRangeChanged(HasData<Order> display) {
-
 
128
            Range range = display.getVisibleRange();
-
 
129
            int start = range.getStart();
-
 
130
            int limit = range.getLength();
-
 
131
            int lastIndex = start + limit;
-
 
132
            if(lastIndex > orders.size()){
-
 
133
            	lastIndex = orders.size();
-
 
134
            }
-
 
135
    		asyncDataProvider.updateRowCount(orders.size(), true);
-
 
136
    		asyncDataProvider.updateRowData(start, orders.subList(start, lastIndex));
-
 
137
		}
-
 
138
    	
-
 
139
    };
-
 
140
    
45
	private final EventBus eventbus;
141
	private final EventBus eventbus;
46
	
142
	
47
	private final List<Order> orders;
143
	private final List<Order> orders;
48
	
144
	
49
	public OrderList(EventBus eventbus, List<Order> orders){
145
	public OrderList(EventBus eventbus, List<Order> orders){
50
		this.orders = orders;
146
		this.orders = orders;
51
		initWidget(binder.createAndBindUi(this));
-
 
52
		this.eventbus = eventbus;
147
		this.eventbus = eventbus;
-
 
148
		initWidget(binder.createAndBindUi(this));
53
		initTable();
149
		initTable();
54
		updateTable();
-
 
55
		selectedRow = -1;
-
 
56
	}
150
	}
57
	
151
	
58
	private void initTable(){
152
	private void initTable(){
-
 
153
		
59
		// Initialize the header.
154
		//Add custom styles to show in case we want to alert the user
60
		header.getColumnFormatter().setWidth(0, "40px");
155
		table.setRowStyles(new RowStyles<Order>(){
-
 
156
 
-
 
157
			@Override
61
		header.getColumnFormatter().setWidth(1, "50px");
158
			public String getStyleNames(Order order, int rowIndex) {
62
		header.getColumnFormatter().setWidth(2, "60px");
159
				Alert alert = order.getAlert();
-
 
160
				String style = "";
-
 
161
			    switch(alert){
63
	    header.getColumnFormatter().setWidth(3, "60px");
162
			    case DELIVERY_TIME_EXCEEDED:
64
	    header.getColumnFormatter().setWidth(4, "250px");
163
			    case SHIPPING_TIME_EXCEEDED:
65
	    header.getColumnFormatter().setWidth(5, "150px");
164
			    case VERIFICATION_DELAYED_TOO_MUCH:
66
	    header.getColumnFormatter().setWidth(6, "150px");
165
			    case ACCEPTANCE_DELAYED_TOO_MUCH:
67
	    header.getColumnFormatter().setWidth(7, "150px");
166
			    case ORDER_NOT_CONNECTED_FOR_TOO_LONG:
68
	    header.getColumnFormatter().setWidth(8, "200px");
167
			        style = selectionStyle.fatalRow();
69
 
-
 
70
	    header.setText(0, 0, "Batch");
168
			        break;
71
	    header.setText(0, 1, "S. No");
169
			    case ACCEPTANCE_DELAYED:
72
	    header.setText(0, 2, "Type");
170
			    case VERIFICATION_DELAYED:
73
	    header.setText(0, 3, "Order Id");
171
			    case ORDER_NOT_CONNECTED:
74
	    header.setText(0, 4, "Product Description");
172
			        style = selectionStyle.criticalRow();
75
	    header.setText(0, 5, "Date Created");
173
		            break;
76
	    header.setText(0, 6, "Promised Delivery");
174
			    case WARNING:
77
	    header.setText(0, 7, "Expected Delivery");
175
			    case NONE:
-
 
176
			    }
78
	    header.setText(0, 8, "Current Status");
177
				return style;
-
 
178
			}
-
 
179
		});
79
 
180
		
80
	    // Initialize the table.
181
        // Add the columns.        
81
		table.getColumnFormatter().setWidth(0, "40px");
182
        table.addColumn(batchColumn, "Batch");
82
		table.getColumnFormatter().setWidth(1, "50px");
183
        table.addColumn(serialNoColumn, "S.No.");
83
		table.getColumnFormatter().setWidth(2, "60px");
184
        table.addColumn(paymentModeColumn, "Type");
84
	    table.getColumnFormatter().setWidth(3, "60px");
185
        table.addColumn(idColumn, "Order Id");
85
	    table.getColumnFormatter().setWidth(4, "250px");
186
        table.addColumn(productDescriptionColumn, "Product Description");
86
	    table.getColumnFormatter().setWidth(5, "150px");
187
        table.addColumn(creationDateColumn, "Creation Date");
87
	    table.getColumnFormatter().setWidth(6, "150px");
188
        table.addColumn(promisedDeliveryDateColumn, "Promised Delivery");
88
	    table.getColumnFormatter().setWidth(7, "150px");
189
        table.addColumn(expectedDeliveryDateColumn, "Expected Delivery");
89
	    table.getColumnFormatter().setWidth(8, "200px");    
190
        table.addColumn(statusMessageColumn, "Current Status");
90
	}
-
 
91
	
191
 
92
    @UiHandler("table")
192
        //Set the widths
93
    void onClick(ClickEvent event) {
193
        table.setWidth("100%");
94
        Cell cell = table.getCellForEvent(event);
194
        table.setColumnWidth(batchColumn, 40.0, Unit.PX);
95
        int newRowIndex = cell.getRowIndex();
195
        table.setColumnWidth(serialNoColumn, 50.0, Unit.PX);
96
        selectRow(newRowIndex);
196
        table.setColumnWidth(paymentModeColumn, 60.0, Unit.PX);
97
        eventbus.fireEvent(new LoadOrderDetailsEvent(orders.get(newRowIndex)));
197
        table.setColumnWidth(idColumn, 60.0, Unit.PX);
98
    }
-
 
99
	
-
 
100
	private void selectRow(int row) {
198
        table.setColumnWidth(productDescriptionColumn, 250.0, Unit.PX);
101
	    // When a row (other than the first one, which is used as a header) is
199
        table.setColumnWidth(creationDateColumn, 150.0, Unit.PX);
102
	    // selected, display its associated MailItem.
200
        table.setColumnWidth(promisedDeliveryDateColumn, 150.0, Unit.PX);
103
		if(selectedRow != -1){
201
        table.setColumnWidth(expectedDeliveryDateColumn, 150.0, Unit.PX);
104
			styleRow(selectedRow, false);
202
        table.setColumnWidth(statusMessageColumn, 200.0, Unit.PX);
105
		}
-
 
106
		    
203
        
107
	    styleRow(row, true);
204
        // Connect the table to the data provider.
108
	    selectedRow = row;
205
        asyncDataProvider.addDataDisplay(table);
109
	}
-
 
110
	
206
 
111
    private void styleRow(int row, boolean selected) {
-
 
112
        if (row != -1) {
207
        //Add paging support
113
            String style = selectionStyle.selectedRow();
208
        pager.setDisplay(table);
114
 
209
        
115
            if (selected) {
210
        // Initialize the data
116
                table.getRowFormatter().addStyleName(row, style);
211
        int lastIndex = pager.getPageSize();
117
            } else {
212
        if(lastIndex > orders.size()){
118
                table.getRowFormatter().removeStyleName(row, style);
213
        	lastIndex = orders.size();
119
            }
-
 
120
        }
214
        }
-
 
215
		asyncDataProvider.updateRowCount(orders.size(), true);
-
 
216
		asyncDataProvider.updateRowData(0, orders.subList(0, lastIndex));
-
 
217
		
-
 
218
        // Add a selection model to handle item selection.
-
 
219
        final SingleSelectionModel<Order> selectionModel = new SingleSelectionModel<Order>();
-
 
220
        table.setSelectionModel(selectionModel);
-
 
221
        selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
-
 
222
            
-
 
223
            @Override
-
 
224
            public void onSelectionChange(SelectionChangeEvent event) {
-
 
225
            	Order selectedOrder = selectionModel.getSelectedObject();
-
 
226
            	eventbus.fireEvent(new LoadOrderDetailsEvent(selectedOrder));
-
 
227
            }
-
 
228
        });
121
    }
229
    
-
 
230
	}
122
	
231
	
123
	private String getDisplayableDate(Date date){
232
	private String getDisplayableDate(Date date){
124
		String dateString = date.toString();
233
		String dateString = date.toString();
125
		dateString = dateString.substring(0, dateString.lastIndexOf(" "));
234
		dateString = dateString.substring(0, dateString.lastIndexOf(" "));
126
		dateString = dateString.substring(0, dateString.lastIndexOf(" "));
235
		dateString = dateString.substring(0, dateString.lastIndexOf(" "));
127
		return dateString;		
236
		return dateString;		
128
	}
237
	}
129
	
-
 
130
	private void updateTable(){
-
 
131
		int i = 0;
-
 
132
		for(final Order order : orders){
-
 
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
			
-
 
143
			table.setText(i, 0, "" + order.getBatchNo());
-
 
144
			table.setText(i, 1, "" + order.getSerialNo());
-
 
145
			table.setText(i, 2, order.isCod() ? "COD" : "Prepaid");
-
 
146
			table.setText(i, 3, "" + order.getOrderId());
-
 
147
			table.setText(i, 4, productDescription.toString());
-
 
148
			table.setText(i, 5, getDisplayableDate(new Date(order.getCreatedOn()))+"");
-
 
149
			table.setText(i, 6, getDisplayableDate(new Date(order.getPromisedDeliveryTime()))+"");
-
 
150
			table.setText(i, 7, getDisplayableDate(new Date(order.getExpectedDeliveryTime()))+"");
-
 
151
			table.setText(i, 8, order.getStatusMessage());
-
 
152
			applyAlertStyle(i, order.getAlert());
-
 
153
			i++;
-
 
154
		}
-
 
155
	}
-
 
156
	
-
 
157
	private void applyAlertStyle(int row, Alert alert){
-
 
158
	    String style;
-
 
159
	    switch(alert){
-
 
160
	    case DELIVERY_TIME_EXCEEDED:
-
 
161
	    case SHIPPING_TIME_EXCEEDED:
-
 
162
	    case VERIFICATION_DELAYED_TOO_MUCH:
-
 
163
	    case ACCEPTANCE_DELAYED_TOO_MUCH:
-
 
164
	    case ORDER_NOT_CONNECTED_FOR_TOO_LONG:
-
 
165
	        style = selectionStyle.fatalRow();
-
 
166
	        table.getRowFormatter().addStyleName(row, style);
-
 
167
	        break;
-
 
168
	    case ACCEPTANCE_DELAYED:
-
 
169
	    case VERIFICATION_DELAYED:
-
 
170
	    case ORDER_NOT_CONNECTED:
-
 
171
	        style = selectionStyle.criticalRow();
-
 
172
            table.getRowFormatter().addStyleName(row, style);
-
 
173
            break;
-
 
174
	    case WARNING:
-
 
175
	    case NONE:
-
 
176
	    }
-
 
177
	}
-
 
178
}
238
}