Menu.st
author Claus Gittinger <cg@exept.de>
Mon, 15 Sep 1997 22:25:21 +0200
changeset 696 a49928754789
parent 679 0f94c493751c
child 724 898519684261
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
696
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
     1
'From Smalltalk/X, Version:3.1.10 on 13-sep-1997 at 10:55:54 pm'                !
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
     2
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Object subclass:#Menu
579
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
     4
	instanceVariableNames:'items groupSizes receiver'
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Views-Support'
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!Menu class methodsFor:'documentation'!
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
documentation
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
    not yet finished Menu class - this will eventually replace
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
    most of the MenuView and PopUpMenu stuff.
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
    (and hopefully be ST-80 compatible ...)
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
    For now, only a subset of the full protocol is implemented.
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
    [author:]
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
        Claus Gittinger
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
    [see also:]
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
        MenuItem
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
        PopUpMenu
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
"
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
! !
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
610
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    29
!Menu class methodsFor:'instance creation'!
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    30
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    31
labelArray: arrayOfString lines: linesArray values: valueArrayOrNil
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    32
        "Answer a menu with menu items with labels from arrayOfString (not Symbols).  The linesArray describes which menu items are the last menu item in their group.  The valueArray contains value objects for each menu item (or is nil if no value objects are specified)."
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    33
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    34
        | valueArray menuItems groupLengths |
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    35
        valueArrayOrNil isNil
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    36
                ifTrue: [valueArray := arrayOfString isEmpty
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    37
                                                ifTrue: [#()]
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    38
                                                ifFalse:        [1 to: arrayOfString size]]
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    39
                ifFalse: [valueArray := valueArrayOrNil].
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    40
        arrayOfString size ~= valueArray size
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    41
                ifTrue: [^self error: 'illegal menu combination'].
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    42
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    43
        menuItems := Array new: arrayOfString size.
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    44
        1 to: arrayOfString size do:
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    45
                [:i |
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    46
                | mi v|
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    47
                mi := MenuItem labeled: (arrayOfString at: i) asString.
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    48
                v := valueArray at: i.
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    49
                (v isKindOf: Menu)
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    50
                        ifTrue: [mi submenu: v].
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    51
                menuItems at: i put: mi].
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    52
        (linesArray == nil or: [linesArray isEmpty])
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    53
                ifTrue: [
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    54
                        groupLengths := (menuItems isEmpty)
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    55
                                ifTrue: [Array new: 0]
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    56
                                ifFalse: [Array with: menuItems size]]
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    57
                ifFalse: [groupLengths := Array new: linesArray size + 1.
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    58
                                groupLengths at: 1 put: linesArray first.
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    59
                                2 to: linesArray size do: [:i | groupLengths at: i put: (linesArray at: i) - (linesArray at: i - 1)].
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    60
                                groupLengths at: groupLengths size put: menuItems size - linesArray last].
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    61
        ^self new menuItems: menuItems menuItemGroups: groupLengths values: valueArray
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    62
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    63
    "Modified: 20.6.1997 / 10:46:45 / cg"
696
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
    64
!
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
    65
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
    66
labelList:arrayOfGroupStrings values:valueArrayOrNil
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
    67
    |labels lines|
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
    68
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
    69
    lines := arrayOfGroupStrings collect:[:each | each size].
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
    70
    labels := OrderedCollection new.
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
    71
    arrayOfGroupStrings do:[:group | labels addAll:group].
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
    72
    ^ self labelArray:labels lines:lines values:valueArrayOrNil
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
    73
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
    74
    "Modified: 20.6.1997 / 10:46:45 / cg"
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
    75
    "Created: 13.9.1997 / 10:35:46 / cg"
610
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    76
! !
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    77
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
!Menu methodsFor:'accessing'!
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
589
cc422fe7824f ST-80 compatibility; enumerating & indication
ca
parents: 584
diff changeset
    80
addItem:aMenuItem
489
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    81
    items isNil ifTrue:[
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    82
        items := OrderedCollection new
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    83
    ].
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    84
    items add:aMenuItem.
589
cc422fe7824f ST-80 compatibility; enumerating & indication
ca
parents: 584
diff changeset
    85
!
cc422fe7824f ST-80 compatibility; enumerating & indication
ca
parents: 584
diff changeset
    86
cc422fe7824f ST-80 compatibility; enumerating & indication
ca
parents: 584
diff changeset
    87
addItem:aMenuItem value:aValue
cc422fe7824f ST-80 compatibility; enumerating & indication
ca
parents: 584
diff changeset
    88
    aMenuItem value:aValue.
cc422fe7824f ST-80 compatibility; enumerating & indication
ca
parents: 584
diff changeset
    89
    self addItem:aMenuItem.
489
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    90
!
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    91
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    92
addItemGroup:aGroup values:values
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    93
    groupSizes isNil ifTrue:[
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    94
        groupSizes := OrderedCollection new
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    95
    ].
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    96
    groupSizes add:items size.
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    97
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    98
    aGroup with:values do:[:item :value |
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
    99
        self addItem:item value:value
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   100
    ].
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   101
!
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   102
696
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   103
atNameKey:aNameKey
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   104
    "return the menuItem for the given nameKey; nil if no such item is in the menu."
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   105
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   106
    items do:[:anItem | anItem nameKey == aNameKey ifTrue:[^ anItem]].
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   107
    ^ nil
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   108
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   109
    "Created: 13.9.1997 / 10:25:16 / cg"
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   110
    "Modified: 13.9.1997 / 10:28:44 / cg"
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   111
!
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   112
578
7e0f62d9bc47 access methods ...
ca
parents: 494
diff changeset
   113
groupSizes
7e0f62d9bc47 access methods ...
ca
parents: 494
diff changeset
   114
    "return the value of the instance variable 'groupSizes' (automatically generated)"
7e0f62d9bc47 access methods ...
ca
parents: 494
diff changeset
   115
7e0f62d9bc47 access methods ...
ca
parents: 494
diff changeset
   116
    ^ groupSizes!
7e0f62d9bc47 access methods ...
ca
parents: 494
diff changeset
   117
7e0f62d9bc47 access methods ...
ca
parents: 494
diff changeset
   118
groupSizes:something
7e0f62d9bc47 access methods ...
ca
parents: 494
diff changeset
   119
    "set the value of the instance variable 'groupSizes' (automatically generated)"
7e0f62d9bc47 access methods ...
ca
parents: 494
diff changeset
   120
7e0f62d9bc47 access methods ...
ca
parents: 494
diff changeset
   121
    groupSizes := something.!
7e0f62d9bc47 access methods ...
ca
parents: 494
diff changeset
   122
584
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   123
labelAt:anIndex
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   124
    "gets the label of the menu item at the given index or nil
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   125
    "
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   126
    |item|
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   127
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   128
    (item := self menuItemAt:anIndex) notNil ifTrue:[
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   129
        ^ item label
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   130
    ].
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   131
  ^ nil
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   132
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   133
!
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   134
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   135
labelAtValue:aValue
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   136
    "gets the label of the menu item assigned to value
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   137
    "
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   138
    |item|
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   139
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   140
    item := self menuAndSubmenusDetectItem:[:anItem| anItem value == aValue ].
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   141
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   142
    item notNil ifTrue:[
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   143
        ^ item label
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   144
    ].
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   145
  ^ nil
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   146
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   147
!
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   148
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
labels
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    "return a collection of labels from my items"
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    ^ items collect:[:anItem | anItem label]
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    "Created: 25.2.1997 / 19:47:53 / cg"
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
!
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
489
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   157
lines
579
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   158
    "Answer the indexes of the menu items that are the last menu item in their group (except the very last)."
489
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   159
579
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   160
    | lines |
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   161
    groupSizes size <= 1 ifTrue: [^Array new].
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   162
    lines := Array new: groupSizes size - 1.
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   163
    lines at: 1 put: groupSizes first.
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   164
    2 to: groupSizes size -1 do: 
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   165
            [:i |
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   166
            lines at: i put: (lines at: i - 1) + (groupSizes at: i)].
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   167
    ^lines
489
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   168
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   169
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   170
!
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   171
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   172
menuItemAt:index
584
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   173
    "gets the menu item at the given index. When the index is out of bounds
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   174
     nil is returned
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   175
    "
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   176
    (index > 0 and:[index <= items size]) ifTrue:[
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   177
        ^ items at:index
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   178
    ].
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   179
  ^ nil
489
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   180
!
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   181
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   182
menuItems
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   183
    ^ items
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   184
!
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   185
610
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
   186
menuItems:aCollectionOfMenuItems menuItemGroups:sizes values:values
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
    items := aCollectionOfMenuItems.
579
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   188
    groupSizes := sizes.
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
579
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   190
    values notNil ifTrue:[
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   191
        items with:values do:[:anItem :aValue |anItem value:aValue]
454
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   192
    ].
610
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
   193
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
   194
    "Modified: 20.6.1997 / 10:45:30 / cg"
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
!
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
494
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   197
numberOfItems
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   198
    ^ items size
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   199
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   200
    "Created: 6.3.1997 / 15:15:53 / cg"
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   201
!
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   202
579
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   203
receiver
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   204
    "return the value of the instance variable 'receiver' (automatically generated)"
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   205
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   206
    ^ receiver!
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   207
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   208
receiver:something
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   209
    "set the value of the instance variable 'receiver' (automatically generated)"
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   210
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   211
    receiver := something.!
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   212
696
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   213
removeItem:aMenuItem
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   214
    |idx|
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   215
    items notNil ifTrue:[
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   216
        idx := items identityIndexOf:aMenuItem.
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   217
        idx ~~ 0 ifTrue:[
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   218
            items removeAtIndex:idx
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   219
        ]
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   220
    ].
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   221
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   222
    "Created: 13.9.1997 / 10:27:31 / cg"
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   223
!
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   224
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
valueAt:index
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
    "return a collection of values from my items"
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
    ^ (items at:index) value
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    "Created: 25.2.1997 / 19:49:41 / cg"
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
!
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
494
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   233
valueAt:anIndex put:aValue
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   234
    "put value an an index"
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   235
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   236
    (items at:anIndex) value:aValue
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   237
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   238
    "Created: 6.3.1997 / 15:15:48 / cg"
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   239
!
ce8c074d5e6b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 489
diff changeset
   240
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
values
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
    "return a collection of values from my items"
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
    ^ items collect:[:anItem | anItem value]
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
    "Created: 25.2.1997 / 19:49:29 / cg"
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
! !
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
582
94f55f6a8bad support of ResourceRetriver
ca
parents: 579
diff changeset
   249
!Menu methodsFor:'accessing resource'!
94f55f6a8bad support of ResourceRetriver
ca
parents: 579
diff changeset
   250
584
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   251
findGuiResourcesIn:aResourceContainerOrApplication
582
94f55f6a8bad support of ResourceRetriver
ca
parents: 579
diff changeset
   252
    "setup a resource owner
94f55f6a8bad support of ResourceRetriver
ca
parents: 579
diff changeset
   253
    "
584
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   254
    aResourceContainerOrApplication notNil ifTrue:[
582
94f55f6a8bad support of ResourceRetriver
ca
parents: 579
diff changeset
   255
        items notNil ifTrue:[
584
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   256
            items do:[:anItem| anItem findGuiResourcesIn:aResourceContainerOrApplication ]
582
94f55f6a8bad support of ResourceRetriver
ca
parents: 579
diff changeset
   257
        ]
94f55f6a8bad support of ResourceRetriver
ca
parents: 579
diff changeset
   258
    ]
94f55f6a8bad support of ResourceRetriver
ca
parents: 579
diff changeset
   259
94f55f6a8bad support of ResourceRetriver
ca
parents: 579
diff changeset
   260
! !
94f55f6a8bad support of ResourceRetriver
ca
parents: 579
diff changeset
   261
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
!Menu methodsFor:'converting'!
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
fromLiteralArrayEncoding:aLiteralEncodedArray
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
    "read my contents from a aLiteralEncodedArray"
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
    |items groups values|
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
    items := (aLiteralEncodedArray at:2) collect:[:item | item decodeAsLiteralArray].
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
    groups := aLiteralEncodedArray at:3.
452
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   271
    values := aLiteralEncodedArray at:4.
610
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
   272
    self menuItems:items menuItemGroups:groups values:values.
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
    "extract from PD folder.st:
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
     #(#Menu #(
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
                #(#MenuItem 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
                        #rawLabel: 'left' 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
                        #value: #left ) 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
                #(#MenuItem 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
                        #rawLabel: 'center' 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
                        #value: #center ) 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
                #(#MenuItem 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
                        #rawLabel: 'right' 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
                        #value: #right ) 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
              ) 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
             #(3 ) 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
             nil 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
       ) decodeAsLiteralArray
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
    "
