KeyboardMap.st
author claus
Fri, 16 Jul 1993 11:42:20 +0200
changeset 0 48194c26a46c
child 5 e5942fea6925
permissions -rw-r--r--
Initial revision
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
48194c26a46c Initial revision
claus
parents:
diff changeset
     1
"
48194c26a46c Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1993 by Claus Gittinger
48194c26a46c Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
48194c26a46c Initial revision
claus
parents:
diff changeset
     4
48194c26a46c Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
48194c26a46c Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
48194c26a46c Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
48194c26a46c Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
48194c26a46c Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
48194c26a46c Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
48194c26a46c Initial revision
claus
parents:
diff changeset
    11
"
48194c26a46c Initial revision
claus
parents:
diff changeset
    12
48194c26a46c Initial revision
claus
parents:
diff changeset
    13
IdentityDictionary  subclass:#KeyboardMap 
48194c26a46c Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'current'
48194c26a46c Initial revision
claus
parents:
diff changeset
    15
       classVariableNames:''
48194c26a46c Initial revision
claus
parents:
diff changeset
    16
       poolDictionaries:''
48194c26a46c Initial revision
claus
parents:
diff changeset
    17
       category:'Interface-Support'
48194c26a46c Initial revision
claus
parents:
diff changeset
    18
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    19
48194c26a46c Initial revision
claus
parents:
diff changeset
    20
KeyboardMap comment:'
48194c26a46c Initial revision
claus
parents:
diff changeset
    21
48194c26a46c Initial revision
claus
parents:
diff changeset
    22
COPYRIGHT (c) 1993 by Claus Gittinger
48194c26a46c Initial revision
claus
parents:
diff changeset
    23
              All Rights Reserved
48194c26a46c Initial revision
claus
parents:
diff changeset
    24
48194c26a46c Initial revision
claus
parents:
diff changeset
    25
instances of KeyboardMap are used for mapping keystrokes AND sequences
48194c26a46c Initial revision
claus
parents:
diff changeset
    26
of keystrokes to a function key.
48194c26a46c Initial revision
claus
parents:
diff changeset
    27
48194c26a46c Initial revision
claus
parents:
diff changeset
    28
%W% %E%
48194c26a46c Initial revision
claus
parents:
diff changeset
    29
48194c26a46c Initial revision
claus
parents:
diff changeset
    30
written jun 93 by claus
48194c26a46c Initial revision
claus
parents:
diff changeset
    31
'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    32
48194c26a46c Initial revision
claus
parents:
diff changeset
    33
!KeyboardMap methodsFor:'accessing'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    34
48194c26a46c Initial revision
claus
parents:
diff changeset
    35
bindValue:anObject to:aKey
48194c26a46c Initial revision
claus
parents:
diff changeset
    36
    self at:aKey put:anObject
48194c26a46c Initial revision
claus
parents:
diff changeset
    37
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    38
48194c26a46c Initial revision
claus
parents:
diff changeset
    39
bindValue:anObject to:key1 followedBy:key2
48194c26a46c Initial revision
claus
parents:
diff changeset
    40
    |submap|
48194c26a46c Initial revision
claus
parents:
diff changeset
    41
48194c26a46c Initial revision
claus
parents:
diff changeset
    42
    submap := self at:key1.
48194c26a46c Initial revision
claus
parents:
diff changeset
    43
    submap isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
    44
        submap := KeyboardMap new.
48194c26a46c Initial revision
claus
parents:
diff changeset
    45
        self at:key1 put:submap.
48194c26a46c Initial revision
claus
parents:
diff changeset
    46
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
    47
    submap at:key2 put:anObject
48194c26a46c Initial revision
claus
parents:
diff changeset
    48
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    49
48194c26a46c Initial revision
claus
parents:
diff changeset
    50
valueFor:aKey
48194c26a46c Initial revision
claus
parents:
diff changeset
    51
    |where value|
48194c26a46c Initial revision
claus
parents:
diff changeset
    52
48194c26a46c Initial revision
claus
parents:
diff changeset
    53
    where := current notNil ifTrue:[current] ifFalse:[self].
48194c26a46c Initial revision
claus
parents:
diff changeset
    54
48194c26a46c Initial revision
claus
parents:
diff changeset
    55
    value := where at:aKey ifAbsent:[aKey].
48194c26a46c Initial revision
claus
parents:
diff changeset
    56
    (value isMemberOf:KeyboardMap) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
    57
        current := value.
48194c26a46c Initial revision
claus
parents:
diff changeset
    58
        ^ nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
    59
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
    60
    current := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
    61
    ^ value
48194c26a46c Initial revision
claus
parents:
diff changeset
    62
! !