Package org.geoforge.guillcogc.wwd.rlrs

Source Code of org.geoforge.guillcogc.wwd.rlrs.GfrSetRlrTopSecOgcWmss

/*
*  Copyright (C) 2011-2014 GeoForge Project
*
*  This program is free software; you can redistribute it and/or
*  modify it under the terms of the GNU Lesser General Public License
*  as published by the Free Software Foundation; either version 2
*  of the License, or (at your option) any later version.
*
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU Lesser General Public License for more details.
*
*  You should have received a copy of the GNU Lesser General Public License
*  along with this program; if not, write to the Free Software
*  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/
package org.geoforge.guillcogc.wwd.rlrs;

import gov.nasa.worldwind.avlist.AVList;
import gov.nasa.worldwind.awt.WorldWindowGLCanvas;
import gov.nasa.worldwind.layers.Layer;
import gov.nasa.worldwind.layers.LayerList;
import java.util.EventObject;
import java.util.Observable;
import java.util.Observer;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import org.geoforge.guillc.optionpane.GfrOptionPaneAbs;
import org.geoforge.guillc.wwd.rlrs.GfrSetRlrTopSecAbs;
import org.geoforge.guillcogc.util.GfrResBundleGuiLlcOgc;
import org.geoforge.java.enumeration.GfrEnuSystemPropertiesKeys;
import org.geoforge.lang.util.GfrResBundleLang;
import org.geoforge.java.util.logging.filehandler.FileHandlerLogger;
import org.geoforge.mdldat.event.GfrEvtMdlIdDatAddedTlo;
import org.geoforge.mdldat.event.GfrEvtMdlIdDatRemovedAllMlo;
import org.geoforge.mdldat.event.GfrEvtMdlIdDatRemovedMlo;
import org.geoforge.mdldatogc.GfrMdlDatIdObjTloOgcWms;
import org.geoforge.mdldatogc.GfrMdlDatSetTlosOgcWms;
import org.geoforge.mdldatogc.event.GfrEvtMdlIdDatAddedLloVarWmsLyrLeaf;
import org.geoforge.mdldatogc.worldwind.capabilities.GfrCapWms;
import org.geoforge.mdldatogc.worldwind.thread.GfrPgsThrOgcWmsLoad;
import org.geoforge.mdldsp.event.state.multiple.GfrEvtMdlTogMltSecCbx;
import org.geoforge.worldwindogc.avlist.AVListImplChildWms;
import org.geoforge.worldwindogc.capabilities.GfrWMSCapabilities;
import org.geoforge.worldwindogc.util.eventobject.GfrEventObjectLoadedCapWmsOgc;
import org.geoforge.lang.handler.IGfrHandlerEventListenerThreadJobProgress;
import org.geoforge.mdldat.event.GfrEvtMdlIdDatClonedTlo;
import org.geoforge.mdldsp.event.render.wwd.EnuEvtDspRndWwdEarthImg;
import org.geoforge.mdldsp.event.render.wwd.GfrEvtMdlIdDspRndWwdEarthShpDimOneImg;
import org.geoforge.mdldspogc.render.wwd.GfrMdlDspRndWwdEarthImgLyrLeaf;
import org.geoforge.worldwindogc.factory.GfrBasicLayerFactory;
import org.geoforge.worldwindogc.layer.GfrLyrWMSTiledImageLayer;
import org.geoforge.wrpbasprsdsp.render.wwd.GfrWrpBasPrsDspPrjRndWwdEarthImg;
import org.geoforge.wrpbasprsdsp.state.multiple.run.GfrWrpBasPrsDspPrjObjSecMltTogCbx;
import org.geoforge.wrpbasprssynogc.GfrWrpBasSynObjNameTloWms;
import org.geoforge.wrpbasprssynogc.GfrWrpBasTopSynOgcWmss;


/**
*
* @author bantchao
*
* email: bantchao_AT_gmail.com
* ... please delete "_AT_" from the above string to get the right email address
*
*/
public class GfrSetRlrTopSecOgcWmss extends GfrSetRlrTopSecAbs implements
        IGfrHandlerEventListenerThreadJobProgress
{
   // ----
    // begin: instantiate logger for this class
    final private static Logger _LOGGER_ = Logger.getLogger(GfrSetRlrTopSecOgcWmss.class.getName());

    static
    {
        GfrSetRlrTopSecOgcWmss._LOGGER_.addHandler(FileHandlerLogger.s_getInstance());
    }

    // end: instantiate logger for this class
    // ----
   
    private boolean _blnDestroyed_ = false;
   
   public GfrSetRlrTopSecOgcWmss(WorldWindowGLCanvas cnv, String strIdViewer)
   {
      super(cnv, strIdViewer);
     
      GfrMdlDatSetTlosOgcWms.getInstance().addObserver((Observer) this);
      GfrMdlDatIdObjTloOgcWms.getInstance().addObserver((Observer) this);
      GfrMdlDspRndWwdEarthImgLyrLeaf.getInstance().addObserver((Observer) this);
   }
  
   @Override
   public void update(Observable obs, Object objEvt)
   {
      if (this._blnDestroyed_)
         return;
     
      if (objEvt instanceof GfrEvtMdlIdDspRndWwdEarthShpDimOneImg)
      {
         GfrEvtMdlIdDspRndWwdEarthShpDimOneImg evtImg = (GfrEvtMdlIdDspRndWwdEarthShpDimOneImg) objEvt;
         String strIdLayerLeaf = evtImg.getId();
         Object objWhat = evtImg.getWhat();
        
         if (objWhat == EnuEvtDspRndWwdEarthImg.TRANSPARENCY)
          {
             Float flo = (Float) evtImg.getValue();
             float fltAlpha = flo.floatValue();
            
             _updateTransparency_(strIdLayerLeaf, fltAlpha);

             return;
          }
        
         else
         {
            String str = "Dev coding error, uncaught instanceof objWhat:" + objWhat;
            GfrSetRlrTopSecOgcWmss._LOGGER_.severe(str);
            GfrOptionPaneAbs.s_showDialogError(null, str);
            return;
         }
      }
     
      try
      {
         if (objEvt instanceof GfrEvtMdlIdDatAddedTlo ||
             objEvt instanceof GfrEvtMdlIdDatClonedTlo // rather dev coding error
                 )
            return;
        
         // ----
        
         if (objEvt instanceof GfrEvtMdlIdDatAddedLloVarWmsLyrLeaf)
         {
            // ATTN: forcing to be a layer, terrain not yet handled
            GfrEvtMdlIdDatAddedLloVarWmsLyrLeaf evt = (GfrEvtMdlIdDatAddedLloVarWmsLyrLeaf) objEvt;

            String strId = evt.getId();
            String strIdParent = evt.getIdParent();
            GfrWMSCapabilities caps = GfrCapWms.getInstance().get(strIdParent);

            AVList params = new AVListImplChildWms(
              evt.getValueLayerNames(),
              evt.getValueDisplayName(),
              evt.getValueLayerAbstract(),
              evt.getValueStyleNames()) {};
           
            Object objLayerLeaf = this.addObjectLloLayer(strId, strIdParent, caps, params);
           
            if (objLayerLeaf == null)
            {
               GfrSetRlrTopSecOgcWmss._LOGGER_.info("obj == null, strId=" + strId);
               return;
            }
           
            float flt = GfrWrpBasPrsDspPrjRndWwdEarthImg.getInstance().getTransparency(strId);
            Layer lyrLeaf = (Layer) objLayerLeaf;

            lyrLeaf.setOpacity((double) flt);
           
            return;
          }

         // ----
        
         if (objEvt instanceof GfrEvtMdlTogMltSecCbx)
         {
            GfrEvtMdlTogMltSecCbx evt = (GfrEvtMdlTogMltSecCbx) objEvt;
           
            String strIdViewer = evt.getKeyViewer();
     
            if (strIdViewer.compareTo(super._strIdViewer) != 0)
               return;

            String strIdObject = evt.getKeyObject();
            boolean blnObject = evt.getValueObject();
     
            _update_(strIdObject, blnObject);
           
           
            return;
         }
      }
     
      catch (Exception exc)
      {
         exc.printStackTrace();
         String str = exc.getMessage();
         GfrSetRlrTopSecOgcWmss._LOGGER_.severe(str);
         GfrOptionPaneAbs.s_showDialogError(null, str);
         return;
      }
     
      // quick fix
      if (obs instanceof GfrMdlDatIdObjTloOgcWms)
      {
         if  (objEvt instanceof GfrEvtMdlIdDatRemovedAllMlo ||
              objEvt instanceof GfrEvtMdlIdDatRemovedMlo
                 )
         {
            javax.swing.SwingUtilities.invokeLater(new Runnable()
            {
                @Override
                public void run()
                {
                   if (_cnv != null)
                      _cnv.redraw();
                }
            });
         }
           
         return;
      }
     
      super.update(obs, objEvt);
   }
  
   private void _updateTransparency_(String strIdLayerLeaf, float fltAlpha)
   {     
      LayerList llt = super._cnv.getModel().getLayers();
     
      for (Layer lyrCur: llt)
      {
         if (! (lyrCur instanceof GfrLyrWMSTiledImageLayer))
            continue;
        
         GfrLyrWMSTiledImageLayer lyrLeafCur = (GfrLyrWMSTiledImageLayer) lyrCur;
        
         String strIdCur = lyrLeafCur.getIdObjectGeoforgeWwdEarth();
        
         if (strIdCur.compareTo(strIdLayerLeaf) != 0)
            continue;
        
         double dblOpacityPrev = lyrCur.getOpacity();
        
         if (dblOpacityPrev == (double) fltAlpha)
            return;
        
         lyrCur.setOpacity((double) fltAlpha);
        
         if (! lyrCur.isEnabled())
            return;
        
         javax.swing.SwingUtilities.invokeLater(new Runnable()
         {
            @Override
            public void run()
            {
               if (_cnv != null)
                  _cnv.redraw();
            }
         });
        
         return;
      }
   }
  
   @Override
   protected boolean _selectObject(String strIdObjectTlo, boolean bln) throws Exception
   {
      boolean blnShouldRedraw = false;
     
      // ----
      blnShouldRedraw |= _selectLayers_(strIdObjectTlo, bln);
     
      // ----
     if (blnShouldRedraw)
     {
        if (super._cnv != null)
             super._cnv.redraw();
     }

     return false; // !!!!!!!!!!!!!
   }
  
  
  
   public void setVisibleLayers(String strIdWms, boolean bln)
   {
      LayerList llt = super._cnv.getModel().getLayers();
      boolean blnGotIt = false;
       
      for (Layer lyrCur: llt)
      {
         if (! (lyrCur instanceof GfrLyrWMSTiledImageLayer))
             continue;

         GfrLyrWMSTiledImageLayer rlrCur = (GfrLyrWMSTiledImageLayer) lyrCur;
         String strIdWmsCur = rlrCur.getIdParent();
        
         if (strIdWmsCur.compareTo(strIdWms) != 0)
            continue;
        
         rlrCur.setDisplayStateThis(bln);
        
         if (rlrCur.isAllowedDisplay())
            rlrCur.setEnabled(true);
         else
            rlrCur.setEnabled(false);
        
         blnGotIt = true;
      }
    
      if (! blnGotIt)
         return;
     
      javax.swing.SwingUtilities.invokeLater(new Runnable()
            {
                @Override
                public void run()
                {
                   if (_cnv != null)
                      _cnv.redraw();
                }
            });
   }
  
   /*
    * pending: terrains
    */
   @Override
    public boolean removeObjectVariable(String strId) throws Exception
    {
       boolean blnGotIt = false;
       LayerList llt = super._cnv.getModel().getLayers();
       
        for (Layer lyrCur: llt)
        {
            if (! (lyrCur instanceof GfrLyrWMSTiledImageLayer))
               continue;
           
            GfrLyrWMSTiledImageLayer rlrCur = (GfrLyrWMSTiledImageLayer) lyrCur;
            String strIdCurParent = rlrCur.getIdParent();

            if (strIdCurParent.compareTo(strId) != 0)
                continue;
  
            llt.remove(lyrCur);
            rlrCur.dispose();
            blnGotIt = true;
        }
      
        return blnGotIt;
    }
 
   public void setVisibleLayer(String strId, boolean bln)
   {
      LayerList llt = super._cnv.getModel().getLayers();
      boolean blnGotIt = false;
       
      for (Layer lyrCur: llt)
      {
         if (! (lyrCur instanceof GfrLyrWMSTiledImageLayer))
             continue;

         GfrLyrWMSTiledImageLayer rlrCur = (GfrLyrWMSTiledImageLayer) lyrCur;
        
         String strIdCur = rlrCur.getIdObjectGeoforgeWwdEarth();
        
         if (strIdCur.compareTo(strId) != 0)
            continue;
        
         rlrCur.setDisplayStateThis(bln);
        
         if (rlrCur.isAllowedDisplay())
            rlrCur.setEnabled(true);
         else
            rlrCur.setEnabled(false);
      
         blnGotIt = true;
         break;
      }
    
      if (! blnGotIt)
         return;
     
      javax.swing.SwingUtilities.invokeLater(new Runnable()
      {
            @Override
            public void run()
            {
               if (_cnv != null)
                  _cnv.redraw();
            }
      });
   }

 
   @Override
   public void addAllObjects() throws Exception
   {
      String[] strsUniqueId = GfrWrpBasTopSynOgcWmss.getInstance().getIdsTlo();

      if (strsUniqueId == null || strsUniqueId.length < 1)
         return;
     
      for (int i=0; i<strsUniqueId.length; i++)
      {
         _loadObject_(strsUniqueId[i]);
      }
   }
  
   @Override
   public void removeAllObjects() throws Exception
   {
      //this._hmpIdWmsToCaps_.deleteAll();
     
      //String str = "TODO: terrains";
      //GfrSetRlrTopSecOgcWmss._LOGGER_.warning(str);
     
      LayerList llt = super._cnv.getModel().getLayers();
      boolean blnGotIt = false;
       
      for (Layer lyrCur: llt)
      {
         if (! (lyrCur instanceof GfrLyrWMSTiledImageLayer))
             continue;

         GfrLyrWMSTiledImageLayer rlrCur = (GfrLyrWMSTiledImageLayer) lyrCur;
         llt.remove(rlrCur);
         //rlrCur.removeAllRenderables();
         //rlrCur.destroy();
         blnGotIt = true;
      }
    
      if (! blnGotIt)
         return;
     
      javax.swing.SwingUtilities.invokeLater(new Runnable()
      {
          @Override
          public void run()
          {
             if (_cnv != null)
                _cnv.redraw();
          }
      });
   }

   @Override
   public Object addObjectVariable(String strId) throws Exception
   {   
      String str = "Dev coding error";
      GfrSetRlrTopSecOgcWmss._LOGGER_.severe("strId=" + strId);
      throw new Exception(str);
   }

  

   @Override
    public void destroy()
    {
       this._blnDestroyed_ = true;
      
       GfrMdlDatSetTlosOgcWms.getInstance().deleteObserver((Observer) this);
       GfrMdlDatIdObjTloOgcWms.getInstance().deleteObserver((Observer) this);
       GfrMdlDspRndWwdEarthImgLyrLeaf.getInstance().deleteObserver((Observer) this);
      
       super.destroy();
    }
  
  
   protected Object addObjectLloLayer(String strId, String strIdParent,
           GfrWMSCapabilities caps, AVList params) throws Exception
   {     
        Object obj = GfrBasicLayerFactory.s_createComponent(caps, params);
       
        if (obj == null)
           return null;
       
        GfrLyrWMSTiledImageLayer objLayer = (GfrLyrWMSTiledImageLayer) obj;
       
        String strErrorCheck = objLayer.getErrorCheck();
       
        if (strErrorCheck != null)
        {
           GfrSetRlrTopSecOgcWmss._LOGGER_.warning(strErrorCheck);
           return null;
        }
       
        LayerList llt = super._cnv.getModel().getLayers();
        llt.add(objLayer);
        objLayer.setIdParent(strIdParent);
        objLayer.setUniqueIdGtr(strId);
       
        boolean blnEnable = false;     
        boolean blnIsCheckedParent = GfrWrpBasPrsDspPrjObjSecMltTogCbx.getInstance().isEnabled(super._strIdViewer, strIdParent);
        boolean blnIsCheckedThis = GfrWrpBasPrsDspPrjObjSecMltTogCbx.getInstance().isEnabled(super._strIdViewer, strId);

         if (blnIsCheckedParent)
         {
             if (blnIsCheckedThis)
             {
                blnEnable = true;
             }
         }
       
        objLayer.setEnabled(blnEnable);
        objLayer.setDisplayStateThis(blnIsCheckedThis); // !!
       
        return obj;

   }

   @Override
   public void handleEventThreadJobDone(EventObject e)
   {
      if (this._blnDestroyed_)
         return;
     
      GfrEventObjectLoadedCapWmsOgc evt = (GfrEventObjectLoadedCapWmsOgc) e;

      final String strIdWms = evt.getIdWms();
     
      String strError = evt.getError();
     
      if (strError != null)
      {
       
         if (GfrSetRlrTopMainOgcWmssAbs._INT_CHOICE_WARNING == 3) //always remove
         {
            javax.swing.SwingUtilities.invokeLater(new Runnable()
            {
                  @Override
                  public void run()
                  {

                     _invokeLaterDelete_(strIdWms);
                  }
            });
           
            return;
         }
        
         if (GfrSetRlrTopMainOgcWmssAbs._INT_CHOICE_WARNING == 1) // always ignore
         {
            return;
         }
        
        
         // show error message, show to destroy, ans dont show error message again.
        
         String strWarning = "Sorry, server seems to be down";
           
            strWarning += "\n\n";
            strWarning += GfrResBundleLang.s_getInstance().getValue("word.details") + "\n";
           
            int intLastIndexComma = strError.lastIndexOf("http");
           
            if (intLastIndexComma != -1)
            {
               strWarning += "   " + strError.substring(0, intLastIndexComma-1);
              
               int intVal = intLastIndexComma + "http".length() -1;
              
               if (intVal != strError.length()-1)
               {
                  strWarning += "\n";
                  strWarning += "   " + strError.substring(intLastIndexComma);
               }
              
               else
                  strWarning += "http"; // done in a hurry!!!!
            }
           
            else
               strWarning += "   " + strError;
         
           
            String strTitle = System.getProperty(GfrEnuSystemPropertiesKeys.NAME_LONG_APPLI.getLabel());
           
            strTitle += " - " + GfrResBundleLang.s_getInstance().getValue("word.warning") + " " +
                    GfrResBundleGuiLlcOgc.s_getInstance().getValue("sentence.ogcServices") +
                    " " + "secondary viewer";
           
            GfrSetRlrTopMainOgcWmssAbs._INT_CHOICE_WARNING = JOptionPane.showOptionDialog(
                    null, strWarning, strTitle,
               JOptionPane.DEFAULT_OPTION,
               JOptionPane.WARNING_MESSAGE,
               null,
               GfrSetRlrTopMainOgcWmssAbs._STRS_OPTION_WARNING,
               GfrSetRlrTopMainOgcWmssAbs._STRS_OPTION_WARNING[0]);
           
            //GfrOptionPaneAbs.s_showDialogWarning(null, strWarning);
           
            if (GfrSetRlrTopMainOgcWmssAbs._INT_CHOICE_WARNING==0 ||
                    GfrSetRlrTopMainOgcWmssAbs._INT_CHOICE_WARNING==1)
               return;
           
            // cas: 2, 3
            javax.swing.SwingUtilities.invokeLater(new Runnable()
            {
                  @Override
                  public void run()
                  {

                     _invokeLaterDelete_(strIdWms);
                  }
            });
           
            return;
      } // end error
     

      GfrWMSCapabilities cap = GfrCapWms.getInstance().get(strIdWms);
     
      try
      {
         _loadChildrenLayer(strIdWms, cap);
      }
     
      catch(Exception exc)
      {
         if (this._blnDestroyed_)
            return;
        
         exc.printStackTrace();
         String str = exc.getMessage();
         GfrSetRlrTopSecOgcWmss._LOGGER_.severe(str);
         GfrOptionPaneAbs.s_showDialogError(null, str);
         return;
      }
   }
  
   private void _loadChildrenLayer(String strId, GfrWMSCapabilities cap) throws Exception
   {
      String[] strsIdChild = GfrWrpBasSynObjNameTloWms.getInstance().getAllIdsLayerLeafFromTop(strId);
     
      if (strsIdChild==null || strsIdChild.length<1)
         return;
     
      for (int i=0; i<strsIdChild.length; i++)
      {
         _loadChildLayer_(strsIdChild[i], strId, cap);
      }
   }
  
   private void _loadChildLayer_(
           String strId,
           String strIdParent,
           GfrWMSCapabilities caps) throws Exception
   {
      String strValueLayerNames = GfrWrpBasSynObjNameTloWms.getInstance().getValueNameLayerLeaf(strId);
      String strValueDisplayName = GfrWrpBasSynObjNameTloWms.getInstance().getValueTitleLayerLeaf(strId);
      String strValueLayerAbstract = GfrWrpBasSynObjNameTloWms.getInstance().getValueAbstractLayerLeaf(strId);
      String strValueStyleName = GfrWrpBasSynObjNameTloWms.getInstance().getValueStylesLayerLeaf(strId);
     
      AVList lstParamsChid = new AVListImplChildWms(
           strValueLayerNames,
           strValueDisplayName,
           strValueLayerAbstract,
           strValueStyleName) {};

      Object objLayerLeaf = addObjectLloLayer(strId, strIdParent, caps, lstParamsChid);
     
      if (objLayerLeaf == null)
      {
         GfrSetRlrTopSecOgcWmss._LOGGER_.info("objLayerLeaf == null, strId=" + strId);
         return;
      }
     
      float flt = GfrWrpBasPrsDspPrjRndWwdEarthImg.getInstance().getTransparency(strId);
      Layer lyrLeaf = (Layer) objLayerLeaf;

      lyrLeaf.setOpacity((double) flt);
   }
  
   private void _loadObject_(String strId) throws Exception
   {
      if (this._blnDestroyed_)
         return;
     
      new GfrPgsThrOgcWmsLoad(strId, (IGfrHandlerEventListenerThreadJobProgress) this);
   }
  
  
  
   private boolean _selectLayers_(String strIdParent, boolean bln) throws Exception
   {
      boolean blnShouldRedraw = false;
     
      LayerList llt = super._cnv.getModel().getLayers();
       
        for (Layer lyrCur: llt)
        {
            if (! (lyrCur instanceof GfrLyrWMSTiledImageLayer))
                continue;
           
            String strIdCurParent = ((GfrLyrWMSTiledImageLayer) lyrCur).getIdParent();

           
            if (strIdCurParent.compareTo(strIdParent) != 0)
                continue;
           
            GfrLyrWMSTiledImageLayer lyrChildCur = (GfrLyrWMSTiledImageLayer) lyrCur;
           
            lyrChildCur.setDisplayStateParent(bln);
            boolean blnIsValidForDisplay = lyrChildCur.isAllowedDisplay();
           
           
            if (blnIsValidForDisplay)
               lyrChildCur.setEnabled(true);
            else
               lyrChildCur.setEnabled(false);
            // ATTN: notion of state from control
            blnShouldRedraw = true;
        }
     
      return blnShouldRedraw;
   }
  
   private void _updateTlo_(String strIdTlo, boolean bln) throws Exception
   {
      boolean blnShouldRedraw = _updateLayerTloChanged_(strIdTlo, bln);
     
      if (! blnShouldRedraw)
         return;
     
      javax.swing.SwingUtilities.invokeLater(new Runnable()
      {
          @Override
          public void run()
          {
             if (_cnv != null)
                _cnv.redraw();
          }
      });
   }
  
   private void _updateLlo_(String strIdLlo, boolean bln) throws Exception
   {
      boolean blnGotIt = false;
     
      blnGotIt = _updateLayer_(strIdLlo, bln);
      // TODO: terrain
     
      if (! blnGotIt)
         return;
     
      javax.swing.SwingUtilities.invokeLater(new Runnable()
      {
          @Override
          public void run()
          {
             if (_cnv != null)
                _cnv.redraw();
          }
      });
   }
  
   /*
    * strId: either tlo or child
    */
   private void _update_(String strId, boolean bln) throws Exception
   {
      if (GfrWrpBasTopSynOgcWmss.getInstance().containsTlo(strId))
      {
         _updateTlo_(strId, bln);
      }
     
      else
         _updateLlo_(strId, bln);
   }
  
  
   private boolean _updateLayerTloChanged_(String strIdTlo, boolean bln) throws Exception
   {
      boolean blnShouldRedraw = false;
     
      LayerList llt = super._cnv.getModel().getLayers();
       
      for (Layer lyrCur: llt)
      {
         if (! (lyrCur instanceof GfrLyrWMSTiledImageLayer))
             continue;

         GfrLyrWMSTiledImageLayer rlrCur = (GfrLyrWMSTiledImageLayer) lyrCur;
        
         String strIdCurParent = rlrCur.getIdParent();
        
         if (strIdCurParent.compareTo(strIdTlo) != 0)
            continue;
        
         //rlrCur.setDisplayStateParent(bln);
         String strIdCurThis = rlrCur.getIdObjectGeoforgeWwdEarth();
         boolean blnChild = GfrWrpBasPrsDspPrjObjSecMltTogCbx.getInstance().isEnabled(_strIdViewer, strIdCurThis);
        
         boolean blnWasVisible = rlrCur.isEnabled();
        
         if (! blnWasVisible)
         {
            if (! bln)
               continue;
           
            // ----
            if (! blnChild)
               continue;
           
            // ----
            rlrCur.setEnabled(true);
            blnShouldRedraw = true;
           
            continue;
         }
        
         // blnWasVisible
         if (bln)
         {
            // !!!! bug
            continue;
         }
        
         // ! bln
         rlrCur.setEnabled(false);
         blnShouldRedraw = true;  
         continue;
      }
    
      return blnShouldRedraw;
   }
  
    /*
    * strId: either tlo or child
    */
   private boolean _updateLayer_(String strId, boolean bln) throws Exception
   {
      LayerList llt = super._cnv.getModel().getLayers();
       
      for (Layer lyrCur: llt)
      {
         if (! (lyrCur instanceof GfrLyrWMSTiledImageLayer))
             continue;

         GfrLyrWMSTiledImageLayer rlrCur = (GfrLyrWMSTiledImageLayer) lyrCur;
        
        
        
        
        
         String strIdCurThis = rlrCur.getIdObjectGeoforgeWwdEarth();
        
         if (strIdCurThis.compareTo(strId) != 0)
            continue;
        
         String strIdCurParent = rlrCur.getIdParent();
        
         boolean blnIsCheckedParent = GfrWrpBasPrsDspPrjObjSecMltTogCbx.getInstance().isEnabled(_strIdViewer, strIdCurParent);
        
         if (! blnIsCheckedParent)
            return false;
        
        
         boolean blnWasEnabled = rlrCur.isEnabled();
        
         if (blnWasEnabled)
         {
            if (! bln)
            {
               rlrCur.setEnabled(false);
               return true;
            }
           
            // !!! bug
            return false;
         }
        
         rlrCur.setEnabled(bln);
         return true;
      }
    
      return false;
   }
  
   private void _invokeLaterDelete_(String strIdWms)
   {
      try
      {
         GfrMdlDatSetTlosOgcWms.getInstance().deleteObjectWithId(strIdWms);
      }
     
      catch(Exception exc)
      {
         exc.printStackTrace();
      }
     
      destroy();
   }
}
TOP

Related Classes of org.geoforge.guillcogc.wwd.rlrs.GfrSetRlrTopSecOgcWmss

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.