openxava
Blog

27 de febrero del 2020

OpenXava 6.3 liberado

Esta nueva y colorida versión 6.3 incluye nuevos temas, soporte de IntelliJ, pregunta confirmación antes de abandonar un registros cambiado, permite contexto raíz para la aplicación y enums con iconos. Adicionalmente, incluimos un montón de nuevas características menores, pero muy útiles, además de arreglar algún fallo.

Te invitamos a que descargues esta nueva versión y actualices tus aplicaciones OpenXava. Mira las instrucciones de migración.

Descarga OpenXava 6.3

Temas y colores

Hemos suavizado el tema Terra:


Y modernizado el tema Light:


Tenemos un nuevo tema Dark:


Un nuevo tema Blank & White:


Y finalmente un tema Blue:


Sin embargo, la mejora más importante es que hemos refactorizado el CSS para que puedas definir un nuevo temas con muy pocas líneas de CSS. Puedes definir un nuevo tema a partir de un tema ya existente, por ejemplo, si quieres un tema light con el menú de la izquierda en color oro, puedes definir un estilo dorado.css de esta manera:

/* dorado.css */

@import 'light.css';

:root {

    --mi-oro: #cda434;
    --my-highlight: var(--mi-oro);
    
    /* Menú de módulos de la izquierda */    
    --modules-list-color: var(--my-lightgray); 
    --modules-list-background: var(--mi-oro);

}


Fíjate que usamos @import 'light.css' para extender el estilo Light. Redefinimos la variable --my-highlight que es el color para el botón principal, esta variable es de light.css. Después definimos los colores para el menú de la izquierda. Ahora cambia el valor de styleCSS en xava.properties:

styleCSS=dorado.css

Para obtener este resultado:

Por otra parte puedes definir tu propio esquema de colores, no sólo un refinamiento, extendiendo directamente de base.css. Por ejemplo, para definir un estilo Rosa crea un rosa.css como este:

/* rosa.css */

@import 'base.css';

:root {
    --mi-rosa: #E94E77;
    --mi-rosa-oscuro: #D68189;
    --mi-beis: #F4EAD5;
    --mi-marron: #C6A49A;
    --rosa-transparente: rgb(198, 164, 154, 0.2); 
    
     
    /* Menú de módulos de la izquierda */
    --modules-list-color: var(--mi-beis);
    --modules-list-background: var(--mi-rosa);
    --modules-list-selected-color: white;
     
    /* Cabecera del módulo */ 
    --module-header-color: white;
    --module-header-background: var(--mi-rosa);        
    
    /* Botonera */     
    --button-bar-button-color: var(--mi-beis);
    --button-bar-background: var(--mi-rosa-oscuro);
    --list-formats-color: var(--mi-beis);
    --list-formats-hover-color: white;
    
    /* Fondos y etiquetas */
    --background: var(--mi-beis);
    --color: var(--mi-marron);
    
    /* Marcos */    
    --frame-background: var(--rosa-transparente);
    
    /* Acciones */
    --action-color: var(--mi-rosa-oscuro);    
    --action-hover-color: var(--mi-rosa);
    --action-hover-background: white;
    --default-action-button-background: var(--mi-rosa);
    
    /* Editores */
    --required-editor-border: var(--mi-rosa-oscuro);
    
}


Fíjate como extendemos de base.css y definimos los colores para las partes principales de la interfaz. Con sólo el código de arriba obtienes:

Sólo tienes que definir unos pocos colores y todos los demás se derivan a partir de ellos, así tienes un esquema de colores consistente con poco esfuerzo. Además, tienes la opción de definir individualmente el color para que detalle de la interfaz de usuario, echa un vistazo a base.css para ver todas las variables de color disponibles, más de 200.

En v6.3 el usuario tiene la posibilidad de escoger el estilo para el mismo con un selector de temas abajo en la página:

Para determinar los temas disponibles has de enumerarlos en la propiedad themes de xava.properties:

themes=terra.css, light.css, dark.css, black-and-white.css, blue.css    

