Subversion Repositories SmartDukaan

Rev

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

package in.shop2020.catalog.dashboard.client;

import in.shop2020.catalog.dashboard.shared.Item;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiTemplate;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.DockLayoutPanel;
import com.google.gwt.user.client.ui.RootLayoutPanel;

public class CatalogDashboard implements EntryPoint {

    @UiTemplate("CatalogDashboard.ui.xml")
    interface CatalogBinder extends UiBinder<DockLayoutPanel, CatalogDashboard> {
    }

    private static final CatalogBinder binder = GWT.create(CatalogBinder.class);
    private final CatalogServiceAsync catalogService = GWT.create(CatalogService.class);
    private final LoginServiceAsync loginService = GWT.create(LoginService.class);

    @UiField
    TopPanel topPanel;
    @UiField
    Shortcuts shortcuts;
    /*@UiField
    Filters filters;*/
    @UiField
    ItemList itemList;
    @UiField
    ItemDetails itemDetails;

    

    RootLayoutPanel root;
    LoginScreen login;

    public void onModuleLoad() {

        root = RootLayoutPanel.get();
        login = new LoginScreen();
        //initMainDB("Testing");
        root.add(login);
        login.setLoginListener(new LoginScreen.LoginListener() {
            @Override
            public void onLoginPressed(String username, String password) {
                authenticateUser(username, password);
            }
        });
    }

    private void authenticateUser(String username, String password) {
        final String uname = username;
        loginService.authenticateUser(username, password, new AsyncCallback<Long>() {
            @Override
            public void onSuccess(Long result) {
                if (result != -1) {
                    root.clear();
                    initMainDB(uname);
                    login.clearFields();
                }
            }
            @Override
            public void onFailure(Throwable caught) {
                login.setErrorText("Invalid username/password");
            }
        });
    }

    private void initMainDB(String username) {
        DockLayoutPanel dashboard = binder.createAndBindUi(this);
        topPanel.changeGreeting(username);
        itemList.setListener(new ItemList.Listener() {
            public void onItemSelected(Item item) {
                itemDetails.setItemDetails(item);
            }
        });

        itemDetails.setItemUpdateListener(new ItemDetails.ItemUpdateListener() {
            @Override
            public void onItemUpdate(Item item) {
                catalogService.updateItem(item, new AsyncCallback<Boolean>() {
                    @Override
                    public void onSuccess(Boolean result) {
                        if(result)
                            Window.alert("Item updated successfully.");
                        else
                            Window.alert("Error updating item :(");
                    }

                    @Override
                    public void onFailure(Throwable caught) {
                        Window.alert("Error while updating item");
                    }
                });
            }
        });
        topPanel.getSignOutLink().addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                root.clear();
                root.add(login);
            }
        });
        root.clear();
        root.add(dashboard);
        
        shortcuts.getCatalogTree().setTreeListener(new CatalogTree.TreeListener() {
            @Override
            public void onTreeItemClicked() {
                // TODO Auto-generated method stub
                
            }
        });
    }
}