1: ================================================================================
  2: 
  3: Smalltalk.KSU defineClass: #TextEditor
  4:     superclass: #{UI.ApplicationModel}
  5:     indexedType: #none
  6:     private: false
  7:     instanceVariableNames: 'textHolder '
  8:     classInstanceVariableNames: ''
  9:     imports: ''
 10:     category: 'KSU-Template'
 11: 
 12: ================================================================================
 13: 
 14: KSU.TextEditor method for 'menu messages'
 15: 
 16: close
 17: 
 18:     self closeRequest
 19: 
 20: ------------------------------------------------------------
 21: 
 22: KSU.TextEditor method for 'menu messages'
 23: 
 24: copySelection
 25: 
 26:     ^self textEditorController ifNotNil: [:aController | aController copySelection]
 27: 
 28: ------------------------------------------------------------
 29: 
 30: KSU.TextEditor method for 'menu messages'
 31: 
 32: cut
 33: 
 34:     ^self textEditorController ifNotNil: [:aController | aController cut]
 35: 
 36: ------------------------------------------------------------
 37: 
 38: KSU.TextEditor method for 'initialize-release'
 39: 
 40: initialize
 41: 
 42:     super initialize.
 43:     textHolder := nil.
 44:     ^self
 45: 
 46: ------------------------------------------------------------
 47: 
 48: KSU.TextEditor method for 'menu messages'
 49: 
 50: newFile
 51: 
 52:     | aModel |
 53:     aModel := self class new.
 54:     aModel textHolder value: Text new.
 55:     ^self textEditorView
 56:         ifNil: [aModel open]
 57:         ifNotNil: 
 58:             [:aView |
 59:             | aRectangle aWindow |
 60:             aRectangle := aView topComponent displayBox translatedBy: 24 @ 24.
 61:             aModel allButOpenInterface: #windowSpec.
 62:             aWindow := aModel builder window.
 63:             aWindow openIn: (aRectangle origin rounded
 64:                         extent: ((aRectangle extent max: aWindow minimumSize) min: aWindow maximumSize) rounded).
 65:             aWindow displayPendingInvalidation.
 66:             aModel postOpenWith: aModel builder.
 67:             aWindow]
 68: 
 69: ------------------------------------------------------------
 70: 
 71: KSU.TextEditor method for 'menu messages'
 72: 
 73: openFile
 74: 
 75:     Dialog warn: 'ごめんなさい、まだ工事中です。'
 76: 
 77: ------------------------------------------------------------
 78: 
 79: KSU.TextEditor method for 'menu messages'
 80: 
 81: paste
 82: 
 83:     ^self textEditorController ifNotNil: [:aController | aController paste]
 84: 
 85: ------------------------------------------------------------
 86: 
 87: KSU.TextEditor method for 'interface opening'
 88: 
 89: postOpenWith: aBuilder
 90: 
 91:     super postOpenWith: aBuilder.
 92:     self selectAll
 93: 
 94: ------------------------------------------------------------
 95: 
 96: KSU.TextEditor method for 'menu messages'
 97: 
 98: saveFile
 99: 
100:     Dialog warn: 'ごめんなさい、まだ工事中です。'
101: 
102: ------------------------------------------------------------
103: 
104: KSU.TextEditor method for 'menu messages'
105: 
106: selectAll
107: 
108:     ^self textEditorController
109:         ifNotNil: [:aController | aController selectFrom: 1 to: aController text size]
110: 
111: ------------------------------------------------------------
112: 
113: KSU.TextEditor method for 'private'
114: 
115: textEditorController
116: 
117:     self textEditorView ifNotNil: [:textEditorView | ^textEditorView controller].
118:     ^nil
119: 
120: ------------------------------------------------------------
121: 
122: KSU.TextEditor method for 'private'
123: 
124: textEditorView
125: 
126:     self builder
127:         ifNotNil: 
128:             [:aBuilder |
129:             (aBuilder componentAt: #textHolder)
130:                 ifNotNil: 
131:                     [:aWrapper |
132:                     | textEditorView |
133:                     textEditorView := aWrapper widget.
134:                     ^textEditorView]].
135:     ^nil
136: 
137: ------------------------------------------------------------
138: 
139: KSU.TextEditor method for 'aspects'
140: 
141: textHolder
142: 
143:     textHolder
144:         ifNil: 
145:             [| aStream aString |
146:             aStream := String new writeStream.
147:             aStream cr.
148:             aStream
149:                 nextPutAll: '漢字で書くと、';
150:                 cr;
151:                 nextPutAll: '「危機」という単語は二つの文字から成り立っています。';
152:                 cr;
153:                 nextPutAll: '一つは危険を表して、もう一つは機会を表します。';
154:                 cr;
155:                 nextPutAll: 'ジョン・F・ケネディー';
156:                 cr.
157:             aStream cr.
158:             aStream
159:                 nextPutAll: 'When written in Chinese,';
160:                 cr;
161:                 nextPutAll: 'the word "crisis" is composed of two characters.';
162:                 cr;
163:                 nextPutAll: 'One represents danger, and the other represents opportunity.';
164:                 cr;
165:                 nextPutAll: 'John F. Kennedy';
166:                 cr.
167:             aStream cr.
168:             aString := aStream contents.
169:             aStream close.
170:             textHolder := aString asText asValue].
171:     ^textHolder
172: 
173: ================================================================================
174: 
175: KSU.TextEditor class
176:     instanceVariableNames: ''
177: 
178: ================================================================================
179: 
180: KSU.TextEditor class method for 'examples'
181: 
182: example1
183:     "KSU.TextEditor example1."
184: 
185:     | anApplication |
186:     anApplication := KSU.TextEditor new.
187:     anApplication open.
188:     ^anApplication
189: 
190: ------------------------------------------------------------
191: 
192: KSU.TextEditor class method for 'resources'
193: 
194: menuBar
195:     "Tools.MenuEditor new openOnClass: self andSelector: #menuBar"
196: 
197:     <resource: #menu>
198:     ^#(#{UI.Menu} #(
199:             #(#{UI.MenuItem} 
200:                 #rawLabel: 'ファイル' 
201:                 #submenu: #(#{UI.Menu} #(
202:                         #(#{UI.MenuItem} 
203:                             #rawLabel: '新規' 
204:                             #value: #newFile ) 
205:                         #(#{UI.MenuItem} 
206:                             #rawLabel: '開く' 
207:                             #value: #openFile ) 
208:                         #(#{UI.MenuItem} 
209:                             #rawLabel: '保存' 
210:                             #value: #saveFile ) 
211:                         #(#{UI.MenuItem} 
212:                             #rawLabel: '終了' 
213:                             #value: #close ) ) #(2 1 1 ) nil ) ) 
214:             #(#{UI.MenuItem} 
215:                 #rawLabel: '編集' 
216:                 #submenu: #(#{UI.Menu} #(
217:                         #(#{UI.MenuItem} 
218:                             #rawLabel: 'カット' 
219:                             #value: #cut ) 
220:                         #(#{UI.MenuItem} 
221:                             #rawLabel: 'コピー' 
222:                             #value: #copySelection ) 
223:                         #(#{UI.MenuItem} 
224:                             #rawLabel: 'ペースト' 
225:                             #value: #paste ) 
226:                         #(#{UI.MenuItem} 
227:                             #rawLabel: 'すべて選択' 
228:                             #value: #selectAll ) ) #(3 1 ) nil ) ) ) #(2 ) nil ) decodeAsLiteralArray
229: 
230: ------------------------------------------------------------
231: 
232: KSU.TextEditor class method for 'resources'
233: 
234: textMenu
235:     "Tools.MenuEditor new openOnClass: self andSelector: #textMenu"
236: 
237:     <resource: #menu>
238:     ^#(#{UI.Menu} #(
239:             #(#{UI.MenuItem} 
240:                 #rawLabel: 'カット' 
241:                 #value: #cut ) 
242:             #(#{UI.MenuItem} 
243:                 #rawLabel: 'コピー' 
244:                 #value: #copy ) 
245:             #(#{UI.MenuItem} 
246:                 #rawLabel: 'ペースト' 
247:                 #value: #paste ) 
248:             #(#{UI.MenuItem} 
249:                 #rawLabel: 'すべて選択' 
250:                 #value: #selectAll ) ) #(3 1 ) nil ) decodeAsLiteralArray
251: 
252: ------------------------------------------------------------
253: 
254: KSU.TextEditor class method for 'interface specs'
255: 
256: windowSpec
257:     "Tools.UIPainter new openOnClass: self andSelector: #windowSpec"
258: 
259:     <resource: #canvas>
260:     ^#(#{UI.FullSpec} 
261:         #window: 
262:         #(#{UI.WindowSpec} 
263:             #label: 'テキストエディタ' 
264:             #min: #(#{Core.Point} 512 384 ) 
265:             #max: #(#{Core.Point} 0 0 ) 
266:             #bounds: #(#{Graphics.Rectangle} 1080 650 1592 1034 ) 
267:             #flags: 4 
268:             #menu: #menuBar ) 
269:         #component: 
270:         #(#{UI.SpecCollection} 
271:             #collection: #(
272:                 #(#{UI.TextEditorSpec} 
273:                     #layout: #(#{Graphics.LayoutFrame} 2 0 2 0 -2 1 -2 1 ) 
274:                     #name: #textHolder 
275:                     #model: #textHolder 
276:                     #menu: #textMenu 
277:                     #tabRequiresControl: true ) ) ) )
278: 
279: ================================================================================

This document was generated by KSU.TextDoclet on 2012/11/10 at 11:06:12.