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