package smartResorts.client; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import smartResorts.client.ayuda.PanelAyuda; import smartResorts.client.ayuda.PanelBienvenida; import smartResorts.client.eventos.congresos.PanelCongresos; import smartResorts.client.galeria.PanelGalerias; import smartResorts.client.materialpromocional.PanelMaterial; import smartResorts.client.meetme.PanelMeetMe; import smartResorts.client.reservas.Category; import smartResorts.client.reservas.MyPopUp; import smartResorts.client.reservas.WidgetsHorarios.PanelReservasGenerico; import smartResorts.client.services.BotonServicio; import smartResorts.client.services.ListadoServicios; import smartResorts.client.services.PanelServices; import smartResorts.client.services.SubServiceBean; import smartResorts.client.services.Subservices; import smartResorts.client.services.has_id_service; import smartResorts.client.traducciones.PanelTraduccion; import smartResorts.client.traducciones.Traducible; import smartResorts.client.util.ApiCalls; import smartResorts.client.util.StandardRequest; import smartResorts.client.weddings.PanelWeddings; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONParser; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.DockLayoutPanel; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HorizontalSplitPanel; import com.google.gwt.user.client.ui.ListBox; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import smartResorts.client.social.PanelSocial; /** * Quieres agregar un nuevo modulo-panel-servicio?, es muy sencillo. * * * 1.- Solo hay que ir a la BBDD y agregar un id a la tabla sub-services. * Si el subservicio va englobado en un servicio hay que poner el identificador * como tal, si va en la barra superior está en la categoria "Otros". * * * 2.- Hay que agregar el subservicio en el enumerado Subservices de GWT. * * 3.- Crear un "PanelDerecho" o FlowPanel o Popup que se lanzará cuando se invoca al * servicio. * * 4.- Ir al metodo showPanel de esta clase y poner en la lista de enumerados el panel * a lanzar en el caso de que se pulse el botón correspondiente. * * * * * @author luigi * */ @SuppressWarnings("deprecation") public class Estructura extends FlowPanel implements has_id_service{ Subservices subservice; final FlowPanel header = new FlowPanel(); SimplePanel logo = new SimplePanel(); final FlowPanel center = new FlowPanel(); private ListadoServicios left_panel; final FlowPanel right_panel = new FlowPanel(); private PanelDerecho _ultimo_panel_activo = null; public static int currentTranslation = 0; public static Traducible current_box; private HashMap chapuza_complejo = new HashMap(); private ListBox _complejos; private Button logout = new Button(); private Button createComplex = new Button(); private Button adminStrings = new Button(); { PopupPanel aux = new PopupPanel(); aux.setWidget(Log.getInstance()); aux.show(); aux.setWidth("200px"); aux.setHeight("100px"); } final Login dialog_login = new Login(new MyCallback() { @Override public void onDone(String result) { try{ Log.log("Va a montar la estructura"); montarEstructura(); }catch(Exception ex){ Log.log("Esto revienta"); } } @Override public void onError(String t) { } }); public Estructura() { setStyleName("estructura"); } private void montarEstructura() { left_panel = new ListadoServicios(this,false); Log.log("Inicializando"); SmartResorts2_2.centrado_vertical.setVisible(true); // Cabecera header.setStyleName("cabecera"); add(header); Log.log("Inicializando"); // Logo logo.setStyleName("logo"); add(logo); // Big menu add(left_panel); // Center right_panel.setStyleName("center"); add(right_panel); // Botones de la cabecera final ArrayList cabeceraBotones = new ArrayList(); try{ LinkedList auxServices = Global.getSubServices(); for (int i = 0; i < auxServices.size();i++){ SubServiceBean sb = auxServices.get(i); if (sb == null) Log.log("Esto es nulo"); Log.log("Va a comprobar un boton"); if (sb.location() == 1){ // Hacer enum para la localizacion. Subservices ss = Subservices.values()[sb.getId()]; Log.log("Va a configurar el id " + sb.getId()); final BotonServicio auxButton = new BotonServicio(ss); auxButton.setText(sb.getName()); cabeceraBotones.add(auxButton); auxButton.setStyleName("gwt-Button boton_cabecera boton_" + i); auxButton.setVisible(true); header.add(auxButton); // Inicializamos el clickHandler. auxButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { showPanel(auxButton.getId_service()); } }); } // Del if. } Log.log("Inicializa los botones"); }catch(Exception ex){ Log.log("Peta al inicializar la cabecera"); Log.log(ex); } // Combo if (Global.user_type == "MOBAIL" || Global.user_type == "CORPORATIVO") { _complejos = new ListBox(); header.add(_complejos); _complejos.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { new StandardRequest(ApiCalls.set_user_complex, new MyCallback() { @Override public void onError(String t) {} @Override public void onDone(String result) { if (_ultimo_panel_activo != null) _ultimo_panel_activo.reload(); Global.id_complex=_complejos.getValue(_complejos.getSelectedIndex()); } },"id_complex="+_complejos.getValue(_complejos.getSelectedIndex())); } }); _complejos.clear(); chapuza_complejo.clear(); // Aqui va la peticion. new StandardRequest(ApiCalls.get_complex_list, new MyCallback() { @Override public void onError(String t) {} @Override public void onDone(String result) { JSONObject complejos = JSONParser.parseStrict(result).isObject(); Iterator it = complejos.keySet().iterator(); int i = 0; while (it.hasNext()) { String key = (String) it.next(); JSONObject complejo = complejos.get(key).isObject(); _complejos.addItem(complejo.get("name").isString().stringValue(), ""+complejo.get("id").isNumber().doubleValue()); chapuza_complejo.put(""+complejo.get("id").isNumber().doubleValue(), i); i++; } _complejos.setSelectedIndex(chapuza_complejo.get(Global.id_complex)); } },""); } //setPanel(new PanelSplash()); setPanel(new PanelDemo()); // Mostramos ayuda si no se ha marcado que el usuario no quiere volver a verla. if (Global.show_wellcome){ PanelBienvenida pb = new PanelBienvenida(); pb.center(); pb.show(); } } public FlowPanel getHeader() { return header; } public void setPanel(Widget w) { right_panel.clear(); right_panel.add(w); _ultimo_panel_activo = (PanelDerecho) w; } public void setPanelScroll(Widget w) { setPanel(w); /* right_panel.clear(); right_panel.add(right_panel_scroll); right_panel_scroll.clear(); right_panel_scroll.add(right_panel_scroll_content); right_panel_scroll_content.clear(); right_panel_scroll_content.add(w); _ultimo_panel_activo = (PanelDerecho) w; */ } private void showPanel(Subservices ss){ Widget aux = null; Log.log("Te va a mostrar un panel"); boolean useScrollPanel = false; switch(ss){ case Info:aux = new PanelInfo();break; case Excursiones: aux = new PanelExcursiones();break; case Customer_alerts: aux = new PanelAlertasC(1);break; case Pre_customer_alerts: aux = new PanelAlertasC(0);break; case Post_costumer_alerts: aux = new PanelAlertasC(2);break; case Estadisticas: aux = new PanelEstadisticasAlertas();break; case Feedback: aux = new PanelFeedbackAlertas();break; case Instalaciones: aux = new PanelInstalaciones();break; case Actividades: aux = new PanelActividades();break; case Mapa: aux = new PanelMapa();break; case Habitaciones: aux = new PanelHabitaciones();break; case Restaurantes: aux = new PanelReservasGenerico(Category.Restaurantes);break; case Spas: aux = new PanelReservasGenerico(Category.Spas);break; case Deportes: aux = new PanelReservasGenerico(Category.Deportes);break; case Cliente: aux = new ReservasCliente();break; case Social: aux = new PanelSocial();break; case Empleados: aux = new PanelEmpleados();useScrollPanel = true;break; case Clientes: aux = new PanelClientes();break; case Post_costumers:aux = new PanelClientes(2);break; case Tour_operators:aux = new PanelTourOperators();break; case Filtros: aux = new PanelFiltros();break; case Configuración:aux = new PanelConfiguration();break; case Traducir: aux = (Estructura.currentTranslation == 0)?null:new PanelTraduccion(Estructura.currentTranslation); if (aux == null) Estructura.showMessage("Debe seleccionar un cuadro de texto para realizar una traducción a otro idioma"); break; case Ayuda: aux = new PanelAyuda();break; case Services: aux = new PanelServices();break; case Publicar: SmartResorts2_2.publish();break; case MeetMe: aux = new PanelMeetMe();break; case Material_promocional: aux = new PanelMaterialPromocional();break; case Paneles: aux = new PanelPaneles();break; case Galerias: aux = new PanelGalerias();break; case Congresos: aux = new PanelCongresos();break; case Bodas: aux = new PanelWeddings(); // Servicios muertos. //case Temas: aux = new PanelThemes();break; // Servicio muerto // case Pantallas: aux = new PanelScreens();break; // Servicio muerto } if (aux == null) Log.log("El panel es nulo"); else if (aux instanceof MyPopUp){ MyPopUp panel = (MyPopUp)aux; /*panel.center();*/ panel.show(); } else if (aux instanceof PopUp2) { PopUp2 panel = (PopUp2)aux; panel.show(); } else setPanel(aux); } @Override public Subservices get_id_subservice() { // TODO Auto-generated method stub return subservice; } @Override public void set_id_subservice(Subservices subservice) { // Desde aqui invocamos al subservicio correspondiente. this.subservice = subservice; showPanel(Subservices.values()[subservice.ordinal()]); } }