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

📄 awtinputhandler.java

📁 world wind java sdk 源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*Copyright (C) 2001, 2006 United States Governmentas represented by the Administrator of theNational Aeronautics and Space Administration.All Rights Reserved.*/package gov.nasa.worldwind.awt;import gov.nasa.worldwind.*;import gov.nasa.worldwind.avlist.AVKey;import gov.nasa.worldwind.event.*;import gov.nasa.worldwind.pick.PickedObject;import gov.nasa.worldwind.pick.PickedObjectList;import gov.nasa.worldwind.util.Logging;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;/** * @author tag * @version $Id: AWTInputHandler.java 9558 2009-03-20 03:40:36Z dcollins $ */public class AWTInputHandler extends WWObjectImpl    implements KeyListener, MouseListener, MouseMotionListener, MouseWheelListener, FocusListener, InputHandler,    Disposable{    private WorldWindow wwd = null;    private EventListenerList eventListeners = new EventListenerList();    private java.awt.Point mousePoint = new java.awt.Point();    private PickedObjectList hoverObjects;    private PickedObjectList objectsAtButtonPress;    private boolean isHovering = false;    private boolean isDragging = false;    private javax.swing.Timer hoverTimer = new javax.swing.Timer(600, new ActionListener()    {        public void actionPerformed(ActionEvent actionEvent)        {            if (AWTInputHandler.this.pickMatches(AWTInputHandler.this.hoverObjects))            {                AWTInputHandler.this.isHovering = true;                AWTInputHandler.this.callSelectListeners(new SelectEvent(AWTInputHandler.this.wwd,                    SelectEvent.HOVER, mousePoint, AWTInputHandler.this.hoverObjects));                AWTInputHandler.this.hoverTimer.stop();            }        }    });    // Delegate handler for View.    private final ViewInputHandler viewInputHandler = new ViewInputHandler();    private SelectListener selectListener;    public void dispose()    {        this.hoverTimer.stop();        this.hoverTimer = null;        this.setEventSource(null);        if (this.hoverObjects != null)            this.hoverObjects.clear();        this.hoverObjects = null;        if (this.objectsAtButtonPress != null)            this.objectsAtButtonPress.clear();        this.objectsAtButtonPress = null;    }    public void setEventSource(WorldWindow newWorldWindow)    {        if (newWorldWindow != null && !(newWorldWindow instanceof Component))        {            String message = Logging.getMessage("Awt.AWTInputHandler.EventSourceNotAComponent");            Logging.logger().finer(message);            throw new IllegalArgumentException(message);        }        if (newWorldWindow == this.wwd)        {            return;        }        this.eventListeners = new EventListenerList(); // make orphans of listener references        if (this.wwd != null)        {            Component c = (Component) this.wwd;            c.removeKeyListener(this);            c.removeMouseMotionListener(this);            c.removeMouseListener(this);            c.removeMouseWheelListener(this);            c.removeFocusListener(this);            if (selectListener != null)            {                this.wwd.removeSelectListener(selectListener);            }        }        this.wwd = newWorldWindow;        this.viewInputHandler.setWorldWindow(this.wwd);        if (this.wwd == null)        {            return;        }        Component c = (java.awt.Component) this.wwd;        c.addKeyListener(this);        c.addMouseMotionListener(this);        c.addMouseListener(this);        c.addMouseWheelListener(this);        c.addFocusListener(this);        selectListener = new SelectListener()        {            public void selected(SelectEvent event)            {                if (event.getEventAction().equals(SelectEvent.ROLLOVER))                {                    doHover(true);                }            }        };        this.wwd.addSelectListener(selectListener);    }    public void removeHoverSelectListener()    {        hoverTimer.stop();        hoverTimer = null;        this.wwd.removeSelectListener(selectListener);    }    public WorldWindow getEventSource()    {        return this.wwd;    }    public void setHoverDelay(int delay)    {        this.hoverTimer.setDelay(delay);    }    public int getHoverDelay()    {        return this.hoverTimer.getDelay();    }    public boolean isSmoothViewChanges()    {        return this.viewInputHandler.isEnableSmoothing();    }    public void setSmoothViewChanges(boolean smoothViewChanges)    {        this.viewInputHandler.setEnableSmoothing(smoothViewChanges);    }    public boolean isLockViewHeading()    {        return this.viewInputHandler.isLockHeading();    }    public void setLockViewHeading(boolean lockHeading)    {        this.viewInputHandler.setLockHeading(lockHeading);    }    public boolean isStopViewOnFocusLost()    {        return this.viewInputHandler.isStopOnFocusLost();    }    public void setStopViewOnFocusLost(boolean stopView)    {        this.viewInputHandler.setStopOnFocusLost(stopView);    }    protected WorldWindow getWorldWindow()    {        return wwd;    }    protected Point getMousePoint()    {        return mousePoint;    }    protected void setMousePoint(Point mousePoint)    {        this.mousePoint = mousePoint;    }    protected boolean isHovering()    {        return isHovering;    }    protected void setHovering(boolean hovering)    {        isHovering = hovering;    }    protected boolean isDragging()    {        return isDragging;    }    protected void setDragging(boolean dragging)    {        isDragging = dragging;    }    protected PickedObjectList getHoverObjects()    {        return hoverObjects;    }    protected void setHoverObjects(PickedObjectList hoverObjects)    {        this.hoverObjects = hoverObjects;    }    protected PickedObjectList getObjectsAtButtonPress()    {        return objectsAtButtonPress;    }    protected void setObjectsAtButtonPress(PickedObjectList objectsAtButtonPress)    {        this.objectsAtButtonPress = objectsAtButtonPress;    }    protected ViewInputHandler getViewInputHandler()    {        return viewInputHandler;    }    public void keyTyped(KeyEvent keyEvent)    {        if (this.wwd == null) // include this test to ensure any derived implementation performs it        {            return;        }        if (keyEvent == null)        {            return;        }        this.callKeyTypedListeners(keyEvent);        if (!keyEvent.isConsumed())        {            this.viewInputHandler.keyTyped(keyEvent);        }    }    public void keyPressed(KeyEvent keyEvent)    {        if (this.wwd == null) // include this test to ensure any derived implementation performs it        {            return;        }        if (keyEvent == null)        {            return;        }        this.callKeyPressedListeners(keyEvent);        if (!keyEvent.isConsumed())        {            this.viewInputHandler.keyPressed(keyEvent);        }    }    public void keyReleased(KeyEvent keyEvent)    {        if (this.wwd == null) // include this test to ensure any derived implementation performs it        {            return;        }        if (keyEvent == null)        {            return;        }        this.callKeyReleasedListeners(keyEvent);        if (!keyEvent.isConsumed())        {            this.viewInputHandler.keyReleased(keyEvent);        }    }    public void mouseClicked(final MouseEvent mouseEvent)    {        if (this.wwd == null) // include this test to ensure any derived implementation performs it        {            return;        }        if (this.wwd.getView() == null)        {            return;        }        if (mouseEvent == null)        {            return;        }        PickedObjectList pickedObjects = this.wwd.getObjectsAtCurrentPosition();        this.callMouseClickedListeners(mouseEvent);        if (pickedObjects != null && pickedObjects.getTopPickedObject() != null            && !pickedObjects.getTopPickedObject().isTerrain())        {            // Something is under the cursor, so it's deemed "selected".            if (MouseEvent.BUTTON1 == mouseEvent.getButton())            {                if (mouseEvent.getClickCount() % 2 == 1)                {                    this.callSelectListeners(new SelectEvent(this.wwd, SelectEvent.LEFT_CLICK,                        mouseEvent, pickedObjects));                }                else                {                    this.callSelectListeners(new SelectEvent(this.wwd, SelectEvent.LEFT_DOUBLE_CLICK,                        mouseEvent, pickedObjects));                }            }            else if (MouseEvent.BUTTON3 == mouseEvent.getButton())            {                this.callSelectListeners(new SelectEvent(this.wwd, SelectEvent.RIGHT_CLICK,                    mouseEvent, pickedObjects));            }            this.wwd.getView().firePropertyChange(AVKey.VIEW, null, this.wwd.getView());        }        else        {            if (!mouseEvent.isConsumed())            {                this.viewInputHandler.mouseClicked(mouseEvent);            }        }    }    public void mousePressed(MouseEvent mouseEvent)    {        if (this.wwd == null) // include this test to ensure any derived implementation performs it        {            return;        }        if (mouseEvent == null)        {            return;        }        this.mousePoint = mouseEvent.getPoint();        this.cancelHover();        this.cancelDrag();        this.objectsAtButtonPress = this.wwd.getObjectsAtCurrentPosition();        this.callMousePressedListeners(mouseEvent);        if (this.objectsAtButtonPress != null && objectsAtButtonPress.getTopPickedObject() != null            && !this.objectsAtButtonPress.getTopPickedObject().isTerrain())        {            // Something is under the cursor, so it's deemed "selected".            if (MouseEvent.BUTTON1 == mouseEvent.getButton())            {                this.callSelectListeners(new SelectEvent(this.wwd, SelectEvent.LEFT_PRESS,                    mouseEvent, this.objectsAtButtonPress));            }            else if (MouseEvent.BUTTON3 == mouseEvent.getButton())            {                this.callSelectListeners(new SelectEvent(this.wwd, SelectEvent.RIGHT_PRESS,                    mouseEvent, this.objectsAtButtonPress));            }            // TODO: Why is this event fired?            this.wwd.getView().firePropertyChange(AVKey.VIEW, null, this.wwd.getView());        }        else        {

⌨️ 快捷键说明

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