Subversion Repositories SmartDukaan

Rev

Rev 2066 | Rev 2119 | 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
 
2105 ankur.sing 31
    @UiField TopPanel topPanel;
32
    @UiField Shortcuts shortcuts;
33
    //@UiField Filters filters;
34
    @UiField ItemList itemList;
35
    @UiField ItemDetails itemDetails;
36
    @UiField ItemActions itemActions;
1961 ankur.sing 37
 
38
    RootLayoutPanel root;
39
    LoginScreen login;
40
 
41
    public void onModuleLoad() {
42
        root = RootLayoutPanel.get();
2027 ankur.sing 43
        root.getElement().setScrollLeft(10);
1961 ankur.sing 44
        login = new LoginScreen();
2105 ankur.sing 45
        initMainDB("Testing");
46
        /*root.add(login);
1961 ankur.sing 47
        login.setLoginListener(new LoginScreen.LoginListener() {
48
            @Override
49
            public void onLoginPressed(String username, String password) {
50
                authenticateUser(username, password);
51
            }
2105 ankur.sing 52
        });*/
1961 ankur.sing 53
    }
54
 
55
    private void authenticateUser(String username, String password) {
56
        final String uname = username;
2027 ankur.sing 57
        loginService.authenticateUser(username, password, new AsyncCallback<String>() {
1961 ankur.sing 58
            @Override
2027 ankur.sing 59
            public void onSuccess(String result) {
60
                if (result != null) {
61
                    GWT.log(result + " logged in catalog dashboard");
1961 ankur.sing 62
                    root.clear();
63
                    initMainDB(uname);
64
                    login.clearFields();
2027 ankur.sing 65
                } else {
66
                    login.setErrorText("Invalid username/password");    
1961 ankur.sing 67
                }
68
            }
69
            @Override
70
            public void onFailure(Throwable caught) {
2027 ankur.sing 71
                login.setErrorText("Error in authentication");
1961 ankur.sing 72
            }
73
        });
74
    }
75
 
76
    private void initMainDB(String username) {
77
        DockLayoutPanel dashboard = binder.createAndBindUi(this);
78
        topPanel.changeGreeting(username);
79
        itemList.setListener(new ItemList.Listener() {
2027 ankur.sing 80
            public void onItemSelected(long itemId) {
81
                catalogService.getItem(itemId, new AsyncCallback<Item>() {
82
                    @Override
83
                    public void onSuccess(Item result) {
84
                        itemDetails.setItemDetails(result);
85
                    }
86
 
87
                    @Override
88
                    public void onFailure(Throwable caught) {
89
                        Window.alert("Unable to fetch item details.");
90
                    }
91
                });
1961 ankur.sing 92
            }
93
        });
94
 
1992 ankur.sing 95
        itemDetails.setItemUpdateListener(new ItemDetails.ItemUpdateListener() {
1961 ankur.sing 96
            @Override
1992 ankur.sing 97
            public void onItemUpdate(Item item) {
98
                catalogService.updateItem(item, new AsyncCallback<Boolean>() {
1961 ankur.sing 99
                    @Override
1992 ankur.sing 100
                    public void onSuccess(Boolean result) {
101
                        if(result)
102
                            Window.alert("Item updated successfully.");
103
                        else
104
                            Window.alert("Error updating item :(");
1961 ankur.sing 105
                    }
106
 
107
                    @Override
108
                    public void onFailure(Throwable caught) {
1992 ankur.sing 109
                        Window.alert("Error while updating item");
1961 ankur.sing 110
                    }
111
                });
112
            }
113
        });
114
        topPanel.getSignOutLink().addClickHandler(new ClickHandler() {
115
            @Override
116
            public void onClick(ClickEvent event) {
117
                root.clear();
118
                root.add(login);
119
            }
120
        });
121
        root.clear();
122
        root.add(dashboard);
1992 ankur.sing 123
 
124
        shortcuts.getCatalogTree().setTreeListener(new CatalogTree.TreeListener() {
125
            @Override
2027 ankur.sing 126
            public void onTreeItemClicked(String itemsType) {
127
                //showWaitCursor();
128
                if(itemsType == CatalogTree.ALL_ITEMS) {
129
                    itemList.loadAllItems();
130
                } else if(itemsType == CatalogTree.BEST_DEALS) {
131
                    itemList.loadBestDeals();
132
                } else if(itemsType == CatalogTree.BEST_SELLERS) {
133
                    itemList.loadBestSellers();
134
                } else if(itemsType == CatalogTree.LATEST_ARRIVALS) {
135
                    itemList.loadLatestArrivals();
136
                }
2105 ankur.sing 137
                //itemDetails = new ItemDetails();
2027 ankur.sing 138
                //showDefaultCursor();
1992 ankur.sing 139
            }
140
        });
2105 ankur.sing 141
 
142
        itemActions.setAddItemListener(new ItemActions.AddItemListener() {
143
            @Override
144
            public void onAddItemPressed() {
145
                ItemForm itemForm = new ItemForm();
146
                itemForm.center();
147
                itemForm.show();
148
            }
149
        });
150
 
151
        itemActions.setPhaseoutItemListener(new ItemActions.PhaseoutItemListener() {
152
            @Override
153
            public void onPhaseoutItemPressed() {
154
                final long itemId = itemDetails.getItemId();
155
                if(itemId == 0) {
156
                    Window.alert("Please select an item to mark PHASED OUT");
157
                    return;
158
                }
159
                catalogService.phaseoutItem(itemId, new AsyncCallback<Void>() {
160
                    @Override
161
                    public void onSuccess(Void result) {
162
                        Window.alert("Item marked as PHASED OUT");
163
                    }
164
                    @Override
165
                    public void onFailure(Throwable caught) {
166
                        Window.alert("Error while marking item " + itemId + " PHASED OUT");
167
                    }
168
                });
169
            }
170
        });
171
        itemActions.setActivateItemListener(new ItemActions.ActivateItemListener() {
172
            @Override
173
            public void onActivatePressed() {
174
                final long itemId = itemDetails.getItemId();
175
                if(itemId == 0) {
176
                    Window.alert("Please select an item to mark ACTIVE");
177
                    return;
178
                }
179
                catalogService.activateItem(itemId, new AsyncCallback<Void>() {
180
                    @Override
181
                    public void onSuccess(Void result) {
182
                        Window.alert("Item marked as ACTIVE");
183
                    }
184
                    @Override
185
                    public void onFailure(Throwable caught) {
186
                        Window.alert("Error while marking item " + itemId + " ACTIVE");
187
                    }
188
                });
189
            }
190
        });
1961 ankur.sing 191
    }
2027 ankur.sing 192
 
193
    /*public static void showWaitCursor() {
194
        DOM.setStyleAttribute(RootPanel.getBodyElement(), "cursor", "wait");
195
    }
196
 
197
    public static void showDefaultCursor() {
198
        DOM.setStyleAttribute(RootPanel.getBodyElement(), "cursor", "default");
199
    }*/
2066 ankur.sing 200
 
201
    /*@UiHandler("addItem")
202
    void addItem(ClickEvent event) {
203
 
204
    }*/
205
 
1961 ankur.sing 206
}