May 17, 2010

Último jalón!

La última parte del proyecto implicaba compilar agregar al jar y escribir y leer sobre un archivo de configuración. Lo cual lo explicaremos a continuación:

Archivo de configuración:
Necesitábamos un archivo de configuración para poder guardar el puerto el host y la ubicación del archivo. Para poder hacer esto usamos un archivo xml para guardar la configuración. Por parte de clojure utilizamos xml.zip esta lib solamente nos brindaba la opción de leer.... eso fue un pequeño problema ya que en la documentación decía que leía y escribía.. El problema lo pudimos solucionar de buena forma :) escribiendo de forma normal en el archivo. Cabe resaltar que existen otras opciones y jar's que tienen utilerias para poder leer y escribir sobre xml, pero estas no son parte del core de clojure ni el contrib.

Compilación:
La compilación del proyecto se dio de forma sencilla solo agregamos (:gen-class) a cada uno de nuestros archivos a compilar y listo. Tuvimos que agregar al path de java la carpeta classes para poder compilar. Creamos un archivo de compilación para poder hacerlo simplemente con un (load-file "compile.clj").

JAR:
Solo bastó crear un manifest en el cual se agrega al jar para que sepas dónde está el main.
El problema que tuvimos durante la creación del jar fue el poder accesar a las imágenes.
El programa no las podía hallar las imágenes dentro del jar debido a que habíamos puesto las rutas de cierta forma. Este problema se solucionó agregando esto a la hora de cargar las imágenes ClassLoader/getSystemResource "ubicaciondelaimagen"

Terminando esto conluimos el proyecto de una buena forma. A tiempo y con una versión estable que debido a que google code está en mantenimiento no pudimos subir. En la web tenemos otra versión la que funciona sin imágenes.
Este proyecto fue muy interesante, aprendimos cosas nuevas, a trabajar nuevamente en equipo, distribuir tareas y ayudarnos en los problemas que tenía cada quien en sus tareas.
Fue un buen proyecto!!!!!

May 8, 2010

GUI casi lista!

El día de hoy me dediqué a cambiar los layouts de toda la interfaz. El motivo de ese cambio fue que fuera más sencillo apegarse a las guías de diseño en swing. Se pasó de un BorderLayout/GridLayout a utilizar GroupLayout.

La diferencia principal es que el GroupLayout permite posicionar los componentes de manera horizontal y  vertical, al contrario del GridLayout que se van poniendo los elementos uno tras otro sin poder dejar espacios (a no ser que chacalmente se le inserte un panel vacio #¬¬).

Cabe mencionar que se intentó ocupar el GridBagLayout pero es complejo y no me convenció mucho, ya que hay mucho que configurar y es una lata estar posicionando los elementos.

Me apoye mucho (MUCHO) de los siguientes sitios

Swing Java example to Clojure
How to Use GroupLayout
GroupLayout (Java Platform SE 6)

También se colocaron íconos en el menú para que fuera un poco menos serio; sin embargo, hay una bronca con la transparencia de las imágenes =/  Se arreglará a la brevedad...

Por último, lo único que resta de las guías de diseño es la alineación de los botones hacia la derecha.

Basta, me voy a dormir ... n_n

Saludos!
Israel

May 6, 2010

Recta final!

Algunos detalles con la conexión en la base de datos fueron corregidos, pero aún falta guardar en un archivo la configuración.

El jar ya funciona con la última versión generada.

La documentación fue al fin generada en un sólo archivo, bueno en dos, uno para server y otro para client.

También, comenzamos a generar ideas para el storyboard que se verá en nuestro video final.

May 2, 2010

Actualización después de dias ...

Hoy dediqué todo lo que va del día a avanzar el proyecto. Me di cuenta que lo más dificil no es aprender clojure, ni el trabajo en equipo; ni siquiera el unir clases de java con scripts de clojure ... lo mas dificil serán las guías de look and feel de Swing .... U__U

Como sea, el día de hoy terminé mi parte de unir la interfaz gráfica con la funcionalidad de los módulos de búsqueda, configuración y altas/bajas/cambios de registros. Cada 'formulario' lo realice en un jframe por separado, y este a su vez, en un archivo clj separado. Lo menciono sólo por si acaso ;)

Entonces sólo falta realizar los filtros necesarios para detectar el modo en que se corre la aplicación, así como las guías de diseño de Swing (PUAG!!!)

Saludos,
Israel