ObjectSquare [1999 年 7 月号]

[Happy Squeaking!!]


8. Squeak演習:マルチビューの実現

8.2  CounterLauncherの作成


マルチビューとしてCounterアプリケーションを起動するにあたって便利なユーティリティとなるクラスを作成しましょう。これでワークスペースにビュー起動用のメッセージ群をいちいち書かずに済むようになります。

以下のようにクラス定義を行います。

Object subclass: #CounterLauncher
        instanceVariableNames: ''
        classVariableNames: ''
        poolDictionaries: ''
        category: 'MVC tutorial'

CounterLauncherは、ユーティリティクラスとして、簡単に使えることを考えています。そこでインスタンスをいちいち生成しなくともCounterLauncherが使えるように、クラス操作やクラス属性を追加していくことにします。

まず、クラスインスタンス変数として、counterを定義します。ここにはビューが同時に参照するモデルとしてCounterのインスタンスが入ります。
ブラウザを"class"側に合わせて以下のようにテンプレートに記入し、"accept"します。

CounterLauncher class
        instanceVariableNames: 'counter '

次に操作を追加します。(これらもすべて"class"側で行います)

まずは定義したcounterの初期化操作です。

(CounterLauncher class >> class initializationカテゴリ)

initialize
        counter := Counter new

アクセス用の操作も定義しましょう。

次に更新受け取りメッセージを作成します。

(CounterLauncher class >> accessingカテゴリ)

counter
        ^counter
counter: aCounter
        counter := aCounter

最後に起動用の操作を定義します。引数としてビューのインスタンスを受け取り、同一モデル(counter)を参照させて起動するようにします。

(CounterLauncher class >> actionsカテゴリ)

launchBy: aCounterView
        aCounterView model: self counter.
        aCounterView label: aCounterView  name.
        aCounterView maximumSize: 200 @ 100.
        aCounterView minimumSize: 50 @ 30.
        aCounterView borderWidth: 5.
        aCounterView backgroundColor: Color yellow.
        aCounterView controller open.

これで完成です。

FileIn: CounterLauncher.st (<=Click)


© 1999-2001 OGIS-RI Co., Ltd.

Prev.

Index

Next