452
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   290
    "
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   291
     #(#Menu #(
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   292
                #(#MenuItem 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   293
                        #label: 'Straighten Up' ) 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   294
                #(#MenuItem 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   295
                        #label: 'Inspect' ) 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   296
                #(#MenuItem 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   297
                        #label: 'Coredump' ) 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   298
              ) 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   299
             #(3 ) 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   300
            #(#straightenUp #inspect #halt ) 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   301
       ) decodeAsLiteralArray startUp  
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   302
    "
457
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   303
454
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   304
    "extract from iconicBrowser.st:
452
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   305
     #(#Menu #(
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   306
                #(#MenuItem 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   307
                        #label: 'Straighten Up' ) 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   308
                #(#MenuItem 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   309
                        #label: 'Inspect' ) 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   310
                #(#MenuItem 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   311
                        #label: 'Coredump' ) 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   312
              ) 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   313
             #(3 ) 
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   314
             #(1 2 3 )
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   315
       ) decodeAsLiteralArray startUp  
b708d60b96b4 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 451
diff changeset
   316
    "
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
454
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   318
    "extract from refactory213.st:
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   319
     #(#Menu #(
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   320
                #(#MenuItem 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   321
                    #label: 'File List' 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   322
                    #accessCharacterPosition: 1 ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   323
                #(#MenuItem #label: 'File Editor...' 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   324
                    #accessCharacterPosition: 6 ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   325
                #(#MenuItem #label: 'Refactoring Tool...' 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   326
                    #accessCharacterPosition: 1 ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   327
                #(#MenuItem #label: 'Workspace' 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   328
                    #accessCharacterPosition: 1 ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   329
                #(#MenuItem #label: 'New Canvas' 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   330
                    #accessCharacterPosition: 1 ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   331
                #(#MenuItem #label: 'Palette' 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   332
                    #accessCharacterPosition: 1 ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   333
                #(#MenuItem #label: 'Canvas Tool' 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   334
                    #accessCharacterPosition: 1 ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   335
                #(#MenuItem #label: 'Image Editor' 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   336
                    #accessCharacterPosition: 1 ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   337
                #(#MenuItem #label: 'Menu Editor' 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   338
                    #accessCharacterPosition: 1 ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   339
                #(#MenuItem #label: 'Advanced' 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   340
                    #accessCharacterPosition: 1 ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   341
                #(#MenuItem #label: 'DLL and C Connect' 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   342
                    #accessCharacterPosition: 1 ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   343
                #(#MenuItem #label: 'System Transcript' 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   344
                    #accessCharacterPosition: 8 ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   345
              ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   346
              #(4 5 2 1 ) 
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   347
              #(#openFileList #openFileEditor #openRefactoringTool #toolsNewWorkspace #toolsNewCanvas #toolsPalette #toolsCanvasTool #toolsMaskEditor #toolsMenuEditor nil #openExternalFinder #toggleSystemTranscript ) 
