Subversion Repositories SmartDukaan

Rev

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