2 Copyright (C) 2001, 2006 United States Government
3 as represented by the Administrator of the
4 National Aeronautics and Space Administration.
7 package gov
.nasa
.worldwind
;
9 import gov
.nasa
.worldwind
.avlist
.AVKey
;
10 import gov
.nasa
.worldwind
.cache
.TextureCache
;
11 import gov
.nasa
.worldwind
.event
.*;
12 import gov
.nasa
.worldwind
.geom
.Position
;
13 import gov
.nasa
.worldwind
.pick
.*;
14 import gov
.nasa
.worldwind
.util
.PerformanceStatistic
;
15 import gov
.nasa
.worldwind
.view
.View
;
17 import javax
.swing
.event
.*;
22 * An implementation class for the {@link WorldWindow} interface. Classes implementing <code>WorldWindow</code> can
23 * subclass or aggreate this object to provide default <code>WorldWindow</code> functionality.
26 * @version $Id: WorldWindowImpl.java 2471 2007-07-31 21:50:57Z tgaskins $
28 public class WorldWindowImpl
extends WWObjectImpl
implements WorldWindow
30 private SceneController sceneController
;
31 private final EventListenerList eventListeners
= new EventListenerList();
32 private InputHandler inputHandler
;
33 private TextureCache textureCache
;
35 public WorldWindowImpl()
37 this.sceneController
= (SceneController
) WorldWind
.createConfigurationComponent(
38 AVKey
.SCENE_CONTROLLER_CLASS_NAME
);
41 public TextureCache
getTextureCache()
46 protected void setTextureCache(TextureCache textureCache
)
48 this.textureCache
= textureCache
;
49 this.sceneController
.setTextureCache(this.textureCache
);
52 public void setModel(Model model
)
54 // model can be null, that's ok - it indicates no model.
55 if (this.sceneController
!= null)
56 this.sceneController
.setModel(model
);
59 public Model
getModel()
61 return this.sceneController
!= null ?
this.sceneController
.getModel() : null;
64 public void setView(View view
)
66 // view can be null, that's ok - it indicates no view.
67 if (this.sceneController
!= null)
68 this.sceneController
.setView(view
);
73 return this.sceneController
!= null ?
this.sceneController
.getView() : null;
76 public void setModelAndView(Model model
, View view
)
82 public SceneController
getSceneController()
84 return this.sceneController
;
87 public InputHandler
getInputHandler()
89 return this.inputHandler
;
92 public void setInputHandler(InputHandler inputHandler
)
94 this.inputHandler
= inputHandler
;
101 public void redrawNow()
105 public void setPerFrameStatisticsKeys(Set
<String
> keys
)
107 if (this.sceneController
!= null)
108 this.sceneController
.setPerFrameStatisticsKeys(keys
);
111 public Collection
<PerformanceStatistic
> getPerFrameStatistics()
113 if (this.sceneController
== null || this.sceneController
.getPerFrameStatistics() == null)
114 return new ArrayList
<PerformanceStatistic
>(0);
116 return this.sceneController
.getPerFrameStatistics();
119 public PickedObjectList
getObjectsAtCurrentPosition()
124 public Position
getCurrentPosition()
126 if (this.sceneController
== null)
129 PickedObjectList pol
= this.getSceneController().getPickedObjectList();
130 if (pol
== null || pol
.size() < 1)
134 PickedObject top
= pol
.getTopPickedObject();
135 if (top
!= null && top
.hasPosition())
136 p
= top
.getPosition();
137 else if (pol
.getTerrainObject() != null)
138 p
= pol
.getTerrainObject().getPosition();
143 protected PickedObject
getCurrentSelection()
145 if (this.sceneController
== null)
148 PickedObjectList pol
= this.getSceneController().getPickedObjectList();
149 if (pol
== null || pol
.size() < 1)
152 PickedObject top
= pol
.getTopPickedObject();
153 return top
.isTerrain() ?
null : top
;
156 public void addRenderingListener(RenderingListener listener
)
158 this.eventListeners
.add(RenderingListener
.class, listener
);
161 public void removeRenderingListener(RenderingListener listener
)
163 this.eventListeners
.remove(RenderingListener
.class, listener
);
166 protected void callRenderingListeners(RenderingEvent event
)
168 for (RenderingListener listener
: this.eventListeners
.getListeners(RenderingListener
.class))
170 listener
.stageChanged(event
);
174 public void addPositionListener(PositionListener listener
)
176 this.eventListeners
.add(PositionListener
.class, listener
);
179 public void removePositionListener(PositionListener listener
)
181 this.eventListeners
.remove(PositionListener
.class, listener
);
184 protected void callPositionListeners(final PositionEvent event
)
186 EventQueue
.invokeLater(new Runnable()
190 for (PositionListener listener
: eventListeners
.getListeners(PositionListener
.class))
192 listener
.moved(event
);
198 public void addSelectListener(SelectListener listener
)
200 this.eventListeners
.add(SelectListener
.class, listener
);
203 public void removeSelectListener(SelectListener listener
)
205 this.eventListeners
.remove(SelectListener
.class, listener
);
208 protected void callSelectListeners(final SelectEvent event
)
210 EventQueue
.invokeLater(new Runnable()
214 for (SelectListener listener
: eventListeners
.getListeners(SelectListener
.class))
216 listener
.selected(event
);