456
4eea9046617a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 454
diff changeset
   348
        ) decodeAsLiteralArray startUp
454
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   349
    "
539b7c318760 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 452
diff changeset
   350
457
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   351
    "submenus:
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   352
     #(#Menu #(
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   353
                #(#MenuItem 
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   354
                        #label: 'Foo' 
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   355
                        #submenu: #(#Menu #(
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   356
                                            #(#MenuItem #label: 'foo 1')     
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   357
                                            #(#MenuItem #label: 'foo 2')     
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   358
                                          )
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   359
                                          nil
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   360
                                          #(11 22)
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   361
                                   )     
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   362
                 ) 
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   363
                #(#MenuItem 
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   364
                        #label: 'Inspect' ) 
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   365
                #(#MenuItem 
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   366
                        #label: 'Coredump' ) 
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   367
              ) 
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   368
             #(3 ) 
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   369
             #(1 2 3 )
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   370
       ) decodeAsLiteralArray startUp  
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   371
    "
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   372
610
72dbf392e888 ST80 compatible inst creation method..
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
   373
    "Modified: 20.6.1997 / 10:45:51 / cg"
489
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   374
!
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   375
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   376
literalArrayEncoding
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   377
    "return myself encoded as a literal array"
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   378
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   379
    |coll|
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   380
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   381
    coll := OrderedCollection new.
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   382
    coll add:#Menu.
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   383
    coll add:(items literalArrayEncoding).
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   384
    coll add:(groupSizes literalArrayEncoding).