Si quieres quitar el selector de temas completamente define themes como vacía, o simplemente no la definas.

IntelliJ IDEA

De vez en cuando, alguno de vosotros nos comentáis: "OpenXava es increíble pero odio Eclipse, ¿podría usar mi preciado IntelliJ?". Hemos oído vuestro clamor y esta versión de OpenXava cuenta con soporte de IntelliJ IDEA:

Hemos modificado algún código para que se pueda compilar con IntelliJ y algunos guiones Ant para que funcionen sin errores, por tanto ahora OpenXava funciona bien en IntelliJ. Además, hemos escrito una detallada documentación para usar IntelliJ con OpenXava.
Aunque ahora contamos con un soporte de primera para IntelliJ, Eclipse todavía sigue siendo el IDE preferido para OpenXava.

Pregunta de confirmación al abandonar un registro

Si el usuario va a un registro, hace un cambio y deja el registro, pulsando en nuevo, navegando, volviendo a modo lista, etc. sin grabar primero, OpenXava le preguntará por confirmación:

Esto funciona con las acciones de OpenXava estándar sin tocar nada de código. Si quieres que funcione con tus propias acciones has de marcarlas con el nuevo atributo, pierde-datos-cambiados, en controladores.xml:

<accion nombre="hacerAlgo"
    clase="com.tuempresa.tuaplicacion.acciones.HacerAlgo"
    pierde-datos-cambiados="true"/>


En este casos estás diciendo que cuando el usuario ejecute la acción hacerAlgo sin grabar antes los datos cambiados se perderán.

Contexto raíz

Ejecutar tu aplicación OpenXava en el contexto raíz es ahora posible. Es decir, puedes usar http://localhost:8080/ desde tu navegador para ejecutar tu aplicación, sin el nombre de la aplicación en la URL. Para ello, nombra a tu war ROOT.war al desplegarlo en Tomcat.
Opcionalmente, si quieres usar el contexto raíz en desarrollo, arranca tu aplicación desde tu IDE con el siguiente código en tu clase lanzadora:

AppServer.run(""); // En lugar de AppServer.run("MiAplicacion");

Además, si quieres probar contra la aplicación que se ejecuta en el contexto raíz, añade la siguiente entrada a xava-junit.properties:

contextPath=/
 

Enums con icon

Puedes asociar un icono a cada opción de un enum usando org.openxava.model.IIconEnum:

public enum Prioridad implements IIconEnum { 

    BAJA("transfer-down"), MEDIA("square-medium"), ALTA("transfer-up");

    private String icon;

    private Priority(String icon) {
        this.icon = icon;
    }

    public String getIcon() {
        return icon;
    } 
        
};
private Prioridad prioridad;


Simplemente haz que tu enum implemente IIconEnum que fuerza a que tengas un método getIcon(). Este método ha de devolver un identificador de icono de Material Design Icons. OpenXava puede usar estos iconos en varias partes de la interfaz de usuario, por ejemplo en la lista:

Otras mejoras

Hemos hecho muchas mejoras en otras áreas:

  • Se puede quitar la opción en blanco de los combos dinámicos con View.removeBlankValidValue().
  • Nuevos métodos en View para combos dinámicos: clearValidValues(), disableValidValues() y hasBlankValidValue(). 
  • Material Design Icons actualizado a 4.9.95. Ahora con 4996 disponibles.
  • Lecciones del 1 a 3 del curso actualizadas a las últimas características.
  • Workspace de la distribuciones actualizada a Eclipse 2019-12, aunque todavía funciona con Neon (4.6).
  • Documentación de Maven actualizada.
  • Algunas nuevas etiquetas de uso común para usar en las aplicaciones.

Arreglos

Aunque esta no es una versión de mantenimiento hemos arreglado algo:

  • Arreglo: Los formateadores lista no aplican a los enums en la listas @OrderColumn, colecciones calculadas y de muchos a muchos.
Descarga OpenXava 6.3

blog comments powered by Disqus

English - 中文