'From etoys2.3 of 2 December 2007 [latest update: #1878] on 25 January 2008 at 10:02:06 pm'! "Change Set: parameterTileSuffix-sw Date: 25 January 2008 Author: Scott Wallace Fix for TRAC 6197: Make a script with one argument, add a 'forwardBy:' tile. Drop the 'number' argument into the forward tile, then click the right expand arrow. The 'number' argument tile is replaced by a value tile containing '1'"! !TileMorph methodsFor: 'arrows' stamp: 'sw 1/25/2008 22:00'! couldAddSuffixArrow "Answer whether it is appropriate for the receiver to bear a suffix arrow." | phrase pad | type = #operator ifTrue: [((owner isKindOf: PhraseTileMorph) and: [owner submorphs last == self] and: [#(Point Number) includes: owner resultType]) ifTrue: [^ true]]. (#(literal function parameter) includes: type) ifFalse: [^ false]. (pad := self ownerThatIsA: TilePadMorph) ifNil: [^ false]. (#(Point Number) includes: pad type) ifFalse: [^ false]. phrase := pad owner. (phrase isKindOf: TimesRow) ifTrue: [^ true]. "times-repeat situation" (phrase isKindOf: PhraseTileMorph) ifTrue: [ ^ phrase submorphs last allMorphs includes: self] ifFalse: [^ phrase isKindOf: FunctionTile]! ! !TileMorph methodsFor: 'arrows' stamp: 'sw 1/25/2008 21:53'! showSuffixChoices "The suffix arrow has been hit, so respond appropriately" | plusPhrase phrase pad outer num | ActiveEvent shiftPressed ifTrue: [^ self wrapPhraseInFunction]. (phrase _ self ownerThatIsA: PhraseTileMorph orA: FunctionTile) ifNil: [nil]. (type == #literal) & (literal isNumber) ifTrue: ["Tile is a constant number" (phrase isNil or: [phrase finalTilePadSubmorph == owner]) "pad" ifTrue: ["we are adding the first time (at end of our phrase)" plusPhrase _ self phraseForOp: #+ arg: 1 resultType: #Number. plusPhrase submorphs second submorphs last setBalloonText: (ScriptingSystem helpStringForOperator: #+). owner acceptDroppingMorph: plusPhrase event: self primaryHand lastEvent. num _ plusPhrase firstSubmorph firstSubmorph. num deleteSuffixArrow]]. (#(function expression parameter) includes: type) ifTrue: [pad _ self ownerThatIsA: TilePadMorph. plusPhrase _ self presenter phraseForReceiver: 1 op: #+ arg: 1 resultType: #Number. plusPhrase submorphs second submorphs last setBalloonText: (ScriptingSystem helpStringForOperator: #+). pad acceptDroppingMorph: plusPhrase event: self primaryHand lastEvent. plusPhrase firstSubmorph removeAllMorphs; addMorph: self. pad topEditor scriptEdited "recompile"]. type = #operator ifTrue: ["Tile is accessor of an expression" phrase resultType == #Number ifTrue: [outer _ phrase ownerThatIsA: PhraseTileMorph orA: TimesRepeatTile. pad _ self ownerThatIsA: TilePadMorph. outer ifNotNil: [(outer lastSubmorph == pad or: [true]) ifTrue: [ "first time" plusPhrase _ self presenter phraseForReceiver: 1 op: #+ arg: 1 resultType: #Number. plusPhrase submorphs second submorphs last setBalloonText: (ScriptingSystem helpStringForOperator: #+). pad acceptDroppingMorph: plusPhrase event: self primaryHand lastEvent. plusPhrase firstSubmorph removeAllMorphs; addMorph: phrase. "car's heading" pad topEditor scriptEdited "recompile & deal with carets"]]]]. (self topEditor ifNil: [phrase ifNil: [^ self]]) enforceTileColorPolicy! ! !ParameterTile methodsFor: 'initialization' stamp: 'sw 1/25/2008 19:11'! initialize "Initialize the receiver" super initialize. type := #parameter. self typeColor: Color red! !