/**
*
* @author bantchao
*
* email: bantchao_AT_gmail.com
* ... please remove "_AT_" from the above string to get the right email address
*
*/
package org.geoforge.guillcogcecl.wwd.rlrs;
import gov.nasa.worldwind.awt.WorldWindowGLCanvas;
import gov.nasa.worldwind.layers.Layer;
import gov.nasa.worldwind.layers.LayerList;
import java.beans.PropertyChangeListener;
import java.util.Observer;
import java.util.logging.Logger;
import org.geoforge.guillc.wwd.rlrs.GfrSetRlrTopSecLclAbs;
import org.geoforge.java.util.logging.filehandler.FileHandlerLogger;
import org.geoforge.mdldatecl.GfrMdlDatSetTlosEclPnt;
import org.geoforge.worldwind.layer.GfrRlrObjTloAbs;
import org.geoforge.worldwindecl.layer.GfrRlrObjTloRndSngPntPnt;
import org.geoforge.wrpbasprsdsp.state.multiple.run.GfrWrpBasPrsDspPrjObjSecMltTogCbx;
import org.geoforge.wrpbasprsdsp.state.singleton.selecttlo.GfrWrpObjSttSngSelTlo;
import org.geoforge.wrpbasprssynecl.GfrWrpBasTopSynEclPnts;
/**
*
* @author bantchao
*/
public class GfrSetRlrTopSecEclPnts extends GfrSetRlrTopSecLclAbs
{
// ----
// begin: instantiate logger for this class
final private static Logger _LOGGER_ = Logger.getLogger(GfrSetRlrTopSecEclPnts.class.getName());
static
{
GfrSetRlrTopSecEclPnts._LOGGER_.addHandler(FileHandlerLogger.s_getInstance());
}
// end: instantiate logger for this class
// ----
public GfrSetRlrTopSecEclPnts(WorldWindowGLCanvas cnv, String strIdViewer)
{
super(cnv, strIdViewer);
GfrMdlDatSetTlosEclPnt.getInstance().addObserver((Observer) this);
}
@Override
public void addAllObjects() throws Exception
{
String[] strsUniqueId = GfrWrpBasTopSynEclPnts.getInstance().getIdsTlo();
if (strsUniqueId == null || strsUniqueId.length < 1)
return;
for (int i=0; i<strsUniqueId.length; i++)
{
Object objCur = addObjectVariable(strsUniqueId[i]);
}
}
@Override
public void removeAllObjects() throws Exception
{
LayerList llt = super._cnv.getModel().getLayers();
for (Layer lyrCur: llt)
{
if (! (lyrCur instanceof GfrRlrObjTloRndSngPntPnt))
continue;
GfrRlrObjTloAbs rlrCur = (GfrRlrObjTloAbs) lyrCur;
llt.remove(rlrCur);
rlrCur.removeAllRenderables();
rlrCur.destroy();
}
}
@Override
public Object addObjectVariable(String strId) throws Exception
{
LayerList llt = super._cnv.getModel().getLayers();
for (Layer lyrCur: llt)
{
if (! (lyrCur instanceof GfrRlrObjTloRndSngPntPnt))
continue;
String strIdCur = ((GfrRlrObjTloAbs) lyrCur).getIdObjectGeoforgeWwdEarth();
if (strIdCur.compareTo(strId) != 0)
continue;
// bug
String str = "already loaded: " + strId;
GfrSetRlrTopSecEclPnts._LOGGER_.warning(str);
return null;
}
// ----
GfrRlrObjTloAbs lyr = new GfrRlrObjTloRndSngPntPnt(
(PropertyChangeListener) this,
strId);
if (! lyr.init())
{
String str = "! lyr.init()";
GfrSetRlrTopSecEclPnts._LOGGER_.severe(str);
throw new Exception(str);
}
llt.add(lyr);
if (! GfrWrpObjSttSngSelTlo.getInstance().isEnabled(strId))
{
lyr.setEnabled(false);
return lyr;
}
if (! GfrWrpBasPrsDspPrjObjSecMltTogCbx.getInstance().isEnabled(super._strIdViewer, strId))
{
lyr.setEnabled(false);
return lyr;
}
// ending
return lyr;
}
@Override
public void destroy()
{
GfrMdlDatSetTlosEclPnt.getInstance().deleteObserver((Observer) this);
super.destroy();
}
}