Skip to content

Commit 432edc4

Browse files
authored
Merge pull request #40 from HossamSaberr/fix-inspector-freezee
Fix: Prevent Inspector UI freeze by lazy loading allChildren
2 parents 079895e + 8365944 commit 432edc4

File tree

3 files changed

+38
-18
lines changed

3 files changed

+38
-18
lines changed

src/Containers-AVL-Tree-Inspector/CTAVLTree.extension.st

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,30 @@ Extension { #name : 'CTAVLTree' }
22

33
{ #category : '*Containers-AVL-Tree-Inspector' }
44
CTAVLTree >> inspectorCanvas: aBuilder [
5-
65
<inspectorPresentationOrder: 90 title: 'AVL'>
6+
7+
self size > 10000 ifTrue: [
8+
^ aBuilder newText
9+
text: 'Tree is too large to render graphically (', self size asString, ' nodes). Please use the Tree tab.';
10+
yourself ].
11+
712
^ (aBuilder instantiate: SpRoassalInspectorPresenter)
8-
canvas: (CTAVLTreeVisualizer new
9-
tree: self;
10-
build;
11-
canvas);
12-
yourself
13+
canvas: (CTAVLTreeVisualizer new
14+
tree: self;
15+
build;
16+
canvas);
17+
yourself
18+
]
19+
20+
{ #category : '*Containers-AVL-Tree-Inspector' }
21+
CTAVLTree >> inspectorTree: aBuilder [
22+
<inspectorPresentationOrder: 91 title: 'Tree'>
23+
^ aBuilder newTree
24+
roots: { self root };
25+
children: [ :node |
26+
Array streamContents: [ :s |
27+
node left isNilNode ifFalse: [ s nextPut: node left ].
28+
node right isNilNode ifFalse: [ s nextPut: node right ] ] ];
29+
display: [ :node | node contents asString ];
30+
yourself
1331
]

src/Containers-AVL-Tree-Tests/CTAVLTreeTest.class.st

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ CTAVLTreeTest >> testAddSingleElement [
4040

4141
{ #category : 'tests' }
4242
CTAVLTreeTest >> testAllChildren [
43-
43+
4444
| elements |
4545
elements := (1 to: 10000) collect: [ :i | Random new nextIntegerBetween: 1 and: 100000000 ].
4646
tree addAll: elements.

src/Containers-AVL-Tree/CTAVLTree.class.st

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,19 @@ CTAVLTree >> addAll: aCollection [
3838

3939
{ #category : 'accessing' }
4040
CTAVLTree >> allChildren [
41-
42-
| currentNode nodesToVisit children |
43-
children := Set new.
44-
nodesToVisit := LinkedList with: root.
45-
46-
[ nodesToVisit isNotEmpty ] whileTrue: [
47-
currentNode := nodesToVisit removeFirst.
48-
children add: currentNode.
49-
nodesToVisit addAll: (currentNode children reject: #isNilNode) ].
50-
51-
^ children
41+
| allNodes queue currentNode |
42+
allNodes := OrderedCollection new.
43+
self root isNilNode ifTrue: [ ^ allNodes ].
44+
45+
queue := OrderedCollection with: self root.
46+
[ queue isNotEmpty ] whileTrue: [
47+
currentNode := queue removeFirst.
48+
allNodes add: currentNode.
49+
currentNode left isNilNode ifFalse: [ queue add: currentNode left ].
50+
currentNode right isNilNode ifFalse: [ queue add: currentNode right ]
51+
].
52+
53+
^ allNodes
5254
]
5355

5456
{ #category : 'enumerating' }

0 commit comments

Comments
 (0)