/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.geoforge.worldwind.builder.editor;
import gov.nasa.worldwind.awt.WorldWindowGLCanvas;
import gov.nasa.worldwind.event.SelectEvent;
import gov.nasa.worldwind.event.SelectListener;
import gov.nasa.worldwind.layers.Layer;
import gov.nasa.worldwind.layers.RenderableLayer;
import gov.nasa.worldwind.pick.PickedObject;
import gov.nasa.worldwind.util.BasicDragger;
import java.util.ArrayList;
import org.geoforge.lang.handler.IGfrHandlerLifeCycleObject;
import org.geoforge.worldwind.animation.ViewController;
/**
*
* @author robert
*
* TBRL with ExtentVisibilitySupport, always returning nil in ie
* Iterable<? extends ScreenExtent> screenExtents = this.getScreenExtents();
if (screenExtents != null)
*/
public class GfrEditorObjPnt implements
IGfrHandlerLifeCycleObject
{
// ---
private Iterable<?> _itrObjsToTrack_;
private ViewController _vcrViewController_;
private WorldWindowGLCanvas _glcWwd_ = null;
private RenderableLayer _lyrPointNew_ = null;
public GfrEditorObjPnt(
WorldWindowGLCanvas glcWwd,
RenderableLayer rlr)
{
super();
this._glcWwd_ = glcWwd;
this._lyrPointNew_ = rlr;
// Create an iterable of the objects we want to keep in view.
this._itrObjsToTrack_ = new ArrayList<Object>();
// Set up a view controller to keep the objects in view.
this._vcrViewController_ = new ViewController(this._glcWwd_);
this._vcrViewController_.setObjectsToTrack(this._itrObjsToTrack_);
// Set up a layer to render the objects we're tracking.
// Set up a SelectListener to drag the spheres.
this._glcWwd_.addSelectListener(new SelectListener()
{
protected BasicDragger dragger = new BasicDragger(_glcWwd_);
@Override
public void selected(SelectEvent evtSelect)
{
java.util.List<PickedObject> lstPickedObjects = evtSelect.getAllTopPickedObjects();
if (lstPickedObjects!=null && !lstPickedObjects.isEmpty())
{
for (PickedObject potCur:lstPickedObjects )
{
Layer lyrCur = potCur.getParentLayer();
if (lyrCur != null)
{
if (lyrCur != _lyrPointNew_)
return;
}
}
}
// Delegate dragging computations to a dragger.
this.dragger.selected(evtSelect);
if (evtSelect.getEventAction().equals(SelectEvent.DRAG))
{
_vcrViewController_.sceneChanged();
}
}
});
}
@Override
public void destroy()
{
// todo
}
@Override
public boolean init()
{
return true;
}
}