ListSpecEditor.st
author tz
Thu, 05 Mar 1998 23:56:53 +0100
changeset 859 5d6a438f84d0
parent 843 855bc1495dd9
child 864 d1637e8e1be1
permissions -rw-r--r--
docu call changed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
836
518535156853 initial checkin
tz
parents:
diff changeset
     1
ToolApplicationModel subclass:#ListSpecEditor
518535156853 initial checkin
tz
parents:
diff changeset
     2
	instanceVariableNames:'modified aspects specClass specSelector tabSelection hasSaved'
518535156853 initial checkin
tz
parents:
diff changeset
     3
	classVariableNames:''
518535156853 initial checkin
tz
parents:
diff changeset
     4
	poolDictionaries:''
518535156853 initial checkin
tz
parents:
diff changeset
     5
	category:'Interface-Framework'
518535156853 initial checkin
tz
parents:
diff changeset
     6
!
518535156853 initial checkin
tz
parents:
diff changeset
     7
837
f47240241875 checkin from browser
tz
parents: 836
diff changeset
     8
!ListSpecEditor class methodsFor:'documentation'!
f47240241875 checkin from browser
tz
parents: 836
diff changeset
     9
f47240241875 checkin from browser
tz
parents: 836
diff changeset
    10
documentation
f47240241875 checkin from browser
tz
parents: 836
diff changeset
    11
"
f47240241875 checkin from browser
tz
parents: 836
diff changeset
    12
    Abstract super class for the MenuEditor, DataSetBuilder, 
f47240241875 checkin from browser
tz
parents: 836
diff changeset
    13
    HierarchicalListEditor, and the TabListEditor.
f47240241875 checkin from browser
tz
parents: 836
diff changeset
    14
f47240241875 checkin from browser
tz
parents: 836
diff changeset
    15
    [author:]
f47240241875 checkin from browser
tz
parents: 836
diff changeset
    16
         Thomas Zwick
f47240241875 checkin from browser
tz
parents: 836
diff changeset
    17
"
f47240241875 checkin from browser
tz
parents: 836
diff changeset
    18
! !
836
518535156853 initial checkin
tz
parents:
diff changeset
    19
518535156853 initial checkin
tz
parents:
diff changeset
    20
!ListSpecEditor class methodsFor:'accessing'!
518535156853 initial checkin
tz
parents:
diff changeset
    21
518535156853 initial checkin
tz
parents:
diff changeset
    22
resourceType
518535156853 initial checkin
tz
parents:
diff changeset
    23
518535156853 initial checkin
tz
parents:
diff changeset
    24
    ^#list
518535156853 initial checkin
tz
parents:
diff changeset
    25
! !
518535156853 initial checkin
tz
parents:
diff changeset
    26
518535156853 initial checkin
tz
parents:
diff changeset
    27
!ListSpecEditor class methodsFor:'aspects'!
518535156853 initial checkin
tz
parents:
diff changeset
    28
518535156853 initial checkin
tz
parents:
diff changeset
    29
aspects
518535156853 initial checkin
tz
parents:
diff changeset
    30
518535156853 initial checkin
tz
parents:
diff changeset
    31
    ^#()
518535156853 initial checkin
tz
parents:
diff changeset
    32
! !
518535156853 initial checkin
tz
parents:
diff changeset
    33
518535156853 initial checkin
tz
parents:
diff changeset
    34
!ListSpecEditor methodsFor:'accessing'!
518535156853 initial checkin
tz
parents:
diff changeset
    35
839
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
    36
modified       
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
    37
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
    38
    ^modified
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
    39
!
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
    40
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
    41
modified: aBoolean         
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
    42
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
    43
    modified := aBoolean
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
    44
!
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
    45
836
518535156853 initial checkin
tz
parents:
diff changeset
    46
specClass
518535156853 initial checkin
tz
parents:
diff changeset
    47
518535156853 initial checkin
tz
parents:
diff changeset
    48
    ^specClass
518535156853 initial checkin
tz
parents:
diff changeset
    49
!
518535156853 initial checkin
tz
parents:
diff changeset
    50
