1: ================================================================================
  2: 
  3: Smalltalk defineClass: #MyFirstModel
  4:     superclass: #{UI.ApplicationModel}
  5:     indexedType: #none
  6:     private: false
  7:     instanceVariableNames: 'rectangles selection '
  8:     classInstanceVariableNames: ''
  9:     imports: ''
 10:     category: ''
 11: 
 12: ================================================================================
 13: 
 14: MyFirstModel method for 'adding'
 15: 
 16: addRectangle: aRectangle
 17: 
 18:     self rectangles add: aRectangle
 19: 
 20: ------------------------------------------------------------
 21: 
 22: MyFirstModel method for 'interface opening'
 23: 
 24: displayView
 25: 
 26:     | aView |
 27:     aView := MyFirstView model: self.
 28:     aView controller: MyFirstController new.
 29:     ^aView
 30: 
 31: ------------------------------------------------------------
 32: 
 33: MyFirstModel method for 'interface opening'
 34: 
 35: postBuildWith: aBuilder
 36: 
 37:     aBuilder keyboardProcessor keyboardHook: 
 38:             [:event :controller |
 39:             (self dependents
 40:                 detect: [:aView | (aView isKindOf: MyFirstView) and: [aView topComponent isActive]]
 41:                 ifNone: [nil]) ifNotNil: [:aView | aView controller processKeyboardEvent: event]].
 42:     super postBuildWith: aBuilder
 43: 
 44: ------------------------------------------------------------
 45: 
 46: MyFirstModel method for 'accessing'
 47: 
 48: rectangles
 49: 
 50:     rectangles ifNil: [rectangles := OrderedCollection new].
 51:     ^rectangles
 52: 
 53: ------------------------------------------------------------
 54: 
 55: MyFirstModel method for 'selecting'
 56: 
 57: selection
 58: 
 59:     ^selection
 60: 
 61: ------------------------------------------------------------
 62: 
 63: MyFirstModel method for 'selecting'
 64: 
 65: selection: anIndex
 66: 
 67:     selection := anIndex.
 68:     self changed
 69: 
 70: ================================================================================
 71: 
 72: Smalltalk.MyFirstModel class
 73:     instanceVariableNames: ''
 74: 
 75: ================================================================================
 76: 
 77: MyFirstModel class method for 'examples'
 78: 
 79: example1
 80:     "MyFirstModel example1."
 81: 
 82:     | aModel |
 83:     aModel := MyFirstModel new.
 84:     aModel open.
 85:     ^aModel
 86: 
 87: ------------------------------------------------------------
 88: 
 89: MyFirstModel class method for 'examples'
 90: 
 91: example2
 92:     "MyFirstModel example2."
 93: 
 94:     | aModel |
 95:     aModel := MyFirstModel new.
 96:     aModel addRectangle: (10 @ 10 extent: 100 @ 50).
 97:     aModel addRectangle: (200 @ 200 extent: 100 @ 50).
 98:     aModel addRectangle: (350 @ 250 extent: 100 @ 50).
 99:     aModel open.
100:     ^aModel
101: 
102: ------------------------------------------------------------
103: 
104: MyFirstModel class method for 'examples'
105: 
106: example3
107:     "MyFirstModel example3."
108: 
109:     | aModel |
110:     aModel := MyFirstModel new.
111:     aModel addRectangle: (10 @ 10 extent: 100 @ 50).
112:     aModel addRectangle: (200 @ 200 extent: 100 @ 50).
113:     aModel addRectangle: (350 @ 250 extent: 100 @ 50).
114:     3 timesRepeat: [aModel open].
115:     ^aModel
116: 
117: ------------------------------------------------------------
118: 
119: MyFirstModel class method for 'resources'
120: 
121: menuBar
122:     "Tools.MenuEditor new openOnClass: self andSelector: #menuBar"
123: 
124:     <resource: #menu>
125:     ^#(#{UI.Menu} #(
126:             #(#{UI.MenuItem} 
127:                 #rawLabel: 'ファイル' 
128:                 #submenu: #(#{UI.Menu} #(
129:                         #(#{UI.MenuItem} 
130:                             #rawLabel: '終了' 
131:                             #value: #closeRequest ) ) #(1 ) nil ) ) 
132:             #(#{UI.MenuItem} 
133:                 #rawLabel: 'その他' 
134:                 #submenu: #(#{UI.Menu} #(
135:                         #(#{UI.MenuItem} 
136:                             #rawLabel: '検査' 
137:                             #value: #inspect ) ) #(1 ) nil ) ) ) #(2 ) nil ) decodeAsLiteralArray
138: 
139: ------------------------------------------------------------
140: 
141: MyFirstModel class method for 'interface specs'
142: 
143: windowSpec
144:     "Tools.UIPainter new openOnClass: self andSelector: #windowSpec"
145: 
146:     <resource: #canvas>
147:     ^#(#{UI.FullSpec} 
148:         #window: 
149:         #(#{UI.WindowSpec} 
150:             #label: '初めてのアプリケーション' 
151:             #min: #(#{Core.Point} 200 150 ) 
152:             #max: #(#{Core.Point} 0 0 ) 
153:             #bounds: #(#{Graphics.Rectangle} 1080 570 1480 870 ) 
154:             #flags: 4 
155:             #menu: #menuBar ) 
156:         #component: 
157:         #(#{UI.SpecCollection} 
158:             #collection: #(
159:                 #(#{UI.ArbitraryComponentSpec} 
160:                     #layout: #(#{Graphics.LayoutFrame} 2 0 2 0 -2 1 -2 1 ) 
161:                     #name: #displayView 
162:                     #flags: 11 
163:                     #component: #displayView ) ) ) )
164: 
165: ================================================================================

This document was generated by KSU.TextDoclet on 2012/09/19 at 23:48:21.