Update to Worldwind release 0.4.1
[worldwind-tracker.git] / gov / nasa / worldwind / WorldWindowImpl.java
blob1acf9acc6d39958e46867e894869450d1c31deac
1 /*
2 Copyright (C) 2001, 2006 United States Government
3 as represented by the Administrator of the
4 National Aeronautics and Space Administration.
5 All Rights Reserved.
6 */
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;
17 import javax.swing.event.*;
18 import java.awt.*;
19 import java.util.*;
21 /**
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.
25 * @author Tom Gaskins
26 * @version $Id: WorldWindowImpl.java 3459 2007-11-08 18:48:01Z dcollins $
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()
43 return textureCache;
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);
71 public View getView()
73 return this.sceneController != null ? this.sceneController.getView() : null;
76 public void setModelAndView(Model model, View view)
78 this.setModel(model);
79 this.setView(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;
97 public void redraw()
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()
121 return null;
124 public Position getCurrentPosition()
126 if (this.sceneController == null)
127 return null;
129 PickedObjectList pol = this.getSceneController().getPickedObjectList();
130 if (pol == null || pol.size() < 1)
131 return null;
133 Position p = null;
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();
140 return p;
143 protected PickedObject getCurrentSelection()
145 if (this.sceneController == null)
146 return null;
148 PickedObjectList pol = this.getSceneController().getPickedObjectList();
149 if (pol == null || pol.size() < 1)
150 return null;
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()
188 public void run()
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()
212 public void run()
214 for (SelectListener listener : eventListeners.getListeners(SelectListener.class))
216 listener.selected(event);