A new version of TraitEditor was added to project SystemEditor: http://www.squeaksource.com/SystemEditor/TraitEditor-mtf.13.mcz
==================== Summary ====================
Name: TraitEditor-mtf.13 Author: mtf Time: 29 October 2008, 11:00:10 pm UUID: b8c20879-a3f0-48a1-9a19-72fe7fce711d Ancestors: TraitEditor-mtf.12
filled in more about TraitComposition building
=============== Diff against TraitEditor-mtf.12 ===============
Item was added: + ----- Method: TraitCompositionEditor>>assertValidUser: (in category 'reflecting') ----- + assertValidUser: anEditor + "Assert that this trait composition set for aBehavior + does not introduce a cycle." + + self allTraitsOrEditorsDo: [:trait | trait == anEditor ifTrue: [ + TraitCompositionException signal: 'Cycle in compositions: The composition (in)directly includes this trait!!']]!
Item was added: + ----- Method: TraitCompositionDecorator>>traitComposition (in category 'accessing') ----- + traitComposition + ^ editor traitComposition!
Item was changed: ----- Method: PureBehaviorEditor>>traitComposition: (in category '*TraitEditor') ----- traitComposition: aTraitCompositionOrCollection + self edInvalidateTrait. - self decorateWith: TraitCompositionDecorator. self propertyAt: #traitComposition put: aTraitCompositionOrCollection!
Item was added: + ----- Method: TraitTransformationEditor class>>from: (in category 'instance creation') ----- + from: aTraitTransformation + ^ self new from: aTraitTransformation!
Item was changed: ----- Method: ClassEditor>>subclass:uses:instanceVariableNames:classVariableNames:poolDictionaries:category: (in category '*TraitEditor') ----- subclass: aSymbol uses: traitComposition instanceVariableNames: instString classVariableNames: classString poolDictionaries: poolString category: categoryString ^ self subclass: aSymbol instanceVariableNames: instString classVariableNames: classString poolDictionaries: poolString category: categoryString; + setTraitCompositionFrom: traitComposition; - traitComposition: traitComposition; yourself !
Item was added: + ----- Method: PureBehaviorEditor>>setTraitCompositionFrom: (in category '*TraitEditor') ----- + setTraitCompositionFrom: aTraitCompositionExpression + self setTraitComposition: aTraitCompositionExpression asTraitCompositionEditor!
Item was added: + AbstractEditor subclass: #TraitTransformationEditor + instanceVariableNames: 'transformation' + classVariableNames: '' + poolDictionaries: '' + category: 'TraitEditor'! + + !TraitTransformationEditor commentStamp: 'mtf 10/24/2008 21:43' prior: 0! + I am a minimal wrapper around a TraitTransformation to support building. I have no subject!
Item was changed: ----- Method: TraitEditor class>>named:uses:category:env: (in category 'instance creation') ----- named: aName uses: aTraitCompositionOrCollection category: aCategory env: anEnvironment ^ (self named: aName for: anEnvironment) + setTraitCompositionFrom: aTraitCompositionOrCollection; - traitComposition: aTraitCompositionOrCollection; category: aCategory; yourself!
Item was added: + ----- Method: TraitCompositionEditor>>allTraitsOrEditorsDo: (in category 'accessing') ----- + allTraitsOrEditorsDo: aBlock + transformations do: [:transformation | | trait | + trait := self system classOrEditorFor: transformation trait. + aBlock value: trait. + trait hasTraitComposition + ifTrue: [trait traitComposition allTraitsOrEditorsDo: aBlock]]!
Item was added: + ----- Method: TraitCompositionEditor>>from: (in category 'accessing') ----- + from: aTraitComposition + "Initializes my transformations from aTraitComposition" + transformations := aTraitComposition transformations + collect: [:ea | ea copyTraitExpression]!
Item was added: + ----- Method: TraitTransformationEditor>>from: (in category 'initialize-release') ----- + from: aTraitTransformation + transformation := aTraitTransformation copyTraitExpression!
Item was changed: ----- Method: TraitCompositionDecorator>>edBuild (in category 'building') ----- edBuild + editor product traitComposition: self traitComposition edBuild. + self traitComposition edApplyChanges. + self applyChangesOfNewTraitCompositionReplacing: self subject.! - ^ self traitCompositionDo: [:comp | comp edBuild]!
Item was added: + ----- Method: TraitCompositionDecorator>>validate (in category 'validating') ----- + validate + ^ self traitComposition assertValidUser: editor!
Item was added: + ----- Method: PureBehaviorEditor>>edInvalidateTrait (in category '*TraitEditor') ----- + edInvalidateTrait + "Mark myself as having had a trait modified" + + self decorateWith: TraitCompositionDecorator!
Item was changed: ----- Method: TraitTransformation>>asTraitCompositionEditor (in category '*TraitEditor') ----- asTraitCompositionEditor + ^TraitCompositionEditor with: (TraitTransformationEditor from: self)! - ^TraitCompositionEditor with: self!
Item was added: + ----- Method: TraitDescriptionEditor>>edExpand (in category 'building') ----- + edExpand + | users | + users := self users collect: [:ea | ea theNonMetaClass]. + users do: [:ea | ea edInvalidateTrait]. + ^ users!
Item was changed: ----- Method: PureBehaviorEditor>>traitComposition (in category '*TraitEditor') ----- traitComposition "Answers an editor on my traitComposition, creating it if necessary"
^ self propertyAt: #traitComposition + ifAbsentPut: [self edInvalidateTrait. - ifAbsentPut: [self decorateWith: TraitCompositionDecorator. TraitCompositionEditor on: (self subject ifNotNil: [self subject traitComposition]) for: self]!
Item was changed: ----- Method: PureBehaviorEditor>>setTraitComposition: (in category '*TraitEditor') ----- setTraitComposition: aTraitComposition | oldComposition | (self hasTraitComposition not and: [aTraitComposition isEmpty]) ifTrue: [^self]. - aTraitComposition assertValidUser: self.
+ aTraitComposition + setSubject: (self subject ifNotNil: [self subject traitComposition]) + parent: self. - oldComposition := self traitComposition. self traitComposition: aTraitComposition. - self applyChangesOfNewTraitCompositionReplacing: oldComposition. oldComposition traits do: [:each | each removeUser: self]. aTraitComposition traits do: [:each | each addUser: self]!
Item was removed: - ----- Method: TraitDescriptionEditor>>edExpandEditors (in category 'building') ----- - edExpandEditors - | users | - users := self users collect: [:ea | ea theNonMetaClass]. - users do: [:ea | ea edTraitModified]. - ^ users!
Item was removed: - ----- Method: TraitDescriptionEditor>>validate (in category 'validating') ----- - validate - "Nothing to validate. Do nothing"!
Item was removed: - ----- Method: PureBehaviorEditor>>edTraitModified (in category '*TraitEditor') ----- - edTraitModified - "Mark myself as having had a trait modified" - - self decorateWith: TraitCompositionDecorator!
packages@lists.squeakfoundation.org