DragAndDropManager.st
author ca
Mon, 30 Mar 1998 14:02:15 +0200
changeset 874 0730cf44f593
parent 861 10bbb13fcb05
child 881 981e0791ca36
permissions -rw-r--r--
support of Drop -Source -Target and Context
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
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
     3
              All Rights Reserved
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
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
Object subclass:#DragAndDropManager
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
    15
	instanceVariableNames:'dropContext dragView dropAction dragOffset handler restoreBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
    16
		alienCursor enabledCursor disabledCursor canDrop'
680
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
    17
	classVariableNames:'DragOriginatorQuerySignal DragOffsetQuerySignal'
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
    18
	poolDictionaries:''
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
    19
	category:'Interface-DragAndDrop'
342
7563cbf04502 added genericDrag & arrowDrag
Claus Gittinger <cg@exept.de>
parents: 341
diff changeset
    20
!
7563cbf04502 added genericDrag & arrowDrag
Claus Gittinger <cg@exept.de>
parents: 341
diff changeset
    21
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
!DragAndDropManager class methodsFor:'documentation'!
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    24
copyright
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    25
"
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    26
 COPYRIGHT (c) 1996 by eXept Software AG / Claus Gittinger
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    27
              All Rights Reserved
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    28
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    29
 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
    30
 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
    31
 inclusion of the above copyright notice.   This software may not
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    32
 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
    33
 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
    34
 hereby transferred.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    35
"
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    36
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    37
!
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    38
348
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
    39
documentation
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
    40
"
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
    41
    this class provides low-level drag & drop mechanisms.
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
    42
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    43
    Easy to use interface interfaces:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    44
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    45
    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
    46
    when a selection is moved (for example, SelectionInListView can
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    47
    be initializd to do so). 
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    48
    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
    49
    and starts the drag operation with:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    50
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    51
        DragAndDropManager startDrag:collectionOfDragObjects from:aView.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    52
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    53
    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
    54
    into the target view.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    55
    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
    56
    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
    57
    is shown for alien views (which means: we dont know).
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    58
    Alien view drop is supported (but no 'canDrop' query).
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    59
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    60
    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
    61
    provided:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    62
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    63
        DragAndDropManager
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    64
                startLineDragIn:aView at:position
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    65
                atEnd:aFourArgEndBlock
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    66
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    67
    and:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    68
        DragAndDropManager
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    69
                startArrowDragIn:aView at:position
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    70
                atEnd:aFourArgEndBlock
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    71
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    72
    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
    73
    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
    74
    on the screen and within the target view as arguments.
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
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    77
    Expert interface:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    78
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    79
    More control over the dragging (i.e. the drawing procedure)
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    80
    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
    81
        
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    82
        aDragAndDropMgr := DragAndDropManager new.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    83
        aDragAndDropMgr dropObjects:(self collectionOfDragObjects).
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    84
        aDragAndDropMgr 
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    85
            startOpaqueDrag:[:aPoint :aView :dropObjects | 
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    86
                                self 
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    87
                                    showDragging:dropObjects
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    88
                                    in:aView 
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    89
                                    at:aPoint - (xOffset@0)
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    90
                            ]
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    91
            offset:clickOffset
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    92
            extent:saveUnderExtent
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    93
            in:self
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    94
            at:clickPoint
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    95
            atEnd:[:v :vId :posScreen :posView | ... ]
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    96
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    97
    the arguments are:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    98
      startOpaqueDrag:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
    99
        a 3-arg block, which is evaluated by the d&d manager whenever the
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   100
        mouse moves; it is supposed to draw the dropObjects at some position
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   101
        in the passed view.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   102
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   103
      offset:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   104
        a clickOffset; drawing is offset by this amount
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   105
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   106
      extent:  
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   107
        a save extent; the size of the screen area that must be saved during
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   108
        the drag operation
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
      in:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   111
        initiating view
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   112
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   113
      at:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   114
        position where d&d operation starts
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   115
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   116
      atEnd:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   117
        a 4-arg block that is evaluated when the d&d is finished.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   118
        It gets the target view (or nil, for alien views), the targets
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   119
        view ID (needed if its an alien view), the screen position and the
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   120
        relative position within the target view of the drop as arguments.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   121
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   122
        For internal (ST/X) views, the dropBlock should perform
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   123
        a simple canDrop:/doDrop message.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   124
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   125
        For alien views, the Displays d&d functions can be used.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   126
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   127
348
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   128
    [author:]
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   129
        Claus Gittinger
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
    [see also:]
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   132
        DemoView1, DemoView2, ...
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   133
        SelectionInListView FileBrowser - for a concrete example
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   134
348
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   135
"
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   136
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   137
!
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   138
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   139
examples
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   140
"
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   141
  a button, which initiates dragging of a file-object
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   142
  Notice that this can be dropped into the launchers panel,
549
51c6f1d918c2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 548
diff changeset
   143
  to open a fileBrowser on that directory ...
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   144
                                                                [exBegin]
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   145
     |o top v|
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   146
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   147
     top := StandardSystemView new.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   148
     v := Button label:'press for drag' in:top.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   149
     v pressAction:[
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   150
                |o|
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   151
                o := DropObject newFile:('/etc').
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   152
                DragAndDropManager startDrag:o from:v.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   153
                v turnOff
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   154
              ].
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   155
     top openWithExtent:200@200
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   156
                                                                [exEnd]
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   157
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   158
  initiate a drag with some offset:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   159
                                                                [exBegin]
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   160
     |o top v|
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   162
     top := StandardSystemView new.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   163
     v := Button label:'press for drag' in:top.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   164
     v pressAction:[
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   165
                |o|
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   166
                o := DropObject newFile:('.').
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   167
                DragAndDropManager startDrag:o from:v offset:10@10.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   168
                v turnOff
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   169
              ].
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   170
     top openWithExtent:200@200
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   171
                                                                [exEnd]
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   172
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   173
  initiate a line drag:
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   174
                                                                [exBegin]
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   175
     |o top v endAction|
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
     endAction := [ :v :vID :sPos :vPos |
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   178
                    Transcript show:'end drag in '.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   179
                    v isNil ifTrue:[
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   180
                        Transcript show:'alien view'
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   181
                    ] ifFalse:[
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   182
                        Transcript show:v
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   183
                    ].
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   184
                    Transcript show:' at screen: '; show:sPos;
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   185
                               show:' in view: '; showCR:vPos
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   186
                ].
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   187
     top := StandardSystemView new.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   188
     v := Button label:'press for drag' in:top.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   189
     v pressAction:[
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   190
                DragAndDropManager 
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   191
                    startLineDragIn:v at:10@10 atEnd:endAction.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   192
                v turnOff
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   193
              ].
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   194
     top openWithExtent:200@200
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   195
                                                                [exEnd]
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   196
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   197
   more drag & drop; offset, displayObjects, ...
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   198
                                                                [exBegin]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   199
    |dropObj topView pannel icon buttonAction addButton|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   200
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   201
    topView := StandardSystemView new.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   202
    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
   203
    pannel  horizontalLayout:#fit.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   204
    pannel  verticalLayout:#fitSpace.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   205
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   206
    icon    := Image fromFile:('xpmBitmaps/QUESTION3.xpm').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   207
    dropObj := DropObject newFile:('.').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   208
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   209
    addButton := [:offset :label :dispObj| |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   210
        button := Button label:label in:pannel.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   211
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   212
        button pressAction:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   213
            DragAndDropManager startDrag:dropObj from:button offset:offset display:dispObj.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   214
            button turnOff.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   215
        ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   216
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   217
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   218
    addButton value:#topLeft     value:'String'       value:'String'.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   219
    addButton value:#topRight    value:'Text'         value:(Text string:'hello' emphasis:#bold).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   220
    addButton value:#bottomLeft  value:'Icon'         value:icon.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   221
    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
   222
    addButton value:#center      value:'Mixed'        value:(Array with:'String' with:icon).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   223
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   224
    topView label:'Drag & Drop'.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   225
    topView openWithExtent:200@200.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   226
                                                                [exEnd]
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   227
"
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
! !
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   230
!DragAndDropManager class methodsFor:'initialization'!
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   231
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   232
initialize
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   233
    DragOriginatorQuerySignal := QuerySignal new.
680
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   234
    DragOffsetQuerySignal := QuerySignal new.
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   235
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   236
    "
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   237
     self initialize
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   238
    "
680
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   239
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   240
    "Modified: 11.8.1997 / 00:54:21 / cg"
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   241
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   242
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   243
new
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   244
    ^ self basicNew initialize
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   245
! !
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   246
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   247
!DragAndDropManager class methodsFor:'Signal constants'!
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   248
680
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   249
dragOffsetQuerySignal
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   250
    ^ DragOffsetQuerySignal
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   251
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   252
    "Created: 11.8.1997 / 00:54:10 / cg"
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   253
!
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
   254
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   255
dragOriginatorQuerySignal
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   256
    ^ DragOriginatorQuerySignal
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   257
! !
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
   258
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   259
!DragAndDropManager class methodsFor:'simple start - drop source'!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   260
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   261
startDragFrom:aView dropSource:aDropSource
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   262
    "start a drop at the current pointer position.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   263
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   264
    ^ (self new) startDragFrom:aView dropSource:aDropSource
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   265
! !
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   266
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   267
!DragAndDropManager class methodsFor:'simple start - generic'!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   268
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   269
startDrag:draggableObjects from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   270
    "start a drop at the current pointer position
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   271
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   272
    ^ self startDrag:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   273
                from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   274
              offset:0@0
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   275
               atEnd:nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   276
             display:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   277
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   278
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   279
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   280
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   281
    |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   282
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   283
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   284
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   285
    button pressAction:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   286
        DragAndDropManager startDrag:(DropObject newFile:('.')) from:button.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   287
        button turnOff
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   288
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   289
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   290
    button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   291
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   292
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   293
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   294
startDrag:draggableObjects from:aView atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   295
    "start a drop at the current pointer position
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   296
     When finished, the endAction is called with four args:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   297
     the targetView, the targetViews windowID (useful, if its an alien view),
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   298
     the dropPoint in root-coordinates and the dropPoint within the targetView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   299
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   300
    ^ self startDrag:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   301
                from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   302
              offset:0@0
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   303
               atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   304
             display:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   305
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   306
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   307
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   308
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   309
    |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   310
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   311
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   312
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   313
    button pressAction:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   314
        DragAndDropManager startDrag:(DropObject newFile:('.'))
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   315
                                from:button
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   316
                               atEnd:[:targetView :targetViewId :screenPoint :targetPoint|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   317
                                        Transcript showCR:'target  view: ', targetView   printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   318
                                        Transcript showCR:'target    id: ', targetViewId printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   319
                                        Transcript showCR:'point screen: ', screenPoint  printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   320
                                        Transcript showCR:'point target: ', targetPoint  printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   321
                                     ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   322
        button turnOff
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   323
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   324
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   325
    button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   326
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   327
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   328
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   329
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   330
startDrag:draggableObjects from:aView atEnd:aFourArgEndBlock display:something
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   331
    "start a drop at the current pointer position
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   332
     When finished, the endAction is called with four args:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   333
     the targetView, the targetViews windowID (useful, if its an alien view),
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   334
     the dropPoint in root-coordinates and the dropPoint within the targetView
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
    ^ self startDrag:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   337
                from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   338
              offset:0@0
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   339
               atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   340
             display:something
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   341
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   342
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   343
EXAMPLE:
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
    |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   346
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   347
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   348
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   349
    button pressAction:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   350
        DragAndDropManager startDrag:(DropObject newFile:('.'))
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   351
                                from:button
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   352
                               atEnd:[:targetView :targetViewId :screenPoint :targetPoint|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   353
                                        Transcript showCR:'target  view: ', targetView   printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   354
                                        Transcript showCR:'target    id: ', targetViewId printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   355
                                        Transcript showCR:'point screen: ', screenPoint  printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   356
                                        Transcript showCR:'point target: ', targetPoint  printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   357
                                     ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   358
                             display:(Array with:'String' with:(Image fromFile:('xpmBitmaps/QUESTION3.xpm'))).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   359
        button turnOff
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
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   362
    button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   363
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   364
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   365
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   366
startDrag:draggableObjects from:aView display:something
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   367
    "start a drop at the current pointer position
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   368
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   369
    ^ self startDrag:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   370
                from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   371
              offset:0@0
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   372
               atEnd:nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   373
             display:something
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   374
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   375
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   376
EXAMPLE:
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
    |dropObj topView pannel icon buttonAction addButton|
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
    topView := StandardSystemView new.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   381
    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
   382
    pannel  horizontalLayout:#fit.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   383
    pannel  verticalLayout:#fitSpace.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   384
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   385
    icon    := Image fromFile:('xpmBitmaps/QUESTION3.xpm').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   386
    dropObj := DropObject newFile:('.').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   387
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   388
    addButton := [:label :dispObj| |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   389
        button := Button label:label in:pannel.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   390
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   391
        button pressAction:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   392
            DragAndDropManager startDrag:dropObj from:button display:dispObj.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   393
            button turnOff.
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
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   397
    addButton value:'String'       value:'String'.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   398
    addButton value:'Text'         value:(Text string:'hello' emphasis:#bold).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   399
    addButton value:'Icon'         value:icon.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   400
    addButton value:'LabelAndIcon' value:(LabelAndIcon icon:icon string:'Label & Icon').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   401
    addButton value:'Mixed'        value:(Array with:'String' with:icon).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   402
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   403
    topView label:'Drag & Drop'.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   404
    topView openWithExtent:200@200.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   405
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   406
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   407
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   408
startDrag:draggableObjects from:aView offset:anOffset
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   409
    "start a drop at the current pointer position
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
    ^ self startDrag:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   412
                from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   413
              offset:anOffset
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   414
               atEnd:nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   415
             display:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   416
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   417
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   418
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   419
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   420
    |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   421
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   422
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   423
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   424
    button pressAction:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   425
        DragAndDropManager startDrag:(DropObject newFile:('.')) from:button offset:(-10 @ -10).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   426
        button turnOff
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
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   429
    button openAt:100@100
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
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   433
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   434
startDrag:draggableObjects from:aView offset:anOffset atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   435
    "start a drop at the current pointer position
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   436
     When finished, the endAction is called with four args:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   437
     the targetView, the targetViews windowID (useful, if its an alien view),
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   438
     the dropPoint in root-coordinates and the dropPoint within the targetView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   439
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   440
    ^ self startDrag:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   441
                from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   442
              offset:anOffset
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   443
               atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   444
             display:draggableObjects
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
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   447
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   448
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   449
    |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   450
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   451
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   452
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   453
    button pressAction:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   454
        DragAndDropManager startDrag:(DropObject newFile:('.'))
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   455
                                from:button
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   456
                              offset:(-10 @ -10)
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   457
                               atEnd:[:targetView :targetViewId :screenPoint :targetPoint|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   458
                                        Transcript showCR:'target  view: ', targetView   printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   459
                                        Transcript showCR:'target    id: ', targetViewId printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   460
                                        Transcript showCR:'point screen: ', screenPoint  printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   461
                                        Transcript showCR:'point target: ', targetPoint  printString.
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
        button turnOff
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   464
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   465
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   466
    button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   467
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   468
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   469
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   470
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   471
startDrag:draggableObjects from:aView offset:anOffset atEnd:aFourArgEndBlock display:something
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   472
    "start a drop at the current pointer position
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   473
     When finished, the endAction is called with four args:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   474
     the targetView, the targetViews windowID (useful, if its an alien view),
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   475
     the dropPoint in root-coordinates and the dropPoint within the targetView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   476
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   477
    |manager|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   478
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   479
    manager := self new.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   480
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   481
    manager startDrag:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   482
                 from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   483
               offset:anOffset
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   484
                atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   485
              display:something.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   486
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   487
    ^ manager
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   488
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   489
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   490
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   491
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   492
    |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   493
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   494
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   495
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   496
    button pressAction:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   497
        DragAndDropManager startDrag:(DropObject newFile:('.'))
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   498
                                from:button
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   499
                              offset:(-10 @ -10)
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   500
                               atEnd:[:targetView :targetViewId :screenPoint :targetPoint|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   501
                                        Transcript showCR:'target  view: ', targetView   printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   502
                                        Transcript showCR:'target    id: ', targetViewId printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   503
                                        Transcript showCR:'point screen: ', screenPoint  printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   504
                                        Transcript showCR:'point target: ', targetPoint  printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   505
                                     ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   506
                             display:(Array with:'String' with:(Image fromFile:('xpmBitmaps/QUESTION3.xpm'))).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   507
        button turnOff
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   508
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   509
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   510
    button openAt:100@100
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
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
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   515
startDrag:draggableObjects from:aView offset:anOffset display:something
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   516
    "start a drop at the current pointer position
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
    ^ self startDrag:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   519
                from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   520
              offset:anOffset
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   521
               atEnd:nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   522
             display:something
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   523
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   524
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   525
EXAMPLE:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   526
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   527
    |dropObj topView pannel icon buttonAction addButton|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   528
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   529
    topView := StandardSystemView new.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   530
    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
   531
    pannel  horizontalLayout:#fit.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   532
    pannel  verticalLayout:#fitSpace.
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
    icon    := Image fromFile:('xpmBitmaps/QUESTION3.xpm').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   535
    dropObj := DropObject newFile:('.').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   536
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   537
    addButton := [:offset :label :dispObj| |button|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   538
        button := Button label:label in:pannel.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   539
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   540
        button pressAction:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   541
            DragAndDropManager startDrag:dropObj from:button offset:offset display:dispObj.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   542
            button turnOff.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   543
        ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   544
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   545
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   546
    addButton value:#topLeft     value:'String'       value:'String'.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   547
    addButton value:#topRight    value:'Text'         value:(Text string:'hello' emphasis:#bold).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   548
    addButton value:#bottomLeft  value:'Icon'         value:icon.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   549
    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
   550
    addButton value:#center      value:'Mixed'        value:(Array with:'String' with:icon).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   551
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   552
    topView label:'Drag & Drop'.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   553
    topView openWithExtent:200@200.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   554
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   555
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   556
! !
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   557
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   558
!DragAndDropManager class methodsFor:'simple start - lines'!
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   559
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   560
startArrowDragIn:aView at:dragPoint atEnd:aFourArgBlock
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   561
    "start a rubber-arrow-line dragging in aView at dragPoint.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   562
     When finished, evaluate the fourArgBlock with targetView,
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   563
     targetID, screenPosition and targetViewPosition as arguments
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   564
    "
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   565
    ^ self new startArrowDragIn:aView at:dragPoint atEnd:aFourArgBlock
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   566
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   567
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   568
EXAMPLE:
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   569
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   570
    |button|
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   571
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   572
    button := (Button label:'press me').
861
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   573
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   574
    button pressAction:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   575
        button turnOff.
861
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   576
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   577
        DragAndDropManager startArrowDragIn:button 
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   578
                                         at:(button preferredExtent // 2)
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   579
                                      atEnd:[:targetView :targetViewId :screenPoint :targetPoint|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   580
                                                targetView isNil ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   581
                                                    Transcript show:'alien view'
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   582
                                                ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   583
                                                    Transcript showCR:'target: ', targetView printString
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   584
                                                ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   585
                                                Transcript showCR:'point screen: ', screenPoint printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   586
                                                Transcript showCR:'point target: ', targetPoint printString.
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
     ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   589
     button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   590
"
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   591
!
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   592
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   593
startLineDragIn:aView at:dragPoint atEnd:aFourArgBlock
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   594
    "start a rubber-line dragging in aView at dragPoint.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   595
     When finished, evaluate the fourArgBlock with targetView,
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   596
     targetID, screenPosition and targetViewPosition as arguments
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   597
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   598
    ^ self new startLineDragIn:aView at:dragPoint atEnd:aFourArgBlock
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
"
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   601
EXAMPLE:
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   602
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   603
    |button|
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   604
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   605
    button := (Button label:'press me').
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   606
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   607
    button pressAction:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   608
        button turnOff.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   609
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   610
        DragAndDropManager startLineDragIn:button 
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   611
                                        at:(button preferredExtent // 2)
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   612
                                     atEnd:[:targetView :targetViewId :screenPoint :targetPoint|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   613
                                               targetView isNil ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   614
                                                   Transcript show:'alien view'
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   615
                                               ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   616
                                                   Transcript showCR:'target: ', targetView printString
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
                                               Transcript showCR:'point screen: ', screenPoint printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   619
                                               Transcript showCR:'point target: ', targetPoint printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   620
                                           ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   621
     ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   622
     button openAt:100@100
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   623
"
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   624
! !
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   625
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   626
!DragAndDropManager methodsFor:'accessing'!
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   627
861
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   628
device
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   629
    "returns the device of the source view
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   630
    "
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   631
    ^ dragView device
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   632
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   633
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   634
!
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
dropContext
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   637
    "return the current context
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   638
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   639
    ^ dropContext
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   640
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   641
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   642
dropObjects
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   643
    "return the current dropObject collection"
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   644
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   645
    ^ dropContext dropObjects
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   646
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   647
    "Modified: 19.4.1997 / 10:19:06 / cg"
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   648
!
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   649
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   650
dropObjects:aCollectionOfDropObjects
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   651
    "set the current dropObject collection"
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   652
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   653
    ^ dropContext dropObjects:aCollectionOfDropObjects
861
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   654
!
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   655
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   656
font
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   657
    "returns the font of the source view
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   658
    "
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   659
    ^ dragView font
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   660
10bbb13fcb05 add more simple drag & drop functionality:
ca
parents: 680
diff changeset
   661
874
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
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   664
sourceWidget
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   665
    ^ dragView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   666
! !
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   667
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   668
!DragAndDropManager methodsFor:'accessing cursor'!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   669
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   670
alienCursor:aCursorOrImage
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   671
    "set the cursor used for an alien widget; not an ST/X view
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   672
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   673
    aCursorOrImage isImage ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   674
        alienCursor := Cursor fromImage:aCursorOrImage
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   675
    ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   676
        (aCursorOrImage isMemberOf:Cursor) ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   677
            alienCursor := aCursorOrImage
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   678
        ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   679
            "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   680
            "/ use disabled cursor
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   681
            "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   682
            alienCursor := nil
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
    ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   685
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   686
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   687
disabledCursor:aCursorOrImage
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   688
    "set the cursor for an ST/X view, which can not drop the objects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   689
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   690
    aCursorOrImage isImage ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   691
        disabledCursor := Cursor fromImage:aCursorOrImage
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   692
    ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   693
        (aCursorOrImage isMemberOf:Cursor) ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   694
            disabledCursor := aCursorOrImage
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   695
        ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   696
    ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   697
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   698
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   699
enabledCursor:aCursorOrImage
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   700
    "set the cursor for an ST/X view, which can drop the objects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   701
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   702
    aCursorOrImage isImage ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   703
        enabledCursor := Cursor fromImage:aCursorOrImage
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   704
    ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   705
        (aCursorOrImage isMemberOf:Cursor) ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   706
            enabledCursor := aCursorOrImage
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   707
        ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   708
    ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   709
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   710
! !
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   711
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   712
!DragAndDropManager methodsFor:'dragging - drop source'!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   713
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   714
startDragFrom:aView dropSource:aDropSource
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   715
    "start a drop at the current pointer position.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   716
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   717
    ^ self startDragFrom:aView dropSource:aDropSource offset:#topLeft "/ #center
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   718
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   719
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   720
startDragFrom:aView dropSource:aDropSource offset:anOffset
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   721
    "start a drop at the current pointer position.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   722
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   723
    dropContext dropSource:aDropSource.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   724
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   725
    ^ self startDrag:(aDropSource dropObjects)
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   726
                from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   727
              offset:anOffset
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   728
               atEnd:nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   729
             display:(aDropSource displayObjects)
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   730
! !
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   731
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   732
!DragAndDropManager methodsFor:'dragging - easy startup'!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   733
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   734
startDrag:draggableObjects from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   735
    "start a drop at the current pointer position
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   736
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   737
    ^ self startDrag:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   738
                from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   739
              offset:0@0
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   740
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   741
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   742
startDrag:draggableObjects from:aView display:something
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   743
    "start a drop at the current pointer position.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   744
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   745
    ^ self startDrag:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   746
                from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   747
              offset:nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   748
               atEnd:nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   749
             display:something
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   750
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   751
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   752
startDrag:draggableObjects from:aView offset:anOffset
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   753
    "start a drop at the current pointer position with an offset
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   754
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   755
    ^ self startDrag:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   756
                from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   757
              offset:anOffset
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   758
               atEnd:nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   759
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   760
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   761
startDrag:draggableObjects from:aView offset:anOffset atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   762
    "start a drop at the current pointer position.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   763
     When finished, the endAction is called with four args:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   764
     the targetView, the targetViews windowID (useful, if its an alien view),
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   765
     the dropPoint in root-coordinates and the dropPoint within the targetView
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
    ^ self startDrag:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   768
                from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   769
              offset:anOffset
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   770
               atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   771
             display:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   772
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   773
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   774
startDrag:draggableObjects from:aView offset:anOffset atEnd:aFourArgBlock display:something
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   775
    "start a drop at the current pointer position.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   776
     When finished, the endAction is called with four args:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   777
     the targetView, the targetViews windowID (useful, if its an alien view),
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   778
     the dropPoint in root-coordinates and the dropPoint within the targetView.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   779
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   780
    |height width fontWdt dispObj offset ascent device dispObjs list space|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   781
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   782
    self dropObjects:draggableObjects.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   783
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   784
    self dropObjects size == 0 ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   785
        ^ self
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
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   788
    device   := aView device.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   789
    space    := 1.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   790
    height   := space negated.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   791
    width    := 0.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   792
    fontWdt  := aView font width.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   793
    ascent   := aView font ascent.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   794
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   795
    (list := something) isNil ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   796
        list := self dropObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   797
    ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   798
        (list isCollection not or:[list isString]) ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   799
            list := Array with:something
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   800
        ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   801
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   802
    dispObjs := OrderedCollection new.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   803
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   804
    list do:[:el|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   805
        |obj asc|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   806
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   807
        obj    := self displayObjectFor:el on:device.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   808
        asc    := (obj respondsTo:#string) ifTrue:[ascent] ifFalse:[0].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   809
        height := height + space.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   810
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   811
        dispObjs add:(Array with:obj with:(0 @ (height + asc))).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   812
        width  := width max:(obj widthOn:aView).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   813
        height := height + (obj heightOn:aView).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   814
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   815
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   816
    offset := self computeOffset:anOffset w:width h:height.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   817
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   818
    dispObjs do:[:el| el at:2 put:((el at:2) - offset) ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   819
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   820
    self startOpaqueDrag:[:p :v| dispObjs do:[:el| (el at:1) displayOn:v at:p + (el at:2)] ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   821
                  offset:offset
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   822
                  extent:width @ height
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   823
                      in:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   824
                      at:nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   825
                   atEnd:aFourArgBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   826
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   827
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   828
startDrag:draggableObjects from:aView offset:anOffset display:something
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   829
    "start a drop at the current pointer position.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   830
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   831
    ^ self startDrag:draggableObjects
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   832
                from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   833
              offset:anOffset
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   834
               atEnd:nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   835
             display:something
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   836
! !
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   837
342
7563cbf04502 added genericDrag & arrowDrag
Claus Gittinger <cg@exept.de>
parents: 341
diff changeset
   838
!DragAndDropManager methodsFor:'dragging - generic'!
7563cbf04502 added genericDrag & arrowDrag
Claus Gittinger <cg@exept.de>
parents: 341
diff changeset
   839
348
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   840
startGenericDrag:aTwoArgDragBlock in:aView at:p atEnd:aFourArgEndBlock
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   841
    "start a generic (caller-provided drag);
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   842
     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
   843
     by inverting again). See startOpaqueDrag for another variant.
348
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   844
     the dragBlock, aTwoArgDragBlock will be called with two args
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   845
     aPoint and a drawingGC, to perform the drawing at some dragPoint.
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   846
     The drag starts in aView at point p.
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   847
     When finished, the endAction is called with four args:
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   848
     the targetView, the targetViews windowID (useful, if its an alien view),
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   849
     the dropPoint in root-coordinates and the dropPoint within the targetView
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
    ^ self startOpaqueDrag:aTwoArgDragBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   852
                    offset:nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   853
                    extent:nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   854
                        in:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   855
                        at:nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   856
                     atEnd:aFourArgEndBlock
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   857
!
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   858
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   859
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
   860
    "start an opaque or generic opaque (caller-provided drag);
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   861
     opaque drag means, that the drawing cannot be undone by two inverting
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   862
     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
   863
     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
   864
     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
   865
     drawingGC and the display objects, to perform the drawing at some dragPoint.
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   866
     The drag starts in aView at point p.
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   867
     When finished, the endAction is called with four args:
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   868
     the targetView, the targetViews windowID (useful, if its an alien view),
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   869
     the dropPoint in root-coordinates and the dropPoint within the targetView
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
    |handler numArgs dragBlock dobjs|
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
   872
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   873
    dragOffset := offs ? (Point x:0 y:0).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   874
    numArgs    := aDragBlock numArgs.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   875
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   876
    numArgs == 3 ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   877
        dobjs := self dropObjects.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   878
        dragBlock := [:p :v| aDragBlock value:p value:v value:dobjs ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   879
    ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   880
        numArgs == 1 ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   881
            dragBlock := [:p :v| aDragBlock value:p ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   882
        ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   883
            dragBlock := aDragBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   884
        ]
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   885
    ].
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   886
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   887
    anExtent isNil ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   888
        handler := DragHandler startGenericDrag:dragBlock.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   889
    ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   890
        handler := DragHandler startOpaqueDrag:dragBlock extent:anExtent offset:dragOffset.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   891
    ].
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   892
    self doStart:handler for:aView atEnd:aFourArgEndBlock
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   893
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   894
! !
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   895
342
7563cbf04502 added genericDrag & arrowDrag
Claus Gittinger <cg@exept.de>
parents: 341
diff changeset
   896
!DragAndDropManager methodsFor:'dragging - lines'!
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   897
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   898
startArrowDragIn:aView at:aStartPoint atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   899
    "start a line-drag of an arrow-line.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   900
     The drag starts in aView at point aStartPoint.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   901
     When finished, the endAction is called with four args:
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   902
     the targetView, the targetViews windowID (useful, if its an alien view),
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   903
     the dropPoint in root-coordinates and the dropPoint within the targetView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   904
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   905
    |p|
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   906
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   907
    p := self translatePointToScreen:aStartPoint from:aView.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
   908
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   909
    self doStart:(DragHandler startArrowDragAt:p)
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   910
             for:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   911
           atEnd:aFourArgEndBlock
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   912
!
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   913
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   914
startLineDragIn:aView at:aStartPoint atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   915
    "start a line-drag of a normal line.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   916
     The drag starts in aView at point aStartPoint.
348
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   917
     When finished, the endAction is called with four args:
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   918
     the targetView, the targetViews windowID (useful, if its an alien view),
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   919
     the dropPoint in root-coordinates and the dropPoint within the targetView
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
    |p|
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   922
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   923
    p := self translatePointToScreen:aStartPoint from:aView.
348
74f1fda9deb0 more args & comments
Claus Gittinger <cg@exept.de>
parents: 346
diff changeset
   924
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   925
    self doStart:(DragHandler startLineDragAt:p)
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   926
             for:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   927
           atEnd:aFourArgEndBlock
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   928
! !
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   929
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   930
!DragAndDropManager methodsFor:'drawing'!
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
   931
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   932
computeOffset:anOffset w:w h:h
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   933
    |p|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   934
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   935
    anOffset isSymbol ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   936
        ^ anOffset notNil ifTrue:[anOffset] ifFalse:[0@0]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   937
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   938
    anOffset == #topLeft     ifTrue:[ ^ 0 @ 0].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   939
    anOffset == #topRight    ifTrue:[ ^ w @ 0].
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
    anOffset == #bottomLeft  ifTrue:[ ^ 0 @ h].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   942
    anOffset == #bottomRight ifTrue:[ ^ w @ h].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   943
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   944
    p := (w @ h) // 2.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   945
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   946
    anOffset == #center       ifTrue:[ ^ p ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   947
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   948
    anOffset == #topCenter    ifTrue:[ ^ p x @ 0 ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   949
    anOffset == #bottomCenter ifTrue:[ ^ p x @ h ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   950
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   951
    anOffset == #leftCenter   ifTrue:[ ^ 0 @ p y ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   952
    anOffset == #rightCenter  ifTrue:[ ^ w @ p y ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   953
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   954
    Transcript showCR:'unsupported offset: ', anOffset printString.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   955
    ^ 0 @ 0
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   956
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   957
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   958
displayObjectFor:anObject on:aDevice
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   959
    "converts an object to a display object
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   960
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   961
    |obj icon s1 s2|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   962
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   963
    obj := (anObject respondsTo:#displayObject) ifTrue:[anObject displayObject]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   964
                                               ifFalse:[anObject].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   965
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   966
    obj isString ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   967
        ^ obj
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   968
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   969
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   970
    obj messageNotUnderstoodSignal handle:[:ex|] do:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   971
        obj := obj on:aDevice
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   972
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   973
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   974
    obj isImage ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   975
        ^ obj clearMaskedPixels
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   976
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   977
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   978
    obj class == LabelAndIcon ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   979
        obj image notNil ifTrue:[obj image clearMaskedPixels].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   980
        obj icon  notNil ifTrue:[obj icon clearMaskedPixels].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   981
      ^ obj
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   982
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   983
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   984
    (obj class == MultiColListEntry) ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   985
        ^ obj
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   986
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   987
    s1 := obj colAt:1.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   988
    s2 := obj colAt:2.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   989
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   990
    s1 isImage ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   991
        s2 isImage  ifTrue:[ ^ self displayObjectFor:(LabelAndIcon form:s1  image:s2) on:aDevice ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   992
        s2 isString ifTrue:[ ^ self displayObjectFor:(LabelAndIcon icon:s1 string:s2) on:aDevice ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   993
        ^ (s1 on:aDevice) clearMaskedPixels
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   994
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   995
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   996
    s2 isImage ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   997
        s1 isString ifTrue:[ ^ self displayObjectFor:(LabelAndIcon icon:s2 string:s1) on:aDevice ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   998
        ^ (s2 on:aDevice) clearMaskedPixels
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
   999
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1000
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1001
    s1 isString ifTrue:[^ s1].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1002
    s2 isString ifTrue:[^ s2].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1003
  ^ obj
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1004
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1005
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
  1006
showDragging:items in:aView at:p
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1007
    "helper for dragging dragObjects: draw them all"
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1008
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
  1009
    |offs|
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
  1010
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1011
    offs := 0.
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1012
    items do:[:item |
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1013
        item displayOn:aView at:p + (0@offs).
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1014
        offs := offs + (item heightOn:self)
397
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
  1015
    ]
7ad4e53d8f49 *** empty log message ***
ca
parents: 394
diff changeset
  1016
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1017
    "Modified: 19.4.1997 / 12:41:24 / cg"
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1018
! !
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1019
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1020
!DragAndDropManager methodsFor:'event catching'!
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1021
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1022
buttonMotion:button x:x y:y view:aView
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1023
    "handle a button motion event
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1024
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1025
    |oldPt oldTgt oldWg oldId newWg newId newTgt point rootId cursor device isDroppable|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1026
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1027
    device := dragView device.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1028
    rootId := device rootView id.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1029
    point  := self translatePointToScreen:(x @ y) from:dragView.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1030
    oldWg  := dropContext targetWidget.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1031
    oldId  := dropContext targetId.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1032
    oldPt  := dropContext rootPoint.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1033
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1034
    dropContext rootPoint:point.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1035
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1036
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1037
    "/ search view the drop is in
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1038
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1039
    [   newId := rootId.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1040
        (rootId := device viewIdFromPoint:point in:newId) notNil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1041
    ] whileTrue.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1042
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1043
    newWg := device viewFromId:newId.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1044
    dropContext targetWidget:newWg id:newId.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1045
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1046
    handler isInterestedInDropTarget ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1047
        "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1048
        "/ line or arrow handler
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1049
        "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1050
        handler dragTo:point.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1051
        ^ self
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1052
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1053
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1054
    oldWg ~~ newWg ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1055
        "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1056
        "/ widget has changed: drop target might change
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1057
        "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1058
        oldTgt := dropContext dropTarget.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1059
        newTgt := self doFindDropTargetIn:newWg at:point.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1060
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1061
        newTgt ~= oldTgt ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1062
            "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1063
            "/ drop target changed: handler might restore the screen
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1064
            "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1065
            handler dropTargetWillChange.
341
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
            oldTgt notNil ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1068
                "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1069
                "/ setup old context
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1070
                "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1071
                dropContext targetWidget:oldWg id:oldId.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1072
                oldTgt leave:dropContext.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1073
                dropContext targetWidget:newWg id:newId.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1074
            ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1075
            dropContext dropTarget:newTgt.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1076
            newTgt notNil ifTrue:[ newTgt enter:dropContext ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1077
        ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1078
            dropContext dropTarget:newTgt
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1079
        ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1080
    ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1081
        (oldPt notNil and:[(oldPt dist:point) < 2 ]) ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1082
            "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1083
            "/ ignorre the button motion event; restore old rootPoint
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1084
            "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1085
            dropContext rootPoint:oldPt.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1086
            ^ self
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1087
        ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1088
        newTgt := dropContext dropTarget
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
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1091
    "/ update the cursor
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
    (isDroppable := dropContext canDrop) ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1094
        cursor := enabledCursor
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1095
    ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1096
        cursor := dropContext isAlienView ifFalse:[disabledCursor]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1097
                                           ifTrue:[alienCursor]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1098
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1099
    dragView cursor:cursor now:true.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1100
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1101
    "/ test if droppable state changed
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
    canDrop == isDroppable ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1104
        "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1105
        "/ droppable state changed: handler might restore the screen
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
        canDrop := isDroppable.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1108
        handler dropTargetWillChange
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1109
    ].
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1110
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1111
    newTgt notNil ifTrue:[ newTgt over:dropContext ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1112
    handler dragTo:point.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1113
!
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1114
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1115
buttonMultiPress:button x:x y:y view:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1116
    "discard each buttonMultiPress event
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1117
    "
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
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1120
buttonPress:button x:x y:y view:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1121
    "discard each buttonPress event
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1122
    "
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1123
!
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1124
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1125
buttonRelease:button x:x y:y view:aView
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1126
    "button released; do the drop
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1127
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1128
    ((button == 2) or:[button == #menu]) ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1129
        ^ self
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1130
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1131
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1132
    "/ update the context
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
    self buttonMotion:button x:x y:y view:aView.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1135
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1136
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1137
    "/ restore source view
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1138
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1139
    restoreBlock value.
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1140
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1141
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1142
    "/ at least do the drop operation
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1143
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1144
    dropAction isNil ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1145
        dropContext doDrop
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1146
    ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1147
        "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1148
        "/ initiator wants to do it himself, manually.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1149
        "/ Thus, no feedBack operation invoked.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1150
        "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1151
        dropAction value:(dropContext targetWidget)
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1152
                   value:(dropContext targetId)
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1153
                   value:(dropContext rootPoint)
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1154
                   value:(dropContext targetPoint).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1155
    ]
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1156
!
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1157
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1158
handlesButtonMotion:button inView:aView
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1159
    "query from event processor: am I interested in button-events ?
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1160
     yes I am (to activate the clicked-on field)."
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1161
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1162
    ^ dragView == aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1163
!
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1164
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1165
handlesButtonMultiPress:button inView:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1166
    "query from event processor: am I interested in button-events ?
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1167
     yes I am (to activate the clicked-on field)."
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1168
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1169
    ^ dragView == aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1170
!
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1171
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1172
handlesButtonPress:button inView:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1173
    "query from event processor: am I interested in button-events ?
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1174
     yes I am (to activate the clicked-on field)."
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1175
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1176
    ^ dragView == aView
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1177
!
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1178
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1179
handlesButtonRelease:button inView:aView
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1180
    "query from event processor: am I interested in button-events ?
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1181
     yes I am (to activate the clicked-on field)."
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1182
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1183
    ^ dragView == aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1184
! !
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1185
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1186
!DragAndDropManager methodsFor:'initialization'!
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1187
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1188
initialize
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1189
    super initialize.
394
0539d7b29aa7 *** empty log message ***
ca
parents: 348
diff changeset
  1190
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1191
    dragOffset     := 0 @ 0.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1192
    dropContext    := DropContext new.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1193
    alienCursor    := Cursor questionMark.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1194
    enabledCursor  := Cursor thumbsUp.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1195
    disabledCursor := Cursor thumbsDown.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1196
    canDrop        := false.
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1197
! !
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1198
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1199
!DragAndDropManager methodsFor:'private'!
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1200
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1201
doDrop:aContext in:aWidget
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1202
    "old drop mechanism
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1203
    "
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1204
    |point|
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1205
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1206
    DragOriginatorQuerySignal answer:dragView do:[
680
6157661790fd keep dragOffset - provide querySignal
Claus Gittinger <cg@exept.de>
parents: 628
diff changeset
  1207
        DragOffsetQuerySignal answer:dragOffset do:[
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1208
            aContext targetWidget == aWidget ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1209
                point := aContext targetPoint
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1210
            ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1211
                point := nil.
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
                "/ FeedBack: set the widget which handles the drop
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1214
                "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1215
                aContext targetWidget:aWidget id:(aWidget id).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1216
            ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1217
            aWidget drop:(aContext dropObjects) at:point
609
1343bda17876 pass logical coordinates to dropAction.
Claus Gittinger <cg@exept.de>
parents: 549
diff changeset
  1218
        ]
1343bda17876 pass logical coordinates to dropAction.
Claus Gittinger <cg@exept.de>
parents: 549
diff changeset
  1219
    ].
1343bda17876 pass logical coordinates to dropAction.
Claus Gittinger <cg@exept.de>
parents: 549
diff changeset
  1220
346
1612c23d9c5d pass all dropInfo to an end-action
Claus Gittinger <cg@exept.de>
parents: 345
diff changeset
  1221
!
1612c23d9c5d pass all dropInfo to an end-action
Claus Gittinger <cg@exept.de>
parents: 345
diff changeset
  1222
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1223
doFindDropTargetIn:aView at:aPoint
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1224
    "get the drop target for a view and source at a point or nil
411
8b8b0128d129 *** empty log message ***
ca
parents: 401
diff changeset
  1225
    "
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1226
    |target view dobj|
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1227
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1228
    aView isNil ifTrue:[ ^ nil ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1229
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1230
    "/ new mechanism to get a dropTarget
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1231
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1232
    aView messageNotUnderstoodSignal handle:[:ex|
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1233
        target := nil.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1234
    ] do:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1235
        target := aView dropTarget
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1236
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1237
    target notNil ifTrue:[ ^ target ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1238
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1239
    "/ old mechanism to get a dropTarget
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1240
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1241
    view := aView.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1242
    dobj := dropContext dropObjects.
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1243
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1244
    DragOriginatorQuerySignal answer:dragView do:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1245
        DragOffsetQuerySignal answer:dragOffset do:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1246
            [   (view canDrop:dobj) ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1247
                    ^ DropTarget receiver:self argument:view dropSelector:#doDrop:in:.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1248
                ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1249
                (view := view superView) notNil
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1250
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1251
            ] whileTrue.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1252
        ]
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1253
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1254
    ^ nil
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1255
!
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1256
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1257
doStart:aHandler for:aView atEnd:aFourArgEndBlock
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1258
    "setup a handler and a restore block
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1259
    "
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1260
    |cursor delegate|
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1261
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1262
    dropContext sourceWidget:aView.
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1263
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1264
    dragOffset  isNil ifTrue:[ dragOffset  := 0 @ 0 ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1265
    alienCursor isNil ifTrue:[ alienCursor := disabledCursor ].
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1266
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1267
    dragView   := aView.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1268
    dropAction := aFourArgEndBlock.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1269
    cursor     := aView cursor.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1270
    delegate   := aView delegate.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1271
    handler    := aHandler.
609
1343bda17876 pass logical coordinates to dropAction.
Claus Gittinger <cg@exept.de>
parents: 549
diff changeset
  1272
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1273
    restoreBlock := [
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1274
        aHandler postDragging.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1275
        aView delegate:delegate.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1276
        aView cursor:cursor now:true.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1277
        aView device ungrabPointer
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1278
    ].
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1279
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1280
    aHandler preDraggingIn:aView.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1281
    aView delegate:self.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1282
    aView device grabPointerInView:aView.
609
1343bda17876 pass logical coordinates to dropAction.
Claus Gittinger <cg@exept.de>
parents: 549
diff changeset
  1283
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1284
! !
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1285
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1286
!DragAndDropManager methodsFor:'translation'!
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1287
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1288
translatePointToScreen:aPoint from:aView
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1289
    "translate a point to screen
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1290
    "
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1291
    |device trans point offset|
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1292
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1293
    device := aView device.
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1294
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1295
    "/ get device coordinates
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1296
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1297
    (trans := aView transformation) notNil ifTrue:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1298
        point := trans applyTo:aPoint
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1299
    ] ifFalse:[
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1300
        point := aPoint
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1301
    ].
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1302
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1303
    "/ translate to screen
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1304
    "/
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1305
    offset := device translatePoint:0@0 from:(aView id) to:(device rootView id).
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1306
  ^ offset + point
548
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1307
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1308
! !
1a81d6be65b4 added comments & docu, examples.
Claus Gittinger <cg@exept.de>
parents: 515
diff changeset
  1309
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1310
!DragAndDropManager class methodsFor:'documentation'!
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1311
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1312
version
874
0730cf44f593 support of Drop -Source -Target and Context
ca
parents: 861
diff changeset
  1313
    ^ '$Header: /cvs/stx/stx/libview2/DragAndDropManager.st,v 1.19 1998-03-30 12:02:15 ca Exp $'
341
5afe98e6185b intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1314
! !
628
22085aaf983c DragOriginatorQuerySignal added
ca
parents: 609
diff changeset
  1315
DragAndDropManager initialize!