diff options
author | Harvey Harrison <[email protected]> | 2015-04-19 21:02:06 -0700 |
---|---|---|
committer | Harvey Harrison <[email protected]> | 2015-04-19 21:02:06 -0700 |
commit | 7a2e20caac9db6f789a7b3fab344b9758af45335 (patch) | |
tree | b5236ff2570178de356eab569225108948eb4d30 /src/javax/media/j3d/EventCatcher.java | |
parent | f76ce302c4bb2a9f03bbee571ec5d05c29633023 (diff) |
j3dcore: flatten the directory structure a bit
Signed-off-by: Harvey Harrison <[email protected]>
Diffstat (limited to 'src/javax/media/j3d/EventCatcher.java')
-rw-r--r-- | src/javax/media/j3d/EventCatcher.java | 433 |
1 files changed, 433 insertions, 0 deletions
diff --git a/src/javax/media/j3d/EventCatcher.java b/src/javax/media/j3d/EventCatcher.java new file mode 100644 index 0000000..d0e561f --- /dev/null +++ b/src/javax/media/j3d/EventCatcher.java @@ -0,0 +1,433 @@ +/* + * Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +package javax.media.j3d; + +import java.awt.event.ComponentEvent; +import java.awt.event.ComponentListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.awt.event.MouseWheelEvent; +import java.awt.event.MouseWheelListener; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; + + +/** + * The EventCatcher class is used to track events on a Canvas3D using the + * 1.1 event model. Most events are sent to the canvas for processing. + */ +class EventCatcher extends Object implements ComponentListener, FocusListener, + KeyListener, MouseListener, MouseMotionListener, MouseWheelListener, WindowListener { + + // The canvas associated with this event catcher + private Canvas3D canvas; + private static final boolean DEBUG = false; + private boolean stopped = false; + + /** + * flags for event listeners + */ + private boolean focusEvents = false; + private boolean keyEvents = false; + private boolean mouseEvents = false; + private boolean mouseMotionEvents = false; + private boolean mouseWheelEvents = false; + private boolean mouseListenerAdded = false; + + EventCatcher(Canvas3D c) { + canvas = c; + } + + void enableFocusEvents() { + if (!focusEvents) { + canvas.addFocusListener(this); + focusEvents = true; + } + } + + + void disableFocusEvents() { + if (focusEvents) { + canvas.removeFocusListener(this); + focusEvents = false; + } + } + + void enableKeyEvents() { + if (!keyEvents) { + canvas.addKeyListener(this); + keyEvents = true; + // listen for mouseEntered events for keyboard focusing + if (!mouseListenerAdded) { + canvas.addMouseListener(this); + mouseListenerAdded = true; + } + } + } + + void disableKeyEvents() { + if (keyEvents) { + canvas.removeKeyListener(this); + keyEvents = false; + // listen for mouseEntered events for keyboard focusing + if (!mouseEvents) { + if (mouseListenerAdded) { + canvas.removeMouseListener(this); + mouseListenerAdded = false; + } + } + } + } + + + + void enableMouseEvents() { + if (!mouseEvents) { + mouseEvents = true; + if (!mouseListenerAdded) { + canvas.addMouseListener(this); + mouseListenerAdded = true; + } + } + } + + void disableMouseEvents() { + if (mouseEvents) { + mouseEvents = false; + if (!keyEvents) { + if (mouseListenerAdded) { + canvas.removeMouseListener(this); + mouseListenerAdded = false; + } + } + } + } + + void enableMouseMotionEvents() { + if (!mouseMotionEvents) { + canvas.addMouseMotionListener(this); + mouseMotionEvents = true; + } + } + + + void disableMouseMotionEvents() { + if (mouseMotionEvents) { + canvas.removeMouseMotionListener(this); + mouseMotionEvents = false; + } + } + + void enableMouseWheelEvents() { + if (!mouseWheelEvents) { + canvas.addMouseWheelListener(this); + mouseWheelEvents = true; + } + } + + + void disableMouseWheelEvents() { + if (mouseWheelEvents) { + canvas.removeMouseWheelListener(this); + mouseWheelEvents = false; + } + } + + + @Override + public void componentResized(ComponentEvent e) { + if (e.getSource() == canvas) { + if (DEBUG) { + System.err.println(e); + } + canvas.sendEventToBehaviorScheduler(e); + canvas.evaluateVisiblilty(); + canvas.redraw(); + } + } + + @Override + public void componentMoved(ComponentEvent e) { + if (e.getSource() == canvas) { + if (DEBUG) { + System.err.println(e); + } + canvas.sendEventToBehaviorScheduler(e); + + // Issue 458 - the following is not needed for a move +// if (VirtualUniverse.mc.isD3D()) { +// canvas.notifyD3DPeer(Canvas3D.RESIZE); +// } +// canvas.evaluateVisiblilty(true); + } + } + + @Override + public void componentHidden(ComponentEvent e) { + if (DEBUG) { + System.err.println(e); + } + if (e.getSource() == canvas) { + canvas.sendEventToBehaviorScheduler(e); + } + canvas.evaluateVisiblilty(); + } + + @Override + public void componentShown(ComponentEvent e) { + if (DEBUG) { + System.err.println(e); + } + if (e.getSource() == canvas) { + canvas.sendEventToBehaviorScheduler(e); + } + canvas.evaluateVisiblilty(); + } + + @Override + public void focusGained(FocusEvent e) { + canvas.sendEventToBehaviorScheduler(e); + if (DEBUG) { + System.err.println(e); + } + } + + @Override + public void focusLost(FocusEvent e) { + canvas.sendEventToBehaviorScheduler(e); + if (DEBUG) { + System.err.println(e); + } + } + + @Override + public void keyTyped(KeyEvent e) { + canvas.sendEventToBehaviorScheduler(e); + if (DEBUG) { + System.err.println(e); + } + } + + @Override + public void keyPressed(KeyEvent e) { + canvas.sendEventToBehaviorScheduler(e); + + if (DEBUG) { + System.err.println(e); + } + } + + @Override + public void keyReleased(KeyEvent e) { + canvas.sendEventToBehaviorScheduler(e); + if (stopped) { + stopped = false; + } else { + stopped = true; + } + if (DEBUG) { + System.err.println(e); + } + } + + @Override + public void mouseClicked(MouseEvent e) { +// if (keyEvents && +// (VirtualUniverse.mc.getRenderingAPI() != +// MasterControl.RENDER_OPENGL_SOLARIS)) { +// // bug 4362074 +// canvas.requestFocus(); +// } + + if (mouseEvents) { + canvas.sendEventToBehaviorScheduler(e); + } + if (DEBUG) { + System.err.println(e); + } + } + + @Override + public void mouseEntered(MouseEvent e) { +// if (keyEvents && +// (VirtualUniverse.mc.getRenderingAPI() == +// MasterControl.RENDER_OPENGL_SOLARIS)) { +// // bug 4362074 +// canvas.requestFocus(); +// } + if (mouseEvents) { + canvas.sendEventToBehaviorScheduler(e); + } + if (DEBUG) { + System.err.println(e); + } + } + + @Override + public void mouseExited(MouseEvent e) { + if (mouseEvents) + canvas.sendEventToBehaviorScheduler(e); + if (DEBUG) { + System.err.println(e); + } + } + + @Override + public void mousePressed(MouseEvent e) { + if (mouseEvents) + canvas.sendEventToBehaviorScheduler(e); + if (DEBUG) { + System.err.println(e); + } + } + + @Override + public void mouseReleased(MouseEvent e) { + if (mouseEvents) + canvas.sendEventToBehaviorScheduler(e); + if (DEBUG) { + System.err.println(e); + } + } + + @Override + public void mouseDragged(MouseEvent e) { + // Note : We don't have to test for mouseMotionEvent here because + // this routine will never be called unless mouseMotionEvent is enabled. + canvas.sendEventToBehaviorScheduler(e); + if (DEBUG) { + System.err.println(e); + } + } + + @Override + public void mouseMoved(MouseEvent e) { + // Note : We don't have to test for mouseMotionEvent here because + // this routine will never be called unless mouseMotionEvent is enabled. + canvas.sendEventToBehaviorScheduler(e); + if (DEBUG) { + System.err.println(e); + } + } + + @Override + public void mouseWheelMoved(MouseWheelEvent e) { + // Note : We don't have to test for mouseWheelEvent here because + // this routine will never be called unless mouseWheelEvent is enabled. + canvas.sendEventToBehaviorScheduler(e); + if (DEBUG) { + System.err.println(e); + } + } + + /* + * WindowListener methods + */ + @Override + public void windowClosed(WindowEvent e) { + if (DEBUG) { + System.err.println(e); + } + canvas.sendEventToBehaviorScheduler(e); + // Issue 458 - Don't set canvas visible to false + } + + @Override + public void windowClosing(WindowEvent e) { + if (DEBUG) { + System.err.println(e); + } + canvas.sendEventToBehaviorScheduler(e); + // Issue 458 - Don't set canvas.visible to false + } + + @Override + public void windowActivated(WindowEvent e) { + if (DEBUG) { + System.err.println(e); + } + canvas.sendEventToBehaviorScheduler(e); + } + + @Override + public void windowDeactivated(WindowEvent e) { + if (DEBUG) { + System.err.println(e); + } + canvas.sendEventToBehaviorScheduler(e); + } + + @Override + public void windowDeiconified(WindowEvent e) { + if (DEBUG) { + System.err.println(e); + } + canvas.sendEventToBehaviorScheduler(e); + if (canvas.view != null) { + canvas.view.sendEventToSoundScheduler(e); + } + canvas.evaluateVisiblilty(); + } + + @Override + public void windowIconified(WindowEvent e) { + if (DEBUG) { + System.err.println(e); + } + canvas.sendEventToBehaviorScheduler(e); + if (canvas.view != null) { + canvas.view.sendEventToSoundScheduler(e); + } + canvas.evaluateVisiblilty(); + } + + @Override + public void windowOpened(WindowEvent e) { + if (DEBUG) { + System.err.println(e); + } + canvas.sendEventToBehaviorScheduler(e); + canvas.evaluateVisiblilty(); + } + + void reset() { + focusEvents = false; + keyEvents = false; + mouseEvents = false; + mouseMotionEvents = false; + mouseWheelEvents = false; + mouseListenerAdded = false; + stopped = false; + } + +} + |