Skip to content

Commit 64d11c2

Browse files
authored
Merge pull request #7 from OpenSmock/Issue_0006
Add ToTab and ToTabPane
2 parents 1ce760b + 2750771 commit 64d11c2

File tree

4 files changed

+163
-1
lines changed

4 files changed

+163
-1
lines changed

src/Toplo-Serialization-Stash/TToCheckable.extension.st

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@ TToCheckable >> stashAccessorsForTToCheckable [
55

66
<stashAccessors>
77
| settersAndGetters |
8+
self class == ToTab ifTrue: [ ^ { } ].
89
self isCheckable ifFalse: [ ^ { } ].
10+
911
settersAndGetters := OrderedCollection new.
10-
settersAndGetters add: #initializeCheckable onlySetOnStash.
12+
13+
self class == ToToggleButton ifFalse: [ settersAndGetters add: #initializeCheckable onlySetOnStash ].
1114
self checked ifTrue: [ settersAndGetters add: #checked ].
1215
self group ifNotNil: [ settersAndGetters add: #group ].
1316
^ settersAndGetters
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
Extension { #name : #ToTab }
2+
3+
{ #category : #'*Toplo-Serialization-Stash' }
4+
ToTab >> firstElement [
5+
6+
| first |
7+
first := self children first.
8+
first == filler ifTrue: [ ^ nil ].
9+
^ first
10+
]
11+
12+
{ #category : #'*Toplo-Serialization-Stash' }
13+
ToTab >> firstElement: anElement [
14+
15+
anElement ifNil: [ ^ self ].
16+
self addChild: anElement at: 1
17+
]
18+
19+
{ #category : #'*Toplo-Serialization-Stash' }
20+
ToTab >> stashElement [
21+
22+
<stashAccessors>
23+
self firstElement ifNil: [ ^ { } ].
24+
^ { (#firstElement: -> #firstElement) }
25+
]
26+
27+
{ #category : #'*Toplo-Serialization-Stash' }
28+
ToTab >> stashPaneBuilder [
29+
30+
<stashAccessors>
31+
^ { #paneBuilder }
32+
]
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
Extension { #name : #ToTabPane }
2+
3+
{ #category : #'*Toplo-Serialization-Stash' }
4+
ToTabPane >> stashAddAllTabs: aCollectionOfTabs [
5+
6+
aCollectionOfTabs do: [ :each | self addTab: each ].
7+
]
8+
9+
{ #category : #'*Toplo-Serialization-Stash' }
10+
ToTabPane >> stashTabs [
11+
12+
<stashAccessors>
13+
^ { #stashAddAllTabs: -> #tabs }
14+
]

src/Toplo-Serialization-Tests/ToSerializerTest.class.st

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,119 @@ ToSerializerTest >> testToLabel [
353353
on: [ :element | self assert: element text asString equals: 'hello' ]
354354
]
355355

356+
{ #category : #tests }
357+
ToSerializerTest >> testToTabPane1 [
358+
359+
| origin |
360+
origin := ToTabPane new.
361+
origin resizablePanes: true.
362+
1 to: 3 do: [ :index | | tab |
363+
tab := ToTab new.
364+
tab closable: true.
365+
tab labelText: 'Button ' , index asString.
366+
tab paneBuilder: [ :pane :theNoteBook |
367+
pane background: Color random ].
368+
origin addTab: tab ].
369+
370+
self test: origin on: [ :element |
371+
self assert: element tabs size equals: 3 ]
372+
]
373+
374+
{ #category : #tests }
375+
ToSerializerTest >> testToTabPane2 [
376+
377+
| origin |
378+
origin := ToTabPane new.
379+
origin resizablePanes: true.
380+
1 to: 100 do: [ :index |
381+
| tab |
382+
tab := ToTab new.
383+
tab closable: true.
384+
tab labelText: 'Button ' , index asString.
385+
tab paneBuilder: [ :pane :theNoteBook |
386+
pane background: Color random ].
387+
origin addTab: tab ].
388+
389+
self
390+
test: origin
391+
on: [ :element | self assert: element tabs size equals: 100 ]
392+
]
393+
394+
{ #category : #tests }
395+
ToSerializerTest >> testToTabPane3 [
396+
397+
| origin |
398+
origin := ToTabPane new.
399+
origin resizablePanes: true.
400+
1 to: 0 do: [ :index |
401+
| tab |
402+
tab := ToTab new.
403+
tab closable: true.
404+
tab labelText: 'Button ' , index asString.
405+
tab paneBuilder: [ :pane :theNoteBook |
406+
pane background: Color random ].
407+
origin addTab: tab ].
408+
409+
self
410+
test: origin
411+
on: [ :element | self assert: element tabs size equals: 0 ]
412+
]
413+
414+
{ #category : #tests }
415+
ToSerializerTest >> testToTabPane4 [
416+
417+
| origin |
418+
origin := ToTabPane new.
419+
origin resizablePanes: true.
420+
1 to: 3 do: [ :index |
421+
| tab |
422+
tab := ToTab new.
423+
tab closable: true.
424+
tab labelText: 'Button ' , index asString.
425+
tab paneBuilder: [ :pane :theNoteBook |
426+
pane background: Color random ].
427+
origin addTab: tab ].
428+
429+
self test: origin on: [ :element |
430+
self assert: element tabs size equals: 3.
431+
self
432+
assert: element tabs first firstElement text asString
433+
equals: 'Button 1'.
434+
self
435+
assert: element tabs second firstElement text asString
436+
equals: 'Button 2'.
437+
self
438+
assert: element tabs third firstElement text asString
439+
equals: 'Button 3' ]
440+
]
441+
442+
{ #category : #tests }
443+
ToSerializerTest >> testToTabPane5 [
444+
445+
| origin |
446+
origin := ToTabPane new.
447+
origin resizablePanes: true.
448+
1 to: 3 do: [ :index |
449+
| tab |
450+
tab := ToTab new.
451+
tab closable: true.
452+
tab labelText: 'Button ' , index asString.
453+
tab paneBuilder: [ :pane :theNoteBook | #test ].
454+
origin addTab: tab ].
455+
456+
self test: origin on: [ :element |
457+
self assert: element tabs size equals: 3.
458+
self
459+
assert: (element tabs first paneBuilder value: nil value: nil)
460+
equals: #test.
461+
self
462+
assert: (element tabs second paneBuilder value: nil value: nil)
463+
equals: #test.
464+
self
465+
assert: (element tabs third paneBuilder value: nil value: nil)
466+
equals: #test ]
467+
]
468+
356469
{ #category : #tests }
357470
ToSerializerTest >> testTokens [
358471

0 commit comments

Comments
 (0)