Subversion Repositories SmartDukaan

Rev

Rev 3986 | Rev 4345 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.hotspot.dashbaord.client.inbox;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import in.shop2020.hotspot.dashbaord.client.event.AddJacketNumberEvent;
import in.shop2020.hotspot.dashbaord.shared.actions.BillingType;
import in.shop2020.hotspot.dashbaord.shared.actions.Order;

import org.enunes.gwt.mvp.client.EventBus;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class JacketInfoBox extends DialogBox {
        private Label errorLabel = new Label("");
        
        private Label jacketNumberLabel = new Label("Jacket Number");
        private TextBox jacketNumberBox = new TextBox();
        
        private Label itemNumberLabel = new Label("Item Number");
        private TextBox itemNumberBox = new TextBox();
        
        private Label imeiNumberLabel = new Label("IMEI No.");
        private TextBox imeiNumberBox = new TextBox();
        
        private Label billedBy = new Label("Billed by");
        
    private Label vendorLabel = new Label("Vendor");
    private ListBox vendorBox = new ListBox();

    
        private Button submitbutton = new Button("Submit");
        private VerticalPanel vpanel = new VerticalPanel();

        private Map<Long, String> vendors = new HashMap<Long, String>();
        
        public JacketInfoBox(final EventBus eventBus, final Order order, final String user, final BillingType billingType){
                vpanel.add(errorLabel);
                vpanel.add(getHorizontalPanel(jacketNumberLabel, jacketNumberBox));      //Ask for the jacket number
                if(billingType == BillingType.OURS){
            vpanel.add(getHorizontalPanel(itemNumberLabel, itemNumberBox));          //Ask for the item number
            if("Handsets".equalsIgnoreCase(order.getProductGroup())){
                vpanel.add(getHorizontalPanel(imeiNumberLabel, imeiNumberBox));      //Ask for IMEI only in case of Handsets
            }
                }
                
                //FIXME Hardcoded for vendor
                //vendors.put(2L, "Tulip Tech Products");
                vendors.put(3L, "Sarvottam Telecare");
                vendors.put(4L, "Indira Switch");
                
                for(Entry<Long, String> vendor: vendors.entrySet()){
                        vendorBox.addItem(vendor.getValue(), vendor.getKey()+"");
                }
                vpanel.add(getHorizontalPanel(vendorLabel, vendorBox));
                
                
                vpanel.add(getHorizontalPanel(billedBy, new Label(user)));
                vpanel.add(submitbutton);
                
                setWidget(vpanel);
                setAutoHideEnabled(true);
                setGlassEnabled(true);
                if(billingType == BillingType.OURS)
                    setText("Enter all the details below:");
                else
                    setText("Enter Jacket Number below:");
                setModal(true);

                submitbutton.addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {
                                long jacketNumber = -1;
                                long imeiNumber = -1;
                                String itemNumber = "NO_NUMBER";
                                try {
                                        jacketNumber = Long.parseLong(jacketNumberBox.getText());
                                } catch(NumberFormatException nfe){
                                        nfe.printStackTrace();
                                }
                                
                                if(jacketNumber <= 0){
                                        errorLabel.setText("Invalid Jacket number.");
                                        return;
                                }
                                
                                if(billingType == BillingType.OURS){
                        itemNumber = itemNumberBox.getText();
                        if(itemNumber==null || itemNumber.trim().isEmpty()){
                            errorLabel.setText("Item Number can't be left empty");
                            return;
                        }
                        
                        if("Handsets".equalsIgnoreCase(order.getProductGroup())){
                            try {
                                imeiNumber = Long.parseLong(imeiNumberBox.getText());
                            } catch(NumberFormatException nfe){
                                nfe.printStackTrace();
                            }
                            
                            if(imeiNumber <= 0){
                                errorLabel.setText("Invalid IMEI number");
                                return;
                            }
                        }
                                }
                                long vendorId = -1;
                        try {
                                vendorId = Long.parseLong(vendorBox.getValue(vendorBox.getSelectedIndex()));
                } catch(NumberFormatException nfe){
                    nfe.printStackTrace();
                }
        
                if(vendorId <= 0){
                    errorLabel.setText("Invalid Vendor");
                    return;
                }
                                
                                eventBus.fireEvent(new AddJacketNumberEvent(order, jacketNumber, imeiNumber, itemNumber.trim(), user, billingType, vendorId));
                                hide();
                                clean();
                        }
                });
        }
        
        public void clean(){
                jacketNumberBox.setText("");
                imeiNumberBox.setText("");
                errorLabel.setText("");
        }
        
        private HorizontalPanel getHorizontalPanel(Label label, Widget textBox){
                HorizontalPanel hpanel = new HorizontalPanel();
                hpanel.setSpacing(5);
                hpanel.add(label);
                hpanel.add(textBox);
                hpanel.setCellWidth(label, "120px");
                return hpanel;
        }
}