264ba86c52c1 checkin from browser
ca
parents: 457
diff changeset
   385
    coll add:nil.
579
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   386
  ^ coll asArray
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
! !
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
584
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   389
!Menu methodsFor:'enumerating'!
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   390
665
9e8b4bc9fedb enumerating:
ca
parents: 627
diff changeset
   391
allItemsDo:aOneArgBlock
9e8b4bc9fedb enumerating:
ca
parents: 627
diff changeset
   392
    "evaluate block on each item and submenu items
9e8b4bc9fedb enumerating:
ca
parents: 627
diff changeset
   393
    "
9e8b4bc9fedb enumerating:
ca
parents: 627
diff changeset
   394
    self itemsDo:[:anItem|
9e8b4bc9fedb enumerating:
ca
parents: 627
diff changeset
   395
        aOneArgBlock value:anItem.
9e8b4bc9fedb enumerating:
ca
parents: 627
diff changeset
   396
        anItem submenu notNil ifTrue:[
9e8b4bc9fedb enumerating:
ca
parents: 627
diff changeset
   397
            anItem submenu itemsDo:aOneArgBlock
9e8b4bc9fedb enumerating:
ca
parents: 627
diff changeset
   398
        ]
9e8b4bc9fedb enumerating:
ca
parents: 627
diff changeset
   399
    ]
