Skip to content

Commit f5f7c69

Browse files
committed
Merge 8af9a48
2 parents 0f1e095 + 8af9a48 commit f5f7c69

9 files changed

+228
-148
lines changed

src/GToolkit-Pharo-Coder-AddOns/GtPharoMethodCoder.extension.st

+14-26
Original file line numberDiff line numberDiff line change
@@ -204,41 +204,29 @@ GtPharoMethodCoder >> addExtractToWrappedMethodObjectMenuForAst: anAst to: coder
204204
{ #category : #'*GToolkit-Pharo-Coder-AddOns' }
205205
GtPharoMethodCoder >> addHierarchyImplementorsMenuAddOnsAst: anAst to: coderAddOns from: aCoderViewModel [
206206
<gtCoderContextMenuAddOns: 11>
207+
207208
(self nodeFrom: aCoderViewModel)
208209
ifNotNil: [ :node |
209-
| highlightNode |
210-
(node isMessage or: [ node isMessageSend or: [ node isMethodPattern ] ])
211-
ifTrue: [ highlightNode := node isMessageSend ifTrue: [ node message ] ifFalse: [ node ].
212-
coderAddOns
213-
addContextMenuItem: (self
214-
createLabel: 'Browse hierarchy implementors'
215-
description: node selector)
216-
hover: (self highlightNodeBlock: highlightNode)
217-
leave: self removeHighlightBlock
218-
action: [ :aTextualViewModel |
219-
self
220-
browseHierarchyImplementorsAt: highlightNode startPosition
221-
requesterObject: aTextualViewModel ] ] ]
210+
self
211+
addLinkMenuAddOnsTo: coderAddOns
212+
node: node
213+
selector: #browseHierarchyImplementorsAt:requesterObject:
214+
label: 'Browse hierarchy implementors'
215+
requesterObject: aCoderViewModel ]
222216
]
223217

224218
{ #category : #'*GToolkit-Pharo-Coder-AddOns' }
225219
GtPharoMethodCoder >> addHierarchyMessageReferencesMenuAddOnsAst: anAst to: coderAddOns from: aCoderViewModel [
226220
<gtCoderContextMenuAddOns: 16>
221+
227222
(self nodeFrom: aCoderViewModel)
228223
ifNotNil: [ :node |
229-
| highlightNode |
230-
(node isMessage or: [ node isMessageSend or: [ node isMethodPattern ] ])
231-
ifTrue: [ highlightNode := node isMessageSend ifTrue: [ node message ] ifFalse: [ node ].
232-
coderAddOns
233-
addContextMenuItem: (self
234-
createLabel: 'Browse hierarchy references'
235-
description: node selector)
236-
hover: (self highlightNodeBlock: highlightNode)
237-
leave: self removeHighlightBlock
238-
action: [ :aTextualViewModel |
239-
self
240-
browseHierarchyReferencesAt: highlightNode startPosition
241-
requesterObject: aCoderViewModel ] ] ]
224+
self
225+
addLinkMenuAddOnsTo: coderAddOns
226+
node: node
227+
selector: #browseHierarchyReferencesAt:requesterObject:
228+
label: 'Browse hierarchy references'
229+
requesterObject: aCoderViewModel ]
242230
]
243231

