5,2. Las interacciones y iconografiar (Interface & Abstractions)

5,2. Las interacciones y iconografiar (Interface & Abstractions)

Las piezas de interaccion de los usuario estan construidas con un esqueleto hecho de cuadros de interaccion i classes abstractas que definen i herramientizan los rasgos en comun que tienen todas las piezas i la logica/pasos basicos de como los estados de de las piezas se serializan/encadenan entre el server i el cliente.

Esta seccion te da detalles en las interacciones de las piezas basicas i abstracciones. El disenyo i otros conteenedores de piezas abstractas son descritas en el Capitulo 6 Manejando Disenyo. Los cuadros de interaccion que definen el modelo/pasos de datos de Vaadin estan descritos en el Capitulo 9 Encuadernando piezas a datos.

Figura 5.2. Piezas de interaccion i abstracciones.

Todas las piezas tambien herramientizan interacciones “Paintable - Dibujables”, que son usadas para serializar/encadenar (“pintar”) las piezas al cliente, y la interaccion contraria “VariableOwner - TransformablePropietario”, que és nessesaria para in-serializar el estado de las piezas o las interacciones del usuario del cliente.

Tambien a parte de las interacciones definidas con el Cuadro de trabajo Vaadin, todas las piezas herramientizan la interaccion “java.io.Serializable” para permitir la serializacion. La serialización és nessesaria en muchas soluciones de computacion de agrupacion i nuve.

5.2.1. Interaccion de las piezas.

La interaccion de las piezas esta fusionado con la classe “AbstractComponent - PiezaAbstracta”, que herramientiza todos los pasos definidos en el cuadro de interacciones.

Manejo de piezas Arbol

Las piezas estan apartadas en la jerarquia de interacciones del usuario. El disenyo es manejado por las piezas de disenyo, o piezas mas generales que herramientizan la interaccion “ComponentContainer - Contenedor de piezas”. Como el contenedor, és pariente de las piezas contenidas.

El codigo "getParent() te permite recuperar la pieza pariente de la pieza. Mientras hay un "setParent(), tu raramente lo nessesitas si no es porque sueles anyadir piezas con el codigo “addComponent” de la interaccion “ComponentContainer”, que automaticamentete pone un pariente.

Una pieza suele no saber su pariente cuanto la pieza és creada, asi que no puedes fusionarala con su pariente en el constructor con “getParent()”. Tambien, no és possible recoger una referencia/direccion al objeto de la App con “getApplication()” antes de tener un pariente. Por ejemplo el siguiente codigo és inválido:

public class AttachExample extends CustomComponent {
    public AttachExample() {
        // ERROR: We can't access the application object yet.
        ClassResource r = new ClassResource("smiley.jpg",
                                            getApplication());
        Embedded image = new Embedded("Image:", r); 
        setCompositionRoot(image);
    }
}

Anyadiendo una pieza a una App dispara el codigo de llamar “attach()” para la pieza. Eso corresopnde, borrar una pieza del contenedor de disparos llamando el codigo “detach()” Si el pariente de una pieza sumada esta ya conectada a la App, el codigo “attach()” es llamado inmediatamente desde “setParent()”.

public class AttachExample extends CustomComponent {
    public AttachExample() {
    }
    
    @Override
    public void attach() {
        super.attach(); // Must call.
        
        // Now we know who ultimately owns us.
        ClassResource r = new ClassResource("smiley.jpg",
                                            getApplication());
        Embedded image = new Embedded("Image:", r); 
        setCompositionRoot(image);
    }
}

La logica/metodologia/pasos de los accessorios son herramientizados con “AbstractComponent” como se describe en el apartado 5.2.2, “AbstractComponent”

5.2.2. AbstractComponent (Pieza Abstracta)

“AbstractComponent” és la classe base para todas las piezas de interacciones de los usuarios. És (la unica) herramientacizacion de la interaccion de la pieza, herramientalizando todos los codigos definidos en la interaccion.

