[Pkg] SystemEditor: TraitEditor-mtf.9.mcz

squeak-dev-noreply at lists.squeakfoundation.org squeak-dev-noreply at lists.squeakfoundation.org
Tue Oct 14 17:22:35 UTC 2008


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!



More information about the Packages mailing list