From 03af9be549d1b7e4beab7e77bcd2920c2a651ec7 Mon Sep 17 00:00:00 2001 From: jordanmontt Date: Wed, 17 Nov 2021 15:03:41 +0100 Subject: [PATCH] Added an application. Renamed some classes. Using the application to start the presenters instead of sending new openWithSpec. Using styles. --- .../RewriteRuleBuilderPresenter.class.st | 17 ++-- .../ApplyRuleOnAllClassesCommand.class.st | 2 +- .../MatchToolPresenter.class.st | 55 ++++++++----- .../OpenMatchToolCommand.class.st | 6 ++ .../OpenRTApplierCommand.class.st | 4 +- .../OpenRTBasicEditorCommand.class.st | 10 ++- .../OpenRTExpressionFinderCommand.class.st | 6 ++ .../OpenRTHelpBrowserCommand.class.st | 8 +- .../OpenRTRuleLoaderCommand.class.st | 6 ++ src/RewriteRuleTools/RTApplication.class.st | 82 +++++++++++++++++++ .../RTCheatSheetPresenter.class.st | 13 ++- ...st => RTCodeTransformerPresenter.class.st} | 60 ++++++++------ .../RTExpressionFinderPresenter.class.st | 4 +- ...ass.st => RTHelpBrowserPresenter.class.st} | 41 +++++----- ...lass.st => RTRuleEditorPresenter.class.st} | 58 +++++-------- .../RTRuleLoaderPresenter.class.st | 6 +- src/RewriteRuleTools/SaveRuleCommand.class.st | 6 ++ .../RTBasicEditorPresenterTest.class.st | 8 +- .../RTRuleApplierPresenterTest.class.st | 4 +- .../RTRulesHelpPresenterTest.class.st | 2 +- 20 files changed, 267 insertions(+), 131 deletions(-) create mode 100644 src/RewriteRuleTools/RTApplication.class.st rename src/RewriteRuleTools/{RTRuleTransformerPresenter.class.st => RTCodeTransformerPresenter.class.st} (72%) rename src/RewriteRuleTools/{RTRulesHelpPresenter.class.st => RTHelpBrowserPresenter.class.st} (89%) rename src/RewriteRuleTools/{RTBasicEditorPresenter.class.st => RTRuleEditorPresenter.class.st} (79%) diff --git a/src/RewriteRuleBuilder/RewriteRuleBuilderPresenter.class.st b/src/RewriteRuleBuilder/RewriteRuleBuilderPresenter.class.st index c6087a9..456ad58 100644 --- a/src/RewriteRuleBuilder/RewriteRuleBuilderPresenter.class.st +++ b/src/RewriteRuleBuilder/RewriteRuleBuilderPresenter.class.st @@ -67,7 +67,8 @@ RewriteRuleBuilderPresenter class >> menuCommandOn: aBuilder [ { #category : #'instance creation' } RewriteRuleBuilderPresenter class >> open [ - ^ self new openWithSpec + + ^ RTApplication new startRuleBuilder ] { #category : #accessing } @@ -90,7 +91,7 @@ RewriteRuleBuilderPresenter >> applyOnAllClasses [ (UIManager default confirm: 'Do you want to apply this rule to all system classes?') ifFalse: [ ^ self ]. - RTRuleTransformerPresenter + RTCodeTransformerPresenter runReplaceWithRuleAsAssociation: self lhs text -> self rhs text isForMethod: false ] @@ -216,17 +217,17 @@ RewriteRuleBuilderPresenter >> initializePresenters [ icon: MatchToolPresenter icon. basicEditorButton := self newButton label: 'Basic Editor'; - icon: RTBasicEditorPresenter icon. + icon: RTRuleEditorPresenter icon. applyOnAllClassesButton := self newButton label: 'On all classes'; help: 'Apply the current rewrite rule that is on this tool to all classes in the system.'; - icon: RTRuleTransformerPresenter icon. + icon: RTCodeTransformerPresenter icon. applierButton := self newButton label: 'On selection...'; help: 'Open a tool to apply a saved rewrite rule to a selected set of classes.'; - icon: RTRuleTransformerPresenter icon. + icon: RTCodeTransformerPresenter icon. buttonsBar := self newButtonBar add: saveRuleButton; add: applierButton; @@ -319,16 +320,16 @@ RewriteRuleBuilderPresenter >> openApplier [ | applier | ^ loadedRule ifNotNil: [ - applier := RTRuleTransformerPresenter new. + applier := RTCodeTransformerPresenter new. applier selectedRules: { loadedRule class }. applier openWithSpec ] - ifNil: [ RTRuleTransformerPresenter open ] + ifNil: [ RTCodeTransformerPresenter open ] ] { #category : #actions } RewriteRuleBuilderPresenter >> openBasicRuleEditor [ - ^ RTBasicEditorPresenter new + ^ RTRuleEditorPresenter new rhs: self rhs; lhs: self lhs; openWithSpec diff --git a/src/RewriteRuleTools/ApplyRuleOnAllClassesCommand.class.st b/src/RewriteRuleTools/ApplyRuleOnAllClassesCommand.class.st index 7e886b0..b71bbdf 100644 --- a/src/RewriteRuleTools/ApplyRuleOnAllClassesCommand.class.st +++ b/src/RewriteRuleTools/ApplyRuleOnAllClassesCommand.class.st @@ -24,7 +24,7 @@ ApplyRuleOnAllClassesCommand class >> defaultName [ { #category : #default } ApplyRuleOnAllClassesCommand class >> iconName [ - ^ RTRuleTransformerPresenter iconName + ^ RTCodeTransformerPresenter iconName ] { #category : #executing } diff --git a/src/RewriteRuleTools/MatchToolPresenter.class.st b/src/RewriteRuleTools/MatchToolPresenter.class.st index 4fc3d8b..8e8178f 100644 --- a/src/RewriteRuleTools/MatchToolPresenter.class.st +++ b/src/RewriteRuleTools/MatchToolPresenter.class.st @@ -62,10 +62,10 @@ MatchToolPresenter class >> menuCommandOn: aBuilder [ { #category : #api } MatchToolPresenter class >> open [ - ^ self new openWithSpec + ^ RTApplication new startMatchTool ] -{ #category : #accessing } +{ #category : #specs } MatchToolPresenter class >> title [ ^ 'Match Tool' @@ -100,6 +100,32 @@ MatchToolPresenter >> getBindingsItemsForMatch: bindingsAssociation [ ^ newItems flattened ] +{ #category : #initialization } +MatchToolPresenter >> initializeButtons [ + + executeButton := self newButton. + executeButton + icon: (self iconNamed: #smallDoIt); + label: 'Match'; + shortcut: Character cr meta. +] + +{ #category : #initialization } +MatchToolPresenter >> initializeEditors [ + + methodCheckbox := self newCheckBox label: 'Is rule for method?'. + + codeLabel := self newLabel label: 'Pharo code'. + + codeEditor := self newCode. + codeEditor + withoutLineNumbers; + beForScripting; + text: DefaultRule new inputCode. + + ruleEditor := self instantiate: RTSearchForPanel. +] + { #category : #initialization } MatchToolPresenter >> initializeLayout [ @@ -134,23 +160,7 @@ MatchToolPresenter >> initializeLayout [ ] { #category : #initialization } -MatchToolPresenter >> initializePresenters [ - - methodCheckbox := self newCheckBox label: 'Is rule for method?'. - codeLabel := self newLabel label: 'Pharo code'. - - codeEditor := self newCode. - codeEditor - withoutLineNumbers; - beForScripting; - text: DefaultRule new inputCode. - ruleEditor := self instantiate: RTSearchForPanel. - - executeButton := self newButton. - executeButton - icon: (self iconNamed: #smallDoIt); - label: 'Match'; - shortcut: Character cr meta. +MatchToolPresenter >> initializeMatchesPresenters [ matchesList := self newList. matchesList display: [ :assoc | assoc key formattedCode ]. @@ -164,7 +174,14 @@ MatchToolPresenter >> initializePresenters [ title: 'Bindings' evaluated: [ :assoc | assoc value formattedCode ]); beResizable. +] +{ #category : #initialization } +MatchToolPresenter >> initializePresenters [ + + self initializeEditors. + self initializeButtons. + self initializeMatchesPresenters. self initializeLayout. self focusOrder diff --git a/src/RewriteRuleTools/OpenMatchToolCommand.class.st b/src/RewriteRuleTools/OpenMatchToolCommand.class.st index 34bc764..97a39b1 100644 --- a/src/RewriteRuleTools/OpenMatchToolCommand.class.st +++ b/src/RewriteRuleTools/OpenMatchToolCommand.class.st @@ -9,6 +9,12 @@ Class { #category : #'RewriteRuleTools-Commands' } +{ #category : #default } +OpenMatchToolCommand class >> defaultDescription [ + + ^ 'Open MatchTool' +] + { #category : #default } OpenMatchToolCommand class >> defaultName [ diff --git a/src/RewriteRuleTools/OpenRTApplierCommand.class.st b/src/RewriteRuleTools/OpenRTApplierCommand.class.st index 8027fd3..4a2e2d1 100644 --- a/src/RewriteRuleTools/OpenRTApplierCommand.class.st +++ b/src/RewriteRuleTools/OpenRTApplierCommand.class.st @@ -24,11 +24,11 @@ OpenRTApplierCommand class >> defaultName [ { #category : #default } OpenRTApplierCommand class >> iconName [ - ^ RTRuleTransformerPresenter iconName + ^ RTCodeTransformerPresenter iconName ] { #category : #executing } OpenRTApplierCommand >> execute [ - ^ RTRuleTransformerPresenter open + ^ RTCodeTransformerPresenter open ] diff --git a/src/RewriteRuleTools/OpenRTBasicEditorCommand.class.st b/src/RewriteRuleTools/OpenRTBasicEditorCommand.class.st index 4ad0201..e074654 100644 --- a/src/RewriteRuleTools/OpenRTBasicEditorCommand.class.st +++ b/src/RewriteRuleTools/OpenRTBasicEditorCommand.class.st @@ -9,6 +9,12 @@ Class { #category : #'RewriteRuleTools-Commands' } +{ #category : #default } +OpenRTBasicEditorCommand class >> defaultDescription [ + + ^ 'Open Rewrite Rule Editor' +] + { #category : #default } OpenRTBasicEditorCommand class >> defaultName [ @@ -18,13 +24,13 @@ OpenRTBasicEditorCommand class >> defaultName [ { #category : #default } OpenRTBasicEditorCommand class >> iconName [ - ^RTBasicEditorPresenter iconName + ^RTRuleEditorPresenter iconName ] { #category : #executing } OpenRTBasicEditorCommand >> execute [ - ^ RTBasicEditorPresenter new + ^ RTRuleEditorPresenter new lhs: self context lhs; rhs: self context rhs; openWithSpec diff --git a/src/RewriteRuleTools/OpenRTExpressionFinderCommand.class.st b/src/RewriteRuleTools/OpenRTExpressionFinderCommand.class.st index 6038d2b..92dd991 100644 --- a/src/RewriteRuleTools/OpenRTExpressionFinderCommand.class.st +++ b/src/RewriteRuleTools/OpenRTExpressionFinderCommand.class.st @@ -9,6 +9,12 @@ Class { #category : #'RewriteRuleTools-Commands' } +{ #category : #default } +OpenRTExpressionFinderCommand class >> defaultDescription [ + + ^ 'Find ocurrences of an expression in all Pharo''s code' +] + { #category : #default } OpenRTExpressionFinderCommand class >> defaultName [ diff --git a/src/RewriteRuleTools/OpenRTHelpBrowserCommand.class.st b/src/RewriteRuleTools/OpenRTHelpBrowserCommand.class.st index 32578c6..27d100a 100644 --- a/src/RewriteRuleTools/OpenRTHelpBrowserCommand.class.st +++ b/src/RewriteRuleTools/OpenRTHelpBrowserCommand.class.st @@ -9,6 +9,12 @@ Class { #category : #'RewriteRuleTools-Commands' } +{ #category : #default } +OpenRTHelpBrowserCommand class >> defaultDescription [ + + ^ 'Help browser' +] + { #category : #default } OpenRTHelpBrowserCommand class >> defaultName [ @@ -24,5 +30,5 @@ OpenRTHelpBrowserCommand class >> iconName [ { #category : #executing } OpenRTHelpBrowserCommand >> execute [ - ^ RTRulesHelpPresenter open + ^ RTHelpBrowserPresenter open ] diff --git a/src/RewriteRuleTools/OpenRTRuleLoaderCommand.class.st b/src/RewriteRuleTools/OpenRTRuleLoaderCommand.class.st index c4d8c23..1cbc21f 100644 --- a/src/RewriteRuleTools/OpenRTRuleLoaderCommand.class.st +++ b/src/RewriteRuleTools/OpenRTRuleLoaderCommand.class.st @@ -9,6 +9,12 @@ Class { #category : #'RewriteRuleTools-Commands' } +{ #category : #default } +OpenRTRuleLoaderCommand class >> defaultDescription [ + + ^ 'Load a stored Rewrite Rule' +] + { #category : #default } OpenRTRuleLoaderCommand class >> defaultName [ diff --git a/src/RewriteRuleTools/RTApplication.class.st b/src/RewriteRuleTools/RTApplication.class.st new file mode 100644 index 0000000..14cc494 --- /dev/null +++ b/src/RewriteRuleTools/RTApplication.class.st @@ -0,0 +1,82 @@ +" +I am an application to use in all RT tool to define costum styles. +" +Class { + #name : #RTApplication, + #superclass : #SpApplication, + #classVars : [ + 'Current' + ], + #category : #'RewriteRuleTools-Application' +} + +{ #category : #accessing } +RTApplication class >> current [ + + ^ Current ifNil: [ Current := self new ] +] + +{ #category : #running } +RTApplication >> start [ + + (self newPresenter: RTRuleEditorPresenter) openWithSpec +] + +{ #category : #running } +RTApplication >> startExpressionFinder [ + + ^ (self newPresenter: RTExpressionFinderPresenter) openWithSpec +] + +{ #category : #running } +RTApplication >> startHelpBrowser [ + + ^ (self newPresenter: RTHelpBrowserPresenter) openWithSpec +] + +{ #category : #running } +RTApplication >> startMatchTool [ + + ^ (self newPresenter: MatchToolPresenter) openWithSpec +] + +{ #category : #running } +RTApplication >> startRuleBuilder [ + + ^ (self newPresenter: RewriteRuleBuilderPresenter) openWithSpec +] + +{ #category : #running } +RTApplication >> startRuleEditor [ + + ^ (self newPresenter: RTRuleEditorPresenter) openWithSpec +] + +{ #category : #running } +RTApplication >> startRuleLoader [ + + ^ (self newPresenter: RTRuleLoaderPresenter) openWithSpec +] + +{ #category : #running } +RTApplication >> startTransformer [ + + ^ (self newPresenter: RTCodeTransformerPresenter) openWithSpec +] + +{ #category : #styling } +RTApplication >> styleSheet [ + + ^ SpStyle defaultStyleSheet, + (SpStyleVariableSTONReader fromString: +'.application [ + + .container [ Container { #padding: 4, #borderWidth: 2 } ], + .bgOpaque [ Draw { #backgroundColor: EnvironmentColor(#base) } ], + .bgBlue [ Draw { #backgroundColor: #blue } ], + .boldFont [ Font { #bold: true } ], + .textFont [ Font { #name: EnvironmentFont(#default) } ], + .bigFontSize [ Font { #size: 20 } ], + .buttonStyle [ Geometry { #width: 130 } ] +]') +] diff --git a/src/RewriteRuleTools/RTCheatSheetPresenter.class.st b/src/RewriteRuleTools/RTCheatSheetPresenter.class.st index 3629478..724a71d 100644 --- a/src/RewriteRuleTools/RTCheatSheetPresenter.class.st +++ b/src/RewriteRuleTools/RTCheatSheetPresenter.class.st @@ -37,10 +37,19 @@ RTCheatSheetPresenter >> initializeLayout [ { #category : #initialization } RTCheatSheetPresenter >> initializePresenters [ - textPresenter := self newText + textPresenter := self newText. + textPresenter text: self helpText; beNotEditable. + helpButton := self instantiate: (OpenRTHelpBrowserCommand asSpecButtonForContext: self). + + self initializeStyles. self initializeLayout - "cheatSheet color: self theme baseColor" +] + +{ #category : #initialization } +RTCheatSheetPresenter >> initializeStyles [ + + textPresenter addStyle: 'bgOpaque'. ] diff --git a/src/RewriteRuleTools/RTRuleTransformerPresenter.class.st b/src/RewriteRuleTools/RTCodeTransformerPresenter.class.st similarity index 72% rename from src/RewriteRuleTools/RTRuleTransformerPresenter.class.st rename to src/RewriteRuleTools/RTCodeTransformerPresenter.class.st index 12ef6d9..fb70bea 100644 --- a/src/RewriteRuleTools/RTRuleTransformerPresenter.class.st +++ b/src/RewriteRuleTools/RTCodeTransformerPresenter.class.st @@ -10,7 +10,7 @@ You can open me whit: `RewriteRuleApplierPresenter open` " Class { - #name : #RTRuleTransformerPresenter, + #name : #RTCodeTransformerPresenter, #superclass : #SpPresenter, #instVars : [ 'applyOnSelectedClassesButton', @@ -24,37 +24,37 @@ Class { } { #category : #accessing } -RTRuleTransformerPresenter class >> descriptionText [ +RTCodeTransformerPresenter class >> descriptionText [ ^ 'Apply your custom rewrite rules to any packages or classes' ] { #category : #accessing } -RTRuleTransformerPresenter class >> icon [ +RTCodeTransformerPresenter class >> icon [ ^ self iconNamed: self iconName ] { #category : #accessing } -RTRuleTransformerPresenter class >> iconName [ +RTCodeTransformerPresenter class >> iconName [ ^ #objects ] { #category : #api } -RTRuleTransformerPresenter class >> open [ +RTCodeTransformerPresenter class >> open [