9e8b4bc9fedb enumerating:
ca
parents: 627
diff changeset
   400
!
9e8b4bc9fedb enumerating:
ca
parents: 627
diff changeset
   401
589
cc422fe7824f ST-80 compatibility; enumerating & indication
ca
parents: 584
diff changeset
   402
itemsDo:aOneArgBlock
cc422fe7824f ST-80 compatibility; enumerating & indication
ca
parents: 584
diff changeset
   403
    "evaluate the block for each item in the current menu
cc422fe7824f ST-80 compatibility; enumerating & indication
ca
parents: 584
diff changeset
   404
    "
cc422fe7824f ST-80 compatibility; enumerating & indication
ca
parents: 584
diff changeset
   405
    items notNil ifTrue:[items do:aOneArgBlock]
cc422fe7824f ST-80 compatibility; enumerating & indication
ca
parents: 584
diff changeset
   406
!
cc422fe7824f ST-80 compatibility; enumerating & indication
ca
parents: 584
diff changeset
   407
584
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   408
menuAndSubmenusDetectItem:aOneArgBlock
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   409
    "evaluate the block for each item in the current menu and all
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   410
     submenus. In case that the block returns a non nil argument,
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   411
     the item will be returned
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   412
    "
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   413
    |sm item|
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   414
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   415
    items notNil ifTrue:[
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   416
        items do:[:anItem|
627
07c9a1c2d226 menuAndSubmenusDetectItem:aOneArgBlock
ca
parents: 610
diff changeset
   417
            (aOneArgBlock value:anItem) ifTrue:[
584
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   418
                ^ anItem
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   419
            ].
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   420
            (sm := anItem submenu) notNil ifTrue:[
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   421
                item := anItem submenu menuAndSubmenusDetectItem:aOneArgBlock.
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   422
                item notNil ifTrue:[
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   423
                    ^ item
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   424
                ]
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   425
            ]
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   426
        ]
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   427
    ].
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   428
  ^ nil
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   429
! !
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   430
672
2db4bb41aa93 added dummy #destroy (q&d hack)
Claus Gittinger <cg@exept.de>
parents: 665
diff changeset
   431
