Hola Fernando. Cuando dices que tienes que poder ocultar un IFFrame entiendo que te refieres a poder hacer que cualquier IFFrame pueda ser visible o no, una vez que ya ha sido añadido al Layout. Para ello habría que añadir algo de UI para poder modificar esa propiedad.
Los 4 métodos que comentas: - print: se utiliza para imprimir a PDF o PS. - draw: se utiliza para imprimir el componente en el mapa - drawDraft: simplemente dibuja un rectángulo gris con el tamaño del IFFrame - drawHandlers: dibuja los cuadrados negros que están en los bordes del componente y que sirven para cambiar su tamaño. Si modificas los 4 métodos de la clase FFrame para que en función de una variable dibuje algo o no, una vez que hayas puesto el componente en "invisible" ya no lo vas a poder ver y no se me ocurre cómo lo vas a poder volver a poner en "visible" (podrías hacer una ventana que te muestre los componentes del mapa). Yo creo que el drawHandlers y el drawDraft los deberías dejar tal y como están, y simplemente modificar el draw y el print. Así siempre vas a poder ver dónde están los componentes. Podrías meter en el menú contextual del mapa una nueva opción "Hacer visible". La solución que propones me parece razonable pero vas a tener que tocar todas las implementaciones de IFFrame para meter los nuevos métodos. Otra opción con menos impacto podría ser modificar las llamadas a los métodos print y draw (en principio deberían ser muy pocas, pero habría que mirarlo) para que el que llame a estos métodos tenga en cuenta en "isVisible" del IFFrame para dibujarlos o no. Un saludo, Jorge. On 12/04/2011 11:21 AM, Fernando González wrote: > Hola, me han encargado realizar un desarrollo sobre la 1.11 en el que > tengo que poder ocultar un IFFrame pero me parece que esto no es > posible, por lo que voy a tener que modificar código de gvSIG. No es > necesario que sea persistente en disco. > > ¿Alguna sugerencia de cómo sería mejor afrontar esto? > > Por lo que he podido ver, en IFFrame hay 4 métodos para "dibujar": > - print > - draw > - drawDraft > - drawHandlers > > El objetivo puede ser meter un método setVisible(boolean) tal que si > se le pasa un "false" ninguna de las llamadas de dibujado anteriores > tenga efecto. > > La idea que llevo es la siguiente: > > - Crear 4 métodos abstractos en FFrame: > - doPrint > - doDraw > - doDrawDraft > - doDrawHandlers > - Hacer que todas las implementaciones de FFrame implementen estos 4 > métodos en lugar de los 4 originales. > - Implementar los 4 métodos originales en la clase padre (FFrame) > teniendo la visibilidad en cuenta y delegando en caso de ser visible > en los 4 métodos abstractos doXXX. > > ¿A alguien se le ocurre una manera mejor? > > ¿Qué posibilidades hay de incluir esto en el código de gvSIG? > > > Saludos. > _______________________________________________ > gvSIG_desarrolladores mailing list > gvSIG_desarrolladores@listserv.gva.es > Para ver histórico de mensajes, editar sus preferencias de usuario o darse de > baja en esta lista, acuda a la siguiente dirección: > http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores > -- Jorge Piera Llodrá gvSIG software architect PRODEVELOP e-mail: jpi...@gvsig.com http://www.prodevelop.es http://www.gvsig.org _______________________________________________ gvSIG_desarrolladores mailing list gvSIG_desarrolladores@listserv.gva.es Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección: http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores