diff -r 6ad211a201cf -r 2c640b5f7fa9 UIPainterView.st --- a/UIPainterView.st Wed Apr 07 17:56:31 2004 +0200 +++ b/UIPainterView.st Wed Apr 07 21:41:52 2004 +0200 @@ -1,6 +1,6 @@ " COPYRIGHT (c) 1995 by Claus Gittinger / eXept Software AG - All Rights Reserved + All Rights Reserved This software is furnished under a license and may be used only in accordance with the terms of that license and with the @@ -32,7 +32,7 @@ copyright " COPYRIGHT (c) 1995 by Claus Gittinger / eXept Software AG - All Rights Reserved + All Rights Reserved This software is furnished under a license and may be used only in accordance with the terms of that license and with the @@ -49,12 +49,12 @@ new application derives from. [see also:] - UIBuilder - UIObjectView + UIBuilder + UIObjectView [author:] - Claus Gittinger - Claus Atzkern + Claus Gittinger + Claus Atzkern " ! ! @@ -110,7 +110,7 @@ !UIPainterView class methodsFor:'defaults'! -defaultMenuMessage +defaultMenuMessage "This message is the default yo be sent to the menuHolder to get a menu " ^ #showMiddleButtonMenu @@ -161,38 +161,38 @@ |prop coll s n newSel| (aStringOrCollection size == 0) ifTrue:[ - newSel := nil. + newSel := nil. ] ifFalse:[ - (s := aStringOrCollection) isString ifFalse:[ - s size == 1 ifTrue:[ - s := s first - ] ifFalse:[ - coll := OrderedCollection new. - - s do:[:aName| - (prop := self propertyOfName:aName) notNil ifTrue:[ - coll add:(prop view) - ] - ]. - (n := coll size) == 1 ifTrue:[ - newSel := coll at:1 - ] ifFalse:[ - n == 0 ifTrue:[ - newSel := nil - ] ifFalse:[ - newSel := coll - ] - ]. - ^ self select:newSel. - ] - ]. - - prop := self propertyOfName:s. - prop isNil ifTrue:[ - newSel := nil - ] ifFalse:[ - newSel := prop view - ]. + (s := aStringOrCollection) isString ifFalse:[ + s size == 1 ifTrue:[ + s := s first + ] ifFalse:[ + coll := OrderedCollection new. + + s do:[:aName| + (prop := self propertyOfName:aName) notNil ifTrue:[ + coll add:(prop view) + ] + ]. + (n := coll size) == 1 ifTrue:[ + newSel := coll at:1 + ] ifFalse:[ + n == 0 ifTrue:[ + newSel := nil + ] ifFalse:[ + newSel := coll + ] + ]. + ^ self select:newSel. + ] + ]. + + prop := self propertyOfName:s. + prop isNil ifTrue:[ + newSel := nil + ] ifFalse:[ + newSel := prop view + ]. ]. ^ self select:newSel @@ -202,7 +202,7 @@ layoutChanged treeView notNil ifTrue:[ - treeView layoutChanged + treeView layoutChanged ] ! ! @@ -214,8 +214,8 @@ container := someComponents first container. [container notNil and:[ (someComponents conform:[:eachComponent | eachComponent isComponentOf:container]) not]] - whileTrue:[ - container := container container. + whileTrue:[ + container := container container. ]. ^ container ! @@ -231,8 +231,8 @@ coll notNil ifTrue:[ "/ self select:nil. - specs := coll collect:[:aView| self fullSpecFor:aView ]. - self setSelection:specs. + specs := coll collect:[:aView| self fullSpecFor:aView ]. + self setSelection:specs. "/ treeView selection: sel ]. @@ -256,49 +256,49 @@ coll := self minSetOfSuperViews:(self selection). coll notNil ifTrue:[ - treeView cvsEventsDisabledDo:[ - treeModel := treeView model. - oldSelection := treeModel selectedNodes at:1 ifAbsent: nil. - - oldSelection notNil ifTrue:[ - children := oldSelection parent children. - (size := children size) > 1 ifTrue:[ - index := children identityIndexOf:oldSelection. - size == index ifTrue:[ - index := index - 1 - ]. - newSelection := children at:index ifAbsent:1. - ] ifFalse:[ - newSelection := oldSelection parent - ]. - newSelection := treeModel indexOf:newSelection. - ] ifFalse:[ - newSelection := 1 - ]. - - self hideSelection. - selection := nil. - specs := coll collect:[:aView| self fullSpecFor:aView ]. - - self withinTransaction:#cut objects:coll do:[ - coll reverseDo:[:aView| - self createUndoRemove:aView. - self remove:aView. - ] - ]. - buffered ifTrue: [self setSelection:specs]. - treeView selection:nil. - treeView selection:(Array with: newSelection). - (nd := treeView selectedNode) notNil ifTrue:[ - self setSelection:nd contents view withRedraw:true. - ] - ] + treeView cvsEventsDisabledDo:[ + treeModel := treeView model. + oldSelection := treeModel selectedNodes at:1 ifAbsent: nil. + + oldSelection notNil ifTrue:[ + children := oldSelection parent children. + (size := children size) > 1 ifTrue:[ + index := children identityIndexOf:oldSelection. + size == index ifTrue:[ + index := index - 1 + ]. + newSelection := children at:index ifAbsent:1. + ] ifFalse:[ + newSelection := oldSelection parent + ]. + newSelection := treeModel indexOf:newSelection. + ] ifFalse:[ + newSelection := 1 + ]. + + self hideSelection. + selection := nil. + specs := coll collect:[:aView| self fullSpecFor:aView ]. + + self withinTransaction:#cut objects:coll do:[ + coll reverseDo:[:aView| + self createUndoRemove:aView. + self remove:aView. + ] + ]. + buffered ifTrue: [self setSelection:specs]. + treeView selection:nil. + treeView selection:(Array with: newSelection). + (nd := treeView selectedNode) notNil ifTrue:[ + self setSelection:nd contents view withRedraw:true. + ] + ] ] ! deleteTotalSelection "delete the selection - " + " self deleteSelectionBuffered: false ! @@ -326,7 +326,7 @@ sel := self pasteSpecifications:(self getSelection) keepLayout:false. sel notNil ifTrue:[ - self select:sel. + self select:sel. ]. ! @@ -338,20 +338,20 @@ ! pasteKeepingPosition - "add the objects in the paste-buffer to the object view; + "add the objects in the paste-buffer to the object view; translate the layout as appropriate, to position the component at the same absolute position (relative to topView) as before " |sel| sel := self - pasteSpecifications:(self getSelection) - keepLayout:true - keepPosition:true - at:nil. + pasteSpecifications:(self getSelection) + keepLayout:true + keepPosition:true + at:nil. sel notNil ifTrue:[ - self select:sel. + self select:sel. ]. ! @@ -360,9 +360,9 @@ " ^ self - pasteSpecifications:aSpecificationOrList - keepLayout:keepLayout - at:nil + pasteSpecifications:aSpecificationOrList + keepLayout:keepLayout + at:nil "Modified: 11.8.1997 / 01:00:35 / cg" ! @@ -370,11 +370,11 @@ pasteSpecifications:aSpecificationOrList keepLayout:keepLayout at:aPointOrNil "add the specs to the object view; returns list of pasted components " - ^ self - pasteSpecifications:aSpecificationOrList - keepLayout:keepLayout - keepPosition:false - at:aPointOrNil + ^ self + pasteSpecifications:aSpecificationOrList + keepLayout:keepLayout + keepPosition:false + at:aPointOrNil ! @@ -387,36 +387,36 @@ containerToPasteInto := self singleSelection. containerToPasteInto isNil ifTrue:[ - self selection size > 0 ifTrue:[ - containerToPasteInto := self commonContainerOf:self selection - ] ifFalse:[ - containerToPasteInto := self - ]. - self selection:containerToPasteInto. + self selection size > 0 ifTrue:[ + containerToPasteInto := self commonContainerOf:self selection + ] ifFalse:[ + containerToPasteInto := self + ]. + self selection:containerToPasteInto. ]. (self canPasteInto:containerToPasteInto) ifFalse:[ - containerToPasteInto notNil ifTrue:[ - "/ search up parent list for something we can paste into - [containerToPasteInto notNil and:[(self canPasteInto:containerToPasteInto) not]] whileTrue:[ - containerToPasteInto := containerToPasteInto container. - ]. - self selection:containerToPasteInto. - ]. + containerToPasteInto notNil ifTrue:[ + "/ search up parent list for something we can paste into + [containerToPasteInto notNil and:[(self canPasteInto:containerToPasteInto) not]] whileTrue:[ + containerToPasteInto := containerToPasteInto container. + ]. + self selection:containerToPasteInto. + ]. ]. containerToPasteInto isNil ifTrue:[ - containerToPasteInto := self + containerToPasteInto := self ]. (self canPaste:aSpecificationOrList) ifFalse:[ - Dialog warn:'Cannot paste into selected component (not a container ?)'. - ^ nil + Dialog warn:'Cannot paste into selected component (not a container ?)'. + ^ nil ]. aSpecificationOrList isCollection ifTrue:[ - paste := aSpecificationOrList + paste := aSpecificationOrList ] ifFalse:[ - paste := Array with:aSpecificationOrList + paste := Array with:aSpecificationOrList ]. self setSelection:nil. @@ -424,57 +424,57 @@ builder := UIBuilder new isEditing:true. className notNil ifTrue:[ - builder applicationClass:(self resolveName:className) + builder applicationClass:(self resolveName:className) ]. (keepLayout not or:[keepPosition]) ifTrue:[ - pasteOffset := 0@0. - - keepPosition ifTrue:[ - pasteOrigin := device translatePoint:0@0 - fromView:self - toView:containerToPasteInto. - ] ifFalse:[ - aPointOrNil isNil ifTrue:[ - pasteOrigin := self sensor mousePoint. - pasteOrigin := device translatePoint:pasteOrigin - fromView:nil - toView:containerToPasteInto. - ] ifFalse:[ - pasteOrigin := device translatePoint:aPointOrNil - fromView:self - toView:containerToPasteInto. - ] - ]. - - bounds := Rectangle origin:0@0 extent:(containerToPasteInto bounds extent) + pasteOffset := 0@0. + + keepPosition ifTrue:[ + pasteOrigin := device translatePoint:0@0 + fromView:self + toView:containerToPasteInto. + ] ifFalse:[ + aPointOrNil isNil ifTrue:[ + pasteOrigin := self sensor mousePoint. + pasteOrigin := device translatePoint:pasteOrigin + fromView:nil + toView:containerToPasteInto. + ] ifFalse:[ + pasteOrigin := device translatePoint:aPointOrNil + fromView:self + toView:containerToPasteInto. + ] + ]. + + bounds := Rectangle origin:0@0 extent:(containerToPasteInto bounds extent) ]. paste do:[:aSpec| - |view newOrigin| - - view := self addSpec:aSpec builder:builder in:containerToPasteInto. - - keepPosition ifTrue:[ - self moveObject:view to:(view origin + pasteOrigin). - ] ifFalse:[ - keepLayout ifFalse:[ - (bounds containsPoint:pasteOrigin) ifFalse:[ - newOrigin := pasteOffset. - ] ifTrue:[ - newOrigin := pasteOrigin + pasteOffset. - ]. - self moveObject:view to:newOrigin. - pasteOffset := pasteOffset + 4 - ]. - ]. - view realize. - newSel add:view. + |view newOrigin| + + view := self addSpec:aSpec builder:builder in:containerToPasteInto. + + keepPosition ifTrue:[ + self moveObject:view to:(view origin + pasteOrigin). + ] ifFalse:[ + keepLayout ifFalse:[ + (bounds containsPoint:pasteOrigin) ifFalse:[ + newOrigin := pasteOffset. + ] ifTrue:[ + newOrigin := pasteOrigin + pasteOffset. + ]. + self moveObject:view to:newOrigin. + pasteOffset := pasteOffset + 4 + ]. + ]. + view realize. + newSel add:view. ]. self withinTransaction:#paste objects:newSel do:[ - undoHistory addUndoSelector:#undoCreate: - withArgs:(newSel collect:[:v|(self propertyOfView:v) identifier]) + undoHistory addUndoSelector:#undoCreate: + withArgs:(newSel collect:[:v|(self propertyOfView:v) identifier]) ]. self realizeAllSubViews. @@ -496,7 +496,7 @@ sel := self pasteSpecifications:(self getSelection) keepLayout:true. sel notNil ifTrue:[ - self select:sel. + self select:sel. ]. ! ! @@ -504,7 +504,7 @@ canDrop:something "returns true if something can be droped - " + " (something size == 1 and:[self enabled and:[self numberOfSelections <= 1]]) ifTrue:[ ^ something first theObject isKindOf:UISpecification ]. @@ -524,17 +524,17 @@ |el size| ((size := self numberOfSelections) <= 1 and:[self enabled]) ifFalse:[ - ^ false + ^ false ]. something isCollection ifTrue:[something notEmpty ifTrue:[el := something first]] - ifFalse:[el := something]. + ifFalse:[el := something]. (el isKindOf:UISpecification) ifFalse:[ - ^ false + ^ false ]. size == 1 ifTrue:[ - ^ self canPasteInto:(self singleSelection) + ^ self canPasteInto:(self singleSelection) ]. ^ true ! @@ -545,9 +545,9 @@ |prop| aView notNil ifTrue:[ - (prop := self propertyRespondsToView:aView) notNil ifTrue:[ - ^ prop spec class supportsSubComponents - ]. + (prop := self propertyRespondsToView:aView) notNil ifTrue:[ + ^ prop spec class supportsSubComponents + ]. ^ aView specClass supportsSubComponents. ]. ^ false @@ -559,25 +559,25 @@ doit := true. self selection notNil ifTrue:[ - oldSel := self singleSelection. - - "/ search selections hierarchy for a widget into which we can paste - widg := oldSel. - [widg isNil or:[self canPasteInto:widg]] whileFalse:[ - widg notNil ifTrue:[ - widg := widg container - ]. - ]. - - oldSel := nil. - self setSelection:widg withRedraw:true. + oldSel := self singleSelection. + + "/ search selections hierarchy for a widget into which we can paste + widg := oldSel. + [widg isNil or:[self canPasteInto:widg]] whileFalse:[ + widg notNil ifTrue:[ + widg := widg container + ]. + ]. + + oldSel := nil. + self setSelection:widg withRedraw:true. ]. spec := (anObjectOrCollection at:1) theObject. doit ifTrue:[ - dragOffset := DragAndDropManager dragOffsetQuerySignal query. - newSel := self pasteSpecifications:spec keepLayout:false at:aPoint - dragOffset. - - self select:(oldSel ? newSel) + dragOffset := DragAndDropManager dragOffsetQuerySignal query. + newSel := self pasteSpecifications:spec keepLayout:false at:aPoint - dragOffset. + + self select:(oldSel ? newSel) ]. "Modified: / 18.3.1999 / 18:29:43 / stefan" @@ -604,7 +604,7 @@ sizeChanged:how - super sizeChanged:how. + super sizeChanged:how. self layoutChanged ! ! @@ -617,30 +617,30 @@ |cls methods| className isNil ifTrue:[ - self warn:'No class defined !!'. - ^ #() + self warn:'No class defined !!'. + ^ #() ]. cls := self resolveName:className. methods := IdentitySet new. self aspectSelectorsAndTypesDo: - [:selector :typeSymbol | - |skip| - - (cls includesSelector:selector) ifTrue:[ - - skip := false. - (typeSymbol == #modelAspect) ifTrue:[ - (cls isSubclassOf:SimpleDialog) ifTrue:[ - skip := SimpleDialog includesSelector:(selector asSymbol) - ]. - ]. - skip ifFalse:[ - methods add:(cls compiledMethodAt:selector) - ]. - ] - ]. + [:selector :typeSymbol | + |skip| + + (cls includesSelector:selector) ifTrue:[ + + skip := false. + (typeSymbol == #modelAspect) ifTrue:[ + (cls isSubclassOf:SimpleDialog) ifTrue:[ + skip := SimpleDialog includesSelector:(selector asSymbol) + ]. + ]. + skip ifFalse:[ + methods add:(cls compiledMethodAt:selector) + ]. + ] + ]. ^ methods @@ -654,50 +654,50 @@ |cls selector protoSpec| className isNil ifTrue:[ - self warn:'No class defined !!'. - ^ self + self warn:'No class defined !!'. + ^ self ]. cls := self resolveName:className. treeView propertiesDo:[:aProp| - |selector| - - (selector := aProp model) notNil ifTrue:[ - selector isArray ifFalse:[ - aTwoArgBlock value:(selector asSymbol) value:#modelAspect - ]. - ]. - - (selector := aProp menu) notNil ifTrue:[ - selector isArray ifFalse:[ - aTwoArgBlock value:(selector asSymbol) value:#menu - ]. - ]. - - (aProp spec aspectSelectors) do:[:aSel | - aSel isArray ifFalse:[ - aTwoArgBlock value:(aSel asSymbol) value:#channelAspect - ]. - ]. - aProp spec actionSelectors do:[:aSel| - aSel isArray ifFalse:[ - aTwoArgBlock value:(aSel asSymbol) value:#actionSelector - ]. - ]. - aProp spec valueSelectors do:[:aSel| - aSel isArray ifFalse:[ - aTwoArgBlock value:(aSel asSymbol) value:#valueSelector - ]. - ] + |selector| + + (selector := aProp model) notNil ifTrue:[ + selector isArray ifFalse:[ + aTwoArgBlock value:(selector asSymbol) value:#modelAspect + ]. + ]. + + (selector := aProp menu) notNil ifTrue:[ + selector isArray ifFalse:[ + aTwoArgBlock value:(selector asSymbol) value:#menu + ]. + ]. + + (aProp spec aspectSelectors) do:[:aSel | + aSel isArray ifFalse:[ + aTwoArgBlock value:(aSel asSymbol) value:#channelAspect + ]. + ]. + aProp spec actionSelectors do:[:aSel| + aSel isArray ifFalse:[ + aTwoArgBlock value:(aSel asSymbol) value:#actionSelector + ]. + ]. + aProp spec valueSelectors do:[:aSel| + aSel isArray ifFalse:[ + aTwoArgBlock value:(aSel asSymbol) value:#valueSelector + ]. + ] ]. protoSpec := treeView canvasSpec. (selector := protoSpec menu) notNil ifTrue:[ - selector isArray ifFalse:[ - aTwoArgBlock value:(selector asSymbol) value:#menu - ]. + selector isArray ifFalse:[ + aTwoArgBlock value:(selector asSymbol) value:#menu + ]. ]. ! @@ -712,52 +712,52 @@ method := aspect. numArgs == 1 ifTrue:[ - args := 'anArgument'. - showIt := ''' , anArgument printString , '' ...''.\'. - ] ifFalse:[ - args := ''. - showIt := ' ...''.\'. - - numArgs ~~ 0 ifTrue:[ - method := ''. - - selector keywords keysAndValuesDo:[:i :key| - method := method, key, 'arg', i printString, ' ' - ] - ] + args := 'anArgument'. + showIt := ''' , anArgument printString , '' ...''.\'. + ] ifFalse:[ + args := ''. + showIt := ' ...''.\'. + + numArgs ~~ 0 ifTrue:[ + method := ''. + + selector keywords keysAndValuesDo:[:i :key| + method := method, key, 'arg', i printString, ' ' + ] + ] ]. code := '!!' , targetClass name , ' methodsFor:''actions''!!\\' , - method , args , '\' , - ' "automatically generated by UIPainter ..."\\' , - ' "*** the code below performs no action"\' , - ' "*** (except for some feedback on the Transcript)"\' , - ' "*** Please change as required and accept in the browser."\' , - '\' . + method , args , '\' , + ' "automatically generated by UIPainter ..."\\' , + ' "*** the code below performs no action"\' , + ' "*** (except for some feedback on the Transcript)"\' , + ' "*** Please change as required and accept in the browser."\' , + '\' . alreadyInSuperclass ifTrue:[ - code := code , - ' "action for ' , aspect , ' is already provided in a superclass."\' , - ' "It may be redefined here ..."\\'. + code := code , + ' "action for ' , aspect , ' is already provided in a superclass."\' , + ' "It may be redefined here ..."\\'. ] ifFalse:[ - code := code , - ' "action to be added ..."\\'. + code := code , + ' "action to be added ..."\\'. ]. code := code , - ' Transcript showCR:self class name, '': '. + ' Transcript showCR:self class name, '': '. alreadyInSuperclass ifTrue:[ - code := code , 'inherited '. + code := code , 'inherited '. ]. code := code , 'action for ' , aspect , showIt. alreadyInSuperclass ifTrue:[ - code := code , - ' super ' , aspect , args , '.\'. + code := code , + ' super ' , aspect , args , '.\'. ]. code := code , - '!! !!\\'. + '!! !!\\'. ^ code withCRs "Modified: / 25.10.1997 / 19:18:50 / cg" @@ -781,125 +781,125 @@ cls := self targetClass. cls isNil ifTrue:[ - ^ nil + ^ nil ]. codePieces := OrderedCollection new. definedMethodSelectors := IdentitySet new. treeView propertiesDo:[:aProp| - |modelSelector| - - protoSpec := aProp spec. - - (modelSelector := aProp model) notNil ifTrue:[ - self generateCodeFrom:(Array with:modelSelector) in:cls - do:[:aSel| - (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[ - skip := false. - - (cls isSubclassOf:SimpleDialog) ifTrue:[ - skip := SimpleDialog includesSelector:aSel - ]. - (definedMethodSelectors includes:aSel) ifTrue:[ - skip := true. - ]. - - skip ifFalse:[ - "/ kludge .. - "/ (protoSpec isKindOf:ActionButtonSpec) - (protoSpec defaultModelIsCallBackMethodSelector:aSel) - ifTrue:[ - thisCode := (self generateActionMethodFor:aSel spec:protoSpec inClass:cls). - ] ifFalse:[ - thisCode := (self generateAspectMethodFor:aSel spec:protoSpec inClass:cls). - ]. - codePieces add:thisCode. - definedMethodSelectors add:aSel. - Transcript showCR:'code generated for aspect: ' , aSel - ] ifTrue:[ - Transcript showCR:'*** no code generated for aspect: ' , aSel , ' (method already exists)' - ]. - ]. - ]. - ]. - - "/ for each aspect, generate getter (if not yet implemented) - self generateCodeFrom:(aProp spec aspectSelectors) in:cls - do:[:aSel| - (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[ - (definedMethodSelectors includes:aSel) ifFalse:[ - thisCode := (self generateAspectMethodFor:aSel spec:protoSpec inClass:cls). - codePieces add:thisCode. - definedMethodSelectors add:aSel. - Transcript showCR:'code generated for aspect: ' , aSel - ] - ] - ]. - - "/ exported aspects - need setter methods - exportSels := (treeView exportedAspects ? #()) collect:[:entry | (entry subAspect , ':') asSymbol]. - self generateCodeFrom:exportSels in:cls - do:[:aSel| - |aspect| - - (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[ - (definedMethodSelectors includes:aSel) ifFalse:[ - aspect := (aSel copyWithoutLast:1) asSymbol. - thisCode := (self generateAspectSetMethodFor:aspect spec:protoSpec inClass:cls). - codePieces add:thisCode. - definedMethodSelectors add:aSel. - Transcript showCR:'export code generated for aspect: ' , aSel - ] - ] - ]. - - self generateCodeFrom:(aProp spec actionSelectors) in:cls - do:[:aSel| - (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[ - (definedMethodSelectors includes:aSel) ifFalse:[ - thisCode := (self generateActionMethodFor:aSel spec:protoSpec inClass:cls). - codePieces add:thisCode. - definedMethodSelectors add:aSel. - Transcript showCR:'action generated for aspect: ' , aSel - ] - ] - ]. - - self generateCodeFrom:(aProp spec valueSelectors) in:cls - do:[:aSel| - (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[ - (definedMethodSelectors includes:aSel) ifFalse:[ - "/ uppercase: - assume its a globals name. - aSel first isUppercase ifFalse:[ - thisCode := (self generateValueMethodFor:aSel spec:protoSpec inClass:cls). - codePieces add:thisCode. - definedMethodSelectors add:aSel. - Transcript showCR:'code generated for aspect: ' , aSel - ] - ] - ] - ]. + |modelSelector| + + protoSpec := aProp spec. + + (modelSelector := aProp model) notNil ifTrue:[ + self generateCodeFrom:(Array with:modelSelector) in:cls + do:[:aSel| + (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[ + skip := false. + + (cls isSubclassOf:SimpleDialog) ifTrue:[ + skip := SimpleDialog includesSelector:aSel + ]. + (definedMethodSelectors includes:aSel) ifTrue:[ + skip := true. + ]. + + skip ifFalse:[ + "/ kludge .. + "/ (protoSpec isKindOf:ActionButtonSpec) + (protoSpec defaultModelIsCallBackMethodSelector:aSel) + ifTrue:[ + thisCode := (self generateActionMethodFor:aSel spec:protoSpec inClass:cls). + ] ifFalse:[ + thisCode := (self generateAspectMethodFor:aSel spec:protoSpec inClass:cls). + ]. + codePieces add:thisCode. + definedMethodSelectors add:aSel. + Transcript showCR:'code generated for aspect: ' , aSel + ] ifTrue:[ + Transcript showCR:'*** no code generated for aspect: ' , aSel , ' (method already exists)' + ]. + ]. + ]. + ]. + + "/ for each aspect, generate getter (if not yet implemented) + self generateCodeFrom:(aProp spec aspectSelectors) in:cls + do:[:aSel| + (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[ + (definedMethodSelectors includes:aSel) ifFalse:[ + thisCode := (self generateAspectMethodFor:aSel spec:protoSpec inClass:cls). + codePieces add:thisCode. + definedMethodSelectors add:aSel. + Transcript showCR:'code generated for aspect: ' , aSel + ] + ] + ]. + + "/ exported aspects - need setter methods + exportSels := (treeView exportedAspects ? #()) collect:[:entry | (entry subAspect , ':') asSymbol]. + self generateCodeFrom:exportSels in:cls + do:[:aSel| + |aspect| + + (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[ + (definedMethodSelectors includes:aSel) ifFalse:[ + aspect := (aSel copyWithoutLast:1) asSymbol. + thisCode := (self generateAspectSetMethodFor:aspect spec:protoSpec inClass:cls). + codePieces add:thisCode. + definedMethodSelectors add:aSel. + Transcript showCR:'export code generated for aspect: ' , aSel + ] + ] + ]. + + self generateCodeFrom:(aProp spec actionSelectors) in:cls + do:[:aSel| + (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[ + (definedMethodSelectors includes:aSel) ifFalse:[ + thisCode := (self generateActionMethodFor:aSel spec:protoSpec inClass:cls). + codePieces add:thisCode. + definedMethodSelectors add:aSel. + Transcript showCR:'action generated for aspect: ' , aSel + ] + ] + ]. + + self generateCodeFrom:(aProp spec valueSelectors) in:cls + do:[:aSel| + (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[ + (definedMethodSelectors includes:aSel) ifFalse:[ + "/ uppercase: - assume its a globals name. + aSel first isUppercase ifFalse:[ + thisCode := (self generateValueMethodFor:aSel spec:protoSpec inClass:cls). + codePieces add:thisCode. + definedMethodSelectors add:aSel. + Transcript showCR:'code generated for aspect: ' , aSel + ] + ] + ] + ]. ]. AspectsAsInstances ifTrue:[ - iVars := cls instVarNames asOrderedCollection. - definedMethodSelectors do:[:ivar | - (iVars includes:ivar) ifFalse:[ - iVars add:ivar - ] - ]. - iVars := iVars asArray. - t := cls shallowCopy. - t setInstanceVariableString:iVars asStringCollection asString. - codePieces addFirst:(t definition , '!!\' withCRs). + iVars := cls instVarNames asOrderedCollection. + definedMethodSelectors do:[:ivar | + (iVars includes:ivar) ifFalse:[ + iVars add:ivar + ] + ]. + iVars := iVars asArray. + t := cls shallowCopy. + t setInstanceVariableString:iVars asStringCollection asString. + codePieces addFirst:(t definition , '!!\' withCRs). ]. - ^ String - streamContents: - [:codeStream | - codePieces do:[:eachPiece | codeStream nextPutAll:eachPiece]. - ]. + ^ String + streamContents: + [:codeStream | + codePieces do:[:eachPiece | codeStream nextPutAll:eachPiece]. + ]. "Modified: / 29.7.1998 / 12:21:19 / cg" ! @@ -910,14 +910,14 @@ modelClass := protoSpec defaultModelClassFor:aspect. modelValueString := protoSpec defaultModelValueStringFor:aspect. modelValueString notNil ifTrue:[ - modelGen := modelValueString + modelGen := modelValueString ] ifFalse:[ - modelValue := protoSpec defaultModelValueFor:aspect. - modelValue isNil ifTrue:[ - modelGen := modelClass name , ' new' - ] ifFalse:[ - modelGen := modelValue storeString , ' asValue' - ]. + modelValue := protoSpec defaultModelValueFor:aspect. + modelValue isNil ifTrue:[ + modelGen := modelClass name , ' new' + ] ifFalse:[ + modelGen := modelValue storeString , ' asValue' + ]. ]. @@ -931,36 +931,36 @@ AspectsAsInstances ifTrue:[ - code := code , '\' , - ' ' , aspect , ' isNil ifTrue:[\' , - ' ' , aspect , ' := ' , modelGen , '.\'. - modelClass ~~ TriggerValue ifTrue:[ - code := code , - '"/ if your app needs to be notified of changes, uncomment one of the lines below:\' , - '"/ ' , aspect , ' addDependent:self.\' , - '"/ ' , aspect , ' onChangeSend:#', aspect ,'Changed to:self.\'. - ]. - code := code , - ' ].\' , - ' ^ ' , aspect ,'.\' , - '!! !!\\' + code := code , '\' , + ' ' , aspect , ' isNil ifTrue:[\' , + ' ' , aspect , ' := ' , modelGen , '.\'. + modelClass ~~ TriggerValue ifTrue:[ + code := code , + '"/ if your app needs to be notified of changes, uncomment one of the lines below:\' , + '"/ ' , aspect , ' addDependent:self.\' , + '"/ ' , aspect , ' onChangeSend:#', aspect ,'Changed to:self.\'. + ]. + code := code , + ' ].\' , + ' ^ ' , aspect ,'.\' , + '!! !!\\' ] ifFalse:[ - code := code , '\' , - ' |holder|\' , - '\' , - ' (holder := builder bindingAt:#' , aspect , ') isNil ifTrue:[\' , - ' holder := ', modelGen, '.\', - ' builder aspectAt:#' , aspect , ' put:holder.\'. - modelClass ~~ TriggerValue ifTrue:[ - code := code , - '"/ if your app needs to be notified of changes, uncomment one of the lines below:\' , - '"/ holder addDependent:self.\' , - '"/ holder onChangeSend:#', aspect ,'Changed to:self.\'. - ]. - code := code , - ' ].\' , - ' ^ holder.\' , - '!! !!\\' + code := code , '\' , + ' |holder|\' , + '\' , + ' (holder := builder bindingAt:#' , aspect , ') isNil ifTrue:[\' , + ' holder := ', modelGen, '.\', + ' builder aspectAt:#' , aspect , ' put:holder.\'. + modelClass ~~ TriggerValue ifTrue:[ + code := code , + '"/ if your app needs to be notified of changes, uncomment one of the lines below:\' , + '"/ holder addDependent:self.\' , + '"/ holder onChangeSend:#', aspect ,'Changed to:self.\'. + ]. + code := code , + ' ].\' , + ' ^ holder.\' , + '!! !!\\' ]. ^ code withCRs @@ -977,7 +977,7 @@ cls := self targetClass. cls isNil ifTrue:[ - ^ nil + ^ nil ]. spec := treeView exportedAspects. @@ -985,13 +985,13 @@ "/ make it an array ... spec := spec collect:[:entry | |subAspect type| - subAspect := entry subAspect asSymbol. - (type := entry type) isNil ifTrue:[ - subAspect - ] ifFalse:[ - Array with:subAspect with:type asSymbol - ]. - ]. + subAspect := entry subAspect asSymbol. + (type := entry type) isNil ifTrue:[ + subAspect + ] ifFalse:[ + Array with:subAspect with:type asSymbol + ]. + ]. spec := spec asArray. code := '!!' , cls name , ' class methodsFor:''plugIn spec''!!\\' . @@ -1027,29 +1027,29 @@ ' "and the mainApp wants to connect its aspects to mine."\'. AspectsAsInstances ifTrue:[ - code := (code , '\' , - '"/ ' , aspect , ' notNil ifTrue:[\' , - '"/ ' , aspect , ' removeDependent:self.\' , - '"/ ].\' , - ' ' , aspect ,' := something.\' , - '"/ ' , aspect ,' notNil ifTrue:[\' , - '"/ ' , aspect , ' addDependent:self.\' , - '"/ ].\' , - ' ^ self.\' , - '!! !!\\') + code := (code , '\' , + '"/ ' , aspect , ' notNil ifTrue:[\' , + '"/ ' , aspect , ' removeDependent:self.\' , + '"/ ].\' , + ' ' , aspect ,' := something.\' , + '"/ ' , aspect ,' notNil ifTrue:[\' , + '"/ ' , aspect , ' addDependent:self.\' , + '"/ ].\' , + ' ^ self.\' , + '!! !!\\') ] ifFalse:[ - code := (code , '\' , - '"/ |holder|\' , - '\' , - '"/ (holder := builder bindingAt:#' , aspect , ') notNil ifTrue:[\' , - '"/ holder removeDependent:self.\' , - '"/ ].\' , - ' builder aspectAt:#' , aspect , ' put:something.\', - '"/ something notNil ifTrue:[\' , - '"/ something addDependent:self.\' , - '"/ ].\' , - ' ^ self.\' , - '!! !!\\') + code := (code , '\' , + '"/ |holder|\' , + '\' , + '"/ (holder := builder bindingAt:#' , aspect , ') notNil ifTrue:[\' , + '"/ holder removeDependent:self.\' , + '"/ ].\' , + ' builder aspectAt:#' , aspect , ' put:something.\', + '"/ something notNil ifTrue:[\' , + '"/ something addDependent:self.\' , + '"/ ].\' , + ' ^ self.\' , + '!! !!\\') ]. ^ code withCRs @@ -1064,19 +1064,19 @@ realSelectors := aListOfSelectors select:[:sel | sel isArray not]. self class redefineAspectMethods ifTrue:[ - redefCondition := [:cls :sel | (cls includesSelector:sel) not]. - redefMessage := ' skipped - already implemented in the class'. + redefCondition := [:cls :sel | (cls includesSelector:sel) not]. + redefMessage := ' skipped - already implemented in the class'. ] ifFalse:[ - redefCondition := [:cls :sel | (cls canUnderstand:sel) not]. - redefMessage := ' skipped - already implemented in the class (or superclass)'. + redefCondition := [:cls :sel | (cls canUnderstand:sel) not]. + redefMessage := ' skipped - already implemented in the class (or superclass)'. ]. realSelectors do:[:aSelector| - (redefCondition value:aClass value:aSelector) ifTrue:[ - aBlock value:aSelector asSymbol - ] ifFalse:[ - Transcript showCR:('#' , aSelector , redefMessage) - ] + (redefCondition value:aClass value:aSelector) ifTrue:[ + aBlock value:aSelector asSymbol + ] ifFalse:[ + Transcript showCR:('#' , aSelector , redefMessage) + ] ] ! @@ -1107,7 +1107,7 @@ cls := self targetClass. cls isNil ifTrue:[ - ^ nil + ^ nil ]. ^ self generateHookMethodsInClass:cls. @@ -1119,31 +1119,31 @@ code := ''. (targetClass includesSelector:#postBuildWith:) ifFalse:[ - code := code - , (self - generateHookMethodFor:'postBuildWith:aBuilder' - comment:'the widgets have been built, but before the view is opened' - note:'or after the super send' - defaultCode:' super postBuildWith:aBuilder' - inClass:targetClass) + code := code + , (self + generateHookMethodFor:'postBuildWith:aBuilder' + comment:'the widgets have been built, but before the view is opened' + note:'or after the super send' + defaultCode:' super postBuildWith:aBuilder' + inClass:targetClass) ]. (targetClass includesSelector:#postOpenWith:) ifFalse:[ - code := code - , (self - generateHookMethodFor:'postOpenWith:aBuilder' - comment:'the topView has been opened, but before events are dispatched for it' - note:'or after the super send' - defaultCode:' super postOpenWith:aBuilder' - inClass:targetClass) + code := code + , (self + generateHookMethodFor:'postOpenWith:aBuilder' + comment:'the topView has been opened, but before events are dispatched for it' + note:'or after the super send' + defaultCode:' super postOpenWith:aBuilder' + inClass:targetClass) ]. (targetClass includesSelector:#closeRequest) ifFalse:[ - code := code - , (self - generateHookMethodFor:'closeRequest' - comment:'the topView has been asked to close' - note:'return without the ''super closeRequest'' to stay open' - defaultCode:' ^super closeRequest' - inClass:targetClass) + code := code + , (self + generateHookMethodFor:'closeRequest' + comment:'the topView has been asked to close' + note:'return without the ''super closeRequest'' to stay open' + defaultCode:' ^super closeRequest' + inClass:targetClass) ]. ^ code @@ -1162,108 +1162,108 @@ code := '!!' , targetClass name , ' methodsFor:''' , category , '''!!\\'. selector = 'openAboutThisApplication' ifTrue:[ - code := code , - 'openAboutThisApplication\' , - ' "opens an about box for this application."\\' , - ' "automatically generated by UIPainter ..."\\' , - - ' |rev box myClass clsRev image msg|\\' , - - ' rev := ''''.\' , - ' myClass := self class.\' , - - ' (clsRev := myClass revision) notNil ifTrue:[\' , - ' rev := '' (rev: '', clsRev printString, '')''].\\' , - - ' msg := Character cr asString , myClass name asBoldText, rev.\' , - ' msg := (msg , ''\\*** add more info here ***\\'') withCRs.\\' , - ' box := AboutBox title:msg.\' , - - ' "/ *** add a #defaultIcon method in the class\' , - ' "/ *** and uncomment the following line:\' , - ' "/ image := self class defaultIcon.\\' , - ' image notNil ifTrue:[\' , - ' box image:image\' , - ' ].\' , - ' box label:(resources string:''About %1'' with:myClass name).\' , - ' box autoHideAfter:10 with:[].\' , - ' box showAtPointer.\' , - '!! !!\\'. - ^ code withCRs + code := code , + 'openAboutThisApplication\' , + ' "opens an about box for this application."\\' , + ' "automatically generated by UIPainter ..."\\' , + + ' |rev box myClass clsRev image msg|\\' , + + ' rev := ''''.\' , + ' myClass := self class.\' , + + ' (clsRev := myClass revision) notNil ifTrue:[\' , + ' rev := '' (rev: '', clsRev printString, '')''].\\' , + + ' msg := Character cr asString , myClass name asBoldText, rev.\' , + ' msg := (msg , ''\\*** add more info here ***\\'') withCRs.\\' , + ' box := AboutBox title:msg.\' , + + ' "/ *** add a #defaultIcon method in the class\' , + ' "/ *** and uncomment the following line:\' , + ' "/ image := self class defaultIcon.\\' , + ' image notNil ifTrue:[\' , + ' box image:image\' , + ' ].\' , + ' box label:(resources string:''About %1'' with:myClass name).\' , + ' box autoHideAfter:10 with:[].\' , + ' box showAtPointer.\' , + '!! !!\\'. + ^ code withCRs ]. selector = 'menuOpen' ifTrue:[ - code := code , - 'menuOpen\' , - ' "automatically generated by UIPainter ..."\\' , - ' "*** the code below opens a dialog for file selection"\' , - ' "*** and invokes the #doOpen: method with the selected file."\' , - ' "*** Please change as required and accept in the browser."\\' , - ' |file|\\' , - ' file :=\' , - ' (FileSelectionBrowser\' , - ' request: ''Open''\' , - ' fileName: ''''\' , - ' "/ inDirectory: lastOpenDirectory\' , - ' withFileFilters: #(''*'')).\\' , - ' file notNil ifTrue:[\' , - ' "/ lastOpenDirectory := file asFilename directory.\' , - ' self doOpen:file\' , - ' ]\' , - '!! !!\'. - ^ code withCRs + code := code , + 'menuOpen\' , + ' "automatically generated by UIPainter ..."\\' , + ' "*** the code below opens a dialog for file selection"\' , + ' "*** and invokes the #doOpen: method with the selected file."\' , + ' "*** Please change as required and accept in the browser."\\' , + ' |file|\\' , + ' file :=\' , + ' (FileSelectionBrowser\' , + ' request: ''Open''\' , + ' fileName: ''''\' , + ' "/ inDirectory: lastOpenDirectory\' , + ' withFileFilters: #(''*'')).\\' , + ' file notNil ifTrue:[\' , + ' "/ lastOpenDirectory := file asFilename directory.\' , + ' self doOpen:file\' , + ' ]\' , + '!! !!\'. + ^ code withCRs ]. numArgs := selector numArgs. method := selector. numArgs == 1 ifTrue:[ - args := 'anArgument'. - showIt := ''' , anArgument printString , '' ...''.\'. - ] ifFalse:[ - args := ''. - showIt := ' ...''.\'. - - numArgs ~~ 0 ifTrue:[ - method := ''. - - selector keywords keysAndValuesDo:[:i :key| - method := method, key, 'arg', i printString, ' ' - ] - ] + args := 'anArgument'. + showIt := ''' , anArgument printString , '' ...''.\'. + ] ifFalse:[ + args := ''. + showIt := ' ...''.\'. + + numArgs ~~ 0 ifTrue:[ + method := ''. + + selector keywords keysAndValuesDo:[:i :key| + method := method, key, 'arg', i printString, ' ' + ] + ] ]. code := code , - method , args , '\' , - ' "automatically generated by UIPainter ..."\\' , - ' "*** the code below performs no action"\' , - ' "*** (except for some feedback on the Transcript)"\' , - ' "*** Please change as required and accept in the browser."\' , - '\' . + method , args , '\' , + ' "automatically generated by UIPainter ..."\\' , + ' "*** the code below performs no action"\' , + ' "*** (except for some feedback on the Transcript)"\' , + ' "*** Please change as required and accept in the browser."\' , + '\' . alreadyInSuperclass ifTrue:[ - code := code , - ' "action for ' , selector , ' is already provided in a superclass."\' , - ' "It may be redefined here ..."\\'. + code := code , + ' "action for ' , selector , ' is already provided in a superclass."\' , + ' "It may be redefined here ..."\\'. ] ifFalse:[ - code := code , - ' "action to be added ..."\\'. + code := code , + ' "action to be added ..."\\'. ]. code := code , - ' Transcript showCR:self class name, '': '. + ' Transcript showCR:self class name, '': '. alreadyInSuperclass ifTrue:[ - code := code , 'inherited '. + code := code , 'inherited '. ]. code := code , 'menu action for ' , selector , showIt. alreadyInSuperclass ifTrue:[ - code := code , - ' super ' , selector , args , '.\'. + code := code , + ' super ' , selector , args , '.\'. ]. code := code , - '!! !!\\'. + '!! !!\\'. ^ code withCRs "Created: / 23.8.1998 / 16:46:51 / cg" @@ -1282,7 +1282,7 @@ cls := self targetClass. cls isNil ifTrue:[ - ^ nil + ^ nil ]. specArray := treeView generateFullSpecForComponents:#() named:nil. @@ -1290,10 +1290,10 @@ winSpec := fullSpec window. menuSelector := winSpec menu. - (menuSelector notNil + (menuSelector notNil and:[ (cls respondsTo:menuSelector) ]) ifFalse:[ - self warn:'No menu defined (yet)'. - ^ nil. + self warn:'No menu defined (yet)'. + ^ nil. ]. menuSpec := cls perform:menuSelector. menuSpec := menuSpec decodeAsLiteralArray. @@ -1302,24 +1302,24 @@ code := ''. menuSpec allItemsDo:[:item | - |sel| - - (sel := item value) notNil ifTrue:[ - (definedMethodSelectors includes:sel) ifFalse:[ - self generateCodeFrom:(Array with:sel) in:cls do:[:aSel| - thisCode := (self generateMenuMethodFor:aSel inClass:cls). - code := code, thisCode. - ]. - definedMethodSelectors add:sel. - ]. - ] + |sel| + + (sel := item value) notNil ifTrue:[ + (definedMethodSelectors includes:sel) ifFalse:[ + self generateCodeFrom:(Array with:sel) in:cls do:[:aSel| + thisCode := (self generateMenuMethodFor:aSel inClass:cls). + code := code, thisCode. + ]. + definedMethodSelectors add:sel. + ]. + ] ]. (definedMethodSelectors includes:#menuOpen) ifTrue:[ - self generateCodeFrom:(Array with:#doOpen:) in:cls do:[:aSel| - thisCode := (self generateMenuMethodFor:aSel inClass:cls). - code := code, thisCode. - ]. + self generateCodeFrom:(Array with:#doOpen:) in:cls do:[:aSel| + thisCode := (self generateMenuMethodFor:aSel inClass:cls). + code := code, thisCode. + ]. ]. ^ code @@ -1351,19 +1351,19 @@ spec := OrderedCollection new. self subViews do:[:aView| - |vSpec| - - "/ care for wrapped views ... - vSpec := self fullSpecFor:aView. - vSpec isNil ifTrue:[ - aView subViews size == 1 ifTrue:[ - vSpec := self fullSpecFor:(aView subViews first). - ] - ]. - vSpec isNil ifTrue:[ - self warn:'Oops - could not create spec for some view' - ]. - spec add:vSpec + |vSpec| + + "/ care for wrapped views ... + vSpec := self fullSpecFor:aView. + vSpec isNil ifTrue:[ + aView subViews size == 1 ifTrue:[ + vSpec := self fullSpecFor:(aView subViews first). + ] + ]. + vSpec isNil ifTrue:[ + self warn:'Oops - could not create spec for some view' + ]. + spec add:vSpec ]. spec := treeView generateFullSpecForComponents:spec named:methodName. @@ -1372,10 +1372,10 @@ specCode := str contents. (specCode includes:$!!) ifTrue:[ - "/ oops - must be chunk format ... - str := WriteStream on:String new. - str nextPutAllAsChunk:specCode. - specCode := str contents. + "/ oops - must be chunk format ... + str := WriteStream on:String new. + str nextPutAllAsChunk:specCode. + specCode := str contents. ]. "/ if that method already exists, do not overwrite the category @@ -1384,37 +1384,37 @@ cls := self resolveName:className. cls notNil ifTrue:[ - (mthd := cls class compiledMethodAt:methodName asSymbol) notNil ifTrue:[ - category := mthd category. - ] + (mthd := cls class compiledMethodAt:methodName asSymbol) notNil ifTrue:[ + category := mthd category. + ] ]. code := '!!' - , className , ' class methodsFor:' , category storeString - , '!!' , '\\' - - , methodName , '\' - , ((ResourceSpecEditor codeGenerationCommentForClass: UIPainter) replChar:$!! withString:'!!!!') - , '\\ "\' - , (' UIPainter new openOnClass:' , className , ' andSelector:#' , methodName , '\'). + , className , ' class methodsFor:' , category storeString + , '!!' , '\\' + + , methodName , '\' + , ((ResourceSpecEditor codeGenerationCommentForClass: UIPainter) replChar:$!! withString:'!!!!') + , '\\ "\' + , (' UIPainter new openOnClass:' , className , ' andSelector:#' , methodName , '\'). (cls notNil and:[cls isSubclassOf:ApplicationModel]) ifTrue:[ - code := code - , (' ' , className , ' new openInterface:#' , methodName , '\'). + code := code + , (' ' , className , ' new openInterface:#' , methodName , '\'). ]. code := code - ,(methodName = 'windowSpec' - ifTrue:[' ' , className , ' open\'] ifFalse: ['']) - , ' "\'. - - code := code - , '\' - , ' \\' - , ' ^ ' , specCode - , '\' - , '!! !!' - , '\\'. + ,(methodName = 'windowSpec' + ifTrue:[' ' , className , ' open\'] ifFalse: ['']) + , ' "\'. + + code := code + , '\' + , ' \\' + , ' ^ ' , specCode + , '\' + , '!! !!' + , '\\'. ^ code withCRs @@ -1426,12 +1426,12 @@ |cls| className isNil ifTrue:[ - self warn:'No TargetClass defined !!'. - ^ nil + self warn:'No TargetClass defined !!'. + ^ nil ]. (cls := self resolveName:className) isNil ifTrue:[ - self warn:('Class ', className asString, ' does not exist !!'). - ^ nil + self warn:('Class ', className asString, ' does not exist !!'). + ^ nil ]. ^ cls. ! ! @@ -1449,18 +1449,18 @@ defaultViewBackground := self class defaultViewBackgroundColor. shown ifTrue:[ - self viewBackground: (defaultViewBackground isColor - ifTrue: [defaultViewBackground] - ifFalse:[Black]). - self clear. + self viewBackground: (defaultViewBackground isColor + ifTrue: [defaultViewBackground] + ifFalse:[Black]). + self clear. ]. gridShown ifTrue:[ - self defineGrid. - gridPixmap colorMap: (defaultViewBackground isColor - ifTrue: [Array with:defaultViewBackground with:Color darkGray] - ifFalse:[Array with:White with:Black]). - self viewBackground:gridPixmap. + self defineGrid. + gridPixmap colorMap: (defaultViewBackground isColor + ifTrue: [Array with:defaultViewBackground with:Color darkGray] + ifFalse:[Array with:White with:Black]). + self viewBackground:gridPixmap. ]. self invalidate @@ -1494,23 +1494,23 @@ cS := canvas getSelectedViewsAndSpecs. cS isNil ifTrue:[^self]. views := cS first. - specs := cS last. + specs := cS last. rect := views first frame. 2 to: views size do:[:i| rect := rect merge: (views at: i) frame]. - layout := LayoutFrame leftFraction:0.0 offset: rect origin x - rightFraction:0.0 offset: rect corner x + 1 - topFraction:0.0 offset: rect origin y - bottomFraction:0.0 offset:rect corner y + 1. + layout := LayoutFrame leftFraction:0.0 offset: rect origin x + rightFraction:0.0 offset: rect corner x + 1 + topFraction:0.0 offset: rect origin y + bottomFraction:0.0 offset:rect corner y + 1. oldSelection := canvas selection. canvas select: views first superView. spec layout: layout. spec class == VerticalPanelViewSpec ifTrue:[ - spec verticalLayout: #topSpace. - spec horizontalLayout: #fit. + spec verticalLayout: #topSpace. + spec horizontalLayout: #fit. ]. spec class == HorizontalPanelViewSpec ifTrue:[ - spec verticalLayout: #fit. - spec horizontalLayout: #leftSpace. + spec verticalLayout: #fit. + spec horizontalLayout: #leftSpace. ]. box := self pasteSpecifications:spec keepLayout:true at:nil. @@ -1518,15 +1518,15 @@ xOffset := box origin x. yOffset := box origin y. withLayout ifFalse:[ - 1 to: specs size do:[:i| - view := views at: i. - layout := LayoutFrame leftFraction:0.0 offset: (view origin x - xOffset) - rightFraction:0.0 offset: (view corner x - xOffset + 1) - topFraction:0.0 offset: (view origin y - yOffset ) - bottomFraction:0.0 offset: (view corner y - yOffset + 1). - (specs at: i) layout: layout. - ]. - ]. + 1 to: specs size do:[:i| + view := views at: i. + layout := LayoutFrame leftFraction:0.0 offset: (view origin x - xOffset) + rightFraction:0.0 offset: (view corner x - xOffset + 1) + topFraction:0.0 offset: (view origin y - yOffset ) + bottomFraction:0.0 offset: (view corner y - yOffset + 1). + (specs at: i) layout: layout. + ]. + ]. canvas selection: oldSelection. canvas deleteSelection. canvas selection:box. @@ -1555,19 +1555,19 @@ superView := cS first first superView. cS last first component isNil ifTrue:[^self]. cS last first component collection isEmpty ifTrue:[^self]. - specs := cS last first component collection copy. + specs := cS last first component collection copy. frame := cS first first frame. canvas deleteSelection. withLayout ifFalse:[ - 1 to: specs size do:[:i| - view := views at: i. - layout := LayoutFrame leftFraction:0.0 offset: (view origin x + frame origin x) - rightFraction:0.0 offset: (view corner x + frame origin x + 1) - topFraction:0.0 offset: (view origin y + frame origin y ) - bottomFraction:0.0 offset: (view corner y + frame origin y + 1). - (specs at: i) layout: layout. - ]. - ]. + 1 to: specs size do:[:i| + view := views at: i. + layout := LayoutFrame leftFraction:0.0 offset: (view origin x + frame origin x) + rightFraction:0.0 offset: (view corner x + frame origin x + 1) + topFraction:0.0 offset: (view origin y + frame origin y ) + bottomFraction:0.0 offset: (view corner y + frame origin y + 1). + (specs at: i) layout: layout. + ]. + ]. canvas selection: superView. canvas pasteSpecifications:specs keepLayout:true. canvas selection: superView. @@ -1611,23 +1611,23 @@ |spec builder| Cursor wait showWhile: [ - self removeAll. - specOrSpecArray notNil ifTrue:[ - spec := UISpecification from:specOrSpecArray. - ]. - builder := UIBuilder new isEditing:true. - "set applicationClass, in order that subspecifications may be resolved" - className notNil ifTrue:[ - builder applicationClass:(self resolveName:className). - ]. - spec notNil ifTrue:[ - spec window setupView:self topView for:builder. - self addSpec:(spec component) builder:builder in:self. - ]. - self realizeAllSubViews. - spec notNil ifTrue:[ - treeView setAttributesFromWindowSpec:(spec window) - ]. + self removeAll. + specOrSpecArray notNil ifTrue:[ + spec := UISpecification from:specOrSpecArray. + ]. + builder := UIBuilder new isEditing:true. + "set applicationClass, in order that subspecifications may be resolved" + className notNil ifTrue:[ + builder applicationClass:(self resolveName:className). + ]. + spec notNil ifTrue:[ + spec window setupView:self topView for:builder. + self addSpec:(spec component) builder:builder in:self. + ]. + self realizeAllSubViews. + spec notNil ifTrue:[ + treeView setAttributesFromWindowSpec:(spec window) + ]. ]. ! @@ -1635,18 +1635,18 @@ treeView := aTreeView. treeView delegate:( - "/ - "/ I want to handle everything typed - "/ in the treeView, except for Return and Cursor-keys - "/ - KeyboardForwarder - toView:self - condition:nil - filter:[:k | (k isSymbol - and:[k ~~ #Return - and:[k ~~ #Tab - and:[(k startsWith:#Cursor) not]]]) - ] + "/ + "/ I want to handle everything typed + "/ in the treeView, except for Return and Cursor-keys + "/ + KeyboardForwarder + toView:self + condition:nil + filter:[:k | (k isSymbol + and:[k ~~ #Return + and:[k ~~ #Tab + and:[(k startsWith:#Cursor) not]]]) + ] ) "Modified: / 31.10.1997 / 20:22:09 / cg" @@ -1661,8 +1661,8 @@ |m| self enabled ifTrue:[ - m := MenuPanel fromSpec:(UIPainter menuEdit) receiver:self superView application. - self startUpMenu:m + m := MenuPanel fromSpec:(UIPainter menuEdit) receiver:self superView application. + self startUpMenu:m ]. ^ nil ! ! @@ -1679,43 +1679,43 @@ |wasClipped sel hColor bg| selectionHiddenLevel == 0 ifTrue:[ - sel := treeView selection. - (sel size > 1 and: - [(treeView model list at: sel first) contents view == aComponent]) - ifTrue: [ - hColor := handleMasterColor - ] ifFalse:[ - bg := aComponent viewBackground. - bg isColor ifTrue:[ - bg brightness < 0.5 ifTrue:[ - hColor := handleColorWhite - ] ifFalse:[ - hColor := handleColorBlack - ] - ] ifFalse:[ - hColor := handleColorBlack - ] - ]. - - self paint:hColor. - - (wasClipped := clipChildren) ifTrue:[ - self clippedByChildren:(clipChildren := false). - ]. - - self handlesOf:aComponent do:[:aRectangle :what| |l t w h| - l := aRectangle left + 1. - t := aRectangle top + 1. - w := aRectangle width - 2. - h := aRectangle height - 2. - - what == #view ifTrue:[self displayRectangleX:l y:t width:w height:h] - ifFalse:[self fillRectangleX:l y:t width:w height:h] - ]. - - wasClipped ifTrue:[ - self clippedByChildren:(clipChildren := true). - ] + sel := treeView selection. + (sel size > 1 and: + [(treeView model list at: sel first) contents view == aComponent]) + ifTrue: [ + hColor := handleMasterColor + ] ifFalse:[ + bg := aComponent viewBackground. + bg isColor ifTrue:[ + bg brightness < 0.5 ifTrue:[ + hColor := handleColorWhite + ] ifFalse:[ + hColor := handleColorBlack + ] + ] ifFalse:[ + hColor := handleColorBlack + ] + ]. + + self paint:hColor. + + (wasClipped := clipChildren) ifTrue:[ + self clippedByChildren:(clipChildren := false). + ]. + + self handlesOf:aComponent do:[:aRectangle :what| |l t w h| + l := aRectangle left + 1. + t := aRectangle top + 1. + w := aRectangle width - 2. + h := aRectangle height - 2. + + what == #view ifTrue:[self displayRectangleX:l y:t width:w height:h] + ifFalse:[self fillRectangleX:l y:t width:w height:h] + ]. + + wasClipped ifTrue:[ + self clippedByChildren:(clipChildren := true). + ] ] "Modified: / 6.12.2001 / 00:00:16 / cg" @@ -1729,7 +1729,7 @@ appl := self application. appl notNil ifTrue:[ - ^ appl resolveName:aName + ^ appl resolveName:aName ]. ^ Smalltalk resolveName:aName inClass:self class ! ! @@ -1740,7 +1740,7 @@ "remove anObject from the contents do redraw " anObject notNil ifTrue:[ - treeView removeView:anObject. + treeView removeView:anObject. ] ! @@ -1760,7 +1760,7 @@ |p| (p := self propertyOfParentForView:aView) isNil ifTrue:[ - ^ self + ^ self ]. ^ p view ! @@ -1785,14 +1785,14 @@ prop := self propertyOfIdentifier:aViewId. prop notNil ifTrue:[^ prop view] - ifFalse:[^ nil] + ifFalse:[^ nil] ! propertyOfIdentifier:anId "returns property assigned to unique identifier " anId notNil ifTrue:[ - ^ treeView propertyDetect:[:p| p identifier == anId ] + ^ treeView propertyDetect:[:p| p identifier == anId ] ]. ^ nil ! @@ -1803,7 +1803,7 @@ |name| aString isNil ifFalse:[ - name := aString string withoutSeparators. + name := aString string withoutSeparators. ^ treeView propertyDetect:[:p| p name = name ]. ]. ^ nil @@ -1815,7 +1815,7 @@ |item| (item := treeView detectItemRespondsToView:aSubView) notNil ifTrue:[ - (item := item parent) notNil ifTrue:[^ item contents] + (item := item parent) notNil ifTrue:[^ item contents] ]. ^ nil ! @@ -1824,7 +1824,7 @@ "returns property assigned to view " (aView isNil or:[aView == self]) ifFalse:[ - ^ treeView propertyDetect:[:p| p view == aView ] + ^ treeView propertyDetect:[:p| p view == aView ] ]. ^ nil ! @@ -1839,7 +1839,7 @@ item := treeView detectItemRespondsToView:aView. (item notNil and:[item parent notNil]) ifTrue:[ - ^ item contents + ^ item contents ]. ^ nil ! @@ -1850,18 +1850,18 @@ |next name size| aSpecOrString isString ifFalse:[name := aSpecOrString userFriendlyName] - ifTrue:[name := aSpecOrString]. + ifTrue:[name := aSpecOrString]. size := name size + 1. next := 0. treeView propertiesDo:[:p| - |n| - n := p name. - - (n size >= size and:[n startsWith:name]) ifTrue:[ - next := next max:(p extractNumberStartingAt:size) - ] + |n| + n := p name. + + (n size >= size and:[n startsWith:name]) ifTrue:[ + next := next max:(p extractNumberStartingAt:size) + ] ]. next := next + 1. name := name, next printString. @@ -1876,10 +1876,10 @@ |prop| (prop := self propertyOfView:aView) notNil ifTrue:[ - prop name isNil ifTrue:[ - prop name:(self uniqueNameFor:(prop spec)). - ]. - ^ prop name + prop name isNil ifTrue:[ + prop name:(self uniqueNameFor:(prop spec)). + ]. + ^ prop name ]. ^ 'self' @@ -1891,23 +1891,23 @@ "add an object to the selection " (self enabled and:[(self isSelected:anObject) not]) ifTrue:[ - selection isCollection ifFalse:[ - selection isNil ifTrue:[ - selection := anObject - ] ifFalse:[ - selection := OrderedCollection with:selection with:anObject - ] - ] ifTrue:[ - "/ to enforce the change-message (value is identical to oldValue) - selection isList ifTrue:[ - selection add:anObject - ] ifFalse:[ - selection := selection asOrderedCollection. - selection := selection copyWith:anObject - ] - ]. - self showSelected:anObject. - treeView cvsSelectionAdd:anObject. + selection isCollection ifFalse:[ + selection isNil ifTrue:[ + selection := anObject + ] ifFalse:[ + selection := OrderedCollection with:selection with:anObject + ] + ] ifTrue:[ + "/ to enforce the change-message (value is identical to oldValue) + selection isList ifTrue:[ + selection add:anObject + ] ifFalse:[ + selection := selection asOrderedCollection. + selection := selection copyWith:anObject + ] + ]. + self showSelected:anObject. + treeView cvsSelectionAdd:anObject. ] "Modified: / 11.2.2000 / 01:39:05 / cg" @@ -1917,21 +1917,21 @@ "remove an object from the selection " (self isSelected:anObject) ifTrue:[ - self showUnselected:anObject. - - selection size > 1 ifTrue:[ - selection isList ifTrue:[ - selection remove:anObject ifAbsent:nil - ] ifFalse:[ - "/ to enforce the change-message (value is identical to oldValue) - selection := selection asOrderedCollection. - selection := selection copyWithout:anObject - ]. - self showSelection. - ] ifFalse:[ - selection := nil - ]. - treeView cvsSelectionRemove:anObject. + self showUnselected:anObject. + + selection size > 1 ifTrue:[ + selection isList ifTrue:[ + selection remove:anObject ifAbsent:nil + ] ifFalse:[ + "/ to enforce the change-message (value is identical to oldValue) + selection := selection asOrderedCollection. + selection := selection copyWithout:anObject + ]. + self showSelection. + ] ifFalse:[ + selection := nil + ]. + treeView cvsSelectionRemove:anObject. ] "Modified: / 11.2.2000 / 01:41:11 / cg" @@ -1939,12 +1939,12 @@ select:something "change selection to something - " - (self enabled and:[something ~= self selection]) ifTrue:[ - something isNil - ifTrue: [treeView selection: (Array with: 1)] - ifFalse:[treeView cvsSelection:something]. - self setSelection:something withRedraw:true + " + (self enabled and:[something ~= self selection]) ifTrue:[ + something isNil + ifTrue: [treeView selection: (Array with: 1)] + ifFalse:[treeView cvsSelection:something]. + self setSelection:something withRedraw:true ] ! @@ -1954,7 +1954,7 @@ (sel := self selection) isNil ifTrue:[^self]. sel isCollection ifTrue:[ - sel := self selection first. + sel := self selection first. ]. sel := sel superView. sel isNil ifTrue:[^self]. @@ -1968,16 +1968,16 @@ |list| selectionHiddenLevel == 0 ifTrue:[ - aSelOrNil size ~~ 0 ifTrue:[ - list := OrderedCollection new. - - self selectionDo:[:el| - (aSelOrNil includes:el) ifFalse:[list add:el] - ]. - self showUnselected:list. - ] ifFalse:[ - self hideSelection. - ] + aSelOrNil size ~~ 0 ifTrue:[ + list := OrderedCollection new. + + self selectionDo:[:el| + (aSelOrNil includes:el) ifFalse:[list add:el] + ]. + self showUnselected:list. + ] ifFalse:[ + self hideSelection. + ] ]. self setSelection:aSelOrNil withRedraw:false. self showSelection @@ -1994,25 +1994,25 @@ cls := self resolveName:className. cls notNil ifTrue:[ - aBuilder applicationClass:cls. + aBuilder applicationClass:cls. ]. aBuilder componentCreationHook:[:aView :aSpec :aBdr||sv p s n| - p := ViewProperty new. - s := aSpec copy. - p spec:s. - p view:aView. - - s class supportsSubComponents ifTrue:[ - s component:nil - ]. - - n := s name. - - (n isNil or:[(self propertyOfName:n) notNil]) ifTrue:[ - s name:(self uniqueNameFor:s) - ]. - treeView addProperty:p. + p := ViewProperty new. + s := aSpec copy. + p spec:s. + p view:aView. + + s class supportsSubComponents ifTrue:[ + s component:nil + ]. + + n := s name. + + (n isNil or:[(self propertyOfName:n) notNil]) ifTrue:[ + s name:(self uniqueNameFor:s) + ]. + treeView addProperty:p. ]. ^ aSpecification buildViewWithLayoutFor:aBuilder in:aFrame. @@ -2027,20 +2027,20 @@ mySpec := self specFor:anObject. (mySpec notNil and:[mySpec class supportsSubComponents]) ifTrue:[ - (anObject subViews notNil) ifTrue:[ - anObject subViews do:[:aSubView||spec| - spec := self fullSpecFor:aSubView. - spec notNil ifTrue:[ - subSpecs isNil ifTrue:[ - subSpecs := OrderedCollection new - ]. - subSpecs add:spec. - ]. - ]. - subSpecs notNil ifTrue:[ - mySpec component:(SpecCollection new collection:subSpecs) - ] - ] + (anObject subViews notNil) ifTrue:[ + anObject subViews do:[:aSubView||spec| + spec := self fullSpecFor:aSubView. + spec notNil ifTrue:[ + subSpecs isNil ifTrue:[ + subSpecs := OrderedCollection new + ]. + subSpecs add:spec. + ]. + ]. + subSpecs notNil ifTrue:[ + mySpec component:(SpecCollection new collection:subSpecs) + ] + ] ]. ^ mySpec @@ -2055,45 +2055,45 @@ |v builder| (builder := aBuilderOrNil) isNil ifTrue:[ - "/ create a dummy builder - builder := UIBuilder new isEditing:true. - className notNil ifTrue:[ - builder applicationClass:(self resolveName:className). - ]. + "/ create a dummy builder + builder := UIBuilder new isEditing:true. + className notNil ifTrue:[ + builder applicationClass:(self resolveName:className). + ]. ]. aSpec class isLayoutContainer ifTrue:[ - "/ TODO: - "/ go through subviews and let them resize to their default/preferred - "/ needed if we change a containers layout from fit to non-fit. - - (aView subViews ? #()) do:[:aSubView | - |fix spec prop| - - (prop := self propertyOfView:aSubView) notNil ifTrue:[ - spec := prop spec. - - spec useDefaultExtent ifTrue:[ - fix := aSubView sizeFixed:false. - aSubView extent:aSubView preferredExtent. - aSubView sizeFixed:fix - ] - ] - ]. + "/ TODO: + "/ go through subviews and let them resize to their default/preferred + "/ needed if we change a containers layout from fit to non-fit. + + (aView subViews ? #()) do:[:aSubView | + |fix spec prop| + + (prop := self propertyOfView:aSubView) notNil ifTrue:[ + spec := prop spec. + + spec useDefaultExtent ifTrue:[ + fix := aSubView sizeFixed:false. + aSubView extent:aSubView preferredExtent. + aSubView sizeFixed:fix + ] + ] + ]. ]. aSpec needsRebuildForAttributes ifTrue:[ - "/ needs a full rebuild (in case view class depends upon spec-attribute) - v := aSpec buildViewWithLayoutFor:builder in:(self findContainerOfView:aView). - v realize. - aView destroy. - device sync. - device flush. - aView becomeSameAs:v. - inputView raise. + "/ needs a full rebuild (in case view class depends upon spec-attribute) + v := aSpec buildViewWithLayoutFor:builder in:(self findContainerOfView:aView). + v realize. + aView destroy. + device sync. + device flush. + aView becomeSameAs:v. + "/ inputView raise. ] ifFalse:[ - aSpec setAttributesIn:aView with:builder. - self elementChangedSize:aView. + aSpec setAttributesIn:aView with:builder. + self elementChangedSize:aView. ]. ! @@ -2123,28 +2123,28 @@ |props name| aSpec class == WindowSpec ifTrue:[ - ^ treeView canvasSpec:aSpec + ^ treeView canvasSpec:aSpec ]. self singleSelection notNil ifTrue:[ - self withSelectionHiddenDo:[ - self transaction:#specification selectionDo:[:aView| - props := self propertyOfView:aView. - name := (aSpec name) withoutSeparators. - - name = props name ifFalse:[ - (self propertyOfName:name) notNil ifTrue:[ - name := props name - ] - ]. - - aSpec name:name. - self createUndoSpecModify:props. - self rebuildView:aView fromSpec:aSpec withBuilder:nil. - props spec:(aSpec copy). - treeView propertyChanged:props. - ] - ] + self withSelectionHiddenDo:[ + self transaction:#specification selectionDo:[:aView| + props := self propertyOfView:aView. + name := (aSpec name) withoutSeparators. + + name = props name ifFalse:[ + (self propertyOfName:name) notNil ifTrue:[ + name := props name + ] + ]. + + aSpec name:name. + self createUndoSpecModify:props. + self rebuildView:aView fromSpec:aSpec withBuilder:nil. + props spec:(aSpec copy). + treeView propertyChanged:props. + ] + ] ] "Modified: / 30.10.2001 / 13:59:45 / cg" @@ -2161,7 +2161,7 @@ ( (item := treeView itemOfView:aView) isNil or:[(prnt := item parent) isNil] ) ifTrue:[ - ^ false + ^ false ]. ^ (prnt parent isNil or:[prnt contents spec class isLayoutContainer not]) ! @@ -2171,7 +2171,7 @@ and all elements in the selection can be moved or aligned " selection size == 2 ifFalse:[ - ^ false + ^ false ]. ^ self canMoveOrAlignSelection @@ -2191,10 +2191,10 @@ something can change their layout ( move, align, ... operation ). " something notNil ifTrue:[ - self forEach:something do:[:aView| - (self canChangeLayoutOfView:aView) ifFalse:[^ false] - ]. - ^ true + self forEach:something do:[:aView| + (self canChangeLayoutOfView:aView) ifFalse:[^ false] + ]. + ^ true ]. ^ false ! @@ -2214,7 +2214,7 @@ argument to the block is a view from derived from something " self withinTransaction:aType objects:something do:[ - self forEach:something do:aOneArgBlock + self forEach:something do:aOneArgBlock ] ! @@ -2228,20 +2228,20 @@ size := objects size. objects isCollection ifTrue:[ - size == 0 ifTrue:[ ^ self ]. - size == 1 ifTrue:[ prop := self propertyOfView:(objects first) ] + size == 0 ifTrue:[ ^ self ]. + size == 1 ifTrue:[ prop := self propertyOfView:(objects first) ] ] ifFalse:[ - prop := self propertyOfView:objects + prop := self propertyOfView:objects ]. prop notNil ifTrue:[ - text := prop name + text := prop name ] ifFalse:[ - text := size printString, ' elements' + text := size printString, ' elements' ]. undoHistory withinTransaction:aType text:text do:[ - aNoneArgBlock value + aNoneArgBlock value ] ! ! @@ -2253,21 +2253,21 @@ |lyt args prop| undoHistory isTransactionOpen ifTrue:[ - prop := self propertyOfView:aView. - - prop notNil ifTrue:[ - args := Array new:3. - args at:1 put:(prop identifier). - - (lyt := aView geometryLayout) notNil ifTrue:[ - args at:2 put:#geometryLayout: - ] ifFalse:[ - lyt := aView extent. - args at:2 put:#extent: - ]. - args at:3 put:(lyt copy). - undoHistory addUndoSelector:#undoLayout: withArgs:args. - ] + prop := self propertyOfView:aView. + + prop notNil ifTrue:[ + args := Array new:3. + args at:1 put:(prop identifier). + + (lyt := aView geometryLayout) notNil ifTrue:[ + args at:2 put:#geometryLayout: + ] ifFalse:[ + lyt := aView extent. + args at:2 put:#extent: + ]. + args at:3 put:(lyt copy). + undoHistory addUndoSelector:#undoLayout: withArgs:args. + ] ] ! @@ -2277,14 +2277,14 @@ |prop pid| (prop := self propertyOfView:aView) notNil ifTrue:[ - (pid := self propertyOfParentForView:aView) notNil ifTrue:[ - pid := pid identifier - ]. - - undoHistory addUndoSelector:#undoRemove: - withArgs:(Array with:(self fullSpecFor:aView) - with:(prop identifier) - with:pid) + (pid := self propertyOfParentForView:aView) notNil ifTrue:[ + pid := pid identifier + ]. + + undoHistory addUndoSelector:#undoRemove: + withArgs:(Array with:(self fullSpecFor:aView) + with:(prop identifier) + with:pid) ] ! @@ -2292,8 +2292,8 @@ "undo method when changing the specification for an object " aProp notNil ifTrue:[ - undoHistory addUndoSelector:#undoSpecModify: - withArgs:(Array with:(aProp spec) with:(aProp identifier)) + undoHistory addUndoSelector:#undoSpecModify: + withArgs:(Array with:(aProp spec) with:(aProp identifier)) ] ! @@ -2315,8 +2315,8 @@ |view| (view := self findViewWithId:(args at:1)) notNil ifTrue:[ - view perform:(args at:2) with:(args at:3). - self layoutChanged. + view perform:(args at:2) with:(args at:3). + self layoutChanged. ] ! @@ -2326,10 +2326,10 @@ |frame prop view| (args at:3) notNil ifTrue:[ - frame := self findViewWithId:(args at:3). + frame := self findViewWithId:(args at:3). ]. frame isNil ifTrue:[ - frame := self + frame := self ]. view := self addSpec:(args at:1) builder:(UIBuilder new isEditing:true) in:frame. view realize. @@ -2346,12 +2346,12 @@ props := self propertyOfIdentifier:(args at:2). props notNil ifTrue:[ - view := props view. - spec := args at:1. - - props spec:spec. - self rebuildView:view fromSpec:spec withBuilder:nil. - treeView propertyChanged:props. + view := props view. + spec := args at:1. + + props spec:spec. + self rebuildView:view fromSpec:spec withBuilder:nil. + treeView propertyChanged:props. ] ! ! @@ -2359,7 +2359,7 @@ new Identifier notNil ifTrue:[Identifier := Identifier + 1] - ifFalse:[Identifier := 1]. + ifFalse:[Identifier := 1]. ^ self basicNew initialize ! ! @@ -2420,18 +2420,18 @@ val := 0. self name from:anIndex do:[:c| - c isDigit ifTrue:[val := val * 10 + c digitValue] - ifFalse:[^ 0] + c isDigit ifTrue:[val := val * 10 + c digitValue] + ifFalse:[^ 0] ]. ^ val - + ! ! !UIPainterView::ViewProperty methodsFor:'spec messages'! doesNotUnderstand:aMessage spec notNil ifTrue:[ - (spec respondsTo:(aMessage selector)) ifTrue:[^ aMessage sendTo:spec] + (spec respondsTo:(aMessage selector)) ifTrue:[^ aMessage sendTo:spec] ]. ^ nil !