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