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:
- Cuando pulsa el botón Nuevo se produce lo siguiente:
- Se borra la selección de la tabla de empleados y la tabla queda inhabilitada.
- Al borrar la selección de la tabla, el botón Suprimir queda inhabilitado.
- Se inhabilita el campo Filtro.
- Se borran los valores de los campos de detalles, excepto el nuevo ID de empleado.
- El texto del botón Actualizar cambia a Añadir.
- Cuando pulsa el botón Añadir, se produce el comportamiento siguiente:
- Los valores entrados en los campos de detalles se añaden al directorio como un registro de empleado nuevo.
- La tabla se habilita y los valores se renuevan.
- Se habilita el campo Filtro.
- El texto en el botón Añadir cambia a Actualizar.
Para añadir este comportamiento, siga los pasos de este ejercicio:
- Añadir un Objeto de datos de origen de datos que llame a createNewFullEmployeeRecord()
- Añadir un Objeto de datos básico para facilitar la conmutación de objetos de datos
- Reenlazar cada campo de empleado con el objeto switchingDataObject
- Definir un indicador y un método para actualizar y conmutar modalidades
- Añadir un evento actionPerformed al botón Nuevo
- Reenlazar el botón Actualizar
- 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.
- En la paleta del editor visual Java, expanda la categoría Objetos de datos y
seleccione Objeto de datos de origen de datos.
- 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:

- 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.
- 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.
- En el campo Origen de datos, seleccione webServiceDataSource.
- En el campo Servicio, seleccione createNewFullEmployeeRecord().
- Pulse Aceptar.

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.
- 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.

- Redenomine el objeto de datos como switchingDataObject
- 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.

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:
- Seleccione el campo y pulse la pestaña Enlazar.
- En el recuadro de diálogo Enlaces de datos de campo, seleccione switchingDataObject.
Anteriormente enlazó los campos a selectedEmployeeRecord.

- 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.

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.
- En la vista de diseño, pulse el botón Nuevo y seleccione Eventos
> actionPerformed. En el método getNewButton() se genera el código siguiente:
newButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
}
});
- Sustituya este apéndice generado por el siguiente código:
newButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
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:
- 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.
- Pulse la pestaña Enlazar en el botón Actualizar.
- En el campo Argumento, seleccione switchingDataObject.

- 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:

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.
- 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.
- 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.
- En el recuadro de diálogo Añadir Evento, expanda el nodo actionBinder y
seleccione afterActionPerformed.
- 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) {}
});
- Sustituya el apéndice generado por el siguiente código:
modifyEmployeeAction.addActionBinderListener(new jve.generated.IActionBinder.ActionBinderListener() {
public void afterActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {
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();
}
public void beforeActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {}
});
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: