Humanética

http://weblogs.javahispano.org/ricardo/date/20040419 Monday April 19, 2004

SWT: capturas de pantalla

Con motivo de uno de mis mensajes anteriores Vitxo ha solicitado capturas de pantalla para mirarle la cara a SWT.

No quice responder "solo con palabras" ante esta solicitud de "cosas visibles y concretas". Así que luego de darle una maquillada para esconder cualquier información que pudiera considerarse confidencial (vaya que esta tarea no es tan fácil como parece) he aquí la primera presentación de estos engendros. En realidad había pensado poner estas capturas de pantalla luego, junto con una descripción sucinta de los aplicativos y los resultados de las pruebas que pienso realizar ... pero he aquí un caramelillo de adelanto.

Como herramienta gráfica para seleccionar la parte de la imagen que quiero mostrar he usado gimp. Es la primera vez que lo uso (mas allá de abrirlo y mirarlo sin un objetivo concreto) y me a parecido interesante (para lo que necesitaba ha sido muy fácil de usar), aunque se extraña una documentación mejor lograda. En su misma página se puede leer (en la parte de sus propios screenshots):

"Everyone Loves Screenshots!"

Así que sin más preámbulos aquí va la primera:

Usuario y Contraseña

Esta captura no requiere mayor explicación. Solo apuntar que la imagen de la llave la tomé de algún lugar de internet y espero no estar usurpando ningún derecho de autor :S.

Esta imagen nos muestra una clase que nos permite seleccionar un elemento de una lista (que tiene como origen una BD, pero se podría cambiar la clase para aceptar otros origenes de datos).

Puede crearse la lista con un filtro (en este caso 'CAT'), pasándole este parámetro al constructor, con lo cual solo se muestran los elementos que comienzan por ese conjunto de caracteres. Mientras se va escribiendo, el elemento seleccionado va cambiando posicionándose en el primer elemento que coincida con los caracteres escritos. Se puede utilizar la tecla abajo para posicionarse en la Lista y desplazarse por el mismo.Si se desea cambiar de filtro, se coloca los caracteres y se presiona el botón "Filtrar" y si se desean ver todos los elementos se presiona el botón "Todos". Con un 'Intro' (tanto si se esta en la caja de texto como en la lista) se selecciona el elemento "activo" y se cierra la ventana (al igual que un doble click del ratón o el botón "Aceptar"); si no hay ninguno se envía un mensaje solicitando escoger un elemento. Devuelve un String con el elemento seleccionado o si se presionó el botón Cancelar un String con referencia null.

Es una de las primeras cosas que hice con Java, y me atreví a enviarlo como código útil a javaHispano. Lamentablemente, estaba plagado de errores (de los cuales he corregido dos que eran imperdonables porque simplemente hacían colapsar la clase y con ella la aplicación) y la implementación de su código es terriblemente mala (en casi todo sentido, ¡que verguenza!). Pero funciona (algún día espero poder mejorarla y escribirla decentemente) y la uso por todos lados porque es muy práctica cuando se quiere permitir que un usuario seleccione un elemento de una lista. Si alguién la quiere, que la pida, con las siguientes advertencias:

  1. No me responsabilizo por daños y prejuicios.
  2. No lo tomen como ejemplo para programar en Java, SWT ni en nada.
  3. Esta prohibido reírse o hacer criticas destructivas ;-).
  4. Esta permitido cambiar la clase, usarla, venderla o botarla a la basura (licencia BSD).
  5. Si alguién la reconstruye totalmente que no se olvide de los compañeros ;-).

Presionar sobre la imagen para ampliar

Bien, aquí se ve la pantalla principal de la aplicación con sus respectivo menú y una barra de herramientas que responde contextualmente, según lo que se tenga seleccionado en los botones que están mas a la derecha (donde se llega a distinguir que dice Orden, otro botón sin figura, otro de clientes que está actualmente presionado y finalmente Cotiz.). Estos botones cambian lo que se muestra al modo de los tabs (pero con otra presentación).

Sobre las figuras de la barra de herramientas, lo tomé de un archivo que indicaron en un foro de javaHispano cuando alguién preguntó donde podía conseguir íconos que hicieran que su aplicación se viera “muy java” ;-). Por ahí, me acabo de dar cuenta que algo he cambiado y uno de ellos aparece dos veces (el botón nuevo no es el que corresponde; bueno, ya esta puesto). Las figuras de los botones están cambiadas. Veamos la pantalla de Clientes. En la parte superior se tiene una serie de cajas de texto donde se colocan los filtros para obtener la lista de clientes que se esta buscando. En este caso se a filtrado con el criterio 'j' para el nombre y se han obtenido 3 resultados ... dentro de los cuales está javaHispano ;-).

Haciendo doble click sobre un nombre (o la opción correspondiente de la barra de herramientas) se muestra una pantalla donde se puede ver mas detalles de el cliente seleccionado y si se tiene permiso de escritura se pueden editar los datos. El color amarillo como fondo en la caja de texto indica que no es editable (en vez del típico plomo). La misma idea para la lista de contactos que aparece en la tabla.

Los datos contenidos en estas ventanas los saqué de la página de javaHispano, y espero a nadie le incomode (los consideré datos públicos), y si es así que por favor me avise. Lamentablemente no tengo mucho espacio y no pude poner a toda la gente de javaHispano, de modo que una solicitud de inclusión dificilmente será atendida 0:-).

