Antes de empezar este ejercicio, debe completar el .

En este ejercicio, habilitará la aplicación para que añada un nuevo registro de empleado. Puesto que el comportamiento de la aplicación es más complicado y dinámico para añadir un empleado nuevo, este ejercicio es inherentemente más complejo y requiere la realización de algunos cambios manuales en el código fuente. Además, este ejercicio muestra algunas posibilidades avanzadas de los objetos de datos y proporciona un ejemplo creativo de procedimientos de utilización de los enlazadores y objetos de datos para ajustarlos a sus necesidades.

La lista siguiente describe el comportamiento requerido de la aplicación:

Para añadir este comportamiento, siga los pasos de este ejercicio:

  1. Añadir un Objeto de datos de origen de datos que llame a createNewFullEmployeeRecord()
  2. Añadir un Objeto de datos básico para facilitar la conmutación de objetos de datos
  3. Reenlazar cada campo de empleado con el objeto switchingDataObject
  4. Definir un indicador y un método para actualizar y conmutar modalidades
  5. Añadir un evento actionPerformed al botón Nuevo
  6. Reenlazar el botón Actualizar
  7. Añadir un evento al enlazador del botón Actualizar para restablecer la modalidad

1. Añadir un Objeto de datos de origen de datos que llame a createNewFullEmployeeRecord():

El servicio Web de ejemplo proporciona un servicio createNewFullEmployeeRecord que proporciona un registro nuevo, en blanco que se cumplimenta con el siguiente número de ID de empleado disponible. Este registro en blanco puede poblarse después con nueva información de empleado y volver a someterse al servicio Web.

  1. En la paleta del editor visual Java, expanda la categoría Objetos de datos y seleccione Objeto de datos de origen de datos.
  2. Mueva el ratón por encima del área en blanco de la vista de diseño o del área de diseño y pulse con el botón izquierdo del ratón para soltar el Objeto de datos del origen de datos. En el área de formato libre se añade Objeto de datos de origen de datos nuevo:

    Objeto de datos de origen de datos en formato libre. No configurado.

  3. Pulse el botón derecho del ratón sobre el Objeto de datos de origen de datos y seleccione Redenominar campo. Redenomine el objeto de datos como newEmployeeRecord.
  4. Pulse con el botón derecho sobre el objeto de datos newEmployeeRecord y seleccione Propiedades de enlace. Se abre el recuadro de diálogo Enlace de datos.
  5. En el campo Origen de datos, seleccione webServiceDataSource.
  6. En el campo Servicio, seleccione createNewFullEmployeeRecord().
  7. Pulse Aceptar.

    Objeto de datos newEmployeeRecord, conectado a webServiceDataSource

    En el área de formato libre verá que el objeto de datos de origen de datos newEmployeeRecord está enlazado al servicio Web.

2. Añadir un Objeto de datos básico para facilitar la conmutación de objetos de datos

Puesto que los campos de detalles y el botón de actualización tienen que conmutar las modalidades (para que ambos realicen una actualización y creen un empleado nuevo), tienen que estar enlazados a objetos de datos distintos en momentos distintos. Para facilitar este paso, añadirá un Objeto de datos básico llamado switchingDataObject. Utilizará este Objeto de datos básico para conmutar el enlace para los campos de texto entre selectedEmployeeRecord y newEmployeeRecord.

El Objeto de datos básico señala simplemente a otro objeto de datos (selectedEmployeeRecord) definido en un ejercicio anterior. Este objeto de datos nuevo resultará útil cuando cree un método que indique a este objeto de datos básico que debe utilizar el objeto newEmployeeRecord creado anteriormente. En otras palabras, este objeto de datos básico funcionará como objeto de datos intermedio que conmuta entre el objeto de datos selectedEmployeeRecord y el objeto de datos newEmployeeRecord, permitiendo que los componentes visuales de la aplicación trabajen con dos objetos de datos distintos.
  1. En la paleta del editor visual, seleccione Objeto de datos básico y suéltelo en el área de formato libre. Se añade un objeto basicDataObject.

    Objeto de datos básico en formato libre, no configurado

  2. Redenomine el objeto de datos como switchingDataObject
  3. En la vista Propiedades de switchingDataObject, establezca la propiedad sourceObject en selectedEmployeeRecord. Puede seleccionar selectedEmployeeRecord en el menú desplegable de la columna Valor para la propiedad.

    switchingDataObject en formato libre, conectado al objeto de datos selectedEmployeeRecord

    Ahora, switchingDataObject hace referencia a selectedEmployeeRecord y refleja los mismos valores.

3. Reenlazar cada campo de empleado con el objeto switchingDataObject:

Aunque cada uno de los campos de detalle de empleado ya está enlazado con selectedEmployeeRecord, ahora podrá enlazarlos con switchingDataObject. Después de enlazar los campos, puede conmutar dinámicamente entre objetos de datos para los campos, dependiendo de si está modificando un registro de empleado existente o añadiendo un registro de empleado nuevo.

Para cada uno de los campos de de la sección Detalles de empleado, siga estos pasos:

  1. Seleccione el campo y pulse la pestaña Enlazar.
  2. En el recuadro de diálogo Enlaces de datos de campo, seleccione switchingDataObject. Anteriormente enlazó los campos a selectedEmployeeRecord.

    Recuadro de diálogo Enlaces de datos de campo que muestra lastNameField enlazado con la propiedad lastName en switchingDataObject

  3. Asegúrese de que el campo sigue enlazado a la propiedad de objeto de datos correcta y pulse Aceptar. Si selecciona el campo en la vista de diseño puede ver que las líneas del enlazador señalan ahora a switchingDataObject.

    Campo de detalles enlazado a switchingDataObject

