[Squeak-ja: 2912] Re: PluggableTextMorphについて

Thoru Yamamoto tango @ eggegg.co.jp
2006年 4月 7日 (金) 17:08:15 JST


やまもとです。

> PluggableTextMorphをキャンセルするため、
> 左上に×印のマークがありますが、

どうやらPluggableListとウィンドウ(SystemWindow)を
混同されているのでわ?

で、久保さんの投稿をきっかけに
おいらもPluggableListがよくわからんちんで
いままでなかなか使えなかったのですが
これをきっかけに再お勉強、再トライしてみますた。
左がサブクラスを表示するPluggableListMorphで
右ペインが左ペインで選択したクラスのメソッドを表示する
PluggableTextMorphでする。
それらをSystemWindowにaddMorphしています。

TestWindow new initialize openAViewOnMe

でWindowがひらくです。

とりあえず思ったとおりにはどうさしているのですが
問題がありましたらごめん。<ご指摘大歓迎。
ここにソースコード書くの勇気いりまする・・・・(汗)



以下ソースコード。
'From Squeakland.396-Nihongo7.29 of 18 March 2005 [latest update: #100] on 7
April 2006 at 4:55:52 pm'!
Object subclass: #TestWindow
	instanceVariableNames: 'list selectedIndex contents'
	classVariableNames: ''
	poolDictionaries: ''
	category: 'ThoruTest'!

!TestWindow methodsFor: 'as yet unclassified' stamp: 'ty 4/5/2006 20:04'!
contents
	^ contents! !

!TestWindow methodsFor: 'as yet unclassified' stamp: 'ty 4/5/2006 19:50'!
initialize
	list _ (Collection withAllSubclasses collect: [ :each | each name])
					asSortedCollection: [ :a :b | a = b].
	selectedIndex _ 1.! !

!TestWindow methodsFor: 'as yet unclassified' stamp: 'ty 4/5/2006 19:50'!
list
	^list! !

!TestWindow methodsFor: 'as yet unclassified' stamp: 'ty 4/5/2006 19:50'!
listIndex
	^selectedIndex! !

!TestWindow methodsFor: 'as yet unclassified' stamp: 'ty 4/6/2006 00:23'!
listIndex: anInteger
	selectedIndex _ anInteger.
	contents _ (Smalltalk at: (list at: selectedIndex)) organization
allMethodSelectors asString.

	self changed: #listIndex.
	self changed: #contents! !

!TestWindow methodsFor: 'as yet unclassified' stamp: 'ty 4/5/2006 20:12'!
listMenu: aMenu
	| targetClass differentMenu className |
	className _ list
		at: selectedIndex
		ifAbsent: [
			^aMenu add: 'nothing selected' target: self selector: #beep
		].
	targetClass _ Smalltalk
		at: className
		ifAbsent: [
			^aMenu add: 'that class is history!!!!' target: self selector: #beep
		].
	differentMenu _ DumberMenuMorph new.
	differentMenu
		add: 'browse' target: targetClass selector: #browse;
		add: 'inspect' target: targetClass selector: #inspect;
		add: 'explore' target: targetClass selector: #explore.
	^ differentMenu! !

!TestWindow methodsFor: 'as yet unclassified' stamp: 'ty 4/5/2006 20:16'!
openAViewOnMe
	| window aListMorph aTextMorph |

	aListMorph _ PluggableListMorph
		on: self
		list: #list
		selected: #listIndex
		changeSelected: #listIndex:
		menu: #listMenu:.
	aListMorph color: Color white.
	aTextMorph _ PluggableTextMorph
		on: self
		text: #contents
		accept: #acceptContents
		readSelection: nil
		menu: nil.
	window _ SystemWindow labelled: 'ThoruTest'.
	window
		color: Color white;
		setWindowColor: (Color r: 0.645 g: 0.645 b: 1.0);
		addMorph: aListMorph
		frame: (0 @ 0 corner: 0.3 @ 1);
		addMorph: aTextMorph
		frame: (0.3 @ 0 corner: 1 @ 1).
	window extent: 400 @ 200.
	^ window openInHand
!
]style[(13 399 104 100)f2b,f2,f4,f2! !



-------------------------------
Thoru Yamamoto
mail :    tango @ eggegg.co.jp
www:    http://www.thoruman.com
-------------------------------





Squeak-ja メーリングリストの案内