GraphicsDevice.st
author Stefan Vogel <sv@exept.de>
Wed, 17 May 2000 15:59:53 +0200
changeset 3198 84ed1e2f1bd6
parent 1287 fdb9f015bf0f
child 3222 0bb571e07c0e
permissions -rw-r--r--
Add per device eventListeners.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1282
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
1283
ba106a6b1c5b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1282
diff changeset
     2
COPYRIGHT (c) 1997 by eXept Software AG / Claus Gittinger
1282
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
              All Rights Reserved
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
3198
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    14
"{ Package: 'stx:libview' }"
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    15
1282
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
Object subclass:#GraphicsDevice
3198
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    17
	instanceVariableNames:'displayId eventListeners'
1282
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:''
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	category:'Interface-Graphics'
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!GraphicsDevice class methodsFor:'documentation'!
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
copyright
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
"
1283
ba106a6b1c5b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1282
diff changeset
    27
COPYRIGHT (c) 1997 by eXept Software AG / Claus Gittinger
1282
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
              All Rights Reserved
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
 This software is furnished under a license and may be used
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 only in accordance with the terms of that license and with the
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 be provided or otherwise made available to, or used by, any
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 other person.  No title to or ownership of the software is
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 hereby transferred.
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
"
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
!
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
documentation
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
"
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    this abstract class was inserted to provide a home for ST-80 classes
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    (previously, DeviceWorkstation was directly under Object).
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
1283
ba106a6b1c5b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1282
diff changeset
    45
    In ST/X, this is mostly dummy.
ba106a6b1c5b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1282
diff changeset
    46
1282
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    [instance variables:]
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
      displayId       <Handle>          the device handle
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
    [see also:]
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
        DeviceWorkstation XWorkstation
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    [author:]
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
        Claus Gittinger
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
"
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
! !
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
3198
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    59
!GraphicsDevice methodsFor:'accessing'!
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    60
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    61
addEventListener:aListener
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    62
    "add a local eventListener (with new protocol - #processEvent:)
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    63
     This one gets a chance to intercept all events for this device"
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    64
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    65
    eventListeners isNil ifTrue:[
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    66
        eventListeners := OrderedCollection new:2
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    67
    ].
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    68
    eventListeners add:aListener
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    69
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    70
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    71
!
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    72
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    73
removeEventListener:aListener
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    74
    "remove a local eventListener (with new protocol - #processEvent:)"
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    75
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    76
    eventListeners notNil ifTrue:[
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    77
        eventListeners removeIdentical:aListener ifAbsent:nil
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    78
    ].
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    79
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    80
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    81
! !
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    82
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    83
!GraphicsDevice methodsFor:'event processing'!
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    84
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    85
notifyEventListenersAbout:anEvent
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    86
    "notify all eventHandlers about an incoming event.
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    87
     If any returns true, it is assumed to be eaten by the handler and not
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    88
     enqueued (i.e. not passed to the windowGroup process)"
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    89
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    90
    |anyListenerReturnedTrue|
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    91
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    92
    anyListenerReturnedTrue := false.
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    93
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    94
    "/ local listeners ...
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    95
    eventListeners notNil ifTrue:[
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    96
        eventListeners do:[:aListener |
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    97
            anyListenerReturnedTrue := anyListenerReturnedTrue |
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    98
                                       (aListener processEvent:anEvent)
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
    99
        ]
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
   100
    ].
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
   101
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
   102
    ^ anyListenerReturnedTrue.
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
   103
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
   104
! !
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
   105
1282
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
!GraphicsDevice class methodsFor:'documentation'!
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
version
3198
84ed1e2f1bd6 Add per device eventListeners.
Stefan Vogel <sv@exept.de>
parents: 1287
diff changeset
   109
    ^ '$Header: /cvs/stx/stx/libview/GraphicsDevice.st,v 1.4 2000-05-17 13:59:53 stefan Exp $'
1282
46629b32e1d7 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
! !