4. Definir un indicador y un método para actualizar y conmutar modalidades:

El siguiente método updateMode() comprueba si el indicador de modalidad está establecido en new y, a continuación, modifica en consecuencia el comportamiento de la aplicación. Por omisión, el indicador booleaneo isNewMode está establecido en false y el método updateMode() habilita la tabla de empleados y el campo de filtro y establece el texto en el botón Actualizar en "Actualizar". Si el isNewMode booleano está establecido en true, la tabla de empleados se inhabilita y se borran sus selecciones, se inhabilita el campo de filtro y el texto del botón Actualizar se establece en "Añadir".

Añada el código siguiente a la clase DirectoryApp.java inmediatamente antes de la última llave de cierre:

private boolean isNewMode = false;
private void updateMode() {
	if (isNewMode) {
		getEmployeesTable().clearSelection();
		getEmployeesTable().setEnabled(false);
		getFilterField().setEditable(false);
		getUpdateCreateButton().setText("Añadir");
	} else {
		getEmployeesTable().setEnabled(true);
		getFilterField().setEditable(true);
		getUpdateCreateButton().setText("Actualizar");
	}
}

5. Añadir un evento actionPerformed al botón Nuevo

En este paso, se añade código de evento para cuando se pulsa el botón Nuevo. El evento indica switchingDataObject que utilice el objeto de datos newEmployeeRecord establece el indicador de modalidad en "new," y ejecuta el método updateMode() añadido en el paso anterior.

  1. En la vista de diseño, pulse el botón Nuevo y seleccione Eventos > actionPerformed. El editor visual genera código con un apéndice de código genérico que simplemente visualiza una línea en la consola:
    System.out.println("actionPerformed()");
  2. Sustituya este apéndice generado (la línea System.out.println) con el siguiente código:
    getSwitchingDataObject().setSourceObject(getNewEmployeeRecord());
    getNewEmployeeRecord().refresh();
    
    isNewMode = true; //establece la aplicación en la modalidad new
    updateMode(); //modifica la UI de acuerdo con la modalidad new
    getLastNameField().grabFocus();

6. Reenlazar el botón Actualizar:

En un ejercicio anterior, ha programado el botón Actualizar para que utilice el método modifyEmployee en el servicio Web. Esa acción se implementa como SwingDataServiceAction. Una de las propiedades del objeto SwingDataServiceAction es el objeto origen, que actúa como argumento para el servicio. El objeto origen de la acción de modificación está establecido actualmente en selectedEmployeeRecord. Para poder programar el botón a fin de controlar tanto una actualización como una adición, reconfigurará la acción del botón para que utilice el objeto switchingDataObject como argumento para el servicio modifyEmployee:
  1. En la vista de diseño, seleccione el botón Actualizar. Fíjese en la flecha rosa con puntos que muestra que selectedEmployeeRecord es el argumento para la llamada de servicio.
  2. Pulse la pestaña Enlazar en el botón Actualizar.
  3. En el campo Argumento, seleccione switchingDataObject.

    Enlaces de acción de componente para el botón Actualizar que utilizan ahora el objeto switchingDataObject

  4. Pulse Aceptar.

    Ahora, fíjese en que la acción del botón está configurada para utilizar el objeto switchingDataObject como su argumento para el método modifyEmployee:

    Botón Actualizar enlazado con el servicio Web con switchingDataObject como argumento

7. Añadir un evento al enlazador del botón Actualizar para restablecer la modalidad:

Una vez pulsado el botón Actualizar y realizada la acción en el servicio Web, querrá que la aplicación vuelva a la modalidad y el comportamiento predeterminados. Para hacerlo, añada un escuchador de eventos en el enlazador de acción del botón que actualizará la modalidad y renovará la tabla después de llevar a cabo la actualización o la adición.

  1. En la vista de diseño, seleccione el botón Actualizar. Una línea nuestra la conexión del botón con el origen de datos. En la línea hay un icono que representa SwingDataServiceAction para el botón, que representa el enlazador de acción del botón.
  2. Pulse el botón derecho del ratón sobre el icono del enlazador de acción del botón y seleccione Eventos > Añadir eventos.

    Importante: Está añadiendo un evento al enlazador del botón, no al botón mismo.

  3. En el recuadro de diálogo Añadir Evento, expanda el nodo actionBinder y seleccione afterActionPerformed.
  4. Pulse Finalizar. El apéndice de evento siguiente se añade a SwingDataServiceAction para el botón:
    modifyEmployeeAction.addActionBinderListener(new jve.generated.IActionBinder.ActionBinderListener() { 
    	public void afterActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {    
    		System.out.println("afterActionPerformed()"); // TODO Auto-generated Event stub afterActionPerformed()
    	}
    	public void beforeActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {} 
    });
  5. Sustituya la línea System.out.println("afterActionPerformed()"); por el código siguiente:
    if (isNewMode) {
    	//Volver a utilizar selectedEmployeeRecord
    	getSwitchingDataObject().setSourceObject(getSelectedEmployeeRecord());
    	//Revertir la modalidad new
    	isNewMode = false; 
    	updateMode();
    }
    // Renovar el objeto de datos de la tabla
    getLightEmployeeRecordRows().refresh();

Ahora, cuando ejecute la aplicación , puede pulsar el botón Nuevo y añadir un registro de empleado nuevo.

Ahora está preparado para pasar al próximo ejercicio:

Condiciones de uso | Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.