518535156853 initial checkin
tz
parents:
diff changeset
    51
specClass:aClass
518535156853 initial checkin
tz
parents:
diff changeset
    52
518535156853 initial checkin
tz
parents:
diff changeset
    53
    aClass isBehavior ifTrue:[specClass := aClass name]
518535156853 initial checkin
tz
parents:
diff changeset
    54
                     ifFalse:[specClass := aClass]
518535156853 initial checkin
tz
parents:
diff changeset
    55
!
518535156853 initial checkin
tz
parents:
diff changeset
    56
518535156853 initial checkin
tz
parents:
diff changeset
    57
specSelector
518535156853 initial checkin
tz
parents:
diff changeset
    58
518535156853 initial checkin
tz
parents:
diff changeset
    59
    ^specSelector
518535156853 initial checkin
tz
parents:
diff changeset
    60
518535156853 initial checkin
tz
parents:
diff changeset
    61
!
518535156853 initial checkin
tz
parents:
diff changeset
    62
518535156853 initial checkin
tz
parents:
diff changeset
    63
specSelector:aSelector
518535156853 initial checkin
tz
parents:
diff changeset
    64
518535156853 initial checkin
tz
parents:
diff changeset
    65
    specSelector := aSelector
518535156853 initial checkin
tz
parents:
diff changeset
    66
! !
518535156853 initial checkin
tz
parents:
diff changeset
    67
518535156853 initial checkin
tz
parents:
diff changeset
    68
!ListSpecEditor methodsFor:'aspects'!
518535156853 initial checkin
tz
parents:
diff changeset
    69
518535156853 initial checkin
tz
parents:
diff changeset
    70
aspectFor:aKey
518535156853 initial checkin
tz
parents:
diff changeset
    71
    "returns aspect for a key or nil"
518535156853 initial checkin
tz
parents:
diff changeset
    72
518535156853 initial checkin
tz
parents:
diff changeset
    73
    ^aspects at: aKey ifAbsent: [super aspectFor:aKey]
518535156853 initial checkin
tz
parents:
diff changeset
    74
518535156853 initial checkin
tz
parents:
diff changeset
    75
!
518535156853 initial checkin
tz
parents:
diff changeset
    76
518535156853 initial checkin
tz
parents:
diff changeset
    77
tabModel
518535156853 initial checkin
tz
parents:
diff changeset
    78
518535156853 initial checkin
tz
parents:
diff changeset
    79
    |holder|
518535156853 initial checkin
tz
parents:
diff changeset
    80
    (holder := builder bindingAt:#tabModel) isNil ifTrue:[
518535156853 initial checkin
tz
parents:
diff changeset
    81
        holder := AspectAdaptor new subject:self; forAspect:#tabSelection.
518535156853 initial checkin
tz
parents:
diff changeset
    82
        builder aspectAt:#tabModel put:holder.
518535156853 initial checkin
tz
parents:
diff changeset
    83
    ].
518535156853 initial checkin
tz
parents:
diff changeset
    84
    ^ holder
518535156853 initial checkin
tz
parents:
diff changeset
    85
!
518535156853 initial checkin
tz
parents:
diff changeset
    86
518535156853 initial checkin
tz
parents:
diff changeset
    87
valueOfEnableMovingIn
518535156853 initial checkin
tz
parents:
diff changeset
    88
518535156853 initial checkin
tz
parents:
diff changeset
    89
    ^builder booleanValueAspectFor: #valueOfEnableMovingIn
518535156853 initial checkin
tz
parents:
diff changeset
    90
518535156853 initial checkin
tz
parents:
diff changeset
    91
518535156853 initial checkin
tz
parents:
diff changeset
    92
518535156853 initial checkin
tz
parents:
diff changeset
    93
!
518535156853 initial checkin
tz
parents:
diff changeset
    94
518535156853 initial checkin
tz
parents:
diff changeset
    95
valueOfEnableMovingOut
518535156853 initial checkin
tz
parents:
diff changeset
    96
