Soportar XHTML Basic
De MorfeoWiki
Tabla de contenidos |
[editar]
XHTML MP vs XHTML Basic 1.1
- Único problema el atributo style que está deprecated para Basic 1.1, lo que implicará que los estilos sean definidos mediante tag style en las páginas XHTML.
[editar]
Ideas
- En momento de generación de JSPs conocemos los estilos para cada control.
- Evitar enviar marcado innecesario, es decir, propiedades de estilo para aquellos controles con display a false y estilos duplicado.
- Asignación automática de nombre de estilos. Por ejemplo, input.mymw_st1 { }. Esto tendrá que ser resuelto en generación, para que así los controles conozcan su nombre de estilo asignado y cuando se aplique su writer, indicarlo en el atributo class.
- No volcar tal cual la lista de estilos. Habrá muchos que son propios de MyMobileWeb, por ejemplo: img-position o img-display que no tienen mapeo alguno, otros tendrán mapeo directo font-style por ejemplo y algunos tendrán que ser modificados como wap-accesskey.
- Gran inconveniente: estilos para tags que MyMobileWeb usa para realizar la renderización. Por ejemplo,
<table style="border:1"...cuando simulamos un entrefield deshabilitado odiv style="text-align:center"para un párrafo centrado, etc...
[editar]
Solución
- Modificar la clase Outputter
- Añadir flag que indique si se desea escribir en el JspWriter o bien almacenar en un buffer temporal.
- Método para volcar contenido del buffer temporal en el JspWriter.
- Método para escribir en el JspWriter sin importar el valor del flag.
- Algoritmo
- Se comienza escribiendo en el JspWriter hasta llegar a la posición del marcado donde se escribe la etiqueta style (HeadWriter).
- En este momento se pone a false el flag del Outputter y cada vez que se haga un
wd.out.append()se escribirá en un buffer temporal (StringBuffer). - En todo lugar del código donde se escribía el atributo style de una etiqueta, ahora se escribirá a través del nuevo método como tag.stX {...} y se añadirá a la etiqueta el atributo class="stX".
- Al final del DocumentWriter, cuando se ha terminado de obtener todos los estilos aplicables a la presentación, se restaurará el flag del Outputter y se escribirá finalmente el contenido almacenado en el buffer (<body>....</document>).
- Los nombre de los estilos serán stX, donde X será un valor númerico, un contador. Éste se almacenará en una variable de contexto de Request. Así por ejemplo: body.st1 {...} link.st2 {...} input.st3 {...}.
- Existe un problema y es que habrá estilos duplicados. Por ejemplo: div.st12 {text-align:center} ... div.st23 {text-align:center}. Inconveniente: envío de marcado innecesario. La solución sería ir almacenándolo en un mapa de mapas, [tag, [stX,"{...}"]] y mirar si para un determinado tag existe un estilo stX que cumpla. Creo que sería demasiado proceso para lo que realmente se va a duplicar que van a ser un par de estilos.
[editar]
Estimación de tiempo de desarrollo
Aproximación de tiempo de desarrollo: 4 a 5 días laborales
[editar]
Resolucion parcial
Pregeneracion de CSSs
Estudiar cuantas y como. Cuantas menos mejor. Una vez este problema este resuelto, poner el estilo inline será trivial.
