-
-
Notifications
You must be signed in to change notification settings - Fork 354
/
SpTransmissionExample.class.st
84 lines (68 loc) · 2.02 KB
/
SpTransmissionExample.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
84
Class {
#name : #SpTransmissionExample,
#superclass : #SpPresenter,
#instVars : [
'packages',
'classes',
'protocols',
'methods',
'code'
],
#category : #'Spec2-Transmission-Examples'
}
{ #category : #specs }
SpTransmissionExample class >> defaultSpec [
^ SpBoxLayout newVertical
add: (SpBoxLayout newHorizontal
add: #packages;
add: #classes;
add: #protocols;
add: #methods);
add: #code;
yourself
]
{ #category : #showing }
SpTransmissionExample class >> open [
<script>
^ self new openWithSpec
]
{ #category : #initialization }
SpTransmissionExample >> classTemplateFor: aPackage [
^ 'Object subclass: #NameOfSubclass
slots: {}
classVariables: {}
package: ''', aPackage name,''' '
]
{ #category : #initialization }
SpTransmissionExample >> initializeWidgets [
packages := self newList displayBlock: #name.
classes := self newList displayBlock: #name.
protocols := self newList displayBlock: [ :aPair | aPair value name ].
methods := self newList displayBlock: #selector.
code := self newCode.
packages transmitTo: classes transform: [ :aPackage | aPackage definedClasses asArray ].
packages transmitTo: code transform: [ :aPackage | self classTemplateFor: aPackage ].
classes
transmitTo: protocols
transform: [ :aClass |
aClass organization allProtocols
collect: [ :each | aClass -> each ]
as: OrderedCollection ]
postTransmission: [ :destination :origin | destination selectIndex: 1 ].
classes transmitTo: code transform: #definitionWithSlots.
protocols
transmitTo: methods
transform: [ :aPair |
aPair value methods
collect: [ :each | aPair key >> each ]
as: OrderedCollection ].
protocols transmitTo: code transform: [ :aPair | aPair key sourceCodeTemplate ].
methods transmitTo: code transform: #sourceCode.
packages items: RPackageOrganizer default packages
]
{ #category : #initialization }
SpTransmissionExample >> initializeWindow: aWindowPresenter [
aWindowPresenter
title: 'Transmission example browser';
initialExtent: 800@600
]