“AbstractComponent” tiene un codigo abstracto simpe “getTag()” que devuelve el identificador de la serializacion de una classe particular de pieza. Ès nessesario herramientarizar cuando (y solo cuando) se crean enteramente nuevas piezas. AbstractComponent maneja la mayoria de la serializacion de los estados de las piezas entre el cliente y el server. La creacion de nuevas piezas y serializacion es descrito en el Capitulo 11 “Creando nuevas piezas” y la serializacion del lado del server API en el Apendix A, Definicion del lenguaje de interacciones del usuario UIDL.

5.2.3. Piezas de cuadro (Cuadros i CuadrosAbstractos) (Field and AbstractField)

Los cuadros son piezas que tienen un valor que el usuario puede canviar a través de la interaccion del usuario. Figura 5.3 “Piezas Cuadro” ilustra las relaciones de herencia y las interacciones importantes y las classes base.

Figure 5.3. Piezas de cuadro

Las piezas de cuadro son construidas encima el cuadro de trabajo definido en la interaccion de los cuadro i la clase base “AbstractField”.

Los cuadros son fuertemente enparejados con el modelo/pasos de datos Vaadin. El valor del cuadro és manejado como una propiedad de la pieza de cuadro. Los cuadros seleccionables te permiten el manejo de los objetos seleccionables a traves de la interaccion del Container - contenedor.

La descripcion de las interacciones de los cuadros i las classes de base esta rota en las secciones siguientes:

Interacciones del cuadro

Las interacciones del cuadro hereda la pieza de superinteraccion i tambien la interaccion Propiedad para tener un valor en el cuadro. AbstractField es la classe unica herramientizando directamente la interaccion Field(Cuadro). Las relaciones son ilustradas en la Figura 5.4 “Diagrama de heréncia cuadro de interacciones”.

Figura 5.4. Diagrama de heréncia cuadro de interacciones

Puedes colocar el valor del cuadro con “setValue()” i leer con "getValue() definido en la propiedad de la interaccion. El tipo de valor actuar depende en la pieza.

La interaccion del cuadro define un numero de attributos, con los que puedes recuperar o manipular con los correspondientes “setters” i “getters”

descripción

Todos los cuadros tienen una descripcion. Date cuenta que mientras este rasco sea definido en la pieza del cuadro, es herramientizada en “AbstractField”, que no herramientiza directamenta el cuadro, pero solo a través de la classe “AbstractField”.

requerido

Cuando esta disponible, un indicador requerido (usualmente asterisko*) es ensenyado a la izquierda, abajo, o al lado del cuadro, dependiendo en el dissenyo contenido i donde el cuadro tiene su titulo. Si estos cuadros son validados pero estan vacios i la propiedad “requiredError” (ver abajo) es colocada, un indicador de error sera mostrado i la pieza error es colocada en el texto definido con la propiedad error. Sin validación, el indicador requerido es solamente una guia visual.

Error requerido (requiredError)

Define el error mensaje para ensenyar cuando un valor es requerido, pero ningun es introducido. El mensaje de error es colocado como la pieza error para el cuadro i normalmente ensenyado en un “herramientaconsejo” cuando el puntero del mouse se pone encima del indicador de error. La pieza formulario puede mostrar el mensaje de error en una area especial de indicador de error.

Manejando canvios valores del cuadro.

El cuadro hereda “Property.ValueChangeListener” para permitir escuchar los canvios de valores en el cuadro i “Property.Editor” te permite editar los valores.

Cuando el valor de un cuadro canvia, un “Property.ValueChangeEvent” és provocado para el cuadro. No deverías herramientizar el codigo “valueChange()” en la classe heredada “AbstractField”, porque ya esta herramientizada en “AbstractField”. Deverias en vez herramientizar el codigo explicito anyadiendo el objeto herramientizado como escuchador.

Classe Base “AbstractField”

“AbstractField” es la classe base para todas las piezas cuadro. Ademas de las herramientzas heredadas de “AbstractComponent” en la pieza, herramientiza un numero de herramientas definidas en Propiedad, Buffereado, Validatable, i Pieza.Enfocable interacciones (Property, Buffered, Validatable, and Component.Focusable interfaces.)