Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
// This Source Code is Copyright & Licenced as indicated below
package org.litesoft.GWT.client.widgets.nonpublic.external;
/*
 * Copyright 2007 Mat Gessel <mat.gessel@gmail.com>
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

import com.google.gwt.core.client.*;
import com.google.gwt.user.client.*;

/**
 * Converts {@link MouseEvent}s to {@link DragEvent}s and delegates to the
 * specified {@link DragGesture}.
 */
public class MouseDragHandler extends MouseHandlerAdaptor {
    private static MouseDragHandlerImpl s_Impl = (MouseDragHandlerImpl) GWT.create( MouseDragHandlerImpl.class );

    private DragGesture m_dragGesture;
    private MouseEvent m_mouseDown = null;
    private MouseEvent m_previousEvent = null;

    public MouseDragHandler( DragGesture dragGesture ) {
        super( Event.ONMOUSEDOWN | Event.ONMOUSEMOVE | Event.ONMOUSEUP );
        m_dragGesture = dragGesture;
    }

    protected MouseEvent getMouseDown() {
        return m_mouseDown;
    }

    protected MouseEvent getPreviousEvent() {
        return m_previousEvent;
    }

    /**
     * Get the delegate object which will handle drag operations.
     */
    public DragGesture getDragGesture() {
        return m_dragGesture;
    }

    /**
     * Set the delegate object which will handle drag operations.
     */
    public void setDragGesture( DragGesture dragGesture ) {
        m_dragGesture = dragGesture;
    }

    @Override
    public void onMouseDown( MouseEvent e ) {
        DOM.eventCancelBubble( e.getDomEvent(), true );
        s_Impl.onMouseDown( e.getDomEvent() );

        if ( m_dragGesture != null ) {
            m_mouseDown = e;
            m_dragGesture.start( e );
            m_previousEvent = e;
        }
    }

    @Override
    public void onMouseMove( MouseEvent e ) {
        if ( m_mouseDown != null ) {
            m_dragGesture.step( new DragEvent( e, m_mouseDown, m_previousEvent ) );
            m_previousEvent = e;
        }
    }

    @Override
    public void onMouseUp( MouseEvent e ) {
        // it is possible to get a mouse up without a mouse down
        if ( m_mouseDown != null ) {
            // clear MD first to prevent reentrancy
            m_mouseDown = null;
            m_dragGesture.finish();
            m_previousEvent = null;
        }

        if ( e != null ) {
            s_Impl.onMouseUp( e.getDomEvent() );
        }
    }

    protected static class MouseDragHandlerImpl {
        public void onMouseDown( Event event ) {
            // prevents text selection and image dragging in Mozilla, Safari & Opera
            DOM.eventPreventDefault( event );
        }

        public void onMouseUp( Event event ) {
        }
    }

    protected static class MouseDragHandlerImplIE6 extends MouseDragHandlerImpl {
        @Override
        public native void onMouseDown( Event event ) /*-{
            $doc.body.onselectstart = function ()
            {
                return false;
            };
            $doc.body.ondragstart = function ()
            {
                return false;
            };
        }-*/;

        @Override
        public native void onMouseUp( Event event ) /*-{
            $doc.body.onselectstart = null;
            $doc.body.ondragstart = null;
        }-*/;
    }
}

Commits for litesoft/trunk/Java/GWT/Client/src/org/litesoft/GWT/client/widgets/nonpublic/external/MouseDragHandler.java

Diff revisions: vs.
Revision Author Commited Message
948 Diff Diff GeorgeS picture GeorgeS Sat 07 Jun, 2014 23:42:39 +0000

Jusefuls Formatter Updated to New Code Format

720 Diff Diff GeorgeS picture GeorgeS Sun 10 Jun, 2012 16:20:42 +0000
151 Diff Diff GeorgeS picture GeorgeS Thu 17 Mar, 2011 04:16:22 +0000
49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

23 Diff Diff GeorgeS picture GeorgeS Wed 24 Feb, 2010 00:34:32 +0000
2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000