518535156853 initial checkin
tz
parents:
diff changeset
    97
    ^builder booleanValueAspectFor: #valueOfEnableMovingOut
518535156853 initial checkin
tz
parents:
diff changeset
    98
518535156853 initial checkin
tz
parents:
diff changeset
    99
518535156853 initial checkin
tz
parents:
diff changeset
   100
518535156853 initial checkin
tz
parents:
diff changeset
   101
!
518535156853 initial checkin
tz
parents:
diff changeset
   102
518535156853 initial checkin
tz
parents:
diff changeset
   103
valueOfEnableMovingUpOrDown
518535156853 initial checkin
tz
parents:
diff changeset
   104
518535156853 initial checkin
tz
parents:
diff changeset
   105
    ^builder booleanValueAspectFor: #valueOfEnableMovingUpOrDown
518535156853 initial checkin
tz
parents:
diff changeset
   106
518535156853 initial checkin
tz
parents:
diff changeset
   107
518535156853 initial checkin
tz
parents:
diff changeset
   108
518535156853 initial checkin
tz
parents:
diff changeset
   109
518535156853 initial checkin
tz
parents:
diff changeset
   110
! !
518535156853 initial checkin
tz
parents:
diff changeset
   111
518535156853 initial checkin
tz
parents:
diff changeset
   112
!ListSpecEditor methodsFor:'change & update'!
518535156853 initial checkin
tz
parents:
diff changeset
   113
518535156853 initial checkin
tz
parents:
diff changeset
   114
update:something with:aParameter from:someObject
518535156853 initial checkin
tz
parents:
diff changeset
   115
    "one of my aspects has changed; update modified channel"
518535156853 initial checkin
tz
parents:
diff changeset
   116
837
f47240241875 checkin from browser
tz
parents: 836
diff changeset
   117
    self valueOfEnablingCommitButtons value: true 
836
518535156853 initial checkin
tz
parents:
diff changeset
   118
518535156853 initial checkin
tz
parents:
diff changeset
   119
! !
518535156853 initial checkin
tz
parents:
diff changeset
   120
518535156853 initial checkin
tz
parents:
diff changeset
   121
!ListSpecEditor methodsFor:'help'!
518535156853 initial checkin
tz
parents:
diff changeset
   122
518535156853 initial checkin
tz
parents:
diff changeset
   123
defaultInfoLabel
518535156853 initial checkin
tz
parents:
diff changeset
   124
841
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   125
    (specClass isSymbol and: [(Smalltalk at: specClass) isClass])
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   126
    ifTrue:
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   127
    [
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   128
        ^specClass, ' >> ', specSelector
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   129
    ].
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   130
    ^'No class defined'
836
518535156853 initial checkin
tz
parents:
diff changeset
   131
518535156853 initial checkin
tz
parents:
diff changeset
   132
! !
518535156853 initial checkin
tz
parents:
diff changeset
   133
518535156853 initial checkin
tz
parents:
diff changeset
   134
!ListSpecEditor methodsFor:'initialization'!
518535156853 initial checkin
tz
parents:
diff changeset
   135
518535156853 initial checkin
tz
parents:
diff changeset
   136
initialize
518535156853 initial checkin
tz
parents:
diff changeset
   137
518535156853 initial checkin
tz
parents:
diff changeset
   138
    super initialize.
518535156853 initial checkin
tz
parents:
diff changeset
   139
518535156853 initial checkin
tz
parents:
diff changeset
   140
    hasSaved := modified := false.
518535156853 initial checkin
tz
parents:
diff changeset
   141
    aspects  := IdentityDictionary new.
518535156853 initial checkin
tz
parents:
diff changeset
   142
    specSelector := self class resourceType.
518535156853 initial checkin
tz
parents:
diff changeset
   143
    tabSelection := 0.
518535156853 initial checkin
tz
parents:
diff changeset
   144
518535156853 initial checkin
tz
parents:
diff changeset
   145
    self class aspects do:
