package org.inbio.m3s.gwt.client; import java.util.Iterator; import org.inbio.m3s.gwt.client.rpcinterface.InitServicesRPC; import org.inbio.m3s.gwt.client.rpcinterface.InitServicesRPCAsync; import org.inbio.m3s.gwt.client.widgets.login.LoginManager; import org.inbio.m3s.gwt.client.widgets.login.listener.LoginListener; import org.inbio.m3s.gwt.client.widgets.login.ui.LoginBar; import org.inbio.m3s.gwt.client.widgets.verticalmenu.VerticalMenuBar; import org.inbio.m3s.gwt.client.widgets.verticalmenu.listener.MenuItemSelectedListener; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.ServiceDefTarget; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.VerticalPanel; /** * Entry point classes define <code>onModuleLoad()</code>. */ public class Index implements EntryPoint, MenuItemSelectedListener, LoginListener { private InitServicesRPCAsync rpc; HorizontalPanel upperBar; VerticalMenuBar menuBar; // Login stuff LoginManager loginManager = new LoginManager(); // Elements of the Main Panel Home home; // InsertImages insertImages; InsertMedia insertMedia; ImportMedia importImages; SearchMedia searchImages; EditMediaInfo editMediaInfo; VerticalPanel initPanel; /** * This is the entry point method. */ public void onModuleLoad() { // inits the rpc service rpc = (InitServicesRPCAsync) GWT.create(InitServicesRPC.class); ServiceDefTarget endpoint = (ServiceDefTarget) rpc; endpoint.setServiceEntryPoint(GWT.getModuleBaseURL() + "RPCManager"); // inits hibernate, /* rpc.initHibernateConfig(new AsyncCallback() { public void onFailure(Throwable caught) { rpcError(); } public void onSuccess(Object result) { hibernateReady(); } }); */ // sets the verticapl panel and frontal panel widgets initPanel = new VerticalPanel(); initPanel.add(new Label("Inicializando la aplicación")); initPanel.add(new Image("images/loading.gif")); RootPanel.get("MainPanel").add(initPanel); // inits logger // FIXME y TODO: revisar como inicializan el logger en hibernate, pues // tomcat da error por no encontrar el archivo. rpc.initLogger(new AsyncCallback() { public void onFailure(Throwable caught) { rpcError(); } public void onSuccess(Object result) { // TODO } }); System.out.println("SETEANDO LAS COSAS"); rpc.InitServices(GWT.getModuleBaseURL(), new AsyncCallback() { public void onFailure(Throwable caught) { rpcError(); } public void onSuccess(Object result) { } }); loginManager.addLoginListener(this); hibernateReady(); } /** * This method inits the menu bar, is very important to remember the order * of the item, because in the itemSelected method, the itemIdex received as * parameter indicates the item that was click by the index it was added * * @see itemSelected method */ private void intMenuBar() { menuBar.addItem("Inicio"); // 0 menuBar.addItem("Insertar Im\u00E1genes"); // 1 menuBar.addItem("Importar Grupo de Im\u00E1genes"); // 2 menuBar.addItem("Busqueda de Im\u00E1genes"); // 3 menuBar.addItem("Editar Información de Multimedio"); // 4 } /** * Handles the event of a item of the menu clicked. The index received as * parameter is relative to the order in where the items where added to the * menu. * * @param itemIndex * index of the item of the menu that was clicked. * @see initMenuBar method */ public void itemSelected(int itemIndex) { if (!LoginManager.isUserLogged()) { Window.alert("Debe iniciar sesion en el sistema." + "Contacte con el administrador para obtener una contraseña"); return; } // removes actual items of the MainPanel Iterator iterator = RootPanel.get("MainPanel").iterator(); while (iterator.hasNext()) { iterator.next(); } iterator.remove(); // finds what element should be in the main panel switch (itemIndex) { case 0: // Shows the home in the Main Panel if (home == null) { home = new Home(loginManager); } RootPanel.get("MainPanel").add(home); break; case 1: if (insertMedia == null|| insertMedia.getUsername().compareTo(LoginManager.getUserName()) != 0) { insertMedia = new InsertMedia(); } RootPanel.get("MainPanel").add(insertMedia); break; case 2: if (importImages == null|| importImages.getUsername().compareTo(LoginManager.getUserName()) != 0) { importImages = new ImportMedia(); } RootPanel.get("MainPanel").add(importImages); break; case 3: if (searchImages == null) { searchImages = new SearchMedia(); } RootPanel.get("MainPanel").add(searchImages); break; case 4: if (editMediaInfo == null|| editMediaInfo.getUsername().compareTo(LoginManager.getUserName()) != 0) { editMediaInfo = new EditMediaInfo(); } RootPanel.get("MainPanel").add(editMediaInfo); break; } } private void initUpperBar() { LoginBar loginBar = new LoginBar(loginManager); upperBar.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT); upperBar.setVerticalAlignment(HorizontalPanel.ALIGN_BOTTOM); upperBar.setStyleName("UpperBar"); upperBar.add(loginBar); } /*************************************************************************** * RPC METHODS **************************************************************************/ private void rpcError() { Window.alert("error conectando con el servidor"); } private void hibernateReady() { // closes the init panel initPanel.removeFromParent(); // login bar upperBar = new HorizontalPanel(); initUpperBar(); RootPanel.get("UpperBar").add(upperBar); // vertical menu menuBar = new VerticalMenuBar(); intMenuBar(); menuBar.addItemSelectedListener(this); RootPanel.get("MenuBar").add(menuBar); // By default init the Home Panel home = new Home(loginManager); RootPanel.get("MainPanel").add(home); } // login manager listener public void userLogin(String username) { // do nothing } /** * login manager listener. * * close the window where the user is, set it null and return to Home */ public void userLogout() { // removes actual items of the MainPanel Iterator iterator = RootPanel.get("MainPanel").iterator(); while (iterator.hasNext()) { iterator.next(); } iterator.remove(); home.removeUserStatistics(); RootPanel.get("MainPanel").add(home); } }