A new version of TraitEditor was added to project SystemEditor: http://www.squeaksource.com/SystemEditor/TraitEditor-mtf.9.mcz
==================== Summary ====================
Name: TraitEditor-mtf.9 Author: mtf Time: 14 October 2008, 10:23:48 am UUID: 1f545e3e-afbf-41c6-94a3-e6daca385ec8 Ancestors: TraitEditor-mtf.8
filled in enough stuff that a package can successfully build a SystemEditor containing TraitCompositions. It immediately fails upon commit, of course
=============== Diff against TraitEditor-mtf.8 ===============
Item was added: + ----- Method: TraitCompositionEditor>>transformations (in category 'reflecting') ----- + transformations + transformations ifNotNil: [^ transformations]. + subject ifNil: [^ OrderedCollection new]. + ^ self subject transformations!
Item was changed: + AbstractEditor subclass: #TraitCompositionEditor + instanceVariableNames: 'subject transformations' - Object subclass: #TraitCompositionEditor - instanceVariableNames: 'subject additions removals' classVariableNames: '' poolDictionaries: '' category: 'TraitEditor'! + + !TraitCompositionEditor commentStamp: 'mtf 10/14/2008 10:02' 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!
Item was added: + ----- Method: TraitDescriptionEditor>>trait (in category 'reflecting') ----- + trait + "for compatibility with TraitTransformations" + ^ self + !
Item was added: + ----- Method: TraitDescriptionEditor>>addCompositionOnLeft: (in category 'reflecting') ----- + addCompositionOnLeft: aTraitComposition + ^ aTraitComposition add: self!
Item was added: + ----- Method: TraitCompositionEditor>>@ (in category 'reflecting') ----- + @ anArrayOfAssociations + "the modifier operators #@ and #- bind stronger than +. + Thus, #@ or #- sent to a sum will only affect the most right summand" + + self prepareToChange. + transformations + addLast: (transformations removeLast @ anArrayOfAssociations)!
Item was added: + ----- Method: ClassEditor>>braceStream: (in category '*TraitEditor') ----- + braceStream: nElements + "Allows brace arrays used in TraitCompositions to execute in an editor context" + + ^ self subject braceStream: nElements!
Item was added: + ----- Method: TraitCompositionEditor>>includesTrait: (in category 'reflecting') ----- + includesTrait: aTrait + ^ self transformations anySatisfy: [:transformation | transformation trait == aTrait]!
Item was added: + ----- Method: ClassEditor>>braceWith:with: (in category '*TraitEditor') ----- + braceWith: a with: b + "Allows brace arrays used in TraitCompositions to execute in an editor context" + + ^ self subject braceWith: a with: b!
Item was added: + ----- Method: TraitCompositionEditor>>- (in category 'reflecting') ----- + - anArray + "the modifier operators #@ and #- bind stronger than +. + Thus, #@ or #- sent to a sum will only affect the most right summand" + + self prepareToChange. + transformations + addLast: (transformations removeLast - anArray)!
Item was added: + ----- Method: TraitDescriptionEditor>>+ (in category 'reflecting') ----- + + aTraitOrTraitComposition + "Use double dispatch to avoid having nested composition in cases where + parenthesis are used, such as T1 + (T2 + T3)" + + ^aTraitOrTraitComposition addOnTheLeft: self!
Item was added: + ----- Method: TraitCompositionEditor>>prepareToChange (in category 'private') ----- + prepareToChange + "Mark the composition as changed by setting transformations to be non-nil" + transformations ifNil: [self loadTransformations]!
Item was added: + ----- Method: TraitDescriptionEditor>>@ (in category 'reflecting') ----- + @ anArrayOfAssociations + ^ TraitAlias with: self aliases: anArrayOfAssociations!
Item was added: + ----- Method: ClassEditor>>braceWith:with:with: (in category '*TraitEditor') ----- + braceWith: a with: b with: c + "Allows brace arrays used in TraitCompositions to execute in an editor context" + + ^ self subject braceWith: a with: b with: c!
Item was added: + ----- Method: ClassEditor>>braceWith:with:with:with: (in category '*TraitEditor') ----- + braceWith: a with: b with: c with: d + "Allows brace arrays used in TraitCompositions to execute in an editor context" + + ^ self subject braceWith: a with: b with: c with: d!
Item was added: + ----- Method: TraitCompositionEditor>>addCompositionOnLeft: (in category 'reflecting') ----- + addCompositionOnLeft: aTraitComposition + self transformations do: [ : each | aTraitComposition add: each ]. + ^ aTraitComposition!
Item was added: + ----- Method: TraitCompositionEditor>>add: (in category 'reflecting') ----- + add: aTraitTransformation + self errorIfNotAddable: aTraitTransformation. + self prepareToChange. + transformations addLast: aTraitTransformation!
Item was added: + ----- Method: TraitCompositionEditor>>remove: (in category 'reflecting') ----- + remove: aTransformation + self prepareToChange. + transformations remove: aTransformation!
Item was added: + ----- Method: TraitDescriptionEditor>>addOnTheLeft: (in category 'reflecting') ----- + addOnTheLeft: aTraitExpression + ^TraitCompositionEditor with: aTraitExpression with: self!
Item was added: + ----- Method: TraitDescriptionEditor>>- (in category 'reflecting') ----- + - anArrayOfSelectors + ^TraitExclusion + with: self + exclusions: anArrayOfSelectors!
Item was added: + ----- Method: TraitCompositionEditor>>loadTransformations (in category 'private') ----- + loadTransformations + "initialize the transformations from the subject" + self subject ifNil: [^ transformations := OrderedCollection new]. + self halt.!
Item was added: + ----- Method: TraitCompositionEditor>>+ (in category 'reflecting') ----- + + aTraitExpression + ^ aTraitExpression addCompositionOnLeft: self. + !
Item was added: + ----- Method: TraitCompositionEditor>>size (in category 'reflecting') ----- + size + ^ self transformations size!
Item was added: + ----- Method: TraitCompositionEditor>>errorIfNotAddable: (in category 'private') ----- + errorIfNotAddable: aTraitTransformation + (self includesTrait: aTraitTransformation trait) ifTrue: [ + ^TraitCompositionException + signal: 'Trait ' , aTraitTransformation trait asString, ' already in composition']!
Item was added: + ----- Method: TraitCompositionEditor>>subject (in category 'accessing') ----- + subject + ^ subject!
Item was added: + ----- Method: TraitCompositionEditor>>addOnTheLeft: (in category 'reflecting') ----- + addOnTheLeft: aTrait + self errorIfNotAddable: aTrait. + self prepareToChange. + transformations addFirst: aTrait!
Item was added: + ----- Method: TraitCompositionEditor class>>with: (in category 'instance creation') ----- + with: aTraitTransformation + ^self new + add: aTraitTransformation; + yourself!
Item was added: + ----- Method: ClassEditor>>braceWith: (in category '*TraitEditor') ----- + braceWith: a + "Allows brace arrays used in TraitCompositions to execute in an editor context" + + ^ self subject braceWith: a!
Item was added: + ----- Method: TraitCompositionEditor class>>with:with: (in category 'instance creation') ----- + with: aTraitTransformation with: anotherTraitTransformation + ^self new + add: aTraitTransformation; + add: anotherTraitTransformation; + yourself!
packages@lists.squeakfoundation.org