A new version of SystemEditor-Traits was added to project SystemEditor: http://www.squeaksource.com/SystemEditor/SystemEditor-Traits-mtf.16.mcz
==================== Summary ====================
Name: SystemEditor-Traits-mtf.16 Author: mtf Time: 19 November 2008, 2:24:39 pm UUID: 6f002f93-ad75-4909-b265-9876a0980938 Ancestors: SystemEditor-Traits-mtf.15
- For simplicity, treat TraitTransformations like an editor - Fixed the bug where traits updated SystemOrganization prior to commit time (in TraitEditor >> edBuild) - Fixed a typo in UserListDecorator - Fixed a typo in TraitCompositionEditor >> edDependentsDo
=============== Diff against SystemEditor-Traits-mtf.15 ===============
Item was added: + ----- Method: TraitCompositionEditor>>edBuild (in category 'building') ----- + edBuild + | result | + result := TraitComposition new. + transformations do: [:ea | result add: (ea edBuildIn: self system)]. + ^ result!
Item was added: + ----- Method: TraitExclusion>>edBuildIn: (in category '*systemeditor-traits') ----- + edBuildIn: aSystemEditor + "Adapted from #copyTraitExpression" + + ^ (super edBuildIn: aSystemEditor) + exclusions: self exclusions deepCopy; + yourself!
Item was added: + ----- Method: TraitTransformation>>edBuildIn: (in category '*systemeditor-traits') ----- + edBuildIn: aSystemEditor + "Adapted from #copyTraitExpression" + + ^self shallowCopy + subject: (self subject edBuildIn: aSystemEditor); + yourself!
Item was changed: ----- Method: UserListDecorator>>subject (in category 'accessing') ----- subject + ^ subject ifNil: [subject := parent subject ifNotNil: [parent subject users]]! - ^ subject ifNil: [subject := self parent subject ifNotNil: [self parent subject users]]!
Item was changed: ----- Method: UserListDecorator>>edBuild (in category 'building') ----- edBuild | result | result := self subject + ifNil: [IdentitySet new] - ifNil: [IdentityDictionary new] ifNotNil: [self subject users copy]. removals do: [:ea | result remove: ea product]. additions do: [:ea | result add: ea product]. ^ result!
Item was changed: ----- Method: TraitCompositionEditor>>edDependentsDo: (in category 'building') ----- edDependentsDo: aBlock "Updates and enumerates the TraitEditors whose users list needs to be updated"
| oldTraits editor | oldTraits := self subject ifNil: [IdentitySet new] ifNotNil: [self subject traits asIdentitySet]. self traitsOrEditorsDo: [:ea | ea edIsEditor + ifTrue: [ea addUser: parent. aBlock value: ea] - ifTrue: [ea addUser: self. aBlock value: ea] ifFalse: [oldTraits remove: ea ifAbsent: [editor := self system edEditorFor: ea. + editor addUser: parent. aBlock value: editor]]]. - editor addUser: self. aBlock value: editor]]]. oldTraits do: [:ea | editor := self system edEditorFor: ea. editor removeUser: self. aBlock value: editor]!
Item was changed: ----- Method: TraitEditor>>edBuild (in category 'building') ----- edBuild + product := Trait basicNew. + product name: self name. + + "category and environment are not set here. + category will be lazily computed sometime after + SystemEditor >> edRecatogorize runs. (see Class >> category) + environment can be left nil, since it has a default value" - product := Trait - named: self name - uses: #() - category: self category.
+ "Create a temporary MethodDictionary to catch code written by SyntaxError dialogs. MethodDictionaryEditor will overwrite this. See MethodEditor>>compileFor:" - "Create a temporary MethodDictionary to catch code written by SyntaxError dialogs. MethodDictionaryEditor will overwrite this. See MethodEditor>>compileFor:" product methodDictionary: MethodDictionary new.
product organization: self organization edBuild. self decoratorsDo: [:ea | ea edBuild].
product methodDictionary: (self methods buildFor: self). ^product!
Item was changed: AbstractEditor subclass: #TraitCompositionEditor instanceVariableNames: 'subject transformations parent' classVariableNames: '' poolDictionaries: '' category: 'SystemEditor-Traits'!
+ !TraitCompositionEditor commentStamp: 'mtf 11/7/2008 09:13' prior: 0! - !TraitCompositionEditor commentStamp: 'mtf 10/20/2008 11:22' prior: 0! I store the new version of a TraitComposition. I don't use any kind of diff between the subject and product. For now at least, I don't use a TraitTransformationEditor, but use plain TraitTransforms which include TraitEditors
+ Unlike most editors, I am not modifiable. Transient instances of myself are built and combined, and only then is one of them given a subject and environment. This is how TraitDescriptions work, so, that is how I work! - Unlike most editors, I am not persistent. Transient instances of myself are usually built, and only then is my subject and environment set. This is how TraitDescriptions work, so, that is how I work!
Item was changed: ----- Method: TraitCompositionDecorator>>edBuild (in category 'building') ----- edBuild editor product traitComposition: self traitComposition edBuild. + self traitComposition edApplyChanges.! - self traitComposition edApplyChanges. - self applyChangesOfNewTraitCompositionReplacing: self subject.!
Item was added: + ----- Method: TraitDescription>>edBuildIn: (in category '*systemeditor-traits') ----- + edBuildIn: aSystemEditor + "Adapted from #copyTraitExpression" + + ^ self!
Item was changed: ----- Method: TraitTransformation>>asTraitCompositionEditor (in category '*systemeditor-traits') ----- asTraitCompositionEditor + ^TraitCompositionEditor with: self! - ^TraitCompositionEditor with: (TraitTransformationEditor from: self)!
Item was added: + ----- Method: TraitDescriptionEditor>>edBuildIn: (in category 'building') ----- + edBuildIn: aSystemEditor + ^ self product!
Item was added: + ----- Method: TraitCompositionEditor>>edApplyChanges (in category 'building') ----- + edApplyChanges + "Change the method dictionary as appropriate" + self shouldBeImplemented. + true ifTrue: [^ self]. + TPureBehavior updateMethodDictionarySelector: self. + self applyChangesOfNewTraitCompositionReplacing: self subject.!
Item was added: + ----- Method: TraitAlias>>edBuildIn: (in category '*systemeditor-traits') ----- + edBuildIn: aSystemEditor + "Adapted from #copyTraitExpression" + + ^ (super edBuildIn: aSystemEditor) + aliases: self aliases deepCopy; + yourself!
Item was removed: - ----- Method: TraitTransformationEditor class>>from: (in category 'instance creation') ----- - from: aTraitTransformation - ^ self new from: aTraitTransformation!
Item was removed: - AbstractEditor subclass: #TraitTransformationEditor - instanceVariableNames: 'transformation' - classVariableNames: '' - poolDictionaries: '' - category: 'SystemEditor-Traits'! - - !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 removed: - ----- Method: TComposingDescription>>asTraitCompositionEditor (in category '*systemeditor-traits') ----- - asTraitCompositionEditor - ^TraitCompositionEditor with: self!
Item was removed: - ----- Method: TraitTransformationEditor>>from: (in category 'initialize-release') ----- - from: aTraitTransformation - transformation := aTraitTransformation copyTraitExpression!
Item was removed: - ----- Method: TraitDescription>>asTraitCompositionEditor (in category '*systemeditor-traits') ----- - asTraitCompositionEditor - ^TraitCompositionEditor with: self!
packages@lists.squeakfoundation.org