/* Copyright (C) 2001, 2006 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. */ package gov.nasa.worldwind; import gov.nasa.worldwind.avlist.*; import gov.nasa.worldwind.cache.*; import gov.nasa.worldwind.event.*; import gov.nasa.worldwind.geom.*; import gov.nasa.worldwind.pick.*; import gov.nasa.worldwind.util.*; import java.util.*; /** * The top-level interface common to all toolkit-specific World Wind windows. * * @author Tom Gaskins * @version $Id: WorldWindow.java 5101 2008-04-21 05:39:29Z tgaskins $ */ public interface WorldWindow extends AVList { /** * Sets the model to display in this window. If <code>null</code> is specified for the model, the current model, if * any, is disassociated with the window. * * @param model the model to display. May be <code>null</code>. */ void setModel(Model model); /** * Returns the window's current model. * * @return the window's current model. */ Model getModel(); /** * Sets the view to use when displaying this window's model. If <code>null</code> is specified for the view, the * current view, if any, is disassociated with the window. * * @param view the view to use to display this window's model. May be null. */ void setView(View view); /** * Returns this window's current view. * * @return the window's current view. */ View getView(); /** * Sets the model to display in this window and the view used to display it. If <code>null</code> is specified for * the model, the current model, if any, is disassociated with the window. If <code>null</code> is specified for the * view, the current view, if any, is disassociated with the window. * * @param model the model to display. May be<code>null</code>. * @param view the view to use to display this window's model. May be<code>null</code>. */ void setModelAndView(Model model, View view); /** * Returns the scene controller assocciated with this instance. * * @return The scene controller associated with the instance, or <code>null</code> if no scene controller is * associated. */ SceneController getSceneController(); /** * Returns the input handler associated with this instance. * * @return The input handler associated with this instance, or <code>null</code> if no input handler is associated. */ InputHandler getInputHandler(); /** * Sets the input handler to use for this instance. * * @param inputHandler The input handler to use for this world window. May by <code>null</code> if <code>null</code> * is specified, the current input handler, if any, is disassociated with the world window. */ void setInputHandler(InputHandler inputHandler); /** * Adds a rendering listener to this world window. Rendering listeners are called at key point during World Wind * drawing and provide applications the ability to participate or monitor rendering. * * @param listener The rendering listener to add to those notified of rendering events by this world window. */ void addRenderingListener(RenderingListener listener); /** * Removes a specified rendering listener associated with this world window. * * @param listener The rendering listener to remove. */ void removeRenderingListener(RenderingListener listener); /** * Adds a select listener to this world window. Select listeners are called when a selection is made by the user in * the world window. A selection is any operation that idetifies a visible item. * * @param listener The select listener to add. */ void addSelectListener(SelectListener listener); /** * Removes the specified select listener associated with this world window. * * @param listener The select listener to remove. */ void removeSelectListener(SelectListener listener); /** * Adds a position listener to this world window. Position listeners are called when the cursor's position changes. * They identify the position of the cursor on the globe, or that the cursor is not on the globe. * * @param listener The position listener to add. */ void addPositionListener(PositionListener listener); /** * Removes the specified position listener associated with this world window. * * @param listener The listener to remove. */ void removePositionListener(PositionListener listener); /** * Causes a repaint event to be enqued with the window system for this world window. The repaint will occur at the * window system's discretion, within the window system toolkit's event loop, and on the thread of that loop. This * is the preferred method for requesting a repaint of the world window. */ void redraw(); /** * Immediately repaints the world window without waiting for a window system repaint event. This is not the * preferred way to cause a repaint, but is provided for the rare cases that require it. */ void redrawNow(); /** * Returns the current latitude, longitude and altitude of the current cursor position, or <code>null</code> if the * cursor is not on the globe. * * @return The current position of the cursor, or <code>null</code> if the cursor is not positioned on the globe. */ Position getCurrentPosition(); /** * Returns the World Wind ojbects at the current cursor position. The list of objects under the cursor is * determined each time the world window is repainted. This method returns the list of objects determined when * the most recent repaint was performed. * * @return The list of objects at the cursor position, or <code>null</code> if no objects are under the cursor. */ PickedObjectList getObjectsAtCurrentPosition(); /** * Returns the texture cache used by this World Window.� * * @return The texture cache used by the World Window. */ TextureCache getTextureCache(); /** * Activates the per-frame performance statistic specified. Per-frame statistics measure values within a single * frame of rendering, such as number of tiles drawn to produce the frame. * @param keys The statistics to activate. */ void setPerFrameStatisticsKeys(Set<String> keys); /** * Returns the active per-frame performance statistics such as number of tiles drawn in the most recent frame. * @return The keys and values of the active per-frame statistics. */ Collection<PerformanceStatistic> getPerFrameStatistics(); // TODO: move the constants from AVKey to this interface. /** * Causes resources used by the World Window to be freed. * The World Window cannot be used once this method is called. */ void shutdown(); }