Rev 6788 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.catalog.dashboard.client;import java.util.Map;import in.shop2020.catalog.dashboard.shared.Utils;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;/*** This is the entry point of dashboard application.**/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 LoginServiceAsync loginService = GWT.create(LoginService.class);public String uname;@UiField TopPanel topPanel; // logo, welcome message and sign out link@UiField Shortcuts shortcuts; // anchors to filter item list based on status//TODO @UiField Filters filters;@UiField ItemList itemList; // list of items@UiField ItemDetails itemDetails; // details of an item selected in the list@UiField ItemActions itemActions; // action buttons to update, add item or change item statusRootLayoutPanel root;LoginScreen login;public void onModuleLoad() {Map<Long, String> vendors = Utils.getAllVendors(); //do not delete this line it is done to prefetch the dataroot = RootLayoutPanel.get();root.getElement().setScrollLeft(10);login = new LoginScreen();//initMainDB("Testing");root.add(login);login.setLoginListener(new LoginScreen.LoginListener() {@Overridepublic void onLoginPressed(String username, String password) {authenticateUser(username, password);}});}/*** Authenticates username and password and if successful, initialises* main dashboard panel.* @param username* @param password* @param role -- Utils.ROLE_STAGING (Login role for staging), another role* is Utils.ROLE_PRODUCTION (for push to production username & password)*/private void authenticateUser(String username, String password) {uname = username;loginService.authenticateUser(username, password, new AsyncCallback<String>() {@Overridepublic void onSuccess(String result) {if (result != null) {long role = Long.parseLong(result);GWT.log(uname + " logged in catalog dashboard");root.clear();initMainDB(uname, role);login.clearFields();} else {login.setErrorText("Invalid username/password");}}@Overridepublic void onFailure(Throwable caught) {caught.printStackTrace();login.setErrorText("Error in authentication");}});}private void initMainDB(String username, long role) {DockLayoutPanel dashboard = binder.createAndBindUi(this);itemActions.setItemDetails(itemDetails);itemList.setItemDetails(itemDetails);itemDetails.setCatalogDashboardPanel(this);topPanel.changeGreeting(username);if(role == Utils.ROLE_READONLY){itemActions.disableAllActions();}topPanel.getSignOutLink().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {root.clear();root.add(login);}});root.clear();root.add(dashboard);/*** listener for anchors to filter item list based on statuses and some other parameters.* On click event, string of the anchor is passed as argument and the same listener is* taking different actions based on the different string arguments.*/shortcuts.getCatalogTree().setTreeListener(new CatalogTree.TreeListener() {@Overridepublic void onTreeItemClicked(String itemsType) {if(CatalogTree.ALL_ITEMS.equals(itemsType)) {itemList.loadAllItems();} else if(CatalogTree.ALL_PHASED_OUT_ITEMS.equals(itemsType)) {itemList.loadAllPhasedOutItems();} else if(CatalogTree.ALL_PAUSED_ITEMS.equals(itemsType)) {itemList.loadAllPausedItems();} else if(CatalogTree.ALL_ACTIVE_ITEMS.equals(itemsType)) {itemList.loadAllActiveItems();} else if(CatalogTree.IN_PROCESS_ITEMS.equals(itemsType)) {itemList.loadAllInProcessItems();} else if(CatalogTree.CONTENT_COMPLETE_ITEMS.equals(itemsType)) {itemList.loadAllContentCompleteItems();} else if(CatalogTree.RISKY_ITEMS.equals(itemsType)) {itemList.loadAllRiskyItems();} else if(CatalogTree.BEST_DEALS.equals(itemsType)) {itemList.loadBestDeals();} else if(CatalogTree.BEST_SELLERS.equals(itemsType)) {itemList.loadBestSellers();} else if(CatalogTree.LATEST_ARRIVALS.equals(itemsType)) {itemList.loadLatestArrivals();} else if(CatalogTree.SEARCH.equals(itemsType)) {//Open the search dialog boxSearchItemBox box = new SearchItemBox(itemList);box.center();} else if (CatalogTree.INACTIVE_ITEMS_WITH_INVENTORY.equals(itemsType)) {String link = GWT.getHostPageBaseURL() + "inactivewithinventory/download";Window.open(link, "_blank", "Inactive Items with Inventory");}else if (CatalogTree.BREAKEVEN_ITEMS.equals(itemsType)){String link1 = GWT.getHostPageBaseURL() + "belowbreakeven/download";Window.open(link1, "_blank", "Item below break even price.");}else if (CatalogTree.INVENTORY_OUTOFSYNC_ITEM_LIST.equals(itemsType)){itemList.loadInventoryOutofSyncItems();}else if (CatalogTree.PRIVATE_DEALS.equals(itemsType)){itemList.loadPrivateDealItems();}}});}ItemList getItemListWidget() {return this.itemList;}ItemDetails getItemDetailsWidget() {return this.itemDetails;}}