• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

moosetechnology / MooseIDE / 19175123656

07 Nov 2025 04:49PM UTC coverage: 65.887% (+0.07%) from 65.821%
19175123656

Pull #1512

github

web-flow
Merge 4ab6a36f7 into 9bf2bf640
Pull Request #1512: Cousage refactor

189 of 203 new or added lines in 7 files covered. (93.1%)

40 existing lines in 3 files now uncovered.

21211 of 32193 relevant lines covered (65.89%)

1.32 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

67.36
/src/MooseIDE-CoUsageMap/MiCoUsageMapSettings.class.st
1
"
2
I am a singleton, I store global values for settings used by CoUsageMapBuilder
3
"
4
Class {
5
        #name : 'MiCoUsageMapSettings',
6
        #superclass : 'Object',
7
        #instVars : [
8
                'properties'
9
        ],
10
        #category : 'MooseIDE-CoUsageMap-Settings',
11
        #package : 'MooseIDE-CoUsageMap',
12
        #tag : 'Settings'
13
}
14

15
{ #category : 'settings' }
NEW
16
MiCoUsageMapSettings >> browsingBlockSettings: aBuilder [
×
17
        <systemsettings>
×
18
        (aBuilder group: #ShowBlockSettings)
×
19
                target: self;
×
20
                parent: #CoUsageMap;
×
21
                order: 101;
×
22
                label: 'Blocks settings';
×
23
                description: 'Receives 2 outer nodes, returns if it should swap nodes';
×
24
                dialog: [ PluggableButtonMorph
×
25
                        on: self
×
26
                        getState: nil
×
27
                        action: #openBlocksSettings
×
28
                        label: #buttonSettingLabel ]
×
29
                
×
30

×
31
]
×
32

33
{ #category : 'settings' }
NEW
34
MiCoUsageMapSettings >> browsingSettingInnerBoxRange: aBuilder [
×
35
        <systemsettings>
×
36
        
×
37
        (aBuilder miDualRange: #innerBoxRange)
×
38
                parent: #CoUsageMap;
×
39
                target: self;
×
40
                order: 4;
×
41
                label: 'Range for inner boxes';
×
42
                description: 'Use this to change the minimun and maximun size of the inner boxes';
×
43
                default: self defaultInnerBoxRange;
×
44
                range: (5 to: 100)
×
45

×
46
]
×
47

48
{ #category : 'settings' }
NEW
49
MiCoUsageMapSettings >> browsingSettingInnerScale: aBuilder [
×
50
        <systemsettings>
×
51
        (aBuilder pickOne: #innerBoxScaleType)
×
52
                parent: #CoUsageMap;
×
53
                domainValues: self scaleTypes;
×
54
                target: self;
×
55
                order: 3;
×
56
                label: 'Inner box width scale';
×
57
                description: 'Choose between different types of scales';
×
58
                default: self defaultInnerBoxScaleType
×
59
]
×
60

61
{ #category : 'settings' }
NEW
62
MiCoUsageMapSettings >> browsingSettingInnerSize: aBuilder [
×
63
        <systemsettings>
×
64
        (aBuilder miRange: #innerBoxHeight)
×
65
                parent: #CoUsageMap;
×
66
                target: self;
×
67
                order: 1;
×
68
                label: 'Inner box height';
×
69
                description: 'Will change the height of the inner box for co usage map visualization';
×
70
                default: self defaultInnerBoxHeight;
×
71
                range: (2 to: 50)
×
72

×
73
]
×
74

75
{ #category : 'settings' }
NEW
76
MiCoUsageMapSettings >> browsingSettingThreshold: aBuilder [
×
77
        <systemsettings>
×
78
        (aBuilder miRange: #threshold75PercentGroup)
×
79
                parent: #CoUsageMap;
×
80
                target: self;
×
81
                order: 0;
×
82
                label: 'Threshold percent per group';
×
83
                description: 'This threshold is used by automatic color methods in the CoUsageMapBrowser.
×
84
When the container has several attributes of different colors, the color is chosen from the group that exceeds the threshold in relation to the size of the attributes.';
×
85
                default: self defaultThreshold75;
×
86
                range: (10 to: 100)
×
87

×
88
]
×
89

90
{ #category : 'settings' }
NEW
91
MiCoUsageMapSettings >> browsingSettings02On: aBuilder [
×
92

×
93
        <systemsettings>
×
94
        (aBuilder group: #CoUsageMap)
×
95
                parent: #moose;
×
96
                label: 'Co Usage Map';
×
97
                description: 'Alls settings concerned with co usage map browser';
×
98
                order: 10
×
99
]
×
100

101
{ #category : 'accessing' }
NEW
102
MiCoUsageMapSettings >> buttonSettingLabel [
×
103
        ^ 'Blocks Settings'
×
104
                
×
105

×
106
]
×
107

108
{ #category : 'accessing - computed' }
109
MiCoUsageMapSettings >> childrenBlockCompiled [
2✔
110
        ^ self compiledBlock: self childrenBlockText onError: self defaultChildrenBlockText
2✔
111
]
2✔
112

113
{ #category : 'accessing' }
114
MiCoUsageMapSettings >> childrenBlockText [
2✔
115
        ^ self propertiesMap at: #childrenBlockText ifAbsent: [ self defaultChildrenBlockText ]
2✔
116
]
2✔
117

118
{ #category : 'accessing' }
119
MiCoUsageMapSettings >> childrenBlockText: aString [
2✔
120
        self propertiesMap at: #childrenBlockText put: aString
2✔
121
]
2✔
122

123
{ #category : 'accessing - computed' }
124
MiCoUsageMapSettings >> compiledBlock: aString onError: defaultString [
2✔
125
        | compiler |
2✔
126
        compiler := Smalltalk compiler.
2✔
127
        ^ [ compiler evaluate: aString ]
2✔
128
        on: Error
2✔
129
        do: [ :ex | compiler evaluate: defaultString ]
2✔
130
]
2✔
131

132
{ #category : 'accessing - defaults' }
133
MiCoUsageMapSettings >> defaultChildrenBlockText [
2✔
134

2✔
135
        ^ '"This code is for entity method, but you can change it
2✔
136
You should return all the inner entities even with duplicates"
2✔
137
[ :entity |
2✔
138
        entity isContainerEntity
2✔
139
        ifTrue: [
2✔
140
                entity accesses
2✔
141
                        collect: [ :access | access variable ]
2✔
142
                        thenSelect: [ :var | var isAttribute ]
2✔
143
        ]
2✔
144
        ifFalse: [ #() ]
2✔
145
]'
2✔
146
]
147

148
{ #category : 'accessing - defaults' }
149
MiCoUsageMapSettings >> defaultInnerBoxHeight [
2✔
150
        ^ 10
2✔
151
]
2✔
152

153
{ #category : 'accessing - defaults' }
154
MiCoUsageMapSettings >> defaultInnerBoxRange [
2✔
155
        ^ #(5 100)
2✔
156
]
2✔
157

158
{ #category : 'accessing - defaults' }
159
MiCoUsageMapSettings >> defaultInnerBoxScaleType [
2✔
160
        ^ #linear
2✔
161
]
2✔
162

163
{ #category : 'accessing - defaults' }
164
MiCoUsageMapSettings >> defaultInnerBoxSortBlockText [
2✔
165
        ^ '[:entityA :entityB :container |
2✔
166
        | sizeA sizeB |
2✔
167
        sizeA := entityA numberOfUsesOn: container.
2✔
168
        sizeB := entityB numberOfUsesOn: container.
2✔
169
        sizeA = sizeB
2✔
170
                ifTrue: [ entityA name < entityB name ]
2✔
171
                ifFalse: [ sizeA > sizeB ]
2✔
172
]'
2✔
173
]
174

175
{ #category : 'accessing - defaults' }
176
MiCoUsageMapSettings >> defaultOuterBoxSortBlockText [
2✔
177
        ^ '[:containerA :containerB |
2✔
178
"containers are MiCoMethod instances"
2✔
179
| sizeA sizeB |
2✔
180
sizeA := containerA numberOfChildren.
2✔
181
sizeB := containerB numberOfChildren.
2✔
182
sizeA = sizeB
2✔
183
        ifTrue: [ containerA name < containerB name ]
2✔
184
        ifFalse: [ sizeA > sizeB ] ]'
2✔
185
]
2✔
186

2✔
187
{ #category : 'accessing - defaults' }
2✔
188
MiCoUsageMapSettings >> defaultThreshold75 [
2✔
189
        ^ 75
2✔
190
]
2✔
191

2✔
192
{ #category : 'accessing' }
2✔
193
MiCoUsageMapSettings >> innerBoxHeight [
2✔
194
        ^ self propertiesMap at: #innerBoxHeight ifAbsent: [ self defaultInnerBoxHeight ].
2✔
195
]
2✔
196

2✔
197
{ #category : 'accessing' }
2✔
198
MiCoUsageMapSettings >> innerBoxHeight: aNumber [
2✔
199
        self propertiesMap at: #innerBoxHeight put: aNumber
2✔
200
]
2✔
201

2✔
202
{ #category : 'accessing' }
2✔
203
MiCoUsageMapSettings >> innerBoxRange [
2✔
204
        ^ self propertiesMap at: #innerBoxRange ifAbsent: [ self defaultInnerBoxRange ]
2✔
205
]
2✔
206

2✔
207
{ #category : 'accessing' }
2✔
208
MiCoUsageMapSettings >> innerBoxRange: anInterval [
2✔
209
        self propertiesMap at: #innerBoxRange put: anInterval
2✔
210
]
2✔
211

2✔
212
{ #category : 'accessing' }
2✔
213
MiCoUsageMapSettings >> innerBoxScaleType [
2✔
214
        ^ self propertiesMap at: #innerBoxScaleType ifAbsent: [ self defaultInnerBoxScaleType ]
2✔
215
]
2✔
216

2✔
217
{ #category : 'accessing' }
2✔
218
MiCoUsageMapSettings >> innerBoxScaleType: aString [
2✔
219
        self propertiesMap at: #innerBoxScaleType put: aString
2✔
220
]
2✔
221

2✔
222
{ #category : 'accessing - computed' }
2✔
223
MiCoUsageMapSettings >> innerBoxSortBlockCompiled [
2✔
224
        ^ self compiledBlock: self innerBoxSortBlockText onError: self defaultInnerBoxSortBlockText
2✔
225
]
2✔
226

2✔
227
{ #category : 'accessing' }
2✔
228
MiCoUsageMapSettings >> innerBoxSortBlockText [
2✔
229
        ^ self propertiesMap at: #innerBoxSortBlockText ifAbsent: [ self defaultInnerBoxSortBlockText ]
2✔
230
]
2✔
231

2✔
232
{ #category : 'accessing' }
2✔
233
MiCoUsageMapSettings >> innerBoxSortBlockText: aString [
2✔
234
        self propertiesMap at: #innerBoxSortBlockText put: aString
2✔
235
]
2✔
236

2✔
237
{ #category : 'opening' }
2✔
238
MiCoUsageMapSettings >> openBlocksSettings [
2✔
239
        MiCoUsageMapBlockSettingsPresenter new 
2✔
240
                settings: self;
2✔
241
                open
2✔
242
]
2✔
243

2✔
244
{ #category : 'accessing - computed' }
2✔
245
MiCoUsageMapSettings >> outerBoxSortBlockCompiled [
2✔
246
        ^ self compiledBlock: self outerBoxSortBlockText onError: self defaultOuterBoxSortBlockText
2✔
247
]
2✔
248

2✔
249
{ #category : 'accessing' }
2✔
250
MiCoUsageMapSettings >> outerBoxSortBlockText [
2✔
251
        ^ self propertiesMap at: #outerBoxSortBlockText ifAbsent: [ self defaultOuterBoxSortBlockText ]
2✔
252
]
2✔
253

2✔
254
{ #category : 'accessing' }
2✔
255
MiCoUsageMapSettings >> outerBoxSortBlockText: aString [
2✔
256
        self propertiesMap at: #outerBoxSortBlockText put: aString
2✔
257
]
2✔
258

2✔
259
{ #category : 'private' }
2✔
260
MiCoUsageMapSettings >> propertiesMap [
2✔
261
        ^ properties ifNil: [ properties := Dictionary new ]
2✔
262
]
2✔
263

2✔
264
{ #category : 'class initialization' }
2✔
265
MiCoUsageMapSettings >> reset [
2✔
266
        properties := nil
2✔
267
]
2✔
268

2✔
269
{ #category : 'class initialization' }
2✔
270
MiCoUsageMapSettings >> resetText [
2✔
271
        <script>
2✔
272
        self propertiesMap
2✔
273
                removeKey: #childrenBlockText ifAbsent: [] ;
2✔
274
                removeKey: #outerBoxSortBlockText ifAbsent: [] ;
2✔
275
                removeKey: #innerBoxSortBlockText ifAbsent: [] 
2✔
276
]
2✔
277

2✔
278
{ #category : 'accessing' }
2✔
279
MiCoUsageMapSettings >> scaleTypes [
2✔
280
        ^ #(linear symlog)
2✔
281
]
2✔
282

2✔
283
{ #category : 'accessing' }
2✔
284
MiCoUsageMapSettings >> threshold75PercentGroup [
2✔
285
        ^ self propertiesMap at: #threshold75 ifAbsent: [ self defaultThreshold75 ]
2✔
286
]
2✔
287

2✔
288
{ #category : 'accessing' }
2✔
289
MiCoUsageMapSettings >> threshold75PercentGroup: aNumber [
2✔
290
        self propertiesMap at: #threshold75 put: aNumber
2✔
291
]
2✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc