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.