-
-
Notifications
You must be signed in to change notification settings - Fork 353
/
SpDemoPage.class.st
83 lines (66 loc) · 1.59 KB
/
SpDemoPage.class.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
"
A superclass for particular Spec demo pages, that need to define a page name and priority in the list of demos.
"
Class {
#name : #SpDemoPage,
#superclass : #SpPresenter,
#instVars : [
'tabManager'
],
#category : #'Spec2-Examples-Demo'
}
{ #category : #accessing }
SpDemoPage class >> availablePages [
^ self allSubclasses sort: #priority ascending
]
{ #category : #specs }
SpDemoPage class >> defaultSpec [
^ SpBoxLayout newVertical
add: #tabManager;
yourself
]
{ #category : #initialization }
SpDemoPage class >> pageName [
self subclassResponsibility
]
{ #category : #initialization }
SpDemoPage class >> priority [
^ 999
]
{ #category : #initialization }
SpDemoPage >> codeFor: aClass [
^ TonelWriter sourceCodeOf: aClass
]
{ #category : #initialization }
SpDemoPage >> codeTab [
^ SpNotebookPage
title: 'Code'
icon: (self iconNamed: #changeUpdate)
provider: [ self newText
text: (self codeFor: self pageClass);
yourself ]
]
{ #category : #initialization }
SpDemoPage >> exampleTab [
^ SpNotebookPage title: 'Example' icon: (self iconNamed: #smallPaint) provider: [ self instantiate: self pageClass ]
]
{ #category : #initialization }
SpDemoPage >> initializePresenters [
tabManager := self newNotebook.
"tabManager whenTabSelected: [ self updateTitle ]."
tabManager
addPage: self exampleTab;
addPage: self codeTab.
]
{ #category : #initialization }
SpDemoPage >> pageClass [
self subclassResponsibility
]
{ #category : #accessing }
SpDemoPage >> tabManager [
^ tabManager
]
{ #category : #accessing }
SpDemoPage >> tabManager: anObject [
tabManager := anObject
]