タイトル今から始めるCocoaプログラミング》ドラッグ&ドロップでファイルを開く(2)オープン処理の組み込みカテゴリーProjectBuilder/Interface Builder, Cocoa, 今から始めるCocoaプログラミング
作成日2001/5/1 16:44:39作成者新居雅行
Cocoaのアプリケーションで、Finderでのドラッグ&ドロップに対応する方法についての続きをお届けする。前回は、概念の説明だけであった。Delegateという機能を使って、イベント処理やあるいはNotifyの受け取りを、別のオブジェクトにまかせるという手法が基調にあることを説明した。それでは、実際にどのようにすれば、アプリケーションのイベントがDelegateされるのかを具体的に説明していくことにしよう。

それでは、ここで、Project Builderを使って、ポイントになる部分を紹介するが、以前と同じように、操作ステップを追って説明することにする。まずはプロジェクトを用意する。今回はドキュメントとの関連までは説明しないので「Cocoa-Java Application」をプロジェクトのテンプレートとして選ぶことにする。新規にプロジェクトを作るには、FileメニューからNew Project(Command+shift+N)を選択する。プロジェクト名や保存先のフォルダについては任意に指定をすればよい。今回はAppDelegateTrial1という名前のプロジェクトにした。
さっそくInterface Builder側の作業に移ろう。テンプレートには、MainMenu.nibというInterface Builderの文書が最初から用意されているので、Project Builderの左側に表示される一覧部分でダブルクリックして開く。Resourcesグループに含まれているはずだ。

□Interface BuilderファイルのMainMenu.nibをダブルクリックして開く


MainMenu.nibには、最初からいくつかのオブジェクトが存在する。MainMenuというのがアプリケーションのメニューであり、Windowというのは起動したらとりあえずは自動的に表示されるウインドウである。これらに加えて、File’s Ownerと First Responderというオブジェクトが見られる。このうち、今回注目するのはFile’s Ownerの方だ。このオブジェクトは最初から作られているが、インスペクタで確認すると分かるのだが、NSApplicationクラスのオブジェクトとなっている。つまり、アプリケーションそのもののオブジェクトがFile’s Ownerであると考えてよい。

□MainMenu.nibの最初の状態


続いて、アプリケーションからDelegateされるオブジェクトを作ることにする。まずは、MainMenu.nibファイルのウインドウで、Classesのタブを選択し、そちらで新たにクラスを定義する。Delegateされるクラスは特定のクラスを継承する必要は特にはないので、ここではNSObjectを継承したクラスを作ることにする。クラス一覧でNSObjectを選択して、ClassesメニューからSubclassを選択する。

□ClassesメニューからSubclassを選択


すると、新しいクラスがMyObjectという名前で作成されて行が増える。ここでは「DocOpenHandler」という名前のクラスにするために、キータイプをしてクラス名を書き換えておいた。クラス名についても、この名前でないというわけではなく、もちろん別の名前でもかまわない。

□新しいクラスの名前をDocOpenHandlerとした


作成したクラスを一覧で選択した状態で、インスペクタのウインドウを表示する(たとえば、Command+Shift+I)。そして、インスペクタ上部のポップアップメニューでAttributesを選択し、属性を表示する。ここではクラスの中身を記述する言語を定義できるが、今回もやはりJavaでプログラムを作成するので、Javaを選択しておく。

□クラスの言語はJavaを選択する


続いて、作成したクラスのプログラムを記述するファイルを選択する。クラス一覧で、作成したDocOpenHandlerを選択したした状態で、ClassesメニューのCreate Filesを選択する。保存するファイルや場所を指定するダイアログボックスが表示されるので、そのまま設定は特に変えずにChooseボタンをクリックする。そうすれば、Project Builderで開いているプロジェクトの側にファイルが追加される。

□クラスのファイルを作成する

□プロジェクトのフォルダに保存され、プロジェクトに追加されるようにする


続いて、作成したクラスのインスタンス化を行っておく。やはり、クラスのリストでDocOpenHandlerを選択しておいて、ClassesメニューからInstantiateを選択する。すると、MainMenu.nibファイルのInstancesのタブで、DocOpenHandlerという名前でインスタンス化したオブジェクトがアイコンとして見えるようになっている。

□ClassesメニューからInstantiateを選択

□インスタンス化したオブジェクトが見える


以上の手順は、とにかく新たにクラスを作って、そのプログラムを記述するファイルを作っておき、さらにインスタンス化するということである。
(別の記事へ続く)
関連リンク