Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
1961 ankur.sing 1
package in.shop2020.catalog.dashboard.client;
2
 
2066 ankur.sing 3
import java.util.Map;
4
 
1961 ankur.sing 5
import in.shop2020.catalog.dashboard.shared.Item;
6
 
7
import com.google.gwt.core.client.EntryPoint;
8
import com.google.gwt.core.client.GWT;
9
import com.google.gwt.event.dom.client.ClickEvent;
10
import com.google.gwt.event.dom.client.ClickHandler;
11
import com.google.gwt.uibinder.client.UiBinder;
12
import com.google.gwt.uibinder.client.UiField;
2066 ankur.sing 13
import com.google.gwt.uibinder.client.UiHandler;
1961 ankur.sing 14
import com.google.gwt.uibinder.client.UiTemplate;
15
import com.google.gwt.user.client.Window;
16
import com.google.gwt.user.client.rpc.AsyncCallback;
2066 ankur.sing 17
import com.google.gwt.user.client.ui.Button;
1961 ankur.sing 18
import com.google.gwt.user.client.ui.DockLayoutPanel;
19
import com.google.gwt.user.client.ui.RootLayoutPanel;
20
 
21
public class CatalogDashboard implements EntryPoint {
22
 
23
    @UiTemplate("CatalogDashboard.ui.xml")
24
    interface CatalogBinder extends UiBinder<DockLayoutPanel, CatalogDashboard> {
25
    }
2066 ankur.sing 26
 
1961 ankur.sing 27
    private static final CatalogBinder binder = GWT.create(CatalogBinder.class);
28
    private final CatalogServiceAsync catalogService = GWT.create(CatalogService.class);
29
    private final LoginServiceAsync loginService = GWT.create(LoginService.class);
2066 ankur.sing 30
 
1961 ankur.sing 31
    @UiField
32
    TopPanel topPanel;
33
    @UiField
1992 ankur.sing 34
    Shortcuts shortcuts;
35
    /*@UiField
36
    Filters filters;*/
37
    @UiField
1961 ankur.sing 38
    ItemList itemList;
39
    @UiField
40
    ItemDetails itemDetails;
2066 ankur.sing 41
    //@UiField Button addItem;
1961 ankur.sing 42
 
1992 ankur.sing 43
 
44
 
1961 ankur.sing 45
    RootLayoutPanel root;
46
    LoginScreen login;
47
 
48
    public void onModuleLoad() {
49
        root = RootLayoutPanel.get();
2027 ankur.sing 50
        root.getElement().setScrollLeft(10);
1961 ankur.sing 51
        login = new LoginScreen();
1992 ankur.sing 52
        //initMainDB("Testing");
1961 ankur.sing 53
        root.add(login);
54
        login.setLoginListener(new LoginScreen.LoginListener() {
55
            @Override
56
            public void onLoginPressed(String username, String password) {
57
                authenticateUser(username, password);
58
            }
59
        });
60
    }
61
 
62
    private void authenticateUser(String username, String password) {
63
        final String uname = username;
2027 ankur.sing 64
        loginService.authenticateUser(username, password, new AsyncCallback<String>() {
1961 ankur.sing 65
            @Override
2027 ankur.sing 66
            public void onSuccess(String result) {
67
                if (result != null) {
68
                    GWT.log(result + " logged in catalog dashboard");
1961 ankur.sing 69
                    root.clear();
70
                    initMainDB(uname);
71
                    login.clearFields();
2027 ankur.sing 72
                } else {
73
                    login.setErrorText("Invalid username/password");    
1961 ankur.sing 74
                }
75
            }
76
            @Override
77
            public void onFailure(Throwable caught) {
2027 ankur.sing 78
                login.setErrorText("Error in authentication");
1961 ankur.sing 79
            }
80
        });
81
    }
82
 
83
    private void initMainDB(String username) {
84
        DockLayoutPanel dashboard = binder.createAndBindUi(this);
85
        topPanel.changeGreeting(username);
86
        itemList.setListener(new ItemList.Listener() {
2027 ankur.sing 87
            public void onItemSelected(long itemId) {
88
                catalogService.getItem(itemId, new AsyncCallback<Item>() {
89
                    @Override
90
                    public void onSuccess(Item result) {
91
                        itemDetails.setItemDetails(result);
92
                    }
93
 
94
                    @Override
95
                    public void onFailure(Throwable caught) {
96
                        Window.alert("Unable to fetch item details.");
97
                    }
98
                });
1961 ankur.sing 99
            }
100
        });
101
 
1992 ankur.sing 102
        itemDetails.setItemUpdateListener(new ItemDetails.ItemUpdateListener() {
1961 ankur.sing 103
            @Override
1992 ankur.sing 104
            public void onItemUpdate(Item item) {
105
                catalogService.updateItem(item, new AsyncCallback<Boolean>() {
1961 ankur.sing 106
                    @Override
1992 ankur.sing 107
                    public void onSuccess(Boolean result) {
108
                        if(result)
109
                            Window.alert("Item updated successfully.");
110
                        else
111
                            Window.alert("Error updating item :(");
1961 ankur.sing 112
                    }
113
 
114
                    @Override
115
                    public void onFailure(Throwable caught) {
1992 ankur.sing 116
                        Window.alert("Error while updating item");
1961 ankur.sing 117
                    }
118
                });
119
            }
120
        });
121
        topPanel.getSignOutLink().addClickHandler(new ClickHandler() {
122
            @Override
123
            public void onClick(ClickEvent event) {
124
                root.clear();
125
                root.add(login);
126
            }
127
        });
128
        root.clear();
129
        root.add(dashboard);
1992 ankur.sing 130
 
131
        shortcuts.getCatalogTree().setTreeListener(new CatalogTree.TreeListener() {
132
            @Override
2027 ankur.sing 133
            public void onTreeItemClicked(String itemsType) {
134
                //showWaitCursor();
135
                if(itemsType == CatalogTree.ALL_ITEMS) {
136
                    itemList.loadAllItems();
137
                } else if(itemsType == CatalogTree.BEST_DEALS) {
138
                    itemList.loadBestDeals();
139
                } else if(itemsType == CatalogTree.BEST_SELLERS) {
140
                    itemList.loadBestSellers();
141
                } else if(itemsType == CatalogTree.LATEST_ARRIVALS) {
142
                    itemList.loadLatestArrivals();
143
                }
144
//                itemDetails = new ItemDetails();
145
                //showDefaultCursor();
1992 ankur.sing 146
            }
147
        });
1961 ankur.sing 148
    }
2027 ankur.sing 149
 
150
    /*public static void showWaitCursor() {
151
        DOM.setStyleAttribute(RootPanel.getBodyElement(), "cursor", "wait");
152
    }
153
 
154
    public static void showDefaultCursor() {
155
        DOM.setStyleAttribute(RootPanel.getBodyElement(), "cursor", "default");
156
    }*/
2066 ankur.sing 157
 
158
    /*@UiHandler("addItem")
159
    void addItem(ClickEvent event) {
160
 
161
    }*/
162
 
1961 ankur.sing 163
}