Uso de colores:
Seguro que lo han notado, no me gustan mucho las ventanas completamente plomas. En mi cerebro todavía esta almacenado el recuerdo de “cuando el mundo (informático) era gris”. Por alguna razón las aplicaciones utilizaban este color (si se le puede llamar así) en exceso (para mi gusto), lo que contrasta fuertemente con el variopinto ciber-mundo (las páginas web tienden a tener variedad de colores).

La explicación que se le da a este hecho es que de esta forma “no se cansa la vista”; tal vez sea cierto pero a costa de ponernos en un estado de monotonía casi depresiva. Los colores están relacionados con las emociones, y si todo es siempre del mismo tono y para remate gris, ¿cómo nos sentiremos?.

Parece que algunos fabricantes de software están comenzando a entender esto. Sino miren como Windows se ha vuelto mas “colorín” que antes, por citar un ejemplo que la mayoría pueda corroborar.

Para evitar el efecto de cansancio que mencionaba antes, trato de no alejar mucho la cantidad de los 3 colores que componen el color final. Hasta hoy ningún usuario se ha quejado de cansancio visual (o ¿tal vez no se han dado cuenta?, ¿o no me lo han dicho?). Lo cierto es que a la mayoría le gusta que exista una variedad también en este aspecto y me lo dicen (aún después de mucho tiempo -meses o años- de usar los programas).

Algunos tips:

  1. Una de las cosas que me generaban dificultades al comenzar (tomen en cuenta que vengo del mundo Visual Basic) era el uso de layouts. Sin embargo, Cuando una ventana es redimensionable, el uso de los mismos puede convertirse en una bendición; que satisfacción da el ver que tu aplicación se ve presentable independientemente de la resolución del monitor (antes este era un problema para mi). Sin embargo, es mas trabajo posicionar los controles con layouts que hacerlo de forma absoluta. De modo que si en alguna parte no necesitan un posicionamiento dinámico, no usen layouts (por ejemplo en los cuadros de diálogo).
  2. No se olviden de liberar los recursos del sistema; este tipo de recursos no es liberado automaticamente por el garbage collector. Para ello existen una serie de reglas en SWT, las mismas que pueden revisarlas en este enlace. Yo prefiero NO poner esta tarea de limpieza en el método finalize() y mas bien en un método que yo mismo llamo al terminar la clase (o el evento que se produce al cerrar el Shell). ¿Por qué? pues porque el método finalize no necesariamente se ejecuta de inmediato, y más aún tal vez no se ejecute nunca si es que mi aplicación termina antes de que el garbage collector efectúe su tarea. Pero como hacerlo, ya depende de cada quien, por supuesto.

Lo que no he usado:

  1. JFace. A pesar de las opiniones de Martín sobre JFace aún no he aprendido a usarlo (le había hechado el ojo desde el principio, pero no sé muy bien porque ni lo he tocado) y mas bien me he creado algunas clases propias que hacen parte de los trabajos que necesito. Pero, ya le llegará la hora (cuando termine lo que estoy haciendo).
  2. Drag and Drop. Por ahora no lo he necesitado.
  3. Miles de cosas mas (algunas de las cuales ni siquiera sé que existen; lo que no sé es como sé que ni siquiera sé que existen jejejejeje).

Bueno, como dije esto es solo un pequeño adelanto, me hubiera gustado mostrarles muchas mas cosas que tengo por ahí (detalles que aquí no se notan), pero tendría que modificar un tanto la información que se muestra. Vamos a ver si les puedo hacer posteriormente :-).

Ahh, lo olvidaba. ¿Documentación? Justamente Martín ha puesto una serie de links en su weblog. Si no lo encuentran busquen un post del día 6 de Abril de 2004, se llama "¿Cómo empiezo con SWT y RCP?". No puedo entrar a ese enlace, por eso no les he puesto la liga.

Comentarios:

Muy interesante tus capturas y explicaciones...
Noosotros en el trabajo estamos empezando ha utilizar SWT para un modulo cliente...

<br><br>

Me seria de gran utilidad, el codigo de esta ventanita que muestras a modo de filtro... me la puedes enviar waztec@ya.com ?

<br><br>

Mucahs gracias

Enviado por waztec en April 19, 2004 a las 02:42 PM EDT #

MMMMm muy interesante pero de que hablannn?? besos chinito!!!!!!!

Enviado por Mirna en April 19, 2004 a las 05:25 PM EDT #

Hola Ric.. yo de nuevo, pues aqui inmersa en este mundo de codigos y claves y por mas que intento no logro desifrar nada jejee.. pero suena interesante lo que hacen jajaa..ya sabes que tambien soy "mitotera" ;) hasta pronto

Enviado por Mirna en April 20, 2004 a las 01:30 AM EDT #

Tienen muy buena pinta las capturas.
<p>
¡ A ver cuando nos ponemos con JFace ! ;)

Enviado por martin en April 20, 2004 a las 02:09 AM EDT #

A mi tambien me gustaria recibir una copia del codigo.

Muchas gracias.

Saludos

Enviado por David Solis en April 20, 2004 a las 12:45 PM EDT #

xfavor como comsigo el paqute swt xgfa lo mecesito

Enviado por PETTER en September 11, 2006 a las 03:16 PM EDT #

Enviar un comentario:
  • Sintaxis HTML: Deshabilitado