⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 worldwindowimpl.java

📁 world wind java sdk 源码
💻 JAVA
字号:
/*Copyright (C) 2001, 2006 United States Governmentas represented by the Administrator of theNational Aeronautics and Space Administration.All Rights Reserved.*/package gov.nasa.worldwind;import gov.nasa.worldwind.avlist.AVKey;import gov.nasa.worldwind.cache.TextureCache;import gov.nasa.worldwind.event.*;import gov.nasa.worldwind.geom.Position;import gov.nasa.worldwind.layers.Layer;import gov.nasa.worldwind.pick.PickedObject;import gov.nasa.worldwind.pick.PickedObjectList;import gov.nasa.worldwind.util.Logging;import gov.nasa.worldwind.util.PerformanceStatistic;import javax.swing.event.*;import java.awt.*;import java.util.*;/** * An implementation class for the {@link WorldWindow} interface. Classes implementing <code>WorldWindow</code> can * subclass or aggreate this object to provide default <code>WorldWindow</code> functionality. * * @author Tom Gaskins * @version $Id: WorldWindowImpl.java 7649 2008-11-15 07:11:30Z tgaskins $ */public class WorldWindowImpl extends WWObjectImpl implements WorldWindow{    private SceneController sceneController;    private final EventListenerList eventListeners = new EventListenerList();    private InputHandler inputHandler;    private TextureCache textureCache;    public WorldWindowImpl()    {        this.sceneController = (SceneController) WorldWind.createConfigurationComponent(            AVKey.SCENE_CONTROLLER_CLASS_NAME);    }    /**     * Causes resources used by the World Window to be freed.     * The World Window cannot be used once this method is called.     * An OpenGL context for the window must be current.     */    public void shutdown()    {        if (this.inputHandler != null)        {            this.inputHandler.dispose();            this.inputHandler = new NoOpInputHandler();        }                // Clear the texture cache        if (this.getTextureCache() != null)            this.getTextureCache().clear();        // Dispose all the layers        if (this.getModel() != null && this.getModel().getLayers() != null)        {            for (Layer layer : this.getModel().getLayers())            {                try                {                    layer.dispose();                }                catch (Exception e)                {                    Logging.logger().log(java.util.logging.Level.SEVERE, Logging.getMessage(                        "WorldWindowGLCanvas.ExceptionWhileShuttingDownWorldWindow"), e);                }            }        }        SceneController sc = this.getSceneController();        if (sc != null)            sc.dispose();    }    public TextureCache getTextureCache()    {        return textureCache;    }    protected void setTextureCache(TextureCache textureCache)    {        this.textureCache = textureCache;        this.sceneController.setTextureCache(this.textureCache);    }    public void setModel(Model model)    {        // model can be null, that's ok - it indicates no model.        if (this.sceneController != null)            this.sceneController.setModel(model);    }    public Model getModel()    {        return this.sceneController != null ? this.sceneController.getModel() : null;    }    public void setView(View view)    {        // view can be null, that's ok - it indicates no view.        if (this.sceneController != null)            this.sceneController.setView(view);    }    public View getView()    {        return this.sceneController != null ? this.sceneController.getView() : null;    }    public void setModelAndView(Model model, View view)    {        this.setModel(model);        this.setView(view);    }    public SceneController getSceneController()    {        return this.sceneController;    }    public InputHandler getInputHandler()    {        return this.inputHandler;    }    public void setInputHandler(InputHandler inputHandler)    {        this.inputHandler = inputHandler;    }    public void redraw()    {    }    public void redrawNow()    {    }    public void setPerFrameStatisticsKeys(Set<String> keys)    {        if (this.sceneController != null)            this.sceneController.setPerFrameStatisticsKeys(keys);    }    public Collection<PerformanceStatistic> getPerFrameStatistics()    {        if (this.sceneController == null || this.sceneController.getPerFrameStatistics() == null)            return new ArrayList<PerformanceStatistic>(0);        return this.sceneController.getPerFrameStatistics();    }    public PickedObjectList getObjectsAtCurrentPosition()    {        return null;    }    public Position getCurrentPosition()    {        if (this.sceneController == null)            return null;        PickedObjectList pol = this.getSceneController().getPickedObjectList();        if (pol == null || pol.size() < 1)            return null;        Position p = null;        PickedObject top = pol.getTopPickedObject();        if (top != null && top.hasPosition())            p = top.getPosition();        else if (pol.getTerrainObject() != null)            p = pol.getTerrainObject().getPosition();        return p;    }    protected PickedObject getCurrentSelection()    {        if (this.sceneController == null)            return null;        PickedObjectList pol = this.getSceneController().getPickedObjectList();        if (pol == null || pol.size() < 1)            return null;        PickedObject top = pol.getTopPickedObject();        return top.isTerrain() ? null : top;    }    public void addRenderingListener(RenderingListener listener)    {        this.eventListeners.add(RenderingListener.class, listener);    }    public void removeRenderingListener(RenderingListener listener)    {        this.eventListeners.remove(RenderingListener.class, listener);    }    protected void callRenderingListeners(RenderingEvent event)    {        for (RenderingListener listener : this.eventListeners.getListeners(RenderingListener.class))        {            listener.stageChanged(event);        }    }    public void addPositionListener(PositionListener listener)    {        this.eventListeners.add(PositionListener.class, listener);    }    public void removePositionListener(PositionListener listener)    {        this.eventListeners.remove(PositionListener.class, listener);    }    protected void callPositionListeners(final PositionEvent event)    {        EventQueue.invokeLater(new Runnable()        {            public void run()            {                for (PositionListener listener : eventListeners.getListeners(PositionListener.class))                {                    listener.moved(event);                }            }        });    }    public void addSelectListener(SelectListener listener)    {        this.eventListeners.add(SelectListener.class, listener);    }    public void removeSelectListener(SelectListener listener)    {        this.eventListeners.remove(SelectListener.class, listener);    }    protected void callSelectListeners(final SelectEvent event)    {        EventQueue.invokeLater(new Runnable()        {            public void run()            {                for (SelectListener listener : eventListeners.getListeners(SelectListener.class))                {                    listener.selected(event);                }            }        });    }    public void addRenderingExceptionListener(RenderingExceptionListener listener)    {        this.eventListeners.add(RenderingExceptionListener.class, listener);    }    public void removeRenderingExceptionListener(RenderingExceptionListener listener)    {        this.eventListeners.remove(RenderingExceptionListener.class, listener);    }    protected void callRenderingExceptionListeners(final Throwable exception)    {        EventQueue.invokeLater(new Runnable()        {            public void run()            {                for (RenderingExceptionListener listener : eventListeners.getListeners(RenderingExceptionListener.class))                {                    listener.exceptionThrown(exception);                }            }        });    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -