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

📄 mousegestures.java

📁 老外做的不错的java混淆器,执行效率非常高
💻 JAVA
字号:
/*
MouseGestures - pure Java library for recognition and processing mouse gestures.
Copyright (C) 2003-2004 Smardec

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library 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
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

package com.smardec.mousegestures;

import java.awt.*;
import java.awt.event.AWTEventListener;
import java.awt.event.MouseEvent;
import java.util.Vector;


/**
 * Main class for mouse gestures.
 * <br>Sample usage:
 * <code><pre>
 *      MouseGestures mouseGestures = new MouseGestures();
 *      mouseGestures.addMouseGesturesListener(myMouseGesturesListener);
 *      mouseGestures.start();</pre>
 * </code>
 *
 * @author Smardec
 * @version 1.2
 */
public class MouseGestures {
    /**
     * Responsible for monitoring mouse gestures.
     */
    private AWTEventListener mouseGesturesEventListener = null;
    /**
     * Responsible for processing mouse events.
     */
    private MouseGesturesRecognizer mouseGesturesRecognizer = new MouseGesturesRecognizer(this);
    /**
     * Vector of listeners.
     */
    private Vector listeners = new Vector();
    /**
     * Specifies mouse button for gestures handling.
     * Can be <code>MouseEvent.BUTTON1_MASK</code>, <code>MouseEvent.BUTTON2_MASK</code>
     * or <code>MouseEvent.BUTTON3_MASK</code>.
     * The default is <code>MouseEvent.BUTTON3_MASK</code> (right mouse button).
     */
    private int mouseButton = MouseEvent.BUTTON3_MASK;

    /**
     * Starts monitoring mouse gestures.
     */
    public void start() {
        if (mouseGesturesEventListener == null)
            mouseGesturesEventListener = new AWTEventListener() {
                public void eventDispatched(AWTEvent event) {
                    if (event instanceof MouseEvent) {
                        MouseEvent mouseEvent = (MouseEvent) event;
                        if ((mouseEvent.getModifiers() & mouseButton) == mouseButton) {
                            mouseGesturesRecognizer.processMouseEvent(mouseEvent);
                        }
                        if (((mouseEvent.getID() == MouseEvent.MOUSE_RELEASED)
                                || (mouseEvent.getID() == MouseEvent.MOUSE_CLICKED))
                                && (mouseEvent.getModifiers() & mouseButton) == mouseButton) {
                            if (mouseGesturesRecognizer.isGestureRecognized()) {
                                // prevents displaying popup menu and so on
                                mouseEvent.consume();
                                String gesture = mouseGesturesRecognizer.getGesture();
                                // clear temporary information
                                mouseGesturesRecognizer.clearTemporaryInfo();
                                // execute action                                
                                fireProcessMouseGesture(gesture);
                            } else {
                                // clear temporary information
                                mouseGesturesRecognizer.clearTemporaryInfo();
                            }
                        }
                    }
                }
            };
        Toolkit.getDefaultToolkit().addAWTEventListener(mouseGesturesEventListener, AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK);
    }

    /**
     * Stops monitoring mouse gestures.
     */
    public void stop() {
        if (mouseGesturesEventListener != null)
            Toolkit.getDefaultToolkit().removeAWTEventListener(mouseGesturesEventListener);
    }

    /**
     * Returns current grid size (minimum mouse movement length to be recognized).
     *
     * @return Grid size in pixels. Default is 30.
     */
    public int getGridSize() {
        return mouseGesturesRecognizer.getGridSize();
    }

    /**
     * Sets grid size (minimum mouse movement length to be recognized).
     *
     * @param gridSize New grid size in pixels
     */
    public void setGridSize(int gridSize) {
        mouseGesturesRecognizer.setGridSize(gridSize);
    }

    /**
     * Returns mouse button used for gestures handling.
     *
     * @return <code>MouseEvent.BUTTON1_MASK</code>, <code>MouseEvent.BUTTON2_MASK</code>
     *         or <code>MouseEvent.BUTTON3_MASK</code>
     */
    public int getMouseButton() {
        return mouseButton;
    }

    /**
     * Sets mouse button used for gestures handling.
     *
     * @param mouseButton <code>MouseEvent.BUTTON1_MASK</code>, <code>MouseEvent.BUTTON2_MASK</code>
     *                    or <code>MouseEvent.BUTTON3_MASK</code>
     */
    public void setMouseButton(int mouseButton) {
        this.mouseButton = mouseButton;
    }

    /**
     * Adds mouse gestures listener.
     *
     * @param listener Instance of {@link MouseGesturesListener}
     */
    public void addMouseGesturesListener(MouseGesturesListener listener) {
        if (listener == null)
            return;
        listeners.add(listener);
    }

    /**
     * Removes mouse gestures listener.
     *
     * @param listener Instance of {@link MouseGesturesListener}
     */
    public void removeMouseGesturesListener(MouseGesturesListener listener) {
        if (listener == null)
            return;
        listeners.remove(listener);
    }

    /**
     * Fires event when full mouse gesture is recogized (mouse button is released).
     *
     * @param gesture String representation of mouse gesture. "L" for left, "R" for right,
     *                "U" for up, "D" for down movements. For example: "ULD".
     */
    private void fireProcessMouseGesture(String gesture) {
        for (int i = 0; i < listeners.size(); i++)
            ((MouseGesturesListener) listeners.get(i)).processGesture(gesture);
    }

    /**
     * Fires event when new mouse movement is recognized but mouse gesture is not yet completed.
     *
     * @param gesture String representation of recognized movements. "L" for left, "R" for right,
     *                "U" for up, "D" for down movements. For example: "ULD".
     */
    void fireGestureMovementRecognized(String gesture) {
        for (int i = 0; i < listeners.size(); i++)
            ((MouseGesturesListener) listeners.get(i)).gestureMovementRecognized(gesture);
    }
}

⌨️ 快捷键说明

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