From VisualWorks®, 7.6 of February 8, 2008 on March 3, 2008 at 9:43:31 pm (Dialog confirm: 'You are filing-in a Parcel source file!\\While this is possible it will not have\the same effect as loading the parcel.\None of the Parcel''s prerequisites will\be loaded and none of its load actions\will be performed.\\Are you sure you want to file-in?' withCRs) ifFalse: [self error: 'Parcel file-in abandoned. Choose terminate or close.'] <class> <name>VariableTypeDialog</name> <environment>Refactory.Browser</environment> <super>Refactory.Browser.BrowserDialog</super> <private>false</private> none classNameHolder classList model <imports></imports> <category>Browser-Refactorings UI</category> <attributes> <package>Browser-RefactoringUI</package> </attributes> </class> <comment> Refactory.Browser.VariableTypeDialog
VariableTypeDialog is a dialog that allows the user to enter the class of the object (i.e., its type). It is used when extracting a method to another class through an instance variable. We perform a quick and dirty type analysis that catches most types, but we allow the user to change what our guess is through this dialog. Instance Variables: classList <MultiSelectionInList> the list of possible types (selected ones are the real types) classNameHolder <ValueModel> a new type that the user can enter model <RBRootNamespace> our model to use for getting class names
</comment> <class> <name>CompositeRefactoryChangeInspector</name> <environment>Refactory.Browser</environment> <super>Refactory.Browser.BrowserApplicationModel</super> <private>false</private> none changeDescription changeTree originalCode change dialog <imports></imports> <category>Browser-Refactorings UI</category> <attributes> <package>Browser-RefactoringUI</package> </attributes> </class> <comment> Refactory.Browser.CompositeRefactoryChangeInspector
CompositeRefactoryChangeInspector is a special inspector for RefactoryChange objects. Instance Variables: change <RefactoryChange> the top level change object changeDescription <ValueHolder on: String> the description of the change selected at the top changes <SelectionInList on: RefactoryChange> the list of changes at the top of the window changeTree <SelectionInTree on: RefactoryChange> the list of changes at the top of the window dialog <SimpleDialog> if we are opened in a dialog, this is the containing dialog originalCode <ValueHolder on: String> what the code in the image currently looks like for the change
</comment> <class> <name>MethodNameDialog</name> <environment>Refactory.Browser</environment> <super>Refactory.Browser.BrowserDialog</super> <private>false</private> none argumentList selector methodName <imports></imports> <category>Browser-Refactorings UI</category> <attributes> <package>Browser-RefactoringUI</package> </attributes> </class> <comment> Refactory.Browser.MethodNameDialog
MethodNameDialog is a dialog that allows one to enter a selector for a method. In addition to entering the selector, the user can also reorder the parameters. Instance Variables: argumentList <SelectionInList> the method's parameters methodName <RBMethodName> the method name object that contains both the parameters and the selector selector <ValueModel> the symbol for the selector name
</comment> <name>PromptOnRefactoring</name> <environment>Refactory.Browser.BrowserApplicationModel</environment> <private>false</private> <constant>false</constant> <category>variables</category> <initializer>false</initializer> <attributes> <package>Browser-RefactoringUI</package> </attributes> <methods> Refactory.Browser.VariableTypeDialog <category>initialize-release</category>
chooseClassesFromList: aCollection initialSelections: selectedItems self classList list: aCollection asList. self classList selections: selectedItems
initialize super initialize. model := RBRootNameSpace new
model: aRBNameSpace model := aRBNameSpace
</methods> <methods> Refactory.Browser.VariableTypeDialog <category>aspects</category>
classList "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined. The initialization provided below may have been preempted by an initialize method." ^classList isNil ifTrue: [classList := MultiSelectionInList new] ifFalse: [classList]
classNameHolder "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined. The initialization provided below may have been preempted by an initialize method." ^classNameHolder isNil ifTrue: [classNameHolder := nil asValue] ifFalse: [classNameHolder]
</methods> <methods> Refactory.Browser.VariableTypeDialog <category>private</category>
getClassesForName | classes | classes := Set new. model allClassesDo: [:each | each name = self classNameHolder value asSymbol ifTrue: [classes add: each]. each fullName = self classNameHolder value asString ifTrue: [classes add: each]]. ^classes
</methods> <methods> Refactory.Browser.VariableTypeDialog <category>actions</category>
addClassToList | classes | classes := self getClassesForName. classes do: [:each | (self classList list includes: each) ifFalse: [self classList list add: each]]
</methods> <methods> Refactory.Browser.VariableTypeDialog <category>interface opening</category>
postBuildWith: aBuilder super postBuildWith: aBuilder. self visualBlockFor: #classList is: [:view :index | Label with: (view sequence at: index) fullName attributes: view textStyle]
</methods> <methods> Refactory.Browser.VariableTypeDialog class <category>querying</category>
chooseClassesFromList: aCollection initialSelections: selectedItems model: aRBNameSpace cancel: cancelBlock | dialog | dialog := self new. dialog model: aRBNameSpace. dialog chooseClassesFromList: aCollection initialSelections: selectedItems. ^dialog open ifTrue: [dialog classList selections] ifFalse: [cancelBlock value]
</methods> <methods> Refactory.Browser.VariableTypeDialog class <category>private-interface building</category>
markedAsSystemClass "This class not to be shown when browsing user classes."
</methods> <methods> Refactory.Browser.CompositeRefactoryChangeInspector <category>aspects</category>
changeDescription "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined. The initialization provided below may have been preempted by an initialize method." ^changeDescription isNil ifTrue: [changeDescription := Text new asValue] ifFalse: [changeDescription]
changeTree "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined. The initialization provided below may have been preempted by an initialize method." ^changeTree isNil ifTrue: [changeTree := SelectionInTree new] ifFalse: [changeTree]
originalCode "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined. The initialization provided below may have been preempted by an initialize method." ^originalCode isNil ifTrue: [originalCode := Text new asValue] ifFalse: [originalCode]
</methods> <methods> Refactory.Browser.CompositeRefactoryChangeInspector <category>actions</category>
close self closeRequest. dialog notNil ifTrue: [dialog close]
executeAll self showWaitCursorWhile: [self performChange: change]. self close
executeChange self performChange: self changeTree selection
removeChange | removedChanges | change removeChange: self changeTree selection. removedChanges := self changeTree selection withAllChanges. self removeFromTree: removedChanges. self changedChange
removeClass | class removedChanges | class := self changeTree selection changeObject. class isNil ifTrue: [^self]. removedChanges := OrderedCollection new. change withAllChanges do: [:each | each changeObject == class ifTrue: [removedChanges addAll: each withAllChanges. change removeChange: each]]. self removeFromTree: removedChanges. self changedChange
removeNameSpace | class removedChanges nameSpace | class := self changeTree selection changeObject. class isNil ifTrue: [^self]. nameSpace := class environment. removedChanges := OrderedCollection new. change withAllChanges do: [:each | (each changeObject ifNotNil: [:theClass | theClass environment]) == nameSpace ifTrue: [removedChanges addAll: each withAllChanges. change removeChange: each]]. self removeFromTree: removedChanges. self changedChange
</methods> <methods> Refactory.Browser.CompositeRefactoryChangeInspector <category>initialize-release</category>
initializeFor: aRefactoryChange change := aRefactoryChange. self changeTree list: (TreeModel on: aRefactoryChange displayRoot: false childrenWith: [:each | each changes]). self changeTree tree expandFully: 1
inspect: aRefactoryChange self initializeFor: aRefactoryChange. self open
inspectDialog: aRefactoryChange self initializeFor: aRefactoryChange. dialog := SimpleDialog new. dialog openFor: self interface: #dialogSpec
</methods> <methods> Refactory.Browser.CompositeRefactoryChangeInspector <category>private</category>
originalCodeForChange ^self changeTree selection originalCode
removeFromTree: removedChanges removedChanges reverseDo: [:each | self changeTree list remove: each ifAbsent: []]
</methods> <methods> Refactory.Browser.CompositeRefactoryChangeInspector <category>menu</category>
changesMenu ^ [self changeTree selection isNil ifTrue: [self disableMenu: self class changesMenu except: (Array with: (#ExecuteAll << #browser >> 'Execute All') asString)] ifFalse: [self class changesMenu]]
</methods> <methods> Refactory.Browser.CompositeRefactoryChangeInspector <category>changing</category>
changedChange | selectedChange changeText originalText | selectedChange := self changeTree selection. selectedChange isNil ifTrue: [changeDescription value: '' asText. originalCode value: '' asText. ^self]. changeText := selectedChange printString asText. originalText := self originalCodeForChange asText. DiffList compareTokensIn: originalText with: changeText. changeDescription value: changeText. originalCode value: originalText
</methods> <methods> Refactory.Browser.CompositeRefactoryChangeInspector class <category>interface opening</category>
openDialogOn: aRefactoryBuilder self new inspectDialog: aRefactoryBuilder
openOn: aRefactoryBuilder self new inspect: aRefactoryBuilder
</methods> <methods> Refactory.Browser.CompositeRefactoryChangeInspector class <category>private-interface building</category>
markedAsSystemClass "This class not to be shown when browsing user classes."
</methods> <methods> Refactory.Browser.MethodNameDialog <category>aspects</category>
argumentList "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined. The initialization provided below may have been preempted by an initialize method." ^argumentList isNil ifTrue: [argumentList := SelectionInList new] ifFalse: [argumentList]
selector "This method was generated by UIDefiner. Any edits made here may be lost whenever methods are automatically defined. The initialization provided below may have been preempted by an initialize method." ^selector isNil ifTrue: [selector := '' asValue] ifFalse: [selector]
</methods> <methods> Refactory.Browser.MethodNameDialog <category>accessing</category>
arguments ^argumentList list
methodName ^self selector value asSymbol
methodPattern | stream | stream := String new writeStream. self methodName numArgs > 0 ifTrue: [self methodName keywords with: self argumentList list do: [:keyword :arg | stream nextPutAll: keyword; nextPut: $ ; nextPutAll: arg; nextPut: $ ]] ifFalse: [stream nextPutAll: self methodName]. ^stream contents
</methods> <methods> Refactory.Browser.MethodNameDialog <category>initialize-release</category>
arguments: aCollection self argumentList list: aCollection asList. methodName arguments: aCollection asOrderedCollection
for: aMethodName self arguments: aMethodName arguments. aMethodName selector notNil ifTrue: [self methodName: aMethodName selector]. methodName := aMethodName
initialize super initialize. methodName := RBMethodName selector: #'' arguments: OrderedCollection new. self argumentList selectionIndexHolder onChangeSend: #changedSelection to: self
methodName: aSelector self selector value: aSelector
release super release. self argumentList selectionIndexHolder retractInterestsFor: self
</methods> <methods> Refactory.Browser.MethodNameDialog <category>changing</category>
changedSelection | index | index := self argumentList selectionIndex. index > 1 ifTrue: [self enable: #up] ifFalse: [self disable: #up]. index < self argumentList list size & (index > 0) ifTrue: [self enable: #down] ifFalse: [self disable: #down]. self changedSelector
changedSelector methodName selector: self methodName. methodName isValid ifTrue: [self enable: #ok. self printSelector] ifFalse: [self disable: #ok. self printNoSelector]
</methods> <methods> Refactory.Browser.MethodNameDialog <category>actions</category>
down | index | index := self argumentList selectionIndex. methodName moveArgument: (self argumentList list at: index + 1) before: self argumentList selection. self argumentList list swap: index with: index + 1. self argumentList selectionIndex: index + 1
up | index | index := self argumentList selectionIndex. methodName moveArgument: self argumentList selection before: (self argumentList list at: index - 1). self argumentList list swap: index with: index - 1. self argumentList selectionIndex: index - 1
</methods> <methods> Refactory.Browser.MethodNameDialog <category>private</category>
methodLabel: aString | component | component := builder componentAt: #methodPattern. component notNil ifTrue: [component labelString: aString]
printNoSelector self methodLabel: ((#NA1pArgSelectorRequired << #browser >> 'Not available: <1p> argument selector required') expandMacrosWith: self arguments size)
printSelector self methodLabel: self methodPattern
</methods> <methods> Refactory.Browser.MethodNameDialog <category>interface opening</category>
postBuildWith: aBuilder super postBuildWith: aBuilder. self changedSelection. (self builder componentAt: #selector) widget controller continuousAccept: true
</methods> <methods> Refactory.Browser.MethodNameDialog class <category>instance creation</category>
for: aMethodName | dialog | dialog := self new. dialog for: aMethodName. ^dialog
methodNameFor: arguments | dialog | dialog := self new. dialog arguments: arguments. ^dialog
methodNameFor: arguments initial: aSelector | dialog | dialog := self new. dialog arguments: arguments. dialog methodName: aSelector. ^dialog
</methods> <methods> Refactory.Browser.MethodNameDialog class <category>private-interface building</category>
markedAsSystemClass "This class not to be shown when browsing user classes."
</methods> <methods> Refactory.Browser.BrowserApplicationModel class <category>accessing</category>
promptOnRefactoring ^PromptOnRefactoring
promptOnRefactoring: aBoolean PromptOnRefactoring := aBoolean
</methods> <methods> Refactory.Browser.BrowserApplicationModel <category>error handling</category>
handleError: aBlock ^[self showWaitCursorWhile: aBlock] on: Refactoring preconditionSignal do: [:ex | ex isResumable ifTrue: [(self confirm: (ex description last == $? ifTrue: [ex description] ifFalse: [((#x1sNProceedQ << #browser >> '<1s><n>Do you want to proceed?') expandMacrosWith: ex description)])) ifTrue: [ex resume]] ifFalse: [ex parameter notNil ifTrue: [(self confirm: ex description) ifTrue: [ex parameter value]] ifFalse: [self warn: ex description]]. ex return: nil]
</methods> <methods> Refactory.Browser.BrowserApplicationModel <category>accessing</category>
performChange: aRefactoringChange RefactoryChangeManager instance performChange: aRefactoringChange
performChange: aRefactoringChange withMessage: aString RefactoryChangeManager instance performChange: aRefactoringChange withMessage: aString
performRefactoring: aRefactoring self class promptOnRefactoring ifTrue: [aRefactoring primitiveExecute. CompositeRefactoryChangeInspector openDialogOn: aRefactoring changes asCompositeChange] ifFalse: [aRefactoring execute]
</methods> <methods> Refactory.Browser.Refactoring class <category>accessing</category>
initializeRefactoringOptions "self initializeRefactoringOptions" RefactoringOptions := IdentityDictionary new. RefactoringOptions at: #implementorToInline put: [:ref :imps | BrowserApplicationModel basicNew choose: (#WhichImpToInline << #browser >> 'Which implementation should be inlined?') fromList: imps values: imps lines: 5 cancel: [nil]]; at: #methodName put: [:ref :methodName | | dialog | dialog := MethodNameDialog for: methodName. dialog open ifTrue: [methodName] ifFalse: [nil]]; at: #selfArgumentName put: [:ref | ref request: (#EnterNameForSelf << #browser >> 'Enter name for argument to refer to "self" in extracted method')]; at: #selectVariableToMoveTo put: [:ref :class :selector | | parseTree nameList ignoreList | parseTree := class parseTreeFor: selector. parseTree isNil ifTrue: [parseTree := RBMethodNode selector: #value body: (RBSequenceNode statements: #())]. nameList := OrderedCollection new. nameList add: (#DashesArgumentsDashes << #browser >> '---- Arguments ----') asString; addAll: parseTree argumentNames asSortedCollection; add: (#DashesInstanceVariablesDashes << #browser >> '---- Instance Variables ----') asString. ignoreList := OrderedCollection with: 1 with: nameList size. nameList addAll: class allInstanceVariableNames asSortedCollection. BrowserApplicationModel basicNew choose: (#SelectVariableToMoveMethod << #browser >> 'Select variable to move method into:') fromList: nameList values: nameList ignore: ignoreList initialSelection: nil lines: 8 cancel: [nil]]; at: #variableTypes put: [:ref :types :selected | VariableTypeDialog chooseClassesFromList: types initialSelections: selected model: ref model cancel: [nil]]; at: #extractAssignment put: [:ref :varName | ref confirm: ((#ExtractAssignmentOf1sAtEndQ << #browser >> 'Do you want to extract the assignment of <1s><n>at the end of selection?') expandMacrosWith: varName)]; at: #inlineExpression put: [:ref :string | ref confirm: ((#Inline1sOrUseTempQ << #browser >> 'Do you want to inline "<1s>"? If not, it will be assigned as a temporary.') expandMacrosWith: string)]; at: #alreadyDefined put: [:ref :class :selector | ref confirm: ((#x1sDefinedIn2pUseAnywayQ << #browser >> '<1s> is already defined in the <2p> hierarchy.<n>Extracting it to an existing selector may change behavior.<n>Do you wish to use <1s> anyway?') expandMacrosWith: selector with: class)]; at: #useExistingMethod put: [:ref :selector | ref confirm: ((#UseExistingMethod1sQ << #browser >> 'Use existing method <1s> instead of creating new method?') expandMacrosWith: selector)]; at: #openBrowser put: [:ref :env | env openEditor]; at: #sharedVariableScopeExpansion put: [:ref :var | BrowserApplicationModel basicNew choose: ((#HowToHandle1sReferencesQ << #browser >> 'How do you want to handle references to "<1s>"?') expandMacrosWith: var) fromList: (Array with: (#CreateAccessors << #browser >> 'Create Accessors') asString with: (#SpecificImport << #browser >> 'Specific Import') asString) values: #(#createAccessors: #specificImport:) lines: 5 cancel: [nil]]
</methods> <methods> Refactory.Browser.Refactoring <category>utilities</category>
confirm: aString ^Dialog confirm: aString
request: aString ^Dialog request: aString
</methods> <methods> Refactory.Browser.RefactoryChange <category>performing-changes</category>
executeWithMessage: aString | tally controller model done | model := 0 asValue. done := 0. tally := self changesSize. controller := aString isNil ifTrue: [nil] ifFalse: [ProgressWidgetView progressOpenOn: model label: aString]. model value: 0. ^ [self executeNotifying: [done := done + 1. model value: done asFloat / tally]] ensure: [controller notNil ifTrue: [controller closeAndUnschedule]]
</methods> <methods> Refactory.Browser.RefactoryChange <category>user interface</category>
inspect ^CompositeRefactoryChangeInspector openOn: self asCompositeChange
</methods> <methods> Refactory.Browser.VariableTypeDialog class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: #(#{Kernel.UserMessage} #key: #SelectVariableType #defaultString: 'Select variable type' #catalogID: #browser) #bounds: #(#{Graphics.Rectangle} 353 236 672 533 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.SequenceViewSpec} #layout: #(#{Graphics.LayoutFrame} 5 0 30 0 -5 1 -100 1 ) #name: #classList #model: #classList #multipleSelections: true #useModifierKeys: true #selectionType: #highlight ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.LayoutFrame} 5 0 -70 1 -65 1 -40 1 ) #name: #classNameHolder #model: #classNameHolder #type: #symbol ) #(#{UI.DividerSpec} #layout: #(#{Graphics.LayoutFrame} 0 0 -98 1 0 1 -96 1 ) ) #(#{UI.DividerSpec} #layout: #(#{Graphics.LayoutFrame} 0 0 -37 1 0 1 -35 1 ) ) #(#{UI.LabelSpec} #layout: #(#{Core.Point} 5 2 ) #label: #(#{Kernel.UserMessage} #key: #SelectClassesToMoveToC #defaultString: 'Select classes to move to:' #catalogID: #browser) ) #(#{UI.ActionButtonSpec} #layout: #(#{UI.AlignmentOrigin} 0 0.333333 -3 1 0.5 1 ) #name: #accept #model: #accept #label: #(#{Kernel.UserMessage} #key: #OK #defaultString: 'OK' #catalogID: #browser) #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{UI.AlignmentOrigin} 0 0.666666 -3 1 0.5 1 ) #name: #cancel #model: #cancel #label: #(#{Kernel.UserMessage} #key: #Cancel #defaultString: 'Cancel' #catalogID: #browser) #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{UI.AlignmentOrigin} -5 1 -40 1 1 1 ) #name: #addClassToList #model: #addClassToList #label: #(#{Kernel.UserMessage} #key: #Add #defaultString: 'Add' #catalogID: #browser) #defaultable: true ) #(#{UI.LabelSpec} #layout: #(#{Graphics.LayoutOrigin} 5 0 -95 1 ) #label: #(#{Kernel.UserMessage} #key: #AddClassToListC #defaultString: 'Add class to list:' #catalogID: #browser) ) ) ) )
</methods> <methods> Refactory.Browser.CompositeRefactoryChangeInspector class <category>interface specs</category>
dialogSpec "UIPainter new openOnClass: self andSelector: #dialogSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: #(#{Kernel.UserMessage} #key: #Changes #defaultString: 'Changes' #catalogID: #browser) #bounds: #(#{Graphics.Rectangle} 800 600 1408 1051 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.TreeViewSpec} #layout: #(#{Graphics.LayoutFrame} 0 0 0 0 0 1 -2 0.333333 ) #name: #changeTree #model: #changeTree #callbacksSpec: #(#{UI.UIEventCallbackSubSpec} #valueChangeSelector: #changedChange ) #menu: #dialogChangesMenu #useModifierKeys: true #selectionType: #highlight #useIcons: #none ) #(#{UI.ResizingSplitterSpec} #layout: #(#{Graphics.LayoutFrame} 0 0 -2 0.333333 0 1 2 0.333333 ) #name: #ResizingSplitter1 #horizontal: true #minAboveSize: 30 #minBelowSize: 50 #aboveWidgets: 'changes changeTree ' #belowWidgets: 'changeDescription ResizingSplitter2 originalCode ImageLabel ChangeLabel' ) #(#{UI.LabelSpec} #layout: #(#{Graphics.LayoutOrigin} 2 0 2 0.333333 ) #name: #ImageLabel #label: #(#{Kernel.UserMessage} #key: #ImageC #defaultString: 'Image:' #catalogID: #browser) ) #(#{UI.TextEditorSpec} #layout: #(#{Graphics.LayoutFrame} 0 0 29 0.333333 -2 0.5 -30 1 ) #name: #originalCode #model: #originalCode #isReadOnly: true ) #(#{UI.ResizingSplitterSpec} #layout: #(#{Graphics.LayoutFrame} -2 0.5 0 0.3333 2 0.5 -30 1 ) #name: #ResizingSplitter2 #horizontal: false #minAboveSize: 30 #minBelowSize: 30 #aboveWidgets: 'originalCode' #belowWidgets: 'changeDescription ChangeLabel' ) #(#{UI.LabelSpec} #layout: #(#{Graphics.LayoutOrigin} 2 0.5 2 0.333333 ) #name: #ChangeLabel #label: #(#{Kernel.UserMessage} #key: #ChangeC #defaultString: 'Change:' #catalogID: #browser) ) #(#{UI.TextEditorSpec} #layout: #(#{Graphics.LayoutFrame} 2 0.5 29 0.333333 0 1 -30 1 ) #name: #changeDescription #model: #changeDescription #isReadOnly: true ) #(#{UI.DividerSpec} #layout: #(#{Graphics.LayoutFrame} 0 0 -29 1 0 1 -28 1 ) #name: #Divider1 ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.LayoutFrame} -50 0.333333 -26 1 50 0.333333 -1 1 ) #name: #OKButton #model: #executeAll #label: #(#{Kernel.UserMessage} #key: #OK #defaultString: 'OK' #catalogID: #browser) #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.LayoutFrame} -50 0.666666 -26 1 50 0.666666 -1 1 ) #name: #CancelButton #model: #close #label: #(#{Kernel.UserMessage} #key: #Cancel #defaultString: 'Cancel' #catalogID: #browser) #defaultable: true ) ) ) )
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #label: #(#{Kernel.UserMessage} #key: #Changes #defaultString: 'Changes' #catalogID: #browser) #bounds: #(#{Graphics.Rectangle} 800 600 1408 1051 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.TreeViewSpec} #layout: #(#{Graphics.LayoutFrame} 0 0 0 0 0 1 -2 0.333333 ) #name: #changeTree #model: #changeTree #callbacksSpec: #(#{UI.UIEventCallbackSubSpec} #valueChangeSelector: #changedChange ) #menu: #changesMenu #useModifierKeys: true #selectionType: #highlight #useIcons: #none ) #(#{UI.ResizingSplitterSpec} #layout: #(#{Graphics.LayoutFrame} 0 0 -2 0.333333 0 1 2 0.333333 ) #name: #ResizingSplitter1 #horizontal: true #minAboveSize: 30 #minBelowSize: 30 #aboveWidgets: 'changes changeTree ' #belowWidgets: 'changeDescription ResizingSplitter2 originalCode ImageLabel ChangeLabel' ) #(#{UI.LabelSpec} #layout: #(#{Graphics.LayoutOrigin} 2 0 2 0.333333 ) #name: #ImageLabel #label: #(#{Kernel.UserMessage} #key: #ImageC #defaultString: 'Image:' #catalogID: #browser) ) #(#{UI.TextEditorSpec} #layout: #(#{Graphics.LayoutFrame} 0 0 29 0.333333 -2 0.5 0 1 ) #name: #originalCode #model: #originalCode #isReadOnly: true ) #(#{UI.ResizingSplitterSpec} #layout: #(#{Graphics.LayoutFrame} -2 0.5 0 0.3333 2 0.5 0 1 ) #name: #ResizingSplitter2 #horizontal: false #minAboveSize: 30 #minBelowSize: 30 #aboveWidgets: 'originalCode' #belowWidgets: 'changeDescription ChangeLabel' ) #(#{UI.LabelSpec} #layout: #(#{Graphics.LayoutOrigin} 2 0.5 2 0.333333 ) #name: #ChangeLabel #label: #(#{Kernel.UserMessage} #key: #ChangeC #defaultString: 'Change:' #catalogID: #browser) ) #(#{UI.TextEditorSpec} #layout: #(#{Graphics.LayoutFrame} 2 0.5 29 0.333333 0 1 0 1 ) #name: #changeDescription #model: #changeDescription #isReadOnly: true ) ) ) )
</methods> <methods> Refactory.Browser.CompositeRefactoryChangeInspector class <category>resources</category>
changesMenu "MenuEditor new openOnClass: self andSelector: #changesMenu" <resource: #menu> ^#(#{UI.Menu} #( #(#{UI.MenuItem} #rawLabel: #(#{Kernel.UserMessage} #key: #ExecuteAll #defaultString: 'Execute All' #catalogID: #browser) #value: #executeAll ) #(#{UI.MenuItem} #rawLabel: #(#{Kernel.UserMessage} #key: #Execute #defaultString: 'Execute' #catalogID: #browser) #value: #executeChange ) #(#{UI.MenuItem} #rawLabel: #(#{Kernel.UserMessage} #key: #Remove #defaultString: 'Remove' #catalogID: #browser) #value: #removeChange ) #(#{UI.MenuItem} #rawLabel: #(#{Kernel.UserMessage} #key: #RemoveClass #defaultString: 'Remove Class' #catalogID: #browser) #value: #removeClass ) #(#{UI.MenuItem} #rawLabel: #(#{Kernel.UserMessage} #key: #RemoveNameSpace #defaultString: 'Remove Name Space' #catalogID: #browser) #nameKey: #removeNameSpace #value: #removeNameSpace ) ) #(2 3 ) nil ) decodeAsLiteralArray
dialogChangesMenu "MenuEditor new openOnClass: self andSelector: #dialogChangesMenu" <resource: #menu> ^#(#{UI.Menu} #( #(#{UI.MenuItem} #rawLabel: #(#{Kernel.UserMessage} #key: #Remove #defaultString: 'Remove' #catalogID: #browser) #value: #removeChange ) #(#{UI.MenuItem} #rawLabel: #(#{Kernel.UserMessage} #key: #RemoveClass #defaultString: 'Remove Class' #catalogID: #browser) #value: #removeClass ) #(#{UI.MenuItem} #rawLabel: #(#{Kernel.UserMessage} #key: #RemoveNameSpace #defaultString: 'Remove Name Space' #catalogID: #browser) #nameKey: #removeNameSpace #value: #removeNameSpace ) ) #(3 ) nil ) decodeAsLiteralArray
</methods> <methods> Refactory.Browser.MethodNameDialog class <category>interface specs</category>
windowSpec "UIPainter new openOnClass: self andSelector: #windowSpec" <resource: #canvas> ^#(#{UI.FullSpec} #window: #(#{UI.WindowSpec} #properties: #(#{UI.PropertyListDictionary} #sizeType #specifiedSize #positionType #positionSystemDefault #openType #advanced ) #label: #(#{Kernel.UserMessage} #key: #MethodName #defaultString: 'Method name' #catalogID: #browser) #min: #(#{Core.Point} 20 20 ) #max: #(#{Core.Point} 1024 768 ) #bounds: #(#{Graphics.Rectangle} 512 384 912 684 ) ) #component: #(#{UI.SpecCollection} #collection: #( #(#{UI.LabelSpec} #layout: #(#{UI.AlignmentOrigin} 5 0 25 0 0 1 ) #name: #selectorLabel #label: #(#{Kernel.UserMessage} #key: #SelectorC #defaultString: 'Selector:' #catalogID: #browser) ) #(#{UI.InputFieldSpec} #layout: #(#{Graphics.LayoutFrame} 5 0 25 0 -35 1 50 0 ) #name: #selector #model: #selector #callbacksSpec: #(#{UI.UIEventCallbackSubSpec} #valueChangeSelector: #changedSelector ) #type: #string ) #(#{UI.LabelSpec} #layout: #(#{UI.AlignmentOrigin} 5 0 75 0 0 1 ) #name: #argumentLabel #label: #(#{Kernel.UserMessage} #key: #ArgumentOrderC #defaultString: 'Argument order:' #catalogID: #browser) ) #(#{UI.SequenceViewSpec} #layout: #(#{Graphics.LayoutFrame} 5 0 75 0 -35 1 190 0 ) #name: #argumentList #model: #argumentList ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.LayoutFrame} -30 1 75 0 -5 1 100 0 ) #name: #up #isOpaque: true #model: #up #label: #upImage #hasCharacterOrientedLabel: false ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.LayoutFrame} -30 1 105 0 -5 1 130 0 ) #name: #down #isOpaque: true #model: #down #label: #downImage #hasCharacterOrientedLabel: false ) #(#{UI.GroupBoxSpec} #layout: #(#{Graphics.LayoutFrame} 5 0 200 0 -35 1 250 0 ) #name: #methodPatternBox #label: #(#{Kernel.UserMessage} #key: #ResultingPattern #defaultString: 'Resulting pattern' #catalogID: #browser) ) #(#{UI.LabelSpec} #layout: #(#{Graphics.LayoutFrame} 10 0 220 0 -45 1 245 0 ) #name: #methodPattern #label: #(#{Kernel.UserMessage} #key: #LTnoSelectorGT #defaultString: '<no selector>' #catalogID: #browser) ) #(#{UI.ActionButtonSpec} #layout: #(#{UI.AlignmentOrigin} -5 0.5 265 0 1 0 ) #name: #ok #model: #accept #label: #(#{Kernel.UserMessage} #key: #OK #defaultString: 'OK' #catalogID: #browser) #isDefault: true #defaultable: true ) #(#{UI.ActionButtonSpec} #layout: #(#{Graphics.LayoutOrigin} 5 0.5 265 0 ) #name: #cancel #model: #cancel #label: #(#{Kernel.UserMessage} #key: #Cancel #defaultString: 'Cancel' #catalogID: #browser) #defaultable: true ) ) ) )
</methods> "Imported Classes:" self error: 'Attempting to file-in parcel imports. Choose terminate or close' <class> <name>BrowserApplicationModel</name> <environment>Refactory.Browser</environment> <super>UI.ApplicationModel</super> <private>false</private> none menus <imports></imports> <category>Browser-RB UI</category> <attributes> <package>Browser-BaseUI</package> </attributes> </class> <class> <name>Refactoring</name> <environment>Refactory.Browser</environment> <super>Core.Object</super> <private>false</private> none model options methodClass <imports></imports> <category>Browser-Refactorings</category> <attributes> <package>Browser-Refactorings</package> </attributes> </class> <class> <name>BrowserDialog</name> <environment>Refactory.Browser</environment> <super>UI.SimpleDialog</super> <private>false</private> none <imports></imports> <category>Browser-RB UI</category> <attributes> <package>Browser-BaseUI</package> </attributes> </class> <class> <name>RefactoryChange</name> <environment>Refactory.Browser</environment> <super>Core.Object</super> <private>false</private> none name <imports></imports> <category>Browser-Change Objects</category> <attributes> <package>Browser-ChangeObjects</package> </attributes> </class>