Así como las aplicaciones Web hacen uso de looks & feels cada vez más sofisticados, las aplicaciones para Smart Devices también pueden exigir altos niveles de presentación; en GeneXus, para unos y otros esto se logra con el uso de Temas.
Creación del Tema
Para crear un Tema, como cualquier otro objeto, utilice la ventana de creación de objetos New Object. En ella seleccione el objeto Theme for Smart Devices y asígnele el nombre que desee. Para seguir adelante en las explicaciones crearemos como ejemplo un Tema llamado SDClassicBlue.
Nota: conceptualmente, el uso y aplicación de Temas tanto para web como para Smart Devices (o win) es el mismo; la diferencia entre ellos radica en la implementación a bajo nivel que llevan a dos ambientes tan distintos como Web y Win.
Luego de ésto, GeneXus abre el editor de Temas. Queremos por ejemplo que el fondo de todos los atributos sean de color azul, que la font de los atributos sea Verdana y de color blanco. Para ello, cambiamos en el tema, las siguientes propiedades de la clase Attribute:
-
Backgroundcolor = Blue
-
ForeColor =White
-
Font Family = Verdana
Aplicando el Tema
Ahora ya puede acceder a la instancia genérica del pattern para Smart Devices. Acceda a la misma desde el panel Preferences del Knowledge Base Navigator.
Seleccione el ícono 'Any Platform' y en la propiedad Theme seleccione el theme SDClassicBlue, tal como se observa a continuación.
De esta manera, todas las plataformas incluidas en la lista de la imagen asumirán el tema indicado; no obstante, cada una de estas plataformas posee su propia propiedad Theme.
Otro detalle es que siempre hay un tema asignado, aún cuando el desarrollador no haya especificado uno en forma explícita; éste será el tema Platform Default.
Aplicando la Class Attribute en List Layout
Ahora hay que indicar a los atributos que se quiere utilizar esta clase recién definida en el tema. Para ello, abrir el layout del WorKWithDevices , Seleccionar el List, los atributos a los que se quiere aplicar esta clase, y en la propiedad Class = Attribute
Aplicando la Class Attribute en Detail Layout
Temporalmente para que los temas sean tomados en cuenta en el Detail del Layout, hay que configurar la propiedad Layout Enabled = True. Luego , al igual que en los atributos del list, en los atributos del detail, setear la propiedad Class = Attribute
Ejecutar y observar las pantallas como cambian
Jerarquías en los Temas
Dado que todas las plataformas manejan en la realidad el look & feel de forma independiente, podría tener un mayor impacto en este si se utilizara un theme específicamente creado para cada una de ellas, o al menos para la familia.
Para empezar, cada plataforma tiene una propiedad Theme la cual está destinada a incorporar un diseño específico para ella, que por ejemplo podría ser —siempre dentro de las posibilidades del dispositivo— el diseño que ha imaginado o creado el cliente que ha encargado la aplicación. Entonces, supongamos que luego de un tiempo hemos creado otro tema, pero esta vez específico para el iPAD, llamado iPADinGreenScale; iremos a la propiedad Theme de la Platform iPAD y escribiremos este nombre.
A partir de aquí, el generador para iOS será forzado a considerar este Tema en vez del incluido en la plataforma General, como venía haciendo hasta ahora.
Nota: los Temas, así como otros valores presentes en las propiedades, son dependientes de la configuración de pantalla de cada plataforma. Por ejemplo, para iPhone solo es posible aplicar el valor “Small” a la propiedad Size, y para iPad este valor no aplica, siendo el que aplica “Large”. Entonces, si asignáramos el valor “Small” para iPad, GeneXus lo ignoraría e intentaría encontrar un valor válido en cualquiera de las otras plataformas cuyo valor de la propiedad “OS” fuera “iOS”; de no haber ninguna, GeneXus optará finalmente por el tema por defecto.