Ir al contenido principal

MVC usando GWT-Ext (GXT) - Parte 2


Según el articulo anterior, enumeramos una lista con 3 pasos para implementar MVC en nuestro código.



Estos son :
1.- Definir los eventos que serán lanzados por el Dispatcher.
public class MisEventos {
 public static EventType CARGAR_APLICACION = new EventType();
 public static EventType SALUDAR = new EventType();
 public static EventType PREGUNTAR_QUE_HORA_ES = new EventType();
}
2.- Crear la clase Controlador y otra para la vista.
// clase controlador
public class MiControlador extends Controller {
 
 MiVista miVista;

 public MiControlador() {
  /* REGISTRO DE LOS EVENTOS DE LOS CUALES
ESTE CONTROLADOR SE HARA CARGO */
  registerEventTypes(MisEventos.CARGAR_APLICACION);
  registerEventTypes(MisEventos.SALUDAR);
  registerEventTypes(MisEventos.PREGUNTAR_QUE_HORA_ES);
 }
 
 @Override
 protected void initialize() {
  super.initialize();
  miVista = new MiVista(this);
 }

 @Override
 public void handleEvent(AppEvent event) {
  forwardToView(miVista, event);
 }

}
:]
public class MiVista extends View {
 
 Viewport contenedorPrincipal;
 FormularioVentana formVentana = new FormularioVentana();

 public MiVista(MiControlador controlador) {
  super(controlador);
 }
/* PARA CADA EVENTO REGISTRADO, LA VISTA SE HARA CARGO DE
TRATARLOS CON UN METODO PARA CADA UNO */
@Override
 protected void handleEvent(AppEvent event) {
  //pregunto que tipo de evento se esta lanzando
  EventType tipoEvento = event.getType();
  if (tipoEvento.equals(MisEventos.CARGAR_APLICACION)) {
   onCargarAplicacion(event);
  } else if (tipoEvento.equals(MisEventos.SALUDAR)) {
   onSaludar(event);
  } else if (tipoEvento.equals(MisEventos.PREGUNTAR_QUE_HORA_ES)) {
   onPreguntarQueHoraEs(event);
  }
 }

 private void onPreguntarQueHoraEs(AppEvent event) {
  // codigo de la invocacion del servicio rpc....
 }

 private void onSaludar(AppEvent event) {
  String nombre = (String) event.getData();
  // codigo de la invocacion del servicio rpc....  
 }

 private void onCargarAplicacion(AppEvent event) {
  //construimos el contenedor principal.
  contenedorPrincipal = new Viewport();
  contenedorPrincipal.setLayout(new CenterLayout());
  
  RootPanel.get().add(contenedorPrincipal);
  
  //mostrar el formulario
  formVentana.show();
 }
}

3.- En la clase del EntryPoint asociar los controladores que utilizaremos en la aplicación.
public class Gxt_mvc implements EntryPoint {
 @Override
 public void onModuleLoad() {
// A.- ASOCIAMOS EL CONTROLADOR CON EL LANZADOR DE EVENTOS
  Dispatcher.get().addController(new MiControlador());

// B.- LANZAMOS EL EVENTO QUE CONSTRUYE NUESTRA GUI
  Dispatcher.forwardEvent(MisEventos.CARGAR_APLICACION);
 }
}

Descarga el código fuente del ejemplo


Resumen
Quizá encuentren exagerado el uso de MVC para preguntar la hora al servidor o hacer un saludo, pero en aplicaciones con mucha cantidad de código es de mucha ayuda, brinda más comodidad al programador, lo más importante permite separar aguas entre la GUI y las reglas de negocio, a la vez la aplicación será escalable y mantenible.


Probando el Ejemplo


Comentarios

Entradas populares de este blog

Certificación Java 7: Temas I

Oracle Certified Associate, Java SE 7 Programmer Dentro del programa de certificación, por el momento presenta 2 hitos de certificación principales estos son:
Oracle Certified Associate, Java SE 7 ProgrammerOracle Certified Professional, Java SE 7 Programmer este articulo solo detallara el contenido del primer examen para obtener el 1er hito, este examen es el 1Z0-803, pueden obtener más información en lapágina oficial. Java SE 7 Programmer I (1Z0-803)1.- Java Basics
Define the scope of variablesDefine the structure of a Java classCreate executable Java applications with a main methodImport other Java packages to make them accessible in your code
2.- Working With Java Data Types
Declare and initialize variablesDifferentiate between object reference variables and primitive variablesRead or write to object fieldsExplain an object's lifecycleCall methods on objectsManipulate data using the StringBuilder class and its methodsCreate and manipulate strings
3.- Using Operators and Dec…

XmlHttpRequest

Últimamente se ha masificado el movimiento de la web 2.0 (redes sociales, rss, AJAX, etc)
estos avances han sido posible gracias a la explotación de este objeto implementado por el lenguaje javascript, este es la llamada piedra angular de todo lo que se dice ser ajax.

XmlHttpRequest(xhr) nos permite que nuestro navegador se comunique asincronicamente con cualquier lenguaje del lado del servidor(asp, php, servlet,jsp) y obtener respuestas en texto plano o formato XML.
La aplicación de este objeto es generar contenido dinámico si actualizar la página, se generan o se modifican los contenedores(div, spam, p, etc).


el ciclo de vida tipico del objeto es:

crea instancia
prepara un a petición
envia respuesta al servidor
y recibe una respuesta


La creación de la instancia de xhr varia según el navegador existen librerías que facilitan su manejo.

function crearInstancia(){
XMLHttp = false;
if (window.XMLHttpRequest){
return new XMLHttpRequest();
}else if(window.ActiveXObject){
var versiones = [&quo…

Tomcat 64 bits

Después de un proceso de desarrollo bastante largo tuve que llegar al momento de la verdad la puesta en marcha del sistema(Sql Server 2005, Java y Flex).

En la empresa me dispuso un servidor con Windows Server 2008 con un procesador 64bits, una bestia de tarro, sin embargo nunca tuve la oportunidad de realizar semejante instalación.

Tenia que hacer funcionar un Apache Tomcat 6.0.20, pero este solo esta disponible en 32 bits en la pagina oficial, después de buscar y buscar en listas de correos alianigenas en idiomas extraños llegue a que la solución al error
[174 javajni.c] [error] %1 is not a valid Win32 application.
había que instalar la versión oficial de Tomcat 6.0.20 y despues de eso crackearlo reemplazar el archivo tomcat6.exe con el que esta disponible en http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/res/procrun/amd64/ y eso es todo para que funcione Apache Tomcat en un sistema con 64 bits, por supuesto hay que instalar la versión del jre o jdk correspondiente a dicha arquit…