244232
{ #category : #'*GToolkit-Pharo-Coder-AddOns' }

src/GToolkit-Pharo-Coder-AddOns/GtPharoSourceCoder.extension.st

+45-32
Original file line numberDiff line numberDiff line change
@@ -58,25 +58,54 @@ GtPharoSourceCoder >> addBaselinePackageMenuItemsFor: anAst to: coderAddOns from
5858
{ #category : #'*GToolkit-Pharo-Coder-AddOns' }
5959
GtPharoSourceCoder >> addClassMenuAddOnsAst: anAst to: coderAddOns from: aCoderViewModel [
6060
<gtCoderContextMenuAddOns: 13>
61+
62+
(self extractableNodesFrom: aCoderViewModel)
63+
ifNotEmpty: [ :nodes |
64+
self
65+
addClassNodeLinkMenuAddOnsTo: coderAddOns
66+
node: nodes first
67+
selector: #browseBehaviorAt:requesterObject:
68+
shortcut: GtSourceCoderBrowseBehaviorShortcut new
69+
requesterObject: aCoderViewModel ]
70+
]
71+
72+
{ #category : #'*GToolkit-Pharo-Coder-AddOns' }
73+
GtPharoSourceCoder >> addClassNodeLinkMenuAddOnsTo: coderAddOns node: node selector: sel shortcut: aShortcut requesterObject: aRequester [
6174
| foundClass |
75+
76+
77+
node isVariable ifFalse: [ ^ self ].
78+
self
79+
variableNodeToBehavior: node
80+
ifFound: [ :aClass | foundClass := aClass ]
81+
ifNone: [ ^ self ].
82+
83+
coderAddOns
84+
addContextMenuItem: (self
85+
createLabel: aShortcut name
86+
description: foundClass name)
87+
hover: (self highlightNodeBlock: node)
88+
leave: self removeHighlightBlock
89+
action: [ :aTextualViewModel |
90+
self
91+
perform: sel
92+
with: node startPosition
93+
with: aRequester ]
94+
shortcutKey: aShortcut combinationForPlatform gtDisplayString
95+
]
96+
97+
{ #category : #'*GToolkit-Pharo-Coder-AddOns' }
98+
GtPharoSourceCoder >> addClassReferencesMenuAddOnsAst: anAst to: coderAddOns from: aCoderViewModel [
99+
<gtCoderContextMenuAddOns: 13>
100+
62101
(self extractableNodesFrom: aCoderViewModel)
63102
ifNotEmpty: [ :nodes |
64-
| node |
65-
node := nodes first.
66-
node isVariable ifFalse: [ ^ self ].
67-
self
68-
variableNodeToBehavior: node
69-
ifFound: [ :aClass | foundClass := aClass ]
70-
ifNone: [ ^ self ].
71-
coderAddOns
72-
addContextMenuItem: (self
73-
createLabel: 'Browse class'
74-
description: foundClass name)
75-
hover: (self highlightNodeBlock: node)
76-
leave: self removeHighlightBlock
77-
action: [ :aTextualViewModel |
78-
self browseBehaviorAt: node startPosition requesterObject: nil ]
79-
shortcutKey: GtSourceCoderBrowseBehaviorShortcut new combinationForPlatform gtDisplayString ]
103+
self
104+
addClassNodeLinkMenuAddOnsTo: coderAddOns
105+
node: nodes first
106+
selector: #browseReferencesAt:requesterObject:
107+
shortcut: GtSourceCoderBrowseReferencesShortcut new
108+
requesterObject: aCoderViewModel ]
80109
]
81110

82111
{ #category : #'*GToolkit-Pharo-Coder-AddOns' }
@@ -157,22 +186,6 @@ GtPharoSourceCoder >> addInstanceVariableReferencesMenuAddOnsAst: anAst to: code
157186
combinationForPlatform gtDisplayString ]
158187
]
159188

160-
{ #category : #'*GToolkit-Pharo-Coder-AddOns' }
161-
GtPharoSourceCoder >> addLinkMenuAddOnsTo: coderAddOns node: node selector: sel shortcut: aShortcut requesterObject: aRequester [
162-
| highlightNode |
163-
(node isMessage or: [ node isMessageSend or: [ node isMethodPattern ] ])
164-
ifFalse: [ ^ self ].
165-
highlightNode := node isMessageSend ifTrue: [ node message ] ifFalse: [ node ].
166-
coderAddOns
167-
addContextMenuItem: (self
168-
createLabel: aShortcut name
169-
description: node selector)
170-
hover: (self highlightNodeBlock: highlightNode)
171-
leave: self removeHighlightBlock
172-
action: [ :aTextualViewModel | self perform: sel with: highlightNode startPosition with: aRequester ]
173-
shortcutKey: aShortcut combinationForPlatform gtDisplayString
174-
]
175-
176189
{ #category : #'*GToolkit-Pharo-Coder-AddOns' }
177190
GtPharoSourceCoder >> addMessageReferencesMenuAddOnsAst: anAst to: coderAddOns from: aCoderViewModel [
178191
<gtCoderContextMenuAddOns: 15>

src/GToolkit-Pharo-Coder-AddOns/GtSmalltalkSourceCoder.extension.st

+52
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,57 @@
11
Extension { #name : #GtSmalltalkSourceCoder }
22

3+
{ #category : #'*GToolkit-Pharo-Coder-AddOns' }
4+
GtSmalltalkSourceCoder >> addLinkMenuAddOnsTo: coderAddOns node: node selector: sel label: aLabel requesterObject: aRequester [
5+
self
6+
addLinkMenuAddOnsTo: coderAddOns
7+
node: node
8+
selector: sel
9+
label: aLabel
10+
shortcut: nil
11+
requesterObject: aRequester
12+
]
13+
14+
{ #category : #'*GToolkit-Pharo-Coder-AddOns' }
15+
GtSmalltalkSourceCoder >> addLinkMenuAddOnsTo: coderAddOns node: node selector: sel label: aLabel shortcut: aShortcut requesterObject: aRequester [
16+
| highlightNode nodeDescription |
17+
18+
(node isMessage or: [
19+
node isMessageSend or: [
20+
node isMethodPattern or: [
21+
node isSymbol ] ] ])
22+
ifFalse: [ ^ self ].
23+
24+
highlightNode := node isMessageSend
25+
ifTrue: [ node message ] ifFalse: [ node ].
26+
nodeDescription := node isSymbol
27+
ifTrue: [ node literalValue ] ifFalse: [ node selector ].
28+
29+
coderAddOns
30+
addContextMenuItem: (self
31+
createLabel: aLabel
32+
description: nodeDescription)
33+
hover: (self highlightNodeBlock: highlightNode)
34+
leave: self removeHighlightBlock
35+
action: [ :aTextualViewModel |
36+
self
37+
perform: sel
38+
with: highlightNode startPosition
39+
with: aRequester ]
40+
shortcutKey: (aShortcut ifNotNil: [
41+
aShortcut combinationForPlatform gtDisplayString ])
42+
]
43+
44+
{ #category : #'*GToolkit-Pharo-Coder-AddOns' }
45+
GtSmalltalkSourceCoder >> addLinkMenuAddOnsTo: coderAddOns node: node selector: sel shortcut: aShortcut requesterObject: aRequester [
46+
self
47+
addLinkMenuAddOnsTo: coderAddOns
48+
node: node
49+
selector: sel
50+
label: aShortcut name
51+
shortcut: aShortcut
52+
requesterObject: aRequester
53+
]
54+
355
{ #category : #'*GToolkit-Pharo-Coder-AddOns' }
456
GtSmalltalkSourceCoder >> expandCascadeSelection: aSelectionInterval at: position directionOffset: offset in: aSourceCoderViewModel [
557
| cascade siblings messageNode index |

src/GToolkit-Pharo-Coder-Examples/GtSearchMethodsContainedInClassFilterExamples.class.st

+10
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ GtSearchMethodsContainedInClassFilterExamples >> inheritedMethodsWithTraits [
1717
shouldExclude: {(Smalltalk at: #TraitedClass) >> #rebuildMethodDictionary}
1818
]
1919

20+
{ #category : #examples }
21+
GtSearchMethodsContainedInClassFilterExamples >> methodOnlyIncludedOnceInFilter [
22+
<gtExample>
23+
| filter |
24+
filter := (GtSearchMethodsInClassFilter forClass: Object) withSuperclasses
25+
withSubclasses & thisContext method selector gtImplementors.
26+
self assert: filter contents size equals: 1.
27+
^ filter
28+
]
29+
2030
{ #category : #examples }
2131
GtSearchMethodsContainedInClassFilterExamples >> methodsInClassFilter [
2232
<gtExample>

src/GToolkit-Pharo-Coder-UI/GtPharoPackageCoderElement.class.st

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ GtPharoPackageCoderElement >> buildPackageLabel [
6262
to: packageNameEditor text asString} ];
6363
cancelBlock: [ packageNameEditor text: packageCoder package name ];
6464
when: GtRefactoringsAppliedEvent
65-
do: [ :anEvent | anEvent currentTarget visibility: BlVisibility hidden ].
65+
do: [ :anEvent | anEvent currentTarget visibility: BlVisibility gone ].
6666

6767
packageNameEditor editor
6868
when: BrTextEditorModifiedEvent

src/GToolkit-Pharo-Coder-UI/GtPharoPackageTagCoderElement.class.st

+29-26
Original file line numberDiff line numberDiff line change
@@ -31,41 +31,44 @@ GtPharoPackageTagCoderElement >> buildContentTabs [
3131
{ #category : #'build ui' }
3232
GtPharoPackageTagCoderElement >> buildPackageTagLabel [
3333
| tagNameEditor container previewButton unloadButton |
34-
3534
container := BrHorizontalPane new
36-
hMatchParent;
37-
alignCenterLeft;
38-
vFitContent.
39-
35+
hMatchParent;
36+
alignCenterLeft;
37+
vFitContent.
38+
4039
tagNameEditor := BrEditableLabel new
41-
aptitude: (BrGlamorousEditableLabelAptitude new
42-
defaultBackground: Color transparent;
43-
glamorousCodeFont;
44-
bold;
45-
fontSize: 18);
46-
inputFilter: BrTextEditorAlphaNumericInputFilter new;
47-
text: packageTagCoder packageTag name;
48-
margin: (BlInsets all: 0).
40+
aptitude: (BrGlamorousEditableLabelAptitude new
41+
defaultBackground: Color transparent;
42+
glamorousCodeFont;
43+
bold;
44+
fontSize: 18);
45+
inputFilter: BrTextEditorAlphaNumericInputFilter new;
46+
text: packageTagCoder packageTag name;
47+
margin: (BlInsets all: 0).
4948

5049
previewButton := GtRefactoringsPreviewButton new
51-
margin: (BlInsets left: 5);
52-
visibility: BlVisibility gone;
53-
refactorings: [ { GtRBRenamePackageTagRefactoring packageName: packageTagCoder package name from: packageTagCoder packageTag gtTagName to: tagNameEditor text asString } ];
54-
cancelBlock: [ tagNameEditor text: packageTagCoder packageTag name];
55-
when: GtRefactoringsAppliedEvent do: [ :anEvent | anEvent currentTarget visibility: BlVisibility hidden ].
56-
50+
margin: (BlInsets left: 5);
51+
visibility: BlVisibility gone;
52+
refactorings: [ {GtRBRenamePackageTagRefactoring
53+
packageName: packageTagCoder package name
54+
from: packageTagCoder packageTag gtTagName
55+
to: tagNameEditor text asString} ];
56+
cancelBlock: [ tagNameEditor text: packageTagCoder packageTag name ];
57+
when: GtRefactoringsAppliedEvent
58+
do: [ :anEvent | anEvent currentTarget visibility: BlVisibility gone ].
59+
5760
tagNameEditor editor
58-
when: BrTextEditorModifiedEvent
59-
do: [ :anEvent |
61+
when: BrTextEditorModifiedEvent
62+
do: [ :anEvent |
6063
anEvent text asString = packageTagCoder packageTag name
6164
ifTrue: [ previewButton visibility: BlVisibility gone ]
62-
ifFalse: [ previewButton visibility: BlVisibility visible ] ].
65+
ifFalse: [ previewButton visibility: BlVisibility visible ] ].
6366

6467
unloadButton := GtPreviewChangeButton new
65-
icon: BrGlamorousVectorIcons remove;
66-
label: 'Unload';
67-
changeAction: [ self unloadPackageTag ];
68-
changeStencil: [ self buildRemovePackageTagLabel ].
68+
icon: BrGlamorousVectorIcons remove;
69+
label: 'Unload';
70+
changeAction: [ self unloadPackageTag ];
71+
changeStencil: [ self buildRemovePackageTagLabel ].
6972

7073
container addChild: tagNameEditor.
7174
container addChild: previewButton.

src/GToolkit-Pharo-Coder/GtClassMethodsCoder.class.st

+10-10
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ GtClassMethodsCoder >> addNewCoder [
4242
^ aCoder
4343
]
4444

45+
{ #category : #accessing }
46+
GtClassMethodsCoder >> classOrMetaClass [
47+
^ class
48+
]
49+
4550
{ #category : #private }
4651
GtClassMethodsCoder >> classesFilter [
4752
| filter |
@@ -56,11 +61,6 @@ GtClassMethodsCoder >> classesFilter [
5661
^ filter
5762
]
5863

59-
{ #category : #accessing }
60-
GtClassMethodsCoder >> classOrMetaClass [
61-
^ class
62-
]
63-
6464
{ #category : #accessing }
6565
GtClassMethodsCoder >> codeGeneratorsAvailableFor: aMethodsCoderViewModel [
6666
^ (self codeGeneratorsFor: aMethodsCoderViewModel) size > 0
@@ -85,11 +85,6 @@ GtClassMethodsCoder >> combinedFilter [
8585
[ :filter | combined ifNil: [ filter ] ifNotNil: [ filter & combined ] ]
8686
]
8787

88-
{ #category : #testing }
89-
GtClassMethodsCoder >> filteredClass: aBehavior [
90-
^ filteredClasses includes: aBehavior
91-
]
92-
9388
{ #category : #elements }
9489
GtClassMethodsCoder >> filterTypes [
9590
^ GtPhlowViewsCollector new
@@ -98,6 +93,11 @@ GtClassMethodsCoder >> filterTypes [
9893
collect
9994
]
10095

96+
{ #category : #testing }
97+
GtClassMethodsCoder >> filteredClass: aBehavior [
98+
^ filteredClasses includes: aBehavior
99+
]
100+
101101
{ #category : #initialize }
102102
GtClassMethodsCoder >> forClass: aBehavior [
103103
class := aBehavior.

0 commit comments

Comments
 (0)