DragAndDropManager.st
author convert-repo
Wed, 29 May 2019 03:28:40 +0000
changeset 4273 917882cc2024
parent 4185 6d6795c91e9c
child 4343 1441ab3626b6
permissions -rw-r--r--
update tags
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
     1
"{ Encoding: utf8 }"
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
     2
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
     3
"
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
     4
 COPYRIGHT (c) 1996 by eXept Software AG / Claus Gittinger
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
     5
	      All Rights Reserved
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
     6
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
     7
 This software is furnished under a license and may be used
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
     8
 only in accordance with the terms of that license and with the
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    10
 be provided or otherwise made available to, or used by, any
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    11
 other person.  No title to or ownership of the software is
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    12
 hereby transferred.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    13
"
1397
47ac1d3e1df1 category changes
Claus Gittinger <cg@exept.de>
parents: 1289
diff changeset
    14
"{ Package: 'stx:libview2' }"
47ac1d3e1df1 category changes
Claus Gittinger <cg@exept.de>
parents: 1289
diff changeset
    15
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
    16
"{ NameSpace: Smalltalk }"
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
    17
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
Object subclass:#DragAndDropManager
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
    19
	instanceVariableNames:'dropContext dragView dropAction dragOffset handler restoreBlock
1661
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
    20
		alienCursor enabledCursor disabledCursor canDrop escapePressed
2410
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
    21
		passiveAction autoScrollTask disabledFlag giveFocusToTargetWidget
4124
e685cbc75d30 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4108
diff changeset
    22
		notifyEndOfDropAction savedCursor lastTopView
e685cbc75d30 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4108
diff changeset
    23
		timeLastTopViewWasEntered raiseViewTimedAction'
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
    24
	classVariableNames:'DragContextQuerySignal DragOriginatorQuerySignal
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
    25
		DragOffsetQuerySignal ActiveDragAndDropManagers
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
    26
		AutoScrollTimeInterval'
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
    27
	poolDictionaries:''
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
    28
	category:'Interface-DragAndDrop'
342
7563cbf04502 added genericDrag & arrowDrag
Claus Gittinger <cg@exept.de>
parents: 341
diff changeset
    29
!
7563cbf04502 added genericDrag & arrowDrag
Claus Gittinger <cg@exept.de>
parents: 341
diff changeset
    30
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
!DragAndDropManager class methodsFor:'documentation'!
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    33
copyright
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    34
"
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    35
 COPYRIGHT (c) 1996 by eXept Software AG / Claus Gittinger
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
    36
	      All Rights Reserved
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    37
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    38
 This software is furnished under a license and may be used
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    39
 only in accordance with the terms of that license and with the
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    40
 inclusion of the above copyright notice.   This software may not
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    41
 be provided or otherwise made available to, or used by, any
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    42
 other person.  No title to or ownership of the software is
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    43
 hereby transferred.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    44
"
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    45
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    46
!
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    47
348
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
    48
documentation
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
    49
