/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.geoforge.guillcogcecl.menuitem;
import gov.nasa.worldwind.geom.Position;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
import org.geoforge.guillc.menuitem.GfrMimTrsAlrIdZoomToObjectOpenViewersTloAlwaysNoAbs;
import org.geoforge.mdl.event.GfrEvtMdlIdAbs;
import org.geoforge.mdldat.event.GfrEvtMdlIdDatChangedGeometry;
import org.geoforge.mdldat.event.GfrEvtMdlIdDatRemovedPosMlo;
import org.geoforge.mdldatecl.GfrMdlDatIdObjTloEclSpn;
import org.geoforge.wrpbasprssynecl.GfrWrpBasSynObjNameTloEclSpn;
/**
*
* @author robert
*/
public class GfrMimTrsAlrIdZoomToObjectOpenViewersTloAlwaysNoSpn extends GfrMimTrsAlrIdZoomToObjectOpenViewersTloAlwaysNoAbs
{
public GfrMimTrsAlrIdZoomToObjectOpenViewersTloAlwaysNoSpn(String strId) throws Exception
{
super(strId);
GfrMdlDatIdObjTloEclSpn.getInstance().addObserver((Observer) this);
_load();
}
@Override
protected void _load() throws Exception
{
List<Position> lstPos = GfrWrpBasSynObjNameTloEclSpn.getInstance().getGeometry(super.getId());
if (lstPos!=null && !lstPos.isEmpty())
super.setEnabled(true);
}
@Override
protected void _updateRemovedObject() throws Exception
{
List<Position> lstPos = GfrWrpBasSynObjNameTloEclSpn.getInstance().getGeometry(super.getId());
if (lstPos==null || lstPos.isEmpty())
super.setEnabled(false);
}
@Override
public void destroy()
{
GfrMdlDatIdObjTloEclSpn.getInstance().deleteObserver((Observer) this);
super.destroy();
}
@Override
public void update(Observable obs, Object objEvt)
{
if (objEvt instanceof GfrEvtMdlIdDatChangedGeometry)
{
GfrEvtMdlIdAbs mdlId = (GfrEvtMdlIdAbs) objEvt;
String strIdEvt = mdlId.getId();
if (strIdEvt.compareTo(super.getId()) != 0)
return;
GfrEvtMdlIdDatChangedGeometry evtGeom = (GfrEvtMdlIdDatChangedGeometry) objEvt;
ArrayList<Position> altPos = (ArrayList<Position>) evtGeom.getGeometry();
if (altPos==null || altPos.isEmpty())
{
if (super.isEnabled())
setEnabled(false);
return;
}
if (! super.isEnabled())
setEnabled(true);
return;
}
super.update(obs, objEvt);
}
}