Archive for 27 agosto 2010

h1

Pasar un método como parámetro a un composite component de JSF

27 agosto 2010

En una aplicación para el trabajo (aún no he conseguido escapar de las garras de JSF 😦 ) necesitaba que, cuando un usuario fuese a salir de una página de edición, se le notificase mediante un cuadro de diálogo que perdería los cambios sin guardar. Como había bastantes salidas posibles (botones, elementos de menú…) decidí crear el diálogo en un composite component. Por si a alguien le interesa, para el diálogo en sí utilicé la biblioteca PrimeFaces 2.1, basada en jQuery UI.

Evidentemente, cada salida tenía un destino diferente: en el caso de los elementos de menú cada uno dirigía a una parte distinta de la aplicación. Por ello, necesitaba pasar como parámetro del componente la acción a ejecutar.
Sin embargo, esto no es que esté precisamente documentado de manera muy espléndida en ninguna parte, pero encontré la solución gracias a un tutorial en IBM DeveloperWorks.

Debemos definir nuestro componente al menos con el contenido del siguiente cuadro, donde he simplificado mi situación (en lugar de un diálogo de confirmación solo hay un botón) para que se vea de forma más obvia la solución 🙂

<cc:interface>
  <cc:attribute name="actionMethod" 
                required="true"
                method-signature="java.lang.String action()" />
</cc:interface>
<cc:implementation>
  <h:commandButton value="¡Púlsame!"
                action="#{cc.attrs.actionMethod}" />
</cc:implementation>

En la interfaz se debe definir un atributo que evalúe a un método; lo he llamado “actionMethod”. Importante: En el atributo method-signature se debe proporcionar la declaración de tipos completa, como en java.lang.String.

Con esto ya podemos invocar el componente desde cualquier página con:

<lib:componente actionMethod="#{controlador.accion}" />
h1

Machinarium a menos de 5 €

10 agosto 2010

He de reconocer que pocos juegos indie me llaman la atención. Por ejemplo, World of Goo y Braid, tenían buenas ideas pero me pareció que les faltaba un poco de espíritu. En el otro extremo, Plants vs Zombies me enganchó completamente.

Carátula de Machinarium

Machinarium, una aventura gráfica protagonizada por un robot súper-puchi y con un desarrollo basado en pantallas individuales, atrajo mi curiosidad desde el principio. Y es que entra mucho por los ojos y los oídos, con unos diseños de cuento dibujado a mano y una banda sonora discreta y que se integra perfectamente en el ritmo tranquilo (al menos inicialmente, no he avanzado mucho todavía) de la aventura.

Sin embargo, los 15 € que costaba en un principio (sabiendo que no tampoco es un prodigio de la duración) me resultaban un poco excesivos, así que no me animé a comprarlo. Y por las estimaciones que han hecho los desarrolladores, parece que el 85% de los que jugaron tampoco consideraron que el precio fuese justo, glup.
Así que hasta el 12 de agosto han decidido realizar una “amnistía pirata”, bajándolo de precio a $5 e incluyendo la banda sonora en el pack, con el juego en formato descargable para Windows, Linux de 32-bits (meh) y Mac OS X en una sola compra. Con IVA y demás monsergas resulta en 4,60 € para España, y aceptan tarjeta de crédito y PayPal; yo lo compré ayer sin dudarlo un segundo y me enamoré después de un par de puzzles ❤

Si sabéis ruso, alemán o italiano podéis comprarlo en formato físico, aunque la oferta no se aplica.

Amnistía pirata por Machinarium

Y para convenceros de que el juego os va a gustar, en la propia web hay disponible una demo.

¡Vamos vamos, son menos de 5 €, ya no hay excusa para no comprar juegos! Y menos cuando cobran lo mismo por DLCs de trajes 😛