"
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
    50
    this class provides low-level drag & drop mechanisms.
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
    51
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    52
    Easy to use interface interfaces:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    53
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    54
    A drag is usually initiated by a view or its application model,
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    55
    when a selection is moved (for example, SelectionInListView can
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    56
    be initializd to do so). 
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    57
    There, the view creates a collection of dropObjects from its selection,
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    58
    and starts the drag operation with:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    59
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    60
        DragAndDropManager startDrag:collectionOfDragObjects from:aView.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    61
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    62
    This easy to use interface starts a drag and also drops the collection
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    63
    into the target view.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    64
    While dragging, a thumbsUp cursor is shown, if the view-under-the-drag
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    65
    can handle a drop, a thumbsDown is shown if not, and a question mark
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    66
    is shown for alien views (which means: we don't know).
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    67
    Alien view drop is supported (but no 'canDrop' query).
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    68
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    69
    For rubber-band line dragging, two more easy-to-use startup methods are
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    70
    provided:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    71
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    72
        DragAndDropManager
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    73
                startLineDragIn:aView at:position
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    74
                atEnd:aFourArgEndBlock
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    75
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    76
    and:
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    77
        DragAndDropManager
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    78
                startArrowDragIn:aView at:position
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    79
                atEnd:aFourArgEndBlock
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    80
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    81
    both of the above expect a 4-arg block to be passed, which will be
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    82
    evaluated at end-drag, with the target view, its viewID, the drop position
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    83
    on the screen and within the target view as arguments.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    84
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    85
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    86
    Expert interface:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    87
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    88
    More control over the dragging (i.e. the drawing procedure)
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    89
    can be optained, by passing a dragBlock and an endDrag action:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    90
        
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    91
        aDragAndDropMgr := DragAndDropManager new.
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    92
        aDragAndDropMgr dropObjects:(self collectionOfDragObjects).
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    93
        aDragAndDropMgr 
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    94
            startOpaqueDrag:[:aPoint :aView :dropObjects | 
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    95
                                self 
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    96
                                    showDragging:dropObjects
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    97
                                    in:aView 
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    98
                                    at:aPoint - (xOffset@0)
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
    99
                            ]
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   100
            offset:clickOffset
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   101
            extent:saveUnderExtent
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   102
            in:self
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   103
            at:clickPoint
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   104
            atEnd:[:v :vId :posScreen :posView | ... ]
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   105
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   106
    the arguments are:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   107
      startOpaqueDrag:
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   108
        a 3-arg block, which is evaluated by the d&d manager whenever the
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   109
        mouse moves; it is supposed to draw the dropObjects at some position
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   110
        in the passed view.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   111
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   112
      offset:
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   113
        a clickOffset; drawing is offset by this amount
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   114
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   115
      extent:  
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   116
        a save extent; the size of the screen area that must be saved during
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   117
        the drag operation
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   118
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   119
      in:
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   120
        initiating view
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   121
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   122
      at:
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   123
        position where d&d operation starts
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   124
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   125
      atEnd:
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   126
        a 4-arg block that is evaluated when the d&d is finished.
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   127
        It gets the target view (or nil, for alien views), the targets
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
   128
        view ID (needed if it's an alien view), the screen position and the
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   129
        relative position within the target view of the drop as arguments.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   130
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   131
        For internal (ST/X) views, the dropBlock should perform
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   132
        a simple canDrop:/doDrop message.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   133
4006
a4dd0d13f91b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3932
diff changeset
   134
        For alien views, the Display's d&d functions can be used.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   135
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   136
348
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   137
    [author:]
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   138
        Claus Gittinger
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   139
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   140
    [see also:]
3774
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   141
        DemoView1, DemoView2, ...
cee263839e68 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3725
diff changeset
   142
        SelectionInListView FileBrowser - for a concrete example
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   143
348
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   144
"
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   145
!
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   146
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   147
examples
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   148
"
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   149
  a button, which initiates dragging of a file-object
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   150
  Notice that this can be dropped into the launchers panel,
549
51c6f1d918c2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 548
diff changeset
   151
  to open a fileBrowser on that directory ...
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   152
								[exBegin]
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   153
     |o top v|
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   154
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   155
     top := StandardSystemView new.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   156
     v := Button label:'press for drag' in:top.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   157
     v pressAction:[
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   158
		|o|
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   159
		o := DropObject newFile:('/etc').
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   160
		DragAndDropManager startDrag:o from:v.
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   161
		v turnOff
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   162
	      ].
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   163
     top openWithExtent:200@200
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   164
								[exEnd]
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   165
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   166
  initiate a drag with some offset:
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   167
								[exBegin]
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   168
     |o top v|
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   170
     top := StandardSystemView new.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   171
     v := Button label:'press for drag' in:top.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   172
     v pressAction:[
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   173
		|o|
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   174
		o := DropObject newFile:('.').
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   175
		DragAndDropManager startDrag:o from:v offset:10@10.
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   176
		v turnOff
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   177
	      ].
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   178
     top openWithExtent:200@200
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   179
								[exEnd]
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   180
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   181
  initiate a line drag:
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   182
								[exBegin]
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   183
     |o top v endAction|
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   184
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   185
     endAction := [ :v :vID :sPos :vPos |
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   186
		    Transcript show:'end drag in '.
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   187
		    v isNil ifTrue:[
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   188
			Transcript show:'alien view'
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   189
		    ] ifFalse:[
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   190
			Transcript show:v
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   191
		    ].
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   192
		    Transcript show:' at screen: '; show:sPos;
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   193
			       show:' in view: '; showCR:vPos
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   194
		].
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   195
     top := StandardSystemView new.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   196
     v := Button label:'press for drag' in:top.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   197
     v pressAction:[
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   198
		DragAndDropManager 
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   199
		    startLineDragIn:v at:10@10 atEnd:endAction.
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   200
		v turnOff
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   201
	      ].
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   202
     top openWithExtent:200@200
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   203
								[exEnd]
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   204
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   205
   more drag & drop; offset, displayObjects, ...
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   206
								[exBegin]
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   207
    |dropObj topView pannel icon buttonAction addButton|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   208
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   209
    topView := StandardSystemView new.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   210
    pannel  := VerticalPanelView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:topView.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   211
    pannel  horizontalLayout:#fit.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   212
    pannel  verticalLayout:#fitSpace.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   213
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   214
    icon    := Image fromFile:('xpmBitmaps/QUESTION3.xpm').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   215
    dropObj := DropObject newFile:('.').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   216
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   217
    addButton := [:offset :label :dispObj| |button|
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   218
	button := Button label:label in:pannel.
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   219
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   220
	button pressAction:[
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   221
	    DragAndDropManager startDrag:dropObj from:button offset:offset display:dispObj.
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   222
	    button turnOff.
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   223
	]
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   224
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   225
881
981e0791ca36 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 874
diff changeset
   226
    addButton value:(0@-5)       value:'String'       value:'String'.
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   227
    addButton value:#topLeft     value:'String'       value:'String'.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   228
    addButton value:#topRight    value:'Text'         value:(Text string:'hello' emphasis:#bold).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   229
    addButton value:#bottomLeft  value:'Icon'         value:icon.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   230
    addButton value:#bottomRight value:'LabelAndIcon' value:(LabelAndIcon icon:icon string:'Label & Icon').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   231
    addButton value:#center      value:'Mixed'        value:(Array with:'String' with:icon).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   232
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   233
    topView label:'Drag & Drop'.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   234
    topView openWithExtent:200@200.
1166
4892defb2ab6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1162
diff changeset
   235
								[exEnd]
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   236
"
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
! !
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   239
!DragAndDropManager class methodsFor:'initialization'!
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   240
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   241
initialize
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   242
    DragOriginatorQuerySignal := QuerySignal new.
680
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   243
    DragOffsetQuerySignal := QuerySignal new.
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   244
    DragContextQuerySignal := QuerySignal new.
1487
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   245
    ActiveDragAndDropManagers := IdentityDictionary new.
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   246
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   247
    "
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   248
     self initialize
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   249
    "
680
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   250
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   251
    "Modified: 11.8.1997 / 00:54:21 / cg"
1420
418a8f90b7bc category change
Claus Gittinger <cg@exept.de>
parents: 1397
diff changeset
   252
! !
418a8f90b7bc category change
Claus Gittinger <cg@exept.de>
parents: 1397
diff changeset
   253
418a8f90b7bc category change
Claus Gittinger <cg@exept.de>
parents: 1397
diff changeset
   254
!DragAndDropManager class methodsFor:'instance creation'!
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   255
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   256
new
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   257
    ^ self basicNew initialize
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   258
! !
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   259
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   260
!DragAndDropManager class methodsFor:'Signal constants'!
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   261
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   262
dragContextQuerySignal
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   263
    ^ DragContextQuerySignal
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   264
!
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   265
680
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   266
dragOffsetQuerySignal
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   267
    ^ DragOffsetQuerySignal
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   268
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   269
    "Created: 11.8.1997 / 00:54:10 / cg"
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   270
!
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   271
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   272
dragOriginatorQuerySignal
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   273
    ^ DragOriginatorQuerySignal
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   274
! !
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   275
1842
f033c7b344de compress buttonMotion events handling (look for outstanding events)
ca
parents: 1835
diff changeset
   276
!DragAndDropManager class methodsFor:'defaults'!
f033c7b344de compress buttonMotion events handling (look for outstanding events)
ca
parents: 1835
diff changeset
   277
f033c7b344de compress buttonMotion events handling (look for outstanding events)
ca
parents: 1835
diff changeset
   278
autoScrollDelayTimeMs
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   279
    <resource: #obsolete>
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   280
    "time between autoscrolls in milli-seconds"
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   281
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   282
    self autoScrollTimeInterval
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   283
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   284
    "Modified: / 14-06-2018 / 10:43:26 / Claus Gittinger"
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   285
!
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   286
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   287
autoScrollTimeInterval
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   288
    "time between autoscrolls in milli-seconds"
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   289
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   290
    ^ AutoScrollTimeInterval ? 150
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   291
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   292
    "Created: / 14-06-2018 / 10:42:38 / Claus Gittinger"
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   293
!
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   294
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   295
autoScrollTimeInterval:millisOrNil
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   296
    "time between autoscrolls in milli-seconds"
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   297
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   298
    AutoScrollTimeInterval := millisOrNil
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   299
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   300
    "Created: / 14-06-2018 / 10:42:47 / Claus Gittinger"
1842
f033c7b344de compress buttonMotion events handling (look for outstanding events)
ca
parents: 1835
diff changeset
   301
! !
f033c7b344de compress buttonMotion events handling (look for outstanding events)
ca
parents: 1835
diff changeset
   302
1487
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   303
!DragAndDropManager class methodsFor:'helpers'!
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   304
2042
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   305
disabledFlag:aBoolean device:aDevice
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   306
    |activeManager|
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   307
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   308
    activeManager := ActiveDragAndDropManagers at:aDevice ifAbsent:nil.
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   309
    activeManager notNil ifTrue:[
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   310
        activeManager disabledFlag: aBoolean
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   311
    ].
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   312
!
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   313
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   314
postDraggingOnDevice:aDevice
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   315
    |activeManager|
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   316
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   317
    activeManager := ActiveDragAndDropManagers at:aDevice ifAbsent:nil.
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   318
    activeManager notNil ifTrue:[
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   319
        activeManager dragHandler postDragging
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   320
    ].
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   321
!
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   322
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   323
rereadSaveAreaOnDevice:aDevice
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   324
    |activeManager|
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   325
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   326
    activeManager := ActiveDragAndDropManagers at:aDevice ifAbsent:nil.
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   327
    activeManager notNil ifTrue:[
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   328
        activeManager dragHandler flushSaveArea; rereadSaveArea
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   329
    ].
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   330
!
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   331
1487
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   332
saveDraw:aBlock device:aDevice
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   333
    |activeManager|
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   334
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   335
    activeManager := ActiveDragAndDropManagers at:aDevice ifAbsent:nil.
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   336
    activeManager isNil ifTrue:[
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   337
        aBlock value
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   338
    ] ifFalse:[
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   339
        activeManager saveDraw:aBlock
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   340
    ].
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   341
! !
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   342
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   343
!DragAndDropManager class methodsFor:'queries'!
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   344
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   345
isDragAndDropActiveOnDevice:aDevice
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   346
    ^ ActiveDragAndDropManagers includesKey:aDevice
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   347
! !
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
   348
1776
79372ca563fc category
Claus Gittinger <cg@exept.de>
parents: 1749
diff changeset
   349
!DragAndDropManager class methodsFor:'simple start-drop source'!
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   350
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   351
startDragFrom:aView dropSource:aDropSource
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   352
    "start a drop at the current pointer position."
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   353
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   354
    ^ (self new) startDragFrom:aView dropSource:aDropSource
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   355
!
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   356
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   357
startDragFrom:aView dropSource:aDropSource offset:offsetOrSymbol
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   358
    "start a drop at the current pointer position.
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   359
     offsetOrSymbol can be a point or one of:
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   360
        #center
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   361
        #topLeft"
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   362
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   363
    ^ (self new) startDragFrom:aView dropSource:aDropSource offset:offsetOrSymbol
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   364
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   365
    "Created: / 14-06-2018 / 10:49:43 / Claus Gittinger"
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   366
! !
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   367
1776
79372ca563fc category
Claus Gittinger <cg@exept.de>
parents: 1749
diff changeset
   368
!DragAndDropManager class methodsFor:'simple start-generic'!
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   369
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   370
startDrag:draggableObjects from:aView
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   371
    "start a drop at the current pointer position"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   372
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   373
    ^ self startDrag:draggableObjects
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   374
                from:aView
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   375
              offset:0@0
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   376
               atEnd:nil
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   377
             display:draggableObjects
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   378
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   379
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   380
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   381
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   382
    |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   383
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   384
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   385
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   386
    button pressAction:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   387
        DragAndDropManager startDrag:(DropObject newFile:('.')) from:button.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   388
        button turnOff
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   389
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   390
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   391
    button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   392
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   393
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   394
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   395
startDrag:draggableObjects from:aView atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   396
    "start a drop at the current pointer position
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   397
     When finished, the endAction is called with four args:
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
   398
     the targetView, the targetViews windowID (useful, if it's an alien view),
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   399
     the dropPoint in root-coordinates and the dropPoint within the targetView"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   400
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   401
    ^ self startDrag:draggableObjects
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   402
                from:aView
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   403
              offset:0@0
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   404
               atEnd:aFourArgEndBlock
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   405
             display:draggableObjects
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   406
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   407
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   408
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   409
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   410
    |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   411
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   412
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   413
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   414
    button pressAction:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   415
        DragAndDropManager startDrag:(DropObject newFile:('.'))
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   416
                                from:button
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   417
                               atEnd:[:targetView :targetViewId :screenPoint :targetPoint|
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   418
                                        Transcript showCR:'target  view: ', targetView   printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   419
                                        Transcript showCR:'target    id: ', targetViewId printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   420
                                        Transcript showCR:'point screen: ', screenPoint  printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   421
                                        Transcript showCR:'point target: ', targetPoint  printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   422
                                     ].
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   423
        button turnOff
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   424
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   425
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   426
    button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   427
"
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
   428
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
   429
    "Modified (comment): / 13-02-2017 / 20:36:27 / cg"
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   430
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   431
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   432
startDrag:draggableObjects from:aView atEnd:aFourArgEndBlock display:something
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   433
    "start a drop at the current pointer position
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   434
     When finished, the endAction is called with four args:
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
   435
     the targetView, the targetViews windowID (useful, if it's an alien view),
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   436
     the dropPoint in root-coordinates and the dropPoint within the targetView"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   437
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   438
    ^ self startDrag:draggableObjects
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   439
                from:aView
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   440
              offset:0@0
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   441
               atEnd:aFourArgEndBlock
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   442
             display:something
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   443
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   444
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   445
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   446
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   447
    |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   448
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   449
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   450
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   451
    button pressAction:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   452
        DragAndDropManager startDrag:(DropObject newFile:('.'))
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   453
                                from:button
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   454
                               atEnd:[:targetView :targetViewId :screenPoint :targetPoint|
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   455
                                        Transcript showCR:'target  view: ', targetView   printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   456
                                        Transcript showCR:'target    id: ', targetViewId printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   457
                                        Transcript showCR:'point screen: ', screenPoint  printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   458
                                        Transcript showCR:'point target: ', targetPoint  printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   459
                                     ]
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   460
                             display:(Array with:'String' with:(Image fromFile:('xpmBitmaps/QUESTION3.xpm'))).
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   461
        button turnOff
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   462
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   463
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   464
    button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   465
"
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
   466
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
   467
    "Modified (comment): / 13-02-2017 / 20:36:31 / cg"
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   468
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   469
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   470
startDrag:draggableObjects from:aView display:something
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   471
    "start a drop at the current pointer position"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   472
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   473
    ^ self startDrag:draggableObjects
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   474
                from:aView
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   475
              offset:0@0
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   476
               atEnd:nil
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   477
             display:something
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   478
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   479
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   480
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   481
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   482
    |dropObj topView pannel icon buttonAction addButton|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   483
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   484
    topView := StandardSystemView new.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   485
    pannel  := VerticalPanelView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:topView.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   486
    pannel  horizontalLayout:#fit.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   487
    pannel  verticalLayout:#fitSpace.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   488
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   489
    icon    := Image fromFile:('xpmBitmaps/QUESTION3.xpm').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   490
    dropObj := DropObject newFile:('.').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   491
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   492
    addButton := [:label :dispObj| |button|
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   493
        button := Button label:label in:pannel.
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   494
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   495
        button pressAction:[
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   496
            DragAndDropManager startDrag:dropObj from:button display:dispObj.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   497
            button turnOff.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   498
        ]
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   499
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   500
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   501
    addButton value:'String'       value:'String'.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   502
    addButton value:'Text'         value:(Text string:'hello' emphasis:#bold).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   503
    addButton value:'Icon'         value:icon.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   504
    addButton value:'LabelAndIcon' value:(LabelAndIcon icon:icon string:'Label & Icon').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   505
    addButton value:'Mixed'        value:(Array with:'String' with:icon).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   506
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   507
    topView label:'Drag & Drop'.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   508
    topView openWithExtent:200@200.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   509
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   510
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   511
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   512
startDrag:draggableObjects from:aView offset:anOffset
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   513
    "start a drop at the current pointer position"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   514
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   515
    ^ self startDrag:draggableObjects
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   516
                from:aView
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   517
              offset:anOffset
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   518
               atEnd:nil
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   519
             display:draggableObjects
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   520
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   521
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   522
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   523
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   524
    |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   525
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   526
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   527
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   528
    button pressAction:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   529
        DragAndDropManager startDrag:(DropObject newFile:('.')) from:button offset:(-10 @ -10).
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   530
        button turnOff
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   531
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   532
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   533
    button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   534
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   535
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   536
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   537
startDrag:draggableObjects from:aView offset:anOffset atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   538
    "start a drop at the current pointer position
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   539
     When finished, the endAction is called with four args:
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
   540
     the targetView, the targetViews windowID (useful, if it's an alien view),
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   541
     the dropPoint in root-coordinates and the dropPoint within the targetView"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   542
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   543
    ^ self startDrag:draggableObjects
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   544
                from:aView
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   545
              offset:anOffset
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   546
               atEnd:aFourArgEndBlock
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   547
             display:draggableObjects
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   548
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   549
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   550
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   551
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   552
    |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   553
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   554
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   555
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   556
    button pressAction:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   557
        DragAndDropManager startDrag:(DropObject newFile:('.'))
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   558
                                from:button
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   559
                              offset:(-10 @ -10)
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   560
                               atEnd:[:targetView :targetViewId :screenPoint :targetPoint|
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   561
                                        Transcript showCR:'target  view: ', targetView   printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   562
                                        Transcript showCR:'target    id: ', targetViewId printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   563
                                        Transcript showCR:'point screen: ', screenPoint  printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   564
                                        Transcript showCR:'point target: ', targetPoint  printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   565
                                     ].
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   566
        button turnOff
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   567
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   568
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   569
    button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   570
"
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
   571
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
   572
    "Modified (comment): / 13-02-2017 / 20:36:35 / cg"
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   573
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   574
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   575
startDrag:draggableObjects from:aView offset:anOffsetOrSymbol atEnd:aFourArgEndBlock display:something
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   576
    "start a drop at the current pointer position
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   577
     When finished, the endAction is called with four args:
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
   578
     the targetView, the targetViews windowID (useful, if it's an alien view),
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   579
     the dropPoint in root-coordinates and the dropPoint within the targetView"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   580
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   581
    |manager|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   582
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   583
    manager := self new.
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   584
    manager 
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   585
        startDrag:draggableObjects
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   586
        from:aView
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   587
        offset:anOffsetOrSymbol
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   588
        atEnd:aFourArgEndBlock
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   589
        display:something.
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   590
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   591
    ^ manager
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   592
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   593
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   594
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   595
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   596
    |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   597
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   598
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   599
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   600
    button pressAction:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   601
        DragAndDropManager startDrag:(DropObject newFile:('.'))
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   602
                                from:button
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   603
                              offset:(-10 @ -10)
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   604
                               atEnd:[:targetView :targetViewId :screenPoint :targetPoint|
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   605
                                        Transcript showCR:'target  view: ', targetView   printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   606
                                        Transcript showCR:'target    id: ', targetViewId printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   607
                                        Transcript showCR:'point screen: ', screenPoint  printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   608
                                        Transcript showCR:'point target: ', targetPoint  printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   609
                                     ]
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   610
                             display:(Array with:'String' with:(Image fromFile:('xpmBitmaps/QUESTION3.xpm'))).
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   611
        button turnOff
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   612
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   613
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   614
    button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   615
"
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
   616
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
   617
    "Modified (comment): / 13-02-2017 / 20:18:39 / cg"
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   618
    "Modified (format): / 14-06-2018 / 10:53:17 / Claus Gittinger"
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   619
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   620
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   621
startDrag:draggableObjects from:aView offset:anOffset display:something
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   622
    "start a drop at the current pointer position"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   623
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   624
    ^ self startDrag:draggableObjects
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   625
                from:aView
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   626
              offset:anOffset
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   627
               atEnd:nil
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   628
             display:something
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   629
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   630
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   631
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   632
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   633
    |dropObj topView pannel icon buttonAction addButton|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   634
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   635
    topView := StandardSystemView new.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   636
    pannel  := VerticalPanelView origin:(0.0 @ 0.0) corner:(1.0 @ 1.0) in:topView.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   637
    pannel  horizontalLayout:#fit.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   638
    pannel  verticalLayout:#fitSpace.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   639
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   640
    icon    := Image fromFile:('xpmBitmaps/QUESTION3.xpm').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   641
    dropObj := DropObject newFile:('.').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   642
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   643
    addButton := [:offset :label :dispObj| |button|
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   644
        button := Button label:label in:pannel.
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   645
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   646
        button pressAction:[
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   647
            DragAndDropManager startDrag:dropObj from:button offset:offset display:dispObj.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   648
            button turnOff.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   649
        ]
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   650
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   651
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   652
    addButton value:#topLeft     value:'String'       value:'String'.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   653
    addButton value:#topRight    value:'Text'         value:(Text string:'hello' emphasis:#bold).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   654
    addButton value:#bottomLeft  value:'Icon'         value:icon.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   655
    addButton value:#bottomRight value:'LabelAndIcon' value:(LabelAndIcon icon:icon string:'Label & Icon').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   656
    addButton value:#center      value:'Mixed'        value:(Array with:'String' with:icon).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   657
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   658
    topView label:'Drag & Drop'.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   659
    topView openWithExtent:200@200.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   660
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   661
! !
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   662
1776
79372ca563fc category
Claus Gittinger <cg@exept.de>
parents: 1749
diff changeset
   663
!DragAndDropManager class methodsFor:'simple start-lines'!
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   664
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   665
startArrowDragIn:aView at:dragPoint atEnd:aFourArgBlock
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   666
    "start a rubber-arrow-line dragging in aView at dragPoint.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   667
     When finished, evaluate the fourArgBlock with targetView,
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   668
     targetID, screenPosition and targetViewPosition as arguments"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   669
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   670
    ^ self new startArrowDragIn:aView at:dragPoint atEnd:aFourArgBlock
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   671
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   672
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   673
EXAMPLE:
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   674
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   675
    |button|
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   676
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   677
    button := (Button label:'press me').
861
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   678
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   679
    button pressAction:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   680
        button turnOff.
861
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   681
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   682
        DragAndDropManager startArrowDragIn:button 
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   683
                                         at:(button preferredExtent // 2)
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   684
                                      atEnd:[:targetView :targetViewId :screenPoint :targetPoint|
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   685
                                                targetView isNil ifTrue:[
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   686
                                                    Transcript show:'alien view'
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   687
                                                ] ifFalse:[
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   688
                                                    Transcript showCR:'target: ', targetView printString
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   689
                                                ].
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   690
                                                Transcript showCR:'point screen: ', screenPoint printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   691
                                                Transcript showCR:'point target: ', targetPoint printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   692
                                            ]
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   693
     ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   694
     button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   695
"
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   696
!
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   697
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   698
startLineDragIn:aView at:dragPoint atEnd:aFourArgBlock
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   699
    "start a rubber-line dragging in aView at dragPoint.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   700
     When finished, evaluate the fourArgBlock with targetView,
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   701
     targetID, screenPosition and targetViewPosition as arguments"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   702
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   703
    ^ self new startLineDragIn:aView at:dragPoint atEnd:aFourArgBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   704
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   705
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   706
EXAMPLE:
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   707
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   708
    |button|
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   709
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   710
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   711
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   712
    button pressAction:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   713
        button turnOff.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   714
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   715
        DragAndDropManager startLineDragIn:button 
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   716
                                        at:(button preferredExtent // 2)
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   717
                                     atEnd:[:targetView :targetViewId :screenPoint :targetPoint|
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   718
                                               targetView isNil ifTrue:[
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   719
                                                   Transcript show:'alien view'
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   720
                                               ] ifFalse:[
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   721
                                                   Transcript showCR:'target: ', targetView printString
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   722
                                               ].
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   723
                                               Transcript showCR:'point screen: ', screenPoint printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   724
                                               Transcript showCR:'point target: ', targetPoint printString.
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   725
                                           ]
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   726
     ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   727
     button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   728
"
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   729
! !
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   730
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   731
!DragAndDropManager class methodsFor:'translation'!
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   732
2436
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   733
translatePointFromScreen:aPoint to:aView
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   734
    "translate a point from screen to view coordinates"
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   735
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
   736
    |viewsDevice trans point offset|
2436
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   737
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   738
    aView isRootView ifTrue:[^ aPoint].
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
   739
    viewsDevice := aView device.
2436
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   740
    "/
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   741
    "/ get device coordinates
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   742
    "/
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   743
    (trans := aView transformation) notNil ifTrue:[
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   744
        point := trans applyInverseTo:aPoint
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   745
    ] ifFalse:[
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   746
        point := aPoint
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   747
    ].
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   748
    "/
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   749
    "/ translate to screen
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   750
    "/
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
   751
    offset := viewsDevice translatePoint:0@0 fromView:(viewsDevice rootView) toView:aView.
2436
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   752
    ^ offset + point
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   753
!
352e5205454e pass dropContext in dragHandler
Claus Gittinger <cg@exept.de>
parents: 2411
diff changeset
   754
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   755
translatePointFromScreen:aPoint toView:aView
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   756
    "translate a point from screen- to view coordinates"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   757
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
   758
    |viewsDevice trans point offset|
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   759
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
   760
    viewsDevice := aView device.
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   761
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   762
    "/
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   763
    "/ translate to view
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   764
    "/
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
   765
    offset := viewsDevice translatePoint:0@0 fromView:(viewsDevice rootView) toView:aView.
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   766
    point := aPoint + offset.
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   767
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   768
    "/
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   769
    "/ get device coordinates
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   770
    "/
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   771
    (trans := aView transformation) notNil ifTrue:[
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   772
        point := trans applyInverseTo:point
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   773
    ].
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   774
    ^ point
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   775
!
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   776
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   777
translatePointToScreen:aPoint from:aView
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   778
    "translate a point from view- to screen coordinates"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   779
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
   780
    |viewsDevice trans point offset|
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   781
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
   782
    aView isRootView ifTrue:[^ aPoint].
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
   783
    viewsDevice := aView device.
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   784
    "/
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   785
    "/ get device coordinates
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   786
    "/
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   787
    (trans := aView transformation) notNil ifTrue:[
3436
bf6858caeb31 class: DragAndDropManager
Claus Gittinger <cg@exept.de>
parents: 3344
diff changeset
   788
        point := trans transformPoint:aPoint
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   789
    ] ifFalse:[
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   790
        point := aPoint
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   791
    ].
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   792
    "/
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   793
    "/ translate to screen
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   794
    "/
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
   795
    offset := viewsDevice translatePoint:0@0 fromView:aView toView:(viewsDevice rootView).
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
   796
    ^ offset + point
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   797
! !
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
   798
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   799
!DragAndDropManager methodsFor:'accessing'!
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   800
861
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   801
device
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   802
    "returns the device of the source view"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   803
861
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   804
    ^ dragView device
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   805
!
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   806
2042
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   807
disabledFlag
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   808
    ^ disabledFlag ? false
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   809
!
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   810
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   811
disabledFlag:something
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   812
    disabledFlag := something.
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   813
!
00fd3e50afdd Add disabled flag. If enabled (=true) the handling of button motion
ab
parents: 2025
diff changeset
   814
2013
5af91e0ed687 *** empty log message ***
ca
parents: 1939
diff changeset
   815
dragHandler
5af91e0ed687 *** empty log message ***
ca
parents: 1939
diff changeset
   816
    "returns the current active handler which is responsible for drawing ..."
5af91e0ed687 *** empty log message ***
ca
parents: 1939
diff changeset
   817
5af91e0ed687 *** empty log message ***
ca
parents: 1939
diff changeset
   818
    ^ handler
5af91e0ed687 *** empty log message ***
ca
parents: 1939
diff changeset
   819
!
5af91e0ed687 *** empty log message ***
ca
parents: 1939
diff changeset
   820
5af91e0ed687 *** empty log message ***
ca
parents: 1939
diff changeset
   821
dragHandler:aNewHandler
5af91e0ed687 *** empty log message ***
ca
parents: 1939
diff changeset
   822
    "set the active handler which is responsible for drawing ..."
5af91e0ed687 *** empty log message ***
ca
parents: 1939
diff changeset
   823
5af91e0ed687 *** empty log message ***
ca
parents: 1939
diff changeset
   824
    handler := aNewHandler.
5af91e0ed687 *** empty log message ***
ca
parents: 1939
diff changeset
   825
!
5af91e0ed687 *** empty log message ***
ca
parents: 1939
diff changeset
   826
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   827
dropContext
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   828
    "return the current context"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   829
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   830
    ^ dropContext
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   831
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   832
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   833
dropObjects
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   834
    "return the current dropObject collection"
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   835
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   836
    ^ dropContext dropObjects
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   837
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   838
    "Modified: 19.4.1997 / 10:19:06 / cg"
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   839
!
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   840
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   841
dropObjects:aCollectionOfDropObjects
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   842
    "set the current dropObject collection"
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   843
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   844
    ^ dropContext dropObjects:aCollectionOfDropObjects
861
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   845
!
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   846
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   847
font
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   848
    "returns the font of the source view"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   849
861
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   850
    ^ dragView font
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   851
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   852
2358
7eca18445279 add #giveFocusToTargetWidget
ca
parents: 2259
diff changeset
   853
giveFocusToTargetWidget:aBoolean
7eca18445279 add #giveFocusToTargetWidget
ca
parents: 2259
diff changeset
   854
    giveFocusToTargetWidget := aBoolean.
7eca18445279 add #giveFocusToTargetWidget
ca
parents: 2259
diff changeset
   855
!
7eca18445279 add #giveFocusToTargetWidget
ca
parents: 2259
diff changeset
   856
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
   857
isDisabled
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
   858
    ^ disabledFlag ? false
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
   859
!
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
   860
2410
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
   861
notifyEndOfDropAction: aNoneArgBlock
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
   862
    "the action is triggered after the drop has finished"
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
   863
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
   864
     notifyEndOfDropAction := aNoneArgBlock.
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
   865
!
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
   866
1661
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
   867
passiveAction:aBlockOrNil
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
   868
    self removePassiveAction.
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
   869
    aBlockOrNil notNil ifTrue:[
3302
b6d6a1db9a79 class: DragAndDropManager
Stefan Vogel <sv@exept.de>
parents: 3115
diff changeset
   870
        passiveAction := aBlockOrNil.
b6d6a1db9a79 class: DragAndDropManager
Stefan Vogel <sv@exept.de>
parents: 3115
diff changeset
   871
        Processor addTimedBlock:aBlockOrNil afterMilliseconds:100.
1661
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
   872
    ].
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
   873
!
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
   874
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
   875
removePassiveAction
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
   876
    passiveAction notNil ifTrue:[
3302
b6d6a1db9a79 class: DragAndDropManager
Stefan Vogel <sv@exept.de>
parents: 3115
diff changeset
   877
        Processor removeTimedBlock:passiveAction.
1661
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
   878
        passiveAction := nil.
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
   879
    ].
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
   880
!
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
   881
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   882
sourceWidget
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   883
    ^ dragView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   884
! !
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   885
1397
47ac1d3e1df1 category changes
Claus Gittinger <cg@exept.de>
parents: 1289
diff changeset
   886
!DragAndDropManager methodsFor:'accessing-cursor'!
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   887
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   888
alienCursor:aCursorOrImage
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   889
    "set the cursor used for an alien widget; not an ST/X view"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   890
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   891
    aCursorOrImage isImage ifTrue:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   892
        alienCursor := Cursor fromImage:aCursorOrImage
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   893
    ] ifFalse:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   894
        (aCursorOrImage isMemberOf:Cursor) ifTrue:[
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   895
            alienCursor := aCursorOrImage
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   896
        ] ifFalse:[
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   897
            "/
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   898
            "/ use disabled cursor
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   899
            "/
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   900
            alienCursor := nil
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   901
        ]
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   902
    ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   903
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   904
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   905
disabledCursor:aCursorOrImage
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   906
    "set the cursor for an ST/X view, which can not drop the objects"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   907
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   908
    aCursorOrImage isImage ifTrue:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   909
        disabledCursor := Cursor fromImage:aCursorOrImage
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   910
    ] ifFalse:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   911
        (aCursorOrImage isMemberOf:Cursor) ifTrue:[
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   912
            disabledCursor := aCursorOrImage
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   913
        ]
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   914
    ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   915
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   916
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   917
enabledCursor:aCursorOrImage
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   918
    "set the cursor for an ST/X view, which can drop the objects"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   919
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   920
    aCursorOrImage isImage ifTrue:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   921
        enabledCursor := Cursor fromImage:aCursorOrImage
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   922
    ] ifFalse:[
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   923
        (aCursorOrImage isMemberOf:Cursor) ifTrue:[
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   924
            enabledCursor := aCursorOrImage
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   925
        ]
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   926
    ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   927
! !
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   928
2411
9cec069b6442 fix selection problems for default drag handler
ab
parents: 2410
diff changeset
   929
!DragAndDropManager methodsFor:'change & update'!
9cec069b6442 fix selection problems for default drag handler
ab
parents: 2410
diff changeset
   930
9cec069b6442 fix selection problems for default drag handler
ab
parents: 2410
diff changeset
   931
contentsWillChange
9cec069b6442 fix selection problems for default drag handler
ab
parents: 2410
diff changeset
   932
    "called by the dropTarget-widget if the contents will change during a
9cec069b6442 fix selection problems for default drag handler
ab
parents: 2410
diff changeset
   933
     dragAndDrop operation"
9cec069b6442 fix selection problems for default drag handler
ab
parents: 2410
diff changeset
   934
9cec069b6442 fix selection problems for default drag handler
ab
parents: 2410
diff changeset
   935
    handler notNil ifTrue:[
9cec069b6442 fix selection problems for default drag handler
ab
parents: 2410
diff changeset
   936
        handler dropTargetWillChange
9cec069b6442 fix selection problems for default drag handler
ab
parents: 2410
diff changeset
   937
    ]
9cec069b6442 fix selection problems for default drag handler
ab
parents: 2410
diff changeset
   938
! !
9cec069b6442 fix selection problems for default drag handler
ab
parents: 2410
diff changeset
   939
1678
9944d3b5d5bf category change
Claus Gittinger <cg@exept.de>
parents: 1661
diff changeset
   940
!DragAndDropManager methodsFor:'dragging-drop source'!
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   941
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   942
startDragFrom:aView dropSource:aDropSource
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   943
    "start a drag at the current pointer position."
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   944
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   945
    ^ self startDragFrom:aView dropSource:aDropSource offset:#topLeft "/ #center
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   946
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   947
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   948
startDragFrom:aView dropSource:aDropSource offset:anOffsetOrSymbol
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   949
    "start a drag at the current pointer position.
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   950
     anOffsetOrSymbol can be a point or one of:
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   951
        #center
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   952
        #topLeft
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   953
    "
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   954
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   955
    dropContext dropSource:aDropSource.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   956
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   957
    ^ self 
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   958
        startDrag:(aDropSource dropObjects)
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   959
        from:aView
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   960
        offset:anOffsetOrSymbol
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   961
        atEnd:nil
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   962
        display:(aDropSource displayObjects)
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   963
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
   964
    "Modified (format): / 14-06-2018 / 10:51:36 / Claus Gittinger"
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   965
! !
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   966
1678
9944d3b5d5bf category change
Claus Gittinger <cg@exept.de>
parents: 1661
diff changeset
   967
!DragAndDropManager methodsFor:'dragging-easy startup'!
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   968
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   969
startDrag:draggableObjects from:aView 
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   970
    "start a drop at the current pointer position"
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   971
    
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   972
    ^ self 
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   973
        startDrag:draggableObjects
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   974
        from:aView
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   975
        offset:0 @ 0
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   976
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   977
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   978
startDrag:draggableObjects from:aView display:something 
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   979
    "start a drop at the current pointer position."
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   980
    
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   981
    ^ self 
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   982
        startDrag:draggableObjects
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   983
        from:aView
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   984
        offset:nil
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   985
        atEnd:nil
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   986
        display:something
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   987
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   988
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   989
startDrag:draggableObjects from:aView offset:anOffset 
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
   990
    "start a drop at the current pointer position with an offset"
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   991
    
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   992
    ^ self 
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   993
        startDrag:draggableObjects
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   994
        from:aView
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   995
        offset:anOffset
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   996
        atEnd:nil
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   997
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   998
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   999
startDrag:draggableObjects from:aView offset:anOffset atEnd:aFourArgEndBlock 
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1000
    "start a drop at the current pointer position.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1001
     When finished, the endAction is called with four args:
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1002
     the targetView, the targetViews windowID (useful, if it's an alien view),
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1003
     the dropPoint in root-coordinates and the dropPoint within the targetView"
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1004
    
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1005
    ^ self 
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1006
        startDrag:draggableObjects
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1007
        from:aView
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1008
        offset:anOffset
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1009
        atEnd:aFourArgEndBlock
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1010
        display:draggableObjects
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1011
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1012
    "Modified (comment): / 13-02-2017 / 20:35:58 / cg"
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1013
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1014
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
  1015
startDrag:draggableObjects from:aView offset:anOffsetOrSymbol atEnd:aFourArgBlock display:something
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1016
    "start a drop at the current pointer position.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1017
     When finished, the endAction is called with four args:
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1018
     the targetView, the targetViews windowID (useful, if it's an alien view),
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1019
     the dropPoint in root-coordinates and the dropPoint within the targetView."
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1020
1490
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1021
    |height width fontWdt offset ascent device dispObjs list space|
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1022
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1023
    self dropObjects:draggableObjects.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1024
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1025
    self dropObjects size == 0 ifTrue:[
1490
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1026
        ^ self
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1027
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1028
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1029
    device   := aView device.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1030
    space    := 1.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1031
    height   := space negated.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1032
    width    := 0.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1033
    fontWdt  := aView font width.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1034
    ascent   := aView font ascent.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1035
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1036
    (list := something) isNil ifTrue:[
1490
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1037
        list := self dropObjects
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1038
    ] ifFalse:[
1490
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1039
        (list isCollection not or:[list isString]) ifTrue:[
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1040
            list := Array with:something
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1041
        ]
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1042
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1043
    dispObjs := OrderedCollection new.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1044
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1045
    list do:[:el|
1490
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1046
        |obj asc|
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1047
1490
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1048
        obj    := self displayObjectFor:el on:device.
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1049
        asc    := (obj respondsTo:#string) ifTrue:[ascent] ifFalse:[0].
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1050
        height := height + space.
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1051
1490
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1052
        dispObjs add:(Array with:obj with:(0 @ (height + asc))).
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1053
        width  := width max:(obj widthOn:aView).
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1054
        height := height + (obj heightOn:aView).
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1055
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1056
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
  1057
    anOffsetOrSymbol isSymbol ifTrue:[
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
  1058
        offset := (0@0 extent:(width @ height)) perform:anOffsetOrSymbol.
881
981e0791ca36 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 874
diff changeset
  1059
    ] ifFalse:[
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
  1060
        offset := anOffsetOrSymbol ? (0@0).
881
981e0791ca36 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 874
diff changeset
  1061
    ].
981e0791ca36 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 874
diff changeset
  1062
    offset := offset rounded.
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1063
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1064
    dispObjs do:[:el| el at:2 put:((el at:2) - offset) ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1065
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1066
    self 
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1067
        startOpaqueDrag:
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1068
            [:p :v|
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1069
                |cursor hX hY pDraw|
1490
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1070
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1071
                cursor := dragView cursor.
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1072
                hX := cursor hotX.
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1073
                hY := cursor hotY.
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1074
                pDraw := p "- (hX@hY) + cursor extent".
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1075
                dispObjs do:[:el| 
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1076
                    (el at:1) displayOn:v at:pDraw + (el at:2)
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1077
                ] 
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1078
            ]
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1079
        offset:offset
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1080
        extent:width @ height
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1081
        in:aView
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1082
        at:nil
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1083
        atEnd:aFourArgBlock
881
981e0791ca36 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 874
diff changeset
  1084
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1085
    "Modified: / 31-03-1998 / 11:18:04 / cg"
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1086
    "Modified (comment): / 13-02-2017 / 20:36:02 / cg"
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
  1087
    "Modified (format): / 14-06-2018 / 10:52:39 / Claus Gittinger"
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1088
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1089
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1090
startDrag:draggableObjects from:aView offset:anOffset display:something 
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1091
    "start a drop at the current pointer position."
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1092
    
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1093
    ^ self 
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1094
        startDrag:draggableObjects
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1095
        from:aView
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1096
        offset:anOffset
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1097
        atEnd:nil
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1098
        display:something
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1099
! !
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1100
1678
9944d3b5d5bf category change
Claus Gittinger <cg@exept.de>
parents: 1661
diff changeset
  1101
!DragAndDropManager methodsFor:'dragging-generic'!
342
7563cbf04502 added genericDrag & arrowDrag
Claus Gittinger <cg@exept.de>
parents: 341
diff changeset
  1102
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1103
startGenericDrag:aTwoArgDragBlock in:aView at:p atEnd:aFourArgEndBlock 
348
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
  1104
    "start a generic (caller-provided drag);
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1105
     Here, an inverting drag is initiated (i.e. the drawing is undone
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1106
     by inverting again). See startOpaqueDrag for another variant.
348
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
  1107
     the dragBlock, aTwoArgDragBlock will be called with two args
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
  1108
     aPoint and a drawingGC, to perform the drawing at some dragPoint.
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
  1109
     The drag starts in aView at point p.
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
  1110
     When finished, the endAction is called with four args:
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1111
     the targetView, the targetViews windowID (useful, if it's an alien view),
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1112
     the dropPoint in root-coordinates and the dropPoint within the targetView"
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1113
    
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1114
    ^ self 
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1115
        startOpaqueDrag:aTwoArgDragBlock
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1116
        offset:nil
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1117
        extent:nil
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1118
        in:aView
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1119
        at:nil
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1120
        atEnd:aFourArgEndBlock
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1121
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1122
    "Modified (comment): / 13-02-2017 / 20:36:06 / cg"
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1123
!
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1124
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1125
startOpaqueDrag:aDragBlock offset:offs extent:anExtent in:aView at:aDummyPoint atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1126
    "start an opaque or generic opaque (caller-provided drag);
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1127
     opaque drag means, that the drawing cannot be undone by two inverting
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1128
     draws, but instead, the area under the dragged object must be saved
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1129
     and restored. The areas size to be saved/restored is passed in anExtent.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1130
     the dragBlock, aDragBlock will be called with up to three args aPoint, a
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1131
     drawingGC and the display objects, to perform the drawing at some dragPoint.
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1132
     The drag starts in aView at point p.
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1133
     When finished, the endAction is called with four args:
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1134
     the targetView, the targetViews windowID (useful, if it's an alien view),
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1135
     the dropPoint in root-coordinates and the dropPoint within the targetView"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1136
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1137
    |handler numArgs dragBlock dobjs|
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1138
2927
49bd291d76e0 changed: #startOpaqueDrag:offset:extent:in:at:atEnd:
Claus Gittinger <cg@exept.de>
parents: 2825
diff changeset
  1139
    dragOffset := offs ? (0@0).
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1140
    numArgs    := aDragBlock numArgs.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1141
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1142
    numArgs == 3 ifTrue:[
1289
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1143
        dobjs := self dropObjects.
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1144
        dragBlock := [:p :v| aDragBlock value:p value:v value:dobjs ]
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1145
    ] ifFalse:[
1289
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1146
        numArgs == 1 ifTrue:[
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1147
            dragBlock := [:p :v| aDragBlock value:p ]
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1148
        ] ifFalse:[
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1149
            dragBlock := aDragBlock
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1150
        ]
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1151
    ].
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1152
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1153
    anExtent isNil ifTrue:[
1289
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1154
        handler := DragHandler startGenericDrag:dragBlock.
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1155
    ] ifFalse:[
1289
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1156
        handler := DragHandler startOpaqueDrag:dragBlock extent:anExtent offset:dragOffset.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1157
    ].
1289
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1158
    self doStart:handler for:aView atEnd:aFourArgEndBlock.
2927
49bd291d76e0 changed: #startOpaqueDrag:offset:extent:in:at:atEnd:
Claus Gittinger <cg@exept.de>
parents: 2825
diff changeset
  1159
49bd291d76e0 changed: #startOpaqueDrag:offset:extent:in:at:atEnd:
Claus Gittinger <cg@exept.de>
parents: 2825
diff changeset
  1160
    "Modified: / 18-07-2011 / 09:38:21 / cg"
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1161
    "Modified (comment): / 13-02-2017 / 20:36:18 / cg"
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1162
! !
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1163
1678
9944d3b5d5bf category change
Claus Gittinger <cg@exept.de>
parents: 1661
diff changeset
  1164
!DragAndDropManager methodsFor:'dragging-lines'!
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1165
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1166
startArrowDragIn:aView at:aStartPoint atEnd:aFourArgEndBlock 
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1167
    "start a line-drag of an arrow-line.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1168
     The drag starts in aView at point aStartPoint.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1169
     When finished, the endAction is called with four args:
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1170
     the targetView, the targetViews windowID (useful, if it's an alien view),
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1171
     the dropPoint in root-coordinates and the dropPoint within the targetView"
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1172
    
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1173
    |p|
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1174
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
  1175
    p := self class translatePointToScreen:aStartPoint from:aView.
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1176
    self 
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1177
        doStart:(DragHandler startArrowDragAt:p)
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1178
        for:aView
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1179
        atEnd:aFourArgEndBlock
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1180
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1181
    "Modified (comment): / 13-02-2017 / 20:35:53 / cg"
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1182
!
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1183
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1184
startLineDragIn:aView at:aStartPoint atEnd:aFourArgEndBlock 
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1185
    "start a line-drag of a normal line.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1186
     The drag starts in aView at point aStartPoint.
348
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
  1187
     When finished, the endAction is called with four args:
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1188
     the targetView, the targetViews windowID (useful, if it's an alien view),
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1189
     the dropPoint in root-coordinates and the dropPoint within the targetView"
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1190
    
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1191
    |p|
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1192
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
  1193
    p := self class translatePointToScreen:aStartPoint from:aView.
2652
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1194
    self 
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1195
        doStart:(DragHandler startLineDragAt:p)
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1196
        for:aView
4d7395b74cf0 formatting
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
  1197
        atEnd:aFourArgEndBlock
3885
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1198
e639779ef87b #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 3774
diff changeset
  1199
    "Modified (comment): / 13-02-2017 / 20:36:12 / cg"
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1200
! !
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1201
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
  1202
!DragAndDropManager methodsFor:'drawing'!
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
  1203
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1204
displayObjectFor:anObject on:aDevice
2402
cf6437ff07d2 changed #displayObjectFor:on:
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  1205
    "converts an object to a display object.
cf6437ff07d2 changed #displayObjectFor:on:
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  1206
     CG (to CA): this is an ugly hack and must be fixed to be OO,
cf6437ff07d2 changed #displayObjectFor:on:
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  1207
                 in sending something like #asDragAndDropDisplayObjectOn:aDevice
cf6437ff07d2 changed #displayObjectFor:on:
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  1208
                 to anObject, and doing all specific optimizations there."
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1209
1572
c82e988f5ccd Use #onDevice:
Stefan Vogel <sv@exept.de>
parents: 1553
diff changeset
  1210
    |obj s1 s2|
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1211
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1212
    obj := (anObject respondsTo:#displayObject) ifTrue:[anObject displayObject]
1572
c82e988f5ccd Use #onDevice:
Stefan Vogel <sv@exept.de>
parents: 1553
diff changeset
  1213
                                               ifFalse:[anObject].
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1214
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1215
    obj isString ifTrue:[
1572
c82e988f5ccd Use #onDevice:
Stefan Vogel <sv@exept.de>
parents: 1553
diff changeset
  1216
        ^ obj
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1217
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1218
1582
9e7b1ed9be2e use new notUnderstood catcher
ca
parents: 1572
diff changeset
  1219
    MessageNotUnderstood 
2540
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1220
        ignoreNotUnderstoodOf:#onDevice: 
1582
9e7b1ed9be2e use new notUnderstood catcher
ca
parents: 1572
diff changeset
  1221
        in:[
9e7b1ed9be2e use new notUnderstood catcher
ca
parents: 1572
diff changeset
  1222
            obj := obj onDevice:aDevice
9e7b1ed9be2e use new notUnderstood catcher
ca
parents: 1572
diff changeset
  1223
        ].
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1224
3725
3fb5cf9108cf #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 3623
diff changeset
  1225
    obj isLabelAndIcon ifTrue:[
1823
e2d9927c7488 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1776
diff changeset
  1226
        ^ obj
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1227
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1228
2540
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1229
    (obj class == MultiColListEntry) ifTrue:[
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1230
        s1 := obj colAt:1.
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1231
        s2 := obj colAt:2.
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1232
2540
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1233
        s1 isImage ifTrue:[
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1234
            s2 isImage  ifTrue:[ ^ self displayObjectFor:(LabelAndIcon form:s1  image:s2) on:aDevice ].
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1235
            s2 isString ifTrue:[ ^ self displayObjectFor:(LabelAndIcon icon:s1 string:s2) on:aDevice ].
3725
3fb5cf9108cf #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 3623
diff changeset
  1236
            ^ s1 onDevice:aDevice.
2540
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1237
        ].
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1238
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1239
        s2 isImage ifTrue:[
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1240
            s1 isString ifTrue:[ ^ self displayObjectFor:(LabelAndIcon icon:s2 string:s1) on:aDevice ].
3725
3fb5cf9108cf #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 3623
diff changeset
  1241
            ^ s2 onDevice:aDevice.
2540
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1242
        ].
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1243
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1244
        s1 isString ifTrue:[^ s1].
253ce2688c49 changed #displayObjectFor:on:
Stefan Vogel <sv@exept.de>
parents: 2485
diff changeset
  1245
        s2 isString ifTrue:[^ s2].
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1246
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1247
1823
e2d9927c7488 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1776
diff changeset
  1248
    ^ obj
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1249
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1250
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
  1251
showDragging:items in:aView at:p
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1252
    "helper for dragging dragObjects: draw them all"
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1253
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
  1254
    |offs|
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
  1255
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1256
    offs := 0.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1257
    items do:[:item |
1490
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1258
        item displayOn:aView at:p + (0@offs).
b2e1f907060c care for cursor when drawing dragObjects (avoid overdrawing the cursor)
Claus Gittinger <cg@exept.de>
parents: 1487
diff changeset
  1259
        offs := offs + (item heightOn:self)
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
  1260
    ]
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
  1261
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1262
    "Modified: 19.4.1997 / 12:41:24 / cg"
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1263
! !
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1264
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1265
!DragAndDropManager methodsFor:'event catching'!
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1266
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1267
buttonMotion:buttonAndModifierState x:x y:y view:aView
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1268
    |device screenPoint oldWidget oldId oldPoint newId newWidget oldTarget newTarget 
4108
ac5dce7be176 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4006
diff changeset
  1269
     isDroppable cursor newTopView|
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1270
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1271
    self isDisabled ifTrue: [ ^ self ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1272
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1273
    escapePressed == true ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1274
        self removePassiveAction.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1275
        ^ self
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1276
    ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1277
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1278
    (dragView notNil and:[dragView sensor motionEventPending]) ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1279
        ^ self
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1280
    ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1281
    self removePassiveAction.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1282
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1283
    device := dragView device.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1284
    oldWidget  := dropContext targetWidget.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1285
    oldId  := dropContext targetId.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1286
    oldPoint  := dropContext rootPoint.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1287
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1288
    screenPoint := self class translatePointToScreen:(x @ y) from:aView.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1289
    dropContext rootPoint:screenPoint.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1290
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1291
    newId := device viewIdFromPoint:screenPoint.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1292
    newWidget := device viewFromId:newId.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1293
4108
ac5dce7be176 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4006
diff changeset
  1294
    "/ if the newWidget is inside another topView,
ac5dce7be176 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4006
diff changeset
  1295
    "/ raise it.
ac5dce7be176 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4006
diff changeset
  1296
    newWidget notNil ifTrue:[
ac5dce7be176 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4006
diff changeset
  1297
        newTopView := newWidget topView.
ac5dce7be176 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4006
diff changeset
  1298
        newTopView ~~ lastTopView ifTrue:[
4124
e685cbc75d30 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4108
diff changeset
  1299
            raiseViewTimedAction notNil ifTrue:[
e685cbc75d30 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4108
diff changeset
  1300
                Processor removeTimedBlock:raiseViewTimedAction.
e685cbc75d30 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4108
diff changeset
  1301
            ].
e685cbc75d30 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4108
diff changeset
  1302
            newTopView isRootView ifFalse:[
e685cbc75d30 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4108
diff changeset
  1303
                raiseViewTimedAction := [ lastTopView raise ].
e685cbc75d30 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4108
diff changeset
  1304
                Processor addTimedBlock:raiseViewTimedAction after:0.75 seconds.
e685cbc75d30 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4108
diff changeset
  1305
                "/ newTopView raise.
e685cbc75d30 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4108
diff changeset
  1306
            ].
4108
ac5dce7be176 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4006
diff changeset
  1307
            lastTopView := newTopView
ac5dce7be176 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4006
diff changeset
  1308
        ].
ac5dce7be176 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4006
diff changeset
  1309
    ].
ac5dce7be176 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4006
diff changeset
  1310
    
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1311
    dropContext rootPoint:screenPoint.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1312
    dropContext targetWidget:newWidget id:newId.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1313
    handler dropContext:dropContext.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1314
    handler isInterestedInDropTarget ifFalse:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1315
        "/
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1316
        "/ line or arrow handler
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1317
        "/
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1318
        handler dragTo:screenPoint.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1319
        ^ self
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1320
    ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1321
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1322
    oldTarget := dropContext dropTarget.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1323
    newTarget := self doFindDropTargetIn:newWidget at:screenPoint.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1324
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1325
    newTarget ~= oldTarget ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1326
        "/
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1327
        "/ drop target changed: handler might restore the screen
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1328
        "/
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1329
        handler dropTargetWillChange.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1330
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1331
        oldTarget notNil ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1332
            "/
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1333
            "/ setup old context
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1334
            "/
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1335
            dropContext targetWidget:oldWidget id:oldId.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1336
            oldTarget leave:dropContext.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1337
            dropContext targetWidget:newWidget id:newId.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1338
        ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1339
        dropContext dropTarget:newTarget.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1340
        newTarget notNil ifTrue:[ newTarget enter:dropContext ]
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1341
    ] ifFalse:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1342
        dropContext dropTarget:newTarget
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1343
    ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1344
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1345
    "/
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1346
    "/ update the cursor
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1347
    "/
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1348
    (isDroppable := dropContext canDrop) ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1349
        cursor := enabledCursor
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1350
    ] ifFalse:[
2766
27e34fa6ecfe changed: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2739
diff changeset
  1351
        dropContext isAlienView ifTrue:[
27e34fa6ecfe changed: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2739
diff changeset
  1352
            cursor := alienCursor.
27e34fa6ecfe changed: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2739
diff changeset
  1353
27e34fa6ecfe changed: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2739
diff changeset
  1354
"/            className := Screen current getWindowClassName:newId.
27e34fa6ecfe changed: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2739
diff changeset
  1355
"/            title := Screen current getWindowText:newId.
27e34fa6ecfe changed: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2739
diff changeset
  1356
"/            cursor := enabledCursor.
27e34fa6ecfe changed: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2739
diff changeset
  1357
        ] ifFalse:[
27e34fa6ecfe changed: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2739
diff changeset
  1358
            cursor := disabledCursor
27e34fa6ecfe changed: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2739
diff changeset
  1359
        ].
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1360
    ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1361
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1362
    dragView cursor:cursor now:true.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1363
    "/
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1364
    "/ test if droppable state changed
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1365
    "/
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1366
    canDrop == isDroppable ifFalse:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1367
        "/
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1368
        "/ droppable state changed: handler might restore the screen
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1369
        "/
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1370
        canDrop := isDroppable.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1371
        handler dropTargetWillChange
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1372
    ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1373
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1374
    newTarget notNil ifTrue:[ newTarget over:dropContext ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1375
    handler dragTo:screenPoint.
4108
ac5dce7be176 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4006
diff changeset
  1376
4124
e685cbc75d30 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4108
diff changeset
  1377
    "Modified: / 13-06-2018 / 21:33:48 / Claus Gittinger"
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1378
!
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1379
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1380
buttonRelease:button x:x y:y view:aView
2063
dc16836d45dc code cleanup
Claus Gittinger <cg@exept.de>
parents: 2062
diff changeset
  1381
    |targetWidget|
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1382
2739
408584de7150 preps for right-menu on buttonRelease
Claus Gittinger <cg@exept.de>
parents: 2652
diff changeset
  1383
    (button == 1) ifFalse:[
1619
545b8fcc868e *** empty log message ***
ca
parents: 1618
diff changeset
  1384
        ^ self
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1385
    ].
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1386
    self removePassiveAction.
1661
3092c6bac88e added passiveAction: invoked if staying over a dropItem for a while
Claus Gittinger <cg@exept.de>
parents: 1638
diff changeset
  1387
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1388
    restoreBlock value.                 "/ restore context before start drag
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1389
2061
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1390
    escapePressed == true ifTrue:[^ self].
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1391
2063
dc16836d45dc code cleanup
Claus Gittinger <cg@exept.de>
parents: 2062
diff changeset
  1392
    targetWidget := dropContext targetWidget.
2061
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1393
    dropAction notNil ifTrue:[
1619
545b8fcc868e *** empty log message ***
ca
parents: 1618
diff changeset
  1394
        "/
2061
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1395
        "/ initiator wants to do it himself, manually.
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1396
        "/ Thus, no feedBack operation invoked.
1619
545b8fcc868e *** empty log message ***
ca
parents: 1618
diff changeset
  1397
        "/
2063
dc16836d45dc code cleanup
Claus Gittinger <cg@exept.de>
parents: 2062
diff changeset
  1398
        dropAction value:(targetWidget)
2061
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1399
                   value:(dropContext targetId)
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1400
                   value:(dropContext rootPoint)
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1401
                   value:(dropContext targetPoint).
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1402
    ] ifFalse:[
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1403
        dropContext doDrop
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1404
    ].
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1405
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1406
    "/ UI feels better, if the focus is assigned to the target view,
f847cebf016f focus behavior when \"click-for-focus\" is on.
Claus Gittinger <cg@exept.de>
parents: 2046
diff changeset
  1407
    "/ if click-for-focus is on.
2062
54c1c37389a0 dropTarget takesFocus
Claus Gittinger <cg@exept.de>
parents: 2061
diff changeset
  1408
    "/ CG: no - do it always
54c1c37389a0 dropTarget takesFocus
Claus Gittinger <cg@exept.de>
parents: 2061
diff changeset
  1409
"/    UserPreferences current focusFollowsMouse == false ifTrue:[
54c1c37389a0 dropTarget takesFocus
Claus Gittinger <cg@exept.de>
parents: 2061
diff changeset
  1410
"/        dropContext targetWidget wantsFocusWithButtonPress ifTrue:[
54c1c37389a0 dropTarget takesFocus
Claus Gittinger <cg@exept.de>
parents: 2061
diff changeset
  1411
"/            dropContext targetWidget requestFocus    
54c1c37389a0 dropTarget takesFocus
Claus Gittinger <cg@exept.de>
parents: 2061
diff changeset
  1412
"/        ].
54c1c37389a0 dropTarget takesFocus
Claus Gittinger <cg@exept.de>
parents: 2061
diff changeset
  1413
"/    ].
2358
7eca18445279 add #giveFocusToTargetWidget
ca
parents: 2259
diff changeset
  1414
    giveFocusToTargetWidget ifTrue:[
7eca18445279 add #giveFocusToTargetWidget
ca
parents: 2259
diff changeset
  1415
        (targetWidget notNil and:[targetWidget shown]) ifTrue:[
4125
7d349e2afa0e #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4124
diff changeset
  1416
            targetWidget isRootView ifFalse:[
7d349e2afa0e #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4124
diff changeset
  1417
                targetWidget topView raise; activate.
7d349e2afa0e #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4124
diff changeset
  1418
                targetWidget takeFocus.    
7d349e2afa0e #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4124
diff changeset
  1419
            ].
2358
7eca18445279 add #giveFocusToTargetWidget
ca
parents: 2259
diff changeset
  1420
        ].
2063
dc16836d45dc code cleanup
Claus Gittinger <cg@exept.de>
parents: 2062
diff changeset
  1421
    ].
4125
7d349e2afa0e #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4124
diff changeset
  1422
7d349e2afa0e #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4124
diff changeset
  1423
    "Modified: / 14-06-2018 / 00:10:58 / Claus Gittinger"
1289
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1424
!
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1425
1685
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1426
escapePressed
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1427
    "handle the escape key"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1428
2410
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1429
    | dropTarget |
1685
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1430
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1431
    escapePressed ~~ true ifTrue:[
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1432
        escapePressed := true.
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1433
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1434
        dragView cursor:savedCursor now:true.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1435
1685
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1436
        handler notNil ifTrue:[
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1437
            "/ restore handler
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1438
            dropTarget := dropContext dropTarget.
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1439
            handler postDragging.
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1440
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1441
            dropTarget notNil ifTrue:[
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1442
                "/ invoke leave operation
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1443
                dropTarget  leave:dropContext.
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1444
                dropContext dropTarget:nil.
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1445
            ].
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1446
        ].
2410
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1447
        self triggerEndOfDropAction.
1685
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1448
    ].
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1449
!
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1450
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1451
keyPress:aKey x:x y:y view:aView
2069
38bdcff6aa5c comment
Claus Gittinger <cg@exept.de>
parents: 2063
diff changeset
  1452
    "stop the drag operation, when the escape key is pressed"
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1453
2070
869e370ce441 comment
Claus Gittinger <cg@exept.de>
parents: 2069
diff changeset
  1454
    <resource: #keyboard (#Escape)>
869e370ce441 comment
Claus Gittinger <cg@exept.de>
parents: 2069
diff changeset
  1455
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1456
    escapePressed == true ifTrue:[ ^ self ].    "/ ignored, escaped was already pressed
1629
9b0f45e63e24 bug fix if operation cancled by #Escape, must invoke #leave
ca
parents: 1619
diff changeset
  1457
9b0f45e63e24 bug fix if operation cancled by #Escape, must invoke #leave
ca
parents: 1619
diff changeset
  1458
    aKey == #Escape ifTrue:[
1685
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1459
        self escapePressed.
1619
545b8fcc868e *** empty log message ***
ca
parents: 1618
diff changeset
  1460
    ].
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1461
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1462
    ((aKey == #Cmd) 
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1463
    or:[ (aKey == #Shift)
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1464
    or:[ (aKey == #Ctrl) ]]) ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1465
        self updateDragKind.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1466
        "/ invoke motion, to force a redraw (of the dropKind-indicator)
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1467
        self buttonMotion:nil x:x y:y view:aView    
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1468
    ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1469
!
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1470
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1471
keyRelease:aKey x:x y:y view:aView
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1472
    "redraw if shift, alt or ctrl key is released"
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1473
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1474
    <resource: #keyboard (#Escape)>
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1475
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1476
    ((aKey == #Cmd) 
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1477
    or:[ (aKey == #Shift)
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1478
    or:[ (aKey == #Ctrl) ]]) ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1479
        self updateDragKind.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1480
        "/ invoke motion, to force a redraw (of the dropKind-indicator)
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1481
        self buttonMotion:nil x:x y:y view:aView    
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1482
    ].
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1483
!
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1484
1834
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1485
processAutoScroll
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
  1486
    "process an autoScroll event.
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
  1487
     (no direct senders; sent indirectly via pushUserEvent:#processAutoScroll)"
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1488
1834
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1489
    |targetWidget targetPoint|
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1490
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1491
    self isActive ifFalse:[^ self].
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1492
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1493
    dropContext isNil ifTrue:[ ^ self ].
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1494
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1495
    targetWidget := dropContext targetWidget.
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1496
    targetWidget isNil ifTrue:[ ^ self ].
1835
d6db8466019b bugfix in scrolling during drag & drop; test for isRootView
ca
parents: 1834
diff changeset
  1497
    targetWidget isRootView ifTrue:[ ^ self ].
1834
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1498
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1499
    targetPoint := dropContext targetPoint.
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1500
    targetPoint isNil ifTrue:[ ^ self ].
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1501
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1502
    (targetWidget dragAutoScroll: dropContext) ifFalse:[
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1503
        ^ self
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1504
    ].
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1505
    self buttonMotion:256 x:(targetPoint x) y:(targetPoint y) view:targetWidget.
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
  1506
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
  1507
    "Modified (comment): / 14-06-2018 / 10:40:53 / Claus Gittinger"
1834
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1508
!
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1509
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1510
processEvent:event
2022
6508caa8bdba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2013
diff changeset
  1511
    "filter keyboard events.
6508caa8bdba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2013
diff changeset
  1512
     Return true, if I have eaten the event"
6508caa8bdba *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2013
diff changeset
  1513
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1514
    |evView|
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1515
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1516
    restoreBlock isNil ifTrue:[^ false].        "/ should not happen
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1517
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1518
    evView := event view.
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1519
    evView isNil ifTrue:[^ false].
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1520
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1521
    event isInputEvent ifFalse:[
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1522
        ^ false
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1523
    ].
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1524
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1525
    event isKeyPressEvent ifTrue:[
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1526
        self keyPress:(event key) x:(event x) y:(event y) view:evView.
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1527
        ^ true
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1528
    ].
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1529
    event isKeyReleaseEvent ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1530
        self keyRelease:(event key) x:(event x) y:(event y) view:evView.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1531
        ^ true
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1532
    ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1533
    event isButtonMotionEvent ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1534
        self buttonMotion:(event state) x:(event x) y:(event y) view:evView.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1535
        ^ true
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1536
    ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1537
    event isButtonReleaseEvent ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1538
        self buttonRelease:(event button) x:(event x) y:(event y) view:evView.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1539
        ^ true
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1540
    ].
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1541
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1542
    ^ true
2410
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1543
!
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1544
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1545
triggerEndOfDropAction
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1546
    "handle the escape key"
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1547
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1548
    |action|
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1549
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1550
    action := notifyEndOfDropAction.
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1551
    action isNil ifTrue:[ ^ self ].
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1552
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1553
    notifyEndOfDropAction := nil.
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1554
    action value.
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1555
!
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1556
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1557
updateDragKind
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1558
    "stop the drag operation, when the escape key is pressed"
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1559
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1560
    |screen dragType|
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1561
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1562
    dragType := DropContext dragTypeDefault.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1563
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1564
    screen := dragView device.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1565
    screen ctrlDown ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1566
        dragType := DropContext dragTypeCopy.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1567
    ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1568
    screen metaDown ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1569
        dragType := DropContext dragTypeLink.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1570
    ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1571
    screen shiftDown ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1572
        dragType := DropContext dragTypeMove.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1573
    ].
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1574
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1575
    dropContext dragType:dragType.
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1576
! !
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1577
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1578
!DragAndDropManager methodsFor:'initialization'!
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1579
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1580
initialize
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1581
    super initialize.
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1582
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1583
    dragOffset     := 0 @ 0.
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1584
    dropContext    := DropContext new manager:self.
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1585
    alienCursor    := Cursor questionMark.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1586
    enabledCursor  := Cursor thumbsUp.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1587
    disabledCursor := Cursor thumbsDown.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1588
    canDrop        := false.
2358
7eca18445279 add #giveFocusToTargetWidget
ca
parents: 2259
diff changeset
  1589
    giveFocusToTargetWidget := true.
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1590
! !
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1591
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1592
!DragAndDropManager methodsFor:'private'!
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1593
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1594
doDrop:aContext in:aWidget
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1595
    "old drop mechanism"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1596
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1597
    |point|
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1598
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
  1599
    DragContextQuerySignal answer:aContext do:[
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
  1600
        DragOriginatorQuerySignal answer:dragView do:[
2255
074d16551e16 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2254
diff changeset
  1601
            DragOffsetQuerySignal answer:dragOffset do:[ 
074d16551e16 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2254
diff changeset
  1602
                |targetWidget targetPoint|
074d16551e16 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2254
diff changeset
  1603
2025
b40f8ad0d6fb bugfix: computing the drop point (see UIPainter)
ca
parents: 2022
diff changeset
  1604
                targetWidget := aContext targetWidget.
b40f8ad0d6fb bugfix: computing the drop point (see UIPainter)
ca
parents: 2022
diff changeset
  1605
                targetPoint  := aContext targetPoint.
b40f8ad0d6fb bugfix: computing the drop point (see UIPainter)
ca
parents: 2022
diff changeset
  1606
b40f8ad0d6fb bugfix: computing the drop point (see UIPainter)
ca
parents: 2022
diff changeset
  1607
                targetWidget == aWidget ifTrue:[
b40f8ad0d6fb bugfix: computing the drop point (see UIPainter)
ca
parents: 2022
diff changeset
  1608
                    point := targetPoint.
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
  1609
                ] ifFalse:[
2025
b40f8ad0d6fb bugfix: computing the drop point (see UIPainter)
ca
parents: 2022
diff changeset
  1610
                    point := targetWidget originRelativeTo:aWidget.
b40f8ad0d6fb bugfix: computing the drop point (see UIPainter)
ca
parents: 2022
diff changeset
  1611
b40f8ad0d6fb bugfix: computing the drop point (see UIPainter)
ca
parents: 2022
diff changeset
  1612
                    point isNil ifTrue:[
b40f8ad0d6fb bugfix: computing the drop point (see UIPainter)
ca
parents: 2022
diff changeset
  1613
                        point := 0@0.
b40f8ad0d6fb bugfix: computing the drop point (see UIPainter)
ca
parents: 2022
diff changeset
  1614
                    ] ifFalse:[
b40f8ad0d6fb bugfix: computing the drop point (see UIPainter)
ca
parents: 2022
diff changeset
  1615
                        point := point + targetPoint.
b40f8ad0d6fb bugfix: computing the drop point (see UIPainter)
ca
parents: 2022
diff changeset
  1616
                    ].
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
  1617
                    "/
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
  1618
                    "/ FeedBack: set the widget which handles the drop
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
  1619
                    "/
4185
6d6795c91e9c #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4184
diff changeset
  1620
                    aContext targetWidget:aWidget id:(aWidget drawableId).
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
  1621
                ].
2254
b120e73f9a76 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2133
diff changeset
  1622
                aWidget dropObjects:(aContext dropObjects) at:point
1511
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
  1623
            ]
99ab0dc04de4 dropContextQuery signal
martin
parents: 1497
diff changeset
  1624
        ].
609
1343bda17876 pass logical coordinates to dropAction.
Claus Gittinger <cg@exept.de>
parents: 549
diff changeset
  1625
    ].
1343bda17876 pass logical coordinates to dropAction.
Claus Gittinger <cg@exept.de>
parents: 549
diff changeset
  1626
2255
074d16551e16 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2254
diff changeset
  1627
    "Modified: / 13-10-2006 / 17:52:56 / cg"
4185
6d6795c91e9c #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 4184
diff changeset
  1628
    "Modified: / 01-10-2018 / 17:05:54 / Claus Gittinger"
346
1612c23d9c5d pass all dropInfo to an end-action
Claus Gittinger <cg@exept.de>
parents: 345
diff changeset
  1629
!
1612c23d9c5d pass all dropInfo to an end-action
Claus Gittinger <cg@exept.de>
parents: 345
diff changeset
  1630
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1631
doFindDropTargetIn:aView at:aPoint
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1632
    "get the drop target for a view and source at a point or nil"
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1633
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1634
    |target|
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1635
2133
0581d9906df0 common behavior for windows and unix:
Stefan Vogel <sv@exept.de>
parents: 2093
diff changeset
  1636
    aView isNil ifTrue:[ 
0581d9906df0 common behavior for windows and unix:
Stefan Vogel <sv@exept.de>
parents: 2093
diff changeset
  1637
        ^ nil 
0581d9906df0 common behavior for windows and unix:
Stefan Vogel <sv@exept.de>
parents: 2093
diff changeset
  1638
    ].
2485
50d5d6a67f44 *** empty log message ***
sr
parents: 2475
diff changeset
  1639
    aView isRootView ifTrue:[ 
50d5d6a67f44 *** empty log message ***
sr
parents: 2475
diff changeset
  1640
        ^ nil 
50d5d6a67f44 *** empty log message ***
sr
parents: 2475
diff changeset
  1641
    ].
1582
9e7b1ed9be2e use new notUnderstood catcher
ca
parents: 1572
diff changeset
  1642
2133
0581d9906df0 common behavior for windows and unix:
Stefan Vogel <sv@exept.de>
parents: 2093
diff changeset
  1643
    "new mechanism to get a dropTarget"
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1644
    target := aView dropTarget.
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1645
    target notNil ifTrue:[ 
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1646
        ^ target 
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1647
    ].
1582
9e7b1ed9be2e use new notUnderstood catcher
ca
parents: 1572
diff changeset
  1648
2133
0581d9906df0 common behavior for windows and unix:
Stefan Vogel <sv@exept.de>
parents: 2093
diff changeset
  1649
    "old mechanism to get a dropTarget"
0581d9906df0 common behavior for windows and unix:
Stefan Vogel <sv@exept.de>
parents: 2093
diff changeset
  1650
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1651
    (SignalSet
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1652
        with:DragContextQuerySignal
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1653
        with:DragOriginatorQuerySignal
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1654
        with:DragOffsetQuerySignal)
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1655
    handle:[:ex |
3115
a675e9962acc use #creator instead of #signal
Claus Gittinger <cg@exept.de>
parents: 2927
diff changeset
  1656
        |signal|
a675e9962acc use #creator instead of #signal
Claus Gittinger <cg@exept.de>
parents: 2927
diff changeset
  1657
a675e9962acc use #creator instead of #signal
Claus Gittinger <cg@exept.de>
parents: 2927
diff changeset
  1658
        signal := ex creator.
a675e9962acc use #creator instead of #signal
Claus Gittinger <cg@exept.de>
parents: 2927
diff changeset
  1659
        signal == DragContextQuerySignal ifTrue:[ ex proceedWith:dropContext].
a675e9962acc use #creator instead of #signal
Claus Gittinger <cg@exept.de>
parents: 2927
diff changeset
  1660
        signal == DragOriginatorQuerySignal ifTrue:[ ex proceedWith:dragView].
a675e9962acc use #creator instead of #signal
Claus Gittinger <cg@exept.de>
parents: 2927
diff changeset
  1661
        signal == DragOffsetQuerySignal ifTrue:[ ex proceedWith:dragOffset].
2133
0581d9906df0 common behavior for windows and unix:
Stefan Vogel <sv@exept.de>
parents: 2093
diff changeset
  1662
        self error:'unexpected query'.
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1663
    ] do:[
2823
bd8a57d5aa47 comment/format in: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2766
diff changeset
  1664
        |view app dobj|
1587
9acf4f670187 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 1582
diff changeset
  1665
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1666
        view := aView.
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1667
        dobj := dropContext dropObjects.
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1668
        [   
2259
76b190967964 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2255
diff changeset
  1669
            (view canDrop:dropContext) ifTrue:[
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1670
                ^ DropTarget receiver:self argument:view dropSelector:#doDrop:in:.
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1671
            ].
2259
76b190967964 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2255
diff changeset
  1672
            (view canDropObjects:dobj) ifTrue:[
76b190967964 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2255
diff changeset
  1673
                ^ (DropTarget receiver:view argument:nil dropSelector:#dropObjects:at:) oldDropAPI:true.
76b190967964 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2255
diff changeset
  1674
            ].
2823
bd8a57d5aa47 comment/format in: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2766
diff changeset
  1675
            view application ~~ app ifTrue:[
bd8a57d5aa47 comment/format in: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2766
diff changeset
  1676
                app := view application.
4184
4d4033f31e3c #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 4127
diff changeset
  1677
                (app notNil and:[app canDropObjects:dobj]) ifTrue:[
4d4033f31e3c #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 4127
diff changeset
  1678
                    ^ (DropTarget receiver:app argument:nil dropSelector:#dropObjects:at:) oldDropAPI:true.
2823
bd8a57d5aa47 comment/format in: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2766
diff changeset
  1679
                ].
bd8a57d5aa47 comment/format in: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2766
diff changeset
  1680
            ].
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1681
            (view := view superView) notNil
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1682
        ] whileTrue.
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1683
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1684
    ^ nil
2255
074d16551e16 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2254
diff changeset
  1685
2259
76b190967964 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2255
diff changeset
  1686
    "Modified: / 13-10-2006 / 18:21:43 / cg"
4184
4d4033f31e3c #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 4127
diff changeset
  1687
    "Modified: / 28-09-2018 / 11:53:46 / Stefan Vogel"
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1688
!
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1689
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1690
doStart:aHandler for:aView atEnd:aFourArgEndBlock
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1691
    "setup a handler and a restore block"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1692
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
  1693
    |viewsDevice lastActive windowGroup screenPoint|
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1694
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
  1695
    viewsDevice := aView device.
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
  1696
    lastActive := ActiveDragAndDropManagers at:viewsDevice ifAbsent:nil.
1685
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1697
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1698
    lastActive notNil ifTrue:[
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1699
        "/ self error:'oops - two dnd managers active' mayProceed:true.
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1700
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1701
        lastActive forceGiveUp.
1939
f72ff9a773e5 print -> infoPrint
Claus Gittinger <cg@exept.de>
parents: 1842
diff changeset
  1702
        'DragAndDropManager [info]: oops - two dnd managers active' infoPrintCR.
1487
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
  1703
    ].
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
  1704
    ActiveDragAndDropManagers at:viewsDevice put:self.
1487
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
  1705
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1706
    dropContext sourceWidget:aView.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1707
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1708
    dragOffset  isNil ifTrue:[ dragOffset  := 0 @ 0 ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1709
    alienCursor isNil ifTrue:[ alienCursor := disabledCursor ].
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1710
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1711
    dragView      := aView.
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1712
    dropAction    := aFourArgEndBlock.
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1713
    windowGroup   := aView windowGroup.
1619
545b8fcc868e *** empty log message ***
ca
parents: 1618
diff changeset
  1714
    handler       := aHandler.
545b8fcc868e *** empty log message ***
ca
parents: 1618
diff changeset
  1715
    escapePressed := false.
609
1343bda17876 pass logical coordinates to dropAction.
Claus Gittinger <cg@exept.de>
parents: 549
diff changeset
  1716
1162
0539b64679ce set DragHandler in the DropContext
Claus Gittinger <cg@exept.de>
parents: 1072
diff changeset
  1717
    dropContext dragHandler:aHandler.
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1718
1689
5aae4c617ffd obsoleted preEventHook and postEventHook in windowGroup
Claus Gittinger <cg@exept.de>
parents: 1686
diff changeset
  1719
    savedCursor := dragView cursor.
5aae4c617ffd obsoleted preEventHook and postEventHook in windowGroup
Claus Gittinger <cg@exept.de>
parents: 1686
diff changeset
  1720
    windowGroup addPreEventHook:self.
5aae4c617ffd obsoleted preEventHook and postEventHook in windowGroup
Claus Gittinger <cg@exept.de>
parents: 1686
diff changeset
  1721
    windowGroup addPostEventHook:self.
1162
0539b64679ce set DragHandler in the DropContext
Claus Gittinger <cg@exept.de>
parents: 1072
diff changeset
  1722
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1723
    restoreBlock := 
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1724
        [
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1725
            restoreBlock := nil.
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1726
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1727
            autoScrollTask notNil ifTrue:[
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1728
                autoScrollTask terminate.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1729
                autoScrollTask := nil.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1730
            ].
1834
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1731
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
  1732
            ActiveDragAndDropManagers removeKey:viewsDevice ifAbsent:nil.
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1733
            escapePressed ifFalse:[ aHandler postDragging ].
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1734
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1735
            windowGroup removePreEventHook:self.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1736
            windowGroup removePostEventHook:self.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1737
            dragView cursor:savedCursor.
2410
95115083fd32 *** empty log message ***
ca
parents: 2402
diff changeset
  1738
2625
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1739
            self triggerEndOfDropAction.
3ad1c3a78c8d change back the cursor, when escaping;
Claus Gittinger <cg@exept.de>
parents: 2540
diff changeset
  1740
        ].
1686
fe4a13681941 add eventHooks on windowGroup
ca
parents: 1685
diff changeset
  1741
    aHandler preDraggingIn:dragView.
1289
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1742
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1743
    "/ must wait for all pending motion events to arrive, and ignore them
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
  1744
    viewsDevice sync.        
1749
1f58fbcd4b96 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 1718
diff changeset
  1745
    dragView sensor flushMotionEventsFor:nil.
1289
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1746
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1747
    autoScrollTask := 
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1748
        [
3932
a36a1c6efbb2 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 3885
diff changeset
  1749
            [   |sensor delay|
1834
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1750
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1751
                sensor := windowGroup sensor.
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
  1752
                delay := Delay forMilliseconds:(self class autoScrollTimeInterval).
1834
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1753
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1754
                [ self isActive ] whileTrue:[
3932
a36a1c6efbb2 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 3885
diff changeset
  1755
                    delay wait.
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1756
                    self isActive ifTrue:[
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1757
                        sensor pushUserEvent:#processAutoScroll for:self.
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1758
                    ].
1834
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1759
                ].
3932
a36a1c6efbb2 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 3885
diff changeset
  1760
            ] ensure:[
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1761
                autoScrollTask := nil.
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1762
            ]
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1763
         ] newProcess.
1834
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1764
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2078
diff changeset
  1765
    autoScrollTask priority:(Processor userSchedulingPriority).
1834
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1766
    autoScrollTask name:'Drag-AutoScroll'.
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1767
    autoScrollTask resume.
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1768
1289
0f7688ddff2c grabbing changes to restore grab,
ca
parents: 1166
diff changeset
  1769
    "/ start with a first draw at the current mouse position
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
  1770
    screenPoint := viewsDevice pointerPosition.
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
  1771
    self buttonMotion:1 x:(screenPoint x) y:(screenPoint y) view:(viewsDevice rootView).
3932
a36a1c6efbb2 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 3885
diff changeset
  1772
a36a1c6efbb2 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 3885
diff changeset
  1773
    "Modified: / 23-02-2017 / 13:34:48 / stefan"
4127
143f01d8f423 #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 4125
diff changeset
  1774
    "Modified: / 14-06-2018 / 10:43:10 / Claus Gittinger"
1487
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
  1775
!
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
  1776
1685
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1777
forceGiveUp
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1778
    "called if the DragAndDropManager no longer should be
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1779
     active; a second one is started"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1780
1685
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1781
    self escapePressed.
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1782
    self removePassiveAction.
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1783
    restoreBlock value.
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1784
!
82350f572e2f work araound if a second DragAndDropManager is started
ca
parents: 1678
diff changeset
  1785
1834
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1786
isActive
2078
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1787
    "returns true if a drag operation is active"
152102d2d8a0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2070
diff changeset
  1788
1834
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1789
    restoreBlock isNil ifTrue:[ ^ false ].
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1790
    ^ escapePressed ~~ true
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1791
!
fe5dd53e3a80 support autoScroll during drag operation
ca
parents: 1823
diff changeset
  1792
1487
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
  1793
saveDraw:aBlock
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
  1794
    handler postDragging.
6cefff982779 *** empty log message ***
martin
parents: 1484
diff changeset
  1795
    aBlock value.
1638
67a340f6249f *** empty log message ***
ca
parents: 1629
diff changeset
  1796
67a340f6249f *** empty log message ***
ca
parents: 1629
diff changeset
  1797
    escapePressed == true ifFalse:[
67a340f6249f *** empty log message ***
ca
parents: 1629
diff changeset
  1798
        "/ reread and show drag items
67a340f6249f *** empty log message ***
ca
parents: 1629
diff changeset
  1799
        handler rereadSaveArea.
67a340f6249f *** empty log message ***
ca
parents: 1629
diff changeset
  1800
        handler restoreFromSaveArea.
67a340f6249f *** empty log message ***
ca
parents: 1629
diff changeset
  1801
    ].
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1802
! !
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1803
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1804
!DragAndDropManager class methodsFor:'documentation'!
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1805
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1806
version
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
  1807
    ^ '$Header$'
2766
27e34fa6ecfe changed: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2739
diff changeset
  1808
!
27e34fa6ecfe changed: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2739
diff changeset
  1809
27e34fa6ecfe changed: #buttonMotion:x:y:view:
Claus Gittinger <cg@exept.de>
parents: 2739
diff changeset
  1810
version_CVS
3623
9ddec519a3c6 class: DebugView
Claus Gittinger <cg@exept.de>
parents: 3436
diff changeset
  1811
    ^ '$Header$'
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1812
! !
1629
9b0f45e63e24 bug fix if operation cancled by #Escape, must invoke #leave
ca
parents: 1619
diff changeset
  1813
3115
a675e9962acc use #creator instead of #signal
Claus Gittinger <cg@exept.de>
parents: 2927
diff changeset
  1814
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1815
DragAndDropManager initialize!