!Menu methodsFor:'kludged fixes'!
2db4bb41aa93 added dummy #destroy (q&d hack)
Claus Gittinger <cg@exept.de>
parents: 665
diff changeset
   432
2db4bb41aa93 added dummy #destroy (q&d hack)
Claus Gittinger <cg@exept.de>
parents: 665
diff changeset
   433
destroy
2db4bb41aa93 added dummy #destroy (q&d hack)
Claus Gittinger <cg@exept.de>
parents: 665
diff changeset
   434
2db4bb41aa93 added dummy #destroy (q&d hack)
Claus Gittinger <cg@exept.de>
parents: 665
diff changeset
   435
    "Created: 28.7.1997 / 10:16:52 / cg"
2db4bb41aa93 added dummy #destroy (q&d hack)
Claus Gittinger <cg@exept.de>
parents: 665
diff changeset
   436
! !
2db4bb41aa93 added dummy #destroy (q&d hack)
Claus Gittinger <cg@exept.de>
parents: 665
diff changeset
   437
584
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   438
!Menu methodsFor:'menu items'!
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   439
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   440
someMenuItemWithValue:aValue
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   441
    "get the menu item assigned with the value; in case that the value
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   442
     is not found nil is returned
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   443
    "
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   444
    ^ self someMenuItemWithValue:aValue ifNone:nil
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   445
!
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   446
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   447
someMenuItemWithValue:aValue ifNone:exceptionBlock
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   448
    "get the menu item assigned with the value; in case that the value
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   449
     is not found, the given exceptionBlock is executed and returned
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   450
    "
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   451
    |item|
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   452
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   453
    item := self menuAndSubmenusDetectItem:[:anItem| anItem value == aValue].
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   454
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   455
    item notNil ifTrue:[
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   456
        ^ item
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   457
    ].
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   458
  ^ exceptionBlock value
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   459
! !
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   460
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   461
!Menu methodsFor:'queries'!
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   462
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   463
hasSubMenuAt:anIndex
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   464
    "test whether the menu item at the given index has a submenu
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   465
    "
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   466
    ^ (self menuItemAt:anIndex) hasSubmenu
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   467
! !
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   468
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
!Menu methodsFor:'startup'!
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
startUp
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   472
    "display the menu as a popUp; return the value associated with the
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   473
     selected item, 0 if none was selected"
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
584
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   475
    |menu result|
457
19f2c28e4adb checkin from browser
Claus Gittinger <cg@exept.de>
parents: 456
diff changeset
   476
579
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   477
    menu := MenuPanel menu:self.
584
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   478
    result := menu startUp.
9a4c30f7586f ST-80 compatible features addded
ca
parents: 582
diff changeset
   479
  ^ result ? 0
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   480
579
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   481
"   
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
        |m|
579
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   483
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
        m := #(#Menu #(
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
                        #(#MenuItem 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
                                #rawLabel: 'left' 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
                                #value: #left ) 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
                        #(#MenuItem 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
                                #rawLabel: 'center' 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
                                #value: #center ) 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
                        #(#MenuItem 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
                                #rawLabel: 'right' 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
                                #value: #right ) ) 
579
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   494
                 #(2) 
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
                nil 
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
        ) decodeAsLiteralArray.
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
579
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   498
      Transcript showCR:(m startUp)        
77f6d490f1ac so far, so good
ca
parents: 578
diff changeset
   499
"
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
! !
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   501
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   502
!Menu class methodsFor:'documentation'!
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   504
version
696
a49928754789 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 679
diff changeset
   505
    ^ '$Header: /cvs/stx/stx/libview2/Menu.st,v 1.18 1997-09-15 20:25:21 cg Exp $'
451
95064b26ded1 intitial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   506
! !