001    /*
002     * Copyright 2006 Mat Gessel <mat.gessel@gmail.com>
003     * 
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * the License at
007     * 
008     * http://www.apache.org/licenses/LICENSE-2.0
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package asquare.gwt.tk.client.ui.behavior;
017    
018    /**
019     * An interface for implementing mouse actions. 
020     */
021    public abstract interface DragGesture
022    {
023            /**
024             * Called at beginning of the input operation. This may be triggered by a
025             * mousedown, or may be triggered by a hotkey during the middle of a drag.
026             * 
027             * @param x
028             * @param y
029             */
030            void start(int x, int y);
031            
032            /**
033             * Called for each mouse movement during the input operation.
034             * 
035             * @param x
036             * @param y
037             */
038            void step(int x, int y);
039            
040            /**
041             * Called at the end of the input operation, after the last movement. This
042             * may be triggered by a mouseup or may be triggered by the release of a
043             * hotkey during a drag.
044             * 
045             * @param x
046             * @param y
047             */
048            void finish(int x, int y);
049    }