Vistas

Soportar XHTML Basic

De MorfeoWiki

Tabla de contenidos

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.

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 o div style="text-align:center" para un párrafo centrado, etc...

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.

Estimación de tiempo de desarrollo

Aproximación de tiempo de desarrollo: 4 a 5 días laborales

Resolucion parcial

Pregeneracion de CSSs

Estudiar cuantas y como. Cuantas menos mejor. Una vez este problema este resuelto, poner el estilo inline será trivial.