518535156853 initial checkin
tz
parents:
diff changeset
   146
    [:aKey|
518535156853 initial checkin
tz
parents:
diff changeset
   147
        |holder|
518535156853 initial checkin
tz
parents:
diff changeset
   148
        aspects at:aKey put: (holder := ValueHolder new).
518535156853 initial checkin
tz
parents:
diff changeset
   149
        holder addDependent: self
518535156853 initial checkin
tz
parents:
diff changeset
   150
    ].
518535156853 initial checkin
tz
parents:
diff changeset
   151
! !
518535156853 initial checkin
tz
parents:
diff changeset
   152
518535156853 initial checkin
tz
parents:
diff changeset
   153
!ListSpecEditor methodsFor:'private'!
518535156853 initial checkin
tz
parents:
diff changeset
   154
839
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   155
askForItemModification
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   156
    "ask for item modification"
836
518535156853 initial checkin
tz
parents:
diff changeset
   157
518535156853 initial checkin
tz
parents:
diff changeset
   158
    self valueOfEnablingCommitButtons value
518535156853 initial checkin
tz
parents:
diff changeset
   159
    ifTrue:
837
f47240241875 checkin from browser
tz
parents: 836
diff changeset
   160
    [          
836
518535156853 initial checkin
tz
parents:
diff changeset
   161
        ((YesNoBox title:'List item was modified!!\Save it?\' withCRs)        
518535156853 initial checkin
tz
parents:
diff changeset
   162
            noText:'No';
518535156853 initial checkin
tz
parents:
diff changeset
   163
            yesText:'Yes';
518535156853 initial checkin
tz
parents:
diff changeset
   164
            showAtPointer;
518535156853 initial checkin
tz
parents:
diff changeset
   165
            accepted) 
518535156853 initial checkin
tz
parents:
diff changeset
   166
        ifFalse: 
518535156853 initial checkin
tz
parents:
diff changeset
   167
        [
518535156853 initial checkin
tz
parents:
diff changeset
   168
            self valueOfEnablingCommitButtons value: false. 
518535156853 initial checkin
tz
parents:
diff changeset
   169
            modified := false.
518535156853 initial checkin
tz
parents:
diff changeset
   170
            ^true
518535156853 initial checkin
tz
parents:
diff changeset
   171
        ].
518535156853 initial checkin
tz
parents:
diff changeset
   172
        self accept
518535156853 initial checkin
tz
parents:
diff changeset
   173
    ].
518535156853 initial checkin
tz
parents:
diff changeset
   174
    ^true
518535156853 initial checkin
tz
parents:
diff changeset
   175
518535156853 initial checkin
tz
parents:
diff changeset
   176
!
518535156853 initial checkin
tz
parents:
diff changeset
   177
839
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   178
askForListModification
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   179
    "ask for list modification
840
d2ea06fcf92a ask correct modification before save as
tz
parents: 839
diff changeset
   180
    "       
836
518535156853 initial checkin
tz
parents:
diff changeset
   181
    modified
518535156853 initial checkin
tz
parents:
diff changeset
   182
    ifTrue:
518535156853 initial checkin
tz
parents:
diff changeset
   183
    [
518535156853 initial checkin
tz
parents:
diff changeset
   184
        ((YesNoBox title: 'List was modified!!')        
518535156853 initial checkin
tz
parents:
diff changeset
   185
            noText:'Cancel';
518535156853 initial checkin
tz
parents:
diff changeset
   186
            yesText:'Waste it and proceed';
518535156853 initial checkin
tz
parents:
diff changeset
   187
            showAtPointer;
518535156853 initial checkin
tz
parents:
diff changeset
   188
            accepted) ifFalse: [^false].
518535156853 initial checkin
tz
parents:
diff changeset
   189
        modified := false
518535156853 initial checkin
tz
parents:
diff changeset
   190
    ].
518535156853 initial checkin
tz
parents:
diff changeset
   191
    ^true
839
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   192
!
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   193
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   194
askForModification
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   195
    "ask in order for item and for list modification"
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   196
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   197
    ^self askForItemModification and: [self askForListModification]
836
518535156853 initial checkin
tz
parents:
diff changeset
   198
518535156853 initial checkin
tz
parents:
diff changeset
   199
!
518535156853 initial checkin
tz
parents:
diff changeset
   200
518535156853 initial checkin
tz
parents:
diff changeset
   201
resolveClassNamed
518535156853 initial checkin
tz
parents:
diff changeset
   202
    "returns current class or nil"
518535156853 initial checkin
tz
parents:
diff changeset
   203
518535156853 initial checkin
tz
parents:
diff changeset
   204
    ^Smalltalk resolveName:specClass inClass:self class
518535156853 initial checkin
tz
parents:
diff changeset
   205
!
518535156853 initial checkin
tz
parents:
diff changeset
   206
518535156853 initial checkin
tz
parents:
diff changeset
   207
resourceMessage: aString
518535156853 initial checkin
tz
parents:
diff changeset
   208
842
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   209
    (aString notNil and: [self askForModification]) 
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   210
    ifTrue:
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   211
    [            
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   212
        |msg cls sel|
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   213
        msg := aString asCollectionOfWords.
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   214
        (msg size == 2 and:
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   215
        [(cls := self resolveName:(msg at:1)) notNil])
839
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   216
        ifTrue:
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   217
        [
842
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   218
            specClass := cls name.
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   219
            specSelector := (msg at: 2) asSymbol.
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   220
            ^true
839
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   221
        ]
842
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   222
    ].
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   223
    ^false
836
518535156853 initial checkin
tz
parents:
diff changeset
   224
!
518535156853 initial checkin
tz
parents:
diff changeset
   225
518535156853 initial checkin
tz
parents:
diff changeset
   226
updateHistory
518535156853 initial checkin
tz
parents:
diff changeset
   227
518535156853 initial checkin
tz
parents:
diff changeset
   228
    |cls|             
518535156853 initial checkin
tz
parents:
diff changeset
   229
    ((cls := self resolveClassNamed) notNil and: [cls class implements: specSelector])
518535156853 initial checkin
tz
parents:
diff changeset
   230
    ifTrue:
518535156853 initial checkin
tz
parents:
diff changeset
   231
    [
518535156853 initial checkin
tz
parents:
diff changeset
   232
        |className message|
518535156853 initial checkin
tz
parents:
diff changeset
   233
        specClass isClass  ifTrue: [className := specClass name].
518535156853 initial checkin
tz
parents:
diff changeset
   234
        specClass isString ifTrue: [className := specClass].
518535156853 initial checkin
tz
parents:
diff changeset
   235
        message := className, ' ', specSelector.
518535156853 initial checkin
tz
parents:
diff changeset
   236
        self addToHistory: message -> #loadFromMessage:
518535156853 initial checkin
tz
parents:
diff changeset
   237
    ]
518535156853 initial checkin
tz
parents:
diff changeset
   238
! !
518535156853 initial checkin
tz
parents:
diff changeset
   239
518535156853 initial checkin
tz
parents:
diff changeset
   240
!ListSpecEditor methodsFor:'queries'!
518535156853 initial checkin
tz
parents:
diff changeset
   241
837
f47240241875 checkin from browser
tz
parents: 836
diff changeset
   242
didInstall
f47240241875 checkin from browser
tz
parents: 836
diff changeset
   243
    "returns true if list has saved"
f47240241875 checkin from browser
tz
parents: 836
diff changeset
   244
f47240241875 checkin from browser
tz
parents: 836
diff changeset
   245
    ^hasSaved
f47240241875 checkin from browser
tz
parents: 836
diff changeset
   246
f47240241875 checkin from browser
tz
parents: 836
diff changeset
   247
!
f47240241875 checkin from browser
tz
parents: 836
diff changeset
   248
836
518535156853 initial checkin
tz
parents:
diff changeset
   249
hasSaved
518535156853 initial checkin
tz
parents:
diff changeset
   250
    "returns true if list has saved"
518535156853 initial checkin
tz
parents:
diff changeset
   251
518535156853 initial checkin
tz
parents:
diff changeset
   252
    ^hasSaved
518535156853 initial checkin
tz
parents:
diff changeset
   253
518535156853 initial checkin
tz
parents:
diff changeset
   254
! !
518535156853 initial checkin
tz
parents:
diff changeset
   255
518535156853 initial checkin
tz
parents:
diff changeset
   256
!ListSpecEditor methodsFor:'selection'!
518535156853 initial checkin
tz
parents:
diff changeset
   257
518535156853 initial checkin
tz
parents:
diff changeset
   258
tabSelection
518535156853 initial checkin
tz
parents:
diff changeset
   259
    "returns selected tab index or 0"
518535156853 initial checkin
tz
parents:
diff changeset
   260
518535156853 initial checkin
tz
parents:
diff changeset
   261
    ^tabSelection
518535156853 initial checkin
tz
parents:
diff changeset
   262
518535156853 initial checkin
tz
parents:
diff changeset
   263
! !
518535156853 initial checkin
tz
parents:
diff changeset
   264
518535156853 initial checkin
tz
parents:
diff changeset
   265
!ListSpecEditor methodsFor:'startup / release'!
518535156853 initial checkin
tz
parents:
diff changeset
   266
518535156853 initial checkin
tz
parents:
diff changeset
   267
closeRequest
518535156853 initial checkin
tz
parents:
diff changeset
   268
    "close request"
518535156853 initial checkin
tz
parents:
diff changeset
   269
839
facc9a2103af modification dialog methods renamed
tz
parents: 837
diff changeset
   270
    self askForModification ifTrue: [super closeRequest]
836
518535156853 initial checkin
tz
parents:
diff changeset
   271
518535156853 initial checkin
tz
parents:
diff changeset
   272
!
518535156853 initial checkin
tz
parents:
diff changeset
   273
842
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   274
loadFromMessage:aString
836
518535156853 initial checkin
tz
parents:
diff changeset
   275
    "load a spec from class and selector
518535156853 initial checkin
tz
parents:
diff changeset
   276
    "
842
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   277
    (aString notNil and: [self askForModification]) 
841
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   278
    ifTrue:
842
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   279
    [            
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   280
        |msg cls sel|
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   281
        msg := aString asCollectionOfWords.
841
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   282
        (msg size == 2 and:
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   283
        [(cls := self resolveName:(msg at:1)) notNil and:
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   284
        [cls class implements: (sel := (msg at: 2) asSymbol)]])
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   285
        ifTrue:
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   286
        [
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   287
            specClass := cls name.
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   288
            specSelector := sel.
842
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   289
            self buildFromClass: specClass andSelector: specSelector.
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   290
            ^true
836
518535156853 initial checkin
tz
parents:
diff changeset
   291
        ]
842
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   292
    ].
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   293
    ^false
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   294
!
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   295
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   296
openModalOnClass:aClass andSelector:aSelector
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   297
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   298
    specClass := aClass isClass ifTrue: [aClass name] ifFalse: [aClass].
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   299
    specSelector := (aSelector ? specSelector) asSymbol.
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   300
    super openInterfaceModal.
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   301
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   302
!
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   303
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   304
openOnClass:aClass andSelector:aSelector
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   305
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   306
    specClass := aClass isClass ifTrue: [aClass name] ifFalse: [aClass].
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   307
    specSelector := (aSelector ? specSelector) asSymbol.
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   308
    super openInterface.
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   309
    self buildFromClass:aClass andSelector:aSelector.
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   310
!
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   311
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   312
postBuildWith:builder
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   313
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   314
    super postBuildWith:builder.
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   315
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   316
    self buildFromClass: specClass andSelector: specSelector
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   317
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   318
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   319
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   320
836
518535156853 initial checkin
tz
parents:
diff changeset
   321
! !
518535156853 initial checkin
tz
parents:
diff changeset
   322
518535156853 initial checkin
tz
parents:
diff changeset
   323
!ListSpecEditor methodsFor:'user actions'!
518535156853 initial checkin
tz
parents:
diff changeset
   324
841
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   325
accept
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   326
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   327
    self valueOfEnablingCommitButtons value:false.
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   328
    modified := true
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   329
!
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   330
836
518535156853 initial checkin
tz
parents:
diff changeset
   331
doBrowseClass
518535156853 initial checkin
tz
parents:
diff changeset
   332
    "browse class of list spec"
518535156853 initial checkin
tz
parents:
diff changeset
   333
518535156853 initial checkin
tz
parents:
diff changeset
   334
    |cls|
518535156853 initial checkin
tz
parents:
diff changeset
   335
518535156853 initial checkin
tz
parents:
diff changeset
   336
    (cls := self resolveClassNamed) notNil 
842
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   337
        ifTrue: [SystemBrowser openInClass:cls class selector: specSelector] 
836
518535156853 initial checkin
tz
parents:
diff changeset
   338
        ifFalse:[self information:'No class defined!!']
518535156853 initial checkin
tz
parents:
diff changeset
   339
!
518535156853 initial checkin
tz
parents:
diff changeset
   340
518535156853 initial checkin
tz
parents:
diff changeset
   341
doEditImage
518535156853 initial checkin
tz
parents:
diff changeset
   342
518535156853 initial checkin
tz
parents:
diff changeset
   343
    |cls resourceClass resourceSelector imageResourceMessage readStream|
518535156853 initial checkin
tz
parents:
diff changeset
   344
518535156853 initial checkin
tz
parents:
diff changeset
   345
    cls := self resolveName: specClass.
518535156853 initial checkin
tz
parents:
diff changeset
   346
    cls isNil ifTrue:[
518535156853 initial checkin
tz
parents:
diff changeset
   347
        ^ self information:'No valid class defined!!'.
518535156853 initial checkin
tz
parents:
diff changeset
   348
    ].
518535156853 initial checkin
tz
parents:
diff changeset
   349
    (aspects at:#icon) value size > 0
518535156853 initial checkin
tz
parents:
diff changeset
   350
        ifTrue:  [resourceSelector := (aspects at:#icon) value]
518535156853 initial checkin
tz
parents:
diff changeset
   351
        ifFalse: [resourceSelector := #stxIcon].
518535156853 initial checkin
tz
parents:
diff changeset
   352
    (aspects at:#retriever) value size > 0
518535156853 initial checkin
tz
parents:
diff changeset
   353
        ifTrue:  [resourceClass := (aspects at:#retriever) value]
518535156853 initial checkin
tz
parents:
diff changeset
   354
        ifFalse: [resourceClass := cls withAllSuperclasses detect: [:cls| cls class implements: resourceSelector] ifNone: [cls]].
518535156853 initial checkin
tz
parents:
diff changeset
   355
518535156853 initial checkin
tz
parents:
diff changeset
   356
    (imageResourceMessage := ImageEditor openModalOnClass: resourceClass andSelector: resourceSelector) notNil
518535156853 initial checkin
tz
parents:
diff changeset
   357
    ifTrue:
518535156853 initial checkin
tz
parents:
diff changeset
   358
    [
518535156853 initial checkin
tz
parents:
diff changeset
   359
        readStream := imageResourceMessage readStream.
518535156853 initial checkin
tz
parents:
diff changeset
   360
        resourceClass := (readStream upTo: $ ) asSymbol.
518535156853 initial checkin
tz
parents:
diff changeset
   361
        resourceSelector := readStream upToEnd asSymbol.
518535156853 initial checkin
tz
parents:
diff changeset
   362
        resourceClass size > 0 ifTrue: [(aspects at:#retriever) value: resourceClass].
518535156853 initial checkin
tz
parents:
diff changeset
   363
        resourceSelector size > 0 ifTrue: [(aspects at:#icon) value: resourceSelector. self valueOfEnablingCommitButtons value: true]
518535156853 initial checkin
tz
parents:
diff changeset
   364
    ]
518535156853 initial checkin
tz
parents:
diff changeset
   365
518535156853 initial checkin
tz
parents:
diff changeset
   366
518535156853 initial checkin
tz
parents:
diff changeset
   367
!
518535156853 initial checkin
tz
parents:
diff changeset
   368
518535156853 initial checkin
tz
parents:
diff changeset
   369
doLoad
518535156853 initial checkin
tz
parents:
diff changeset
   370
518535156853 initial checkin
tz
parents:
diff changeset
   371
    self loadFromMessage: 
518535156853 initial checkin
tz
parents:
diff changeset
   372
        (ResourceSelectionBrowser
518535156853 initial checkin
tz
parents:
diff changeset
   373
            request: 'Load From Class'
518535156853 initial checkin
tz
parents:
diff changeset
   374
            onSuperclass: nil
518535156853 initial checkin
tz
parents:
diff changeset
   375
            andClass: specClass
518535156853 initial checkin
tz
parents:
diff changeset
   376
            andSelector: specSelector
518535156853 initial checkin
tz
parents:
diff changeset
   377
            withResourceTypes: (Array with: self class resourceType))
518535156853 initial checkin
tz
parents:
diff changeset
   378
!
518535156853 initial checkin
tz
parents:
diff changeset
   379
841
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   380
doSave
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   381
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   382
    self askForItemModification.
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   383
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   384
    (specClass isNil or:[specSelector isNil]) ifTrue:[
843
855bc1495dd9 saving bug fixed
tz
parents: 842
diff changeset
   385
        self doSaveAs.
855bc1495dd9 saving bug fixed
tz
parents: 842
diff changeset
   386
        ^false
841
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   387
    ].
843
855bc1495dd9 saving bug fixed
tz
parents: 842
diff changeset
   388
    ^true
841
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   389
!
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   390
836
518535156853 initial checkin
tz
parents:
diff changeset
   391
doSaveAs
518535156853 initial checkin
tz
parents:
diff changeset
   392
840
d2ea06fcf92a ask correct modification before save as
tz
parents: 839
diff changeset
   393
    |resourceMessage|
d2ea06fcf92a ask correct modification before save as
tz
parents: 839
diff changeset
   394
    self askForItemModification.
d2ea06fcf92a ask correct modification before save as
tz
parents: 839
diff changeset
   395
    (resourceMessage := ResourceSelectionBrowser
841
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   396
            request: 'Save In Class'
836
518535156853 initial checkin
tz
parents:
diff changeset
   397
            onSuperclass: #Object
518535156853 initial checkin
tz
parents:
diff changeset
   398
            andClass: specClass
518535156853 initial checkin
tz
parents:
diff changeset
   399
            andSelector: specSelector
840
d2ea06fcf92a ask correct modification before save as
tz
parents: 839
diff changeset
   400
            withResourceTypes: (Array with: self class resourceType)) notNil
836
518535156853 initial checkin
tz
parents:
diff changeset
   401
    ifTrue:
841
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   402
    [  
840
d2ea06fcf92a ask correct modification before save as
tz
parents: 839
diff changeset
   403
        modified := false.
842
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   404
        (self resourceMessage: resourceMessage)
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   405
        ifTrue:
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   406
        [
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   407
            self doSave.
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   408
            self buildFromClass: specClass andSelector: specSelector.
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   409
            ^true
6f17d56a46e4 *** empty log message ***
tz
parents: 841
diff changeset
   410
        ]
843
855bc1495dd9 saving bug fixed
tz
parents: 842
diff changeset
   411
    ].
841
ebeaac717362 checkin from browser
tz
parents: 840
diff changeset
   412
    ^false
836
518535156853 initial checkin
tz
parents:
diff changeset
   413
! !
518535156853 initial checkin
tz
parents:
diff changeset
   414
518535156853 initial checkin
tz
parents:
diff changeset
   415
!ListSpecEditor class methodsFor:'documentation'!
518535156853 initial checkin
tz
parents:
diff changeset
   416
518535156853 initial checkin
tz
parents:
diff changeset
   417
version
843
855bc1495dd9 saving bug fixed
tz
parents: 842
diff changeset
   418
    ^ '$Header: /cvs/stx/stx/libview2/Attic/ListSpecEditor.st,v 1.7 1998-02-17 15:27:20 tz Exp $'
836
518535156853 initial checkin
tz
parents:
diff changeset
   419
! !