[Gvsig_desarrolladores] Cuando ejecuto una extension como puedo esconder otras?

Javier Estévez jestevez en cartolab.es
Mie Nov 10 11:19:15 CET 2010


Te comento un detalle. Muchas veces se programan los métodos isEnabled
dependiendo directamente de isVisible. Es decir, cuando se ejecuta
isEnabled se dan por hecho que existen unas condiciones porque
isVisible devolvió true. Es por eso que creo que posiblemente el error
esté en el método que decide cuándo todas esas extensiones son
visibles, ya que utilizas extension.isEnabled en lugar
extension.isVisible. Cuando comprueba si las extensiones son visibles
en realidad está comprobando si están activadas y puede inducir a
error porque no se cumple algún requisito previo.

Es decir, yo lo cambiaría a:

public boolean isVisible(IExtension extension) {
       // TODO Auto-generated method stub
   if (extension instanceof GestorCargador ||
               extension instanceof StopEditing ||
               extension instanceof StartEditing ||
               extension instanceof InsertPointExtension ||
               extension instanceof InsertLineExtension ||
               extension instanceof InsertPolygonExtension ||
               extension instanceof InfoToolExtension ||
               extension instanceof GestorAyuda ||
                 extension instanceof ViewControls||
                 extension instanceof MyPrivateInfo) {
       return extension.isVisible(); <-- aquí
     } else {
       return false;
     }
}

El día 10 de noviembre de 2010 10:55, agirrearri
<agirrearri en hotmail.com> escribió:
>
> Hola gracias, quería saber eso, pero te cuento un poco mi historia. Tengo una
> clase que desde una extension me desabilita otras, te pero me da los errores
> que he descrito anteriormente. Supongo que será porque las extensiones estan
> pensadas para que ellas se habiliten o desbiliten.
> La clase que he construido para desabilitar otras extensiones desde la mía
> es esta. Es una clase que en realidad desabilita todas pero puedes indicar
> (como se puede ver en esta clase) cuales quieres que te deje activas. Con
> esto quiza me puedan ayudar concretamente en lo que quiero.
>
>
> public class MiExclusiveUIExtension implements ExclusiveUIExtension{
>
>
>        public void execute(String arg0) {
>                // TODO Auto-generated method stub
>                JOptionPane.showMessageDialog((Component) PluginServices.getMainFrame(),
> JOptionPane.ERROR_MESSAGE);
>
>
>        }
>
>        public IExtensionStatus getStatus() {
>                // TODO Auto-generated method stub
>                return null;
>        }
>
>        public IExtensionStatus getStatus(IExtension arg0) {
>                // TODO Auto-generated method stub
>                return null;
>        }
>
>        public void initialize() {
>                // TODO Auto-generated method stub
>
>        }
>
>    public boolean isEnabled(IExtension extension) {
>
>              if (extension instanceof GestorCargador ||
>                          extension instanceof StopEditing ||
>                          extension instanceof StartEditing ||
>                          extension instanceof InsertPointExtension ||
>                          extension instanceof InsertLineExtension ||
>                          extension instanceof InsertPolygonExtension ||
>                          extension instanceof InfoToolExtension ||
>                          extension instanceof GestorAyuda ||
>                          extension instanceof ViewControls ||
>                          extension instanceof MyPrivateInfo) {
>                return extension.isEnabled();
>              } else {
>                return false;
>              }
>
>            }
>
> public boolean isVisible(IExtension extension) {
>        // TODO Auto-generated method stub
>    if (extension instanceof GestorCargador ||
>                extension instanceof StopEditing ||
>                extension instanceof StartEditing ||
>                extension instanceof InsertPointExtension ||
>                extension instanceof InsertLineExtension ||
>                extension instanceof InsertPolygonExtension ||
>                extension instanceof InfoToolExtension ||
>                extension instanceof GestorAyuda ||
>                  extension instanceof ViewControls||
>                  extension instanceof MyPrivateInfo) {
>        return extension.isEnabled();
>      } else {
>        return false;
>      }
> }
>
>        public void postInitialize() {
>                // TODO Auto-generated method stub
>
>        }
>
>        public void terminate() {
>                // TODO Auto-generated method stub
>
>        }
>
>        public boolean isEnabled() {
>                // TODO Auto-generated method stub
>                return false;
>        }
>
>        public boolean isVisible() {
>                // TODO Auto-generated method stub
>                return false;
>        }
>
>
>
> }
>
>
> Gracias por la ayuda, atentamente eñaut.
> --
> View this message in context: http://osgeo-org.1803224.n2.nabble.com/Cuando-ejecuto-una-extension-como-puedo-esconder-otras-tp5724010p5724071.html
> Sent from the gvSIG desarrolladores mailing list archive at Nabble.com.
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>



-- 
Javier Estévez Valiñas
Grupo de Desarrollo
Cartolab - Laboratorio de Ingeniería Cartográfica
http://www.cartolab.es

ETS Ingeniería de Caminos, Canales y Puertos
Universidade da Coruña
Campus de Elviña - 15071 A Coruña (España)
(34)981167000 ext. 5493


Más información sobre la lista de distribución gvSIG_desarrolladores