|
Java example source code file (GestureHandler.java)
The GestureHandler.java Java example source code/* * Copyright (c) 2011, 2013, Oracle and/or its affiliates. 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. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package com.apple.eawt.event; import sun.awt.SunToolkit; import java.awt.*; import java.util.*; import java.util.List; import javax.swing.*; import java.lang.annotation.Native; final class GestureHandler { private static final String CLIENT_PROPERTY = "com.apple.eawt.event.internalGestureHandler"; // native constants for the supported types of high-level gestures @Native static final int PHASE = 1; @Native static final int ROTATE = 2; @Native static final int MAGNIFY = 3; @Native static final int SWIPE = 4; // installs a private instance of GestureHandler, if necessary static void addGestureListenerTo(final JComponent component, final GestureListener listener) { final Object value = component.getClientProperty(CLIENT_PROPERTY); if (value instanceof GestureHandler) { ((GestureHandler)value).addListener(listener); return; } if (value != null) return; // some other garbage is in our client property final GestureHandler newHandler = new GestureHandler(); newHandler.addListener(listener); component.putClientProperty(CLIENT_PROPERTY, newHandler); } // asks the installed GestureHandler to remove it's listener (does not uninstall the GestureHandler) static void removeGestureListenerFrom(final JComponent component, final GestureListener listener) { final Object value = component.getClientProperty(CLIENT_PROPERTY); if (!(value instanceof GestureHandler)) return; ((GestureHandler)value).removeListener(listener); } // called from native - finds the deepest component with an installed GestureHandler, // creates a single event, and dispatches it to a recursive notifier static void handleGestureFromNative(final Window window, final int type, final double x, final double y, final double a, final double b) { if (window == null) return; // should never happen... SunToolkit.executeOnEventHandlerThread(window, new Runnable() { public void run() { final Component component = SwingUtilities.getDeepestComponentAt(window, (int)x, (int)y); final PerComponentNotifier firstNotifier; if (component instanceof RootPaneContainer) { firstNotifier = getNextNotifierForComponent(((RootPaneContainer)component).getRootPane()); } else { firstNotifier = getNextNotifierForComponent(component); } if (firstNotifier == null) return; switch (type) { case PHASE: firstNotifier.recursivelyHandlePhaseChange(a, new GesturePhaseEvent()); return; case ROTATE: firstNotifier.recursivelyHandleRotate(new RotationEvent(a)); return; case MAGNIFY: firstNotifier.recursivelyHandleMagnify(new MagnificationEvent(a)); return; case SWIPE: firstNotifier.recursivelyHandleSwipe(a, b, new SwipeEvent()); return; } } }); } final List<GesturePhaseListener> phasers = new LinkedList Other Java examples (source code examples)Here is a short list of links related to this Java GestureHandler.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.