NAB フレームワークのAPI 仕様書 June 21, 2006 |
目次
![]() ![]() |
第4章 実装例(example tool)の解説 |
Eclipseビューからの(上位からの)呼び出し方法に関して、NAB フレームワークでは、いずれのツールキットに対しても一定のシーケンスで呼び出すことができるようになっています。以下に NAB plug-in for MWT に関する処理を例に実際の呼び出しの具体例を例示します。
NAB フレームワークによって処理を開始した際、一番最初に行うことは、ウィンドウの新規作成処理などのツールキットのインスタンスの生成となります。例に出てくる NtkManager は、アプリケーション NTK にアクセスするためのシングルトンインターフェースで、最初にアクセスする必要があります。NTK のインスタンスが持つプロパティにアクセスするには、NtkManager.getNtkInstanceManager()で取得されるインスタンス管理のモジュール INtkInstanceManagerを通してアクセスします。
//他のスレッドで動作しているモデルのNTK の場合、INtkContext を通じて //コンテキストハンドリングモジュールを通じて、NTK をロックすることができます。 NtkManager.getNtkContext().lock(); //インスタンス管理モジュール INtkInstanceManager iman = NtkManager.getNtkInstanceManager(); //生成するインスタンスのクラス名と、インスタンスの名称を指定して生成 long inst = iman.getNewInstance(className,windowName,0); if (inst == 0){ //生成できず return; } //生成したインスタンスのプロパティを設定 iman.setProperty(inst,"x",0); iman.setProperty(inst,"y",0); iman.setProperty(inst,"width",400); iman.setProperty(inst,"height",400); iman.setupInstance(inst); //トップのウィンドウインスタンス(一番の親として)登録 NtkManager.getNtkInstanceManager().setInstanceId(Ntk.NTK_SET_ROOT_INSTANCE,inst); //ロックを解除 NtkManager.getNtkContext().unlock();
ウィンドウを生成した後、エディタービュー等を使用してビジュアルにそのウィンドウ上にインスタンスを配置していく場合などで、配置されたインスタンスのうち、選択されたインスタンスのプロパティ値の一覧を取得するには次のような手順でアクセスします。
//他のスレッドで動作しているモデルのNTK の場合、INtkContext を通じて //コンテキストハンドリングモジュールを通じて、NTK をロックすることができます。 INtkContext context = NtkManager.getNtkContext(); context.lock(); //選択されているインスタンスの検索を開始する際は ROOT_ID から始めます。 long selectedId = Ntk.NTK_ROOT_INSTANCE_ID; INtkInstanceManager iman = NtkManager.getNtkInstanceManager(); while(true){ //次の選択されているインスタンスの ID を取得 long selectedNext = iman.getInstanceId(selectedId, Ntk.NTK_NEXT_SELECTED_INSTANCE_ID, 0); if (selectedNext == 0){ //存在しなければ 0 break; } //インスタンスの持つプロパティの取得を開始する際は ROOT_PROPERTY_ID から始めます。 long propId = Ntk.NTK_ROOT_PROPERTY_ID; //ループしながら、プロパティ ID を取得していく while(true){ //次のプロパティの ID を取得 long propNextId = iman.getInstanceId(selectedId, Ntk.NTK_NEXT_PROPERTY_ID, propId); if (propNextId == 0){ //存在しなければ 0 break; } //プロパティ名称の取得 String propName = iman.getInstanceData(propNextId, Ntk.NTK_PROPERTY_NAME, 0,Ntk.NTK_EN_UTF8); //プロパティ値の取得 String value = iman.getInstanceData(propNextId, Ntk.NTK_PROPERTY_TITLE, 0,Ntk.NTK_EN_UTF8); //プロパティタイプの取得 String propType = iman.getInstanceData(propNextId, Ntk.NTK_PROPERTY_TYPE, 0, Ntk.NTK_EN_UTF8); //次のプロパティの取得 propId = propNextId; } //次のインスタンスの取得 selectedId = selectedNext; } context.unlock();
//他のスレッドで動作しているモデルのNTK の場合、INtkContext を通じて //コンテキストハンドリングモジュールを通じて、NTK をロックすることができます。 INtkContext context = NtkManager.getNtkContext(); context.lock(); //選択されているインスタンスの検索を開始する際は ROOT_ID から始めます。 long selectedId = Ntk.NTK_ROOT_INSTANCE_ID; INtkInstanceManager iman = NtkManager.getNtkInstanceManager(); while(true){ //次の選択されているインスタンスの ID を取得 long selectedNext = iman.getInstanceId(selectedId, Ntk.NTK_NEXT_SELECTED_INSTANCE_ID, 0); if (selectedNext == 0){ //存在しなければ 0 break; } //インスタンスの持つプロシージャの取得を開始する際は ROOT_PROCEDURE_ID から始めます。 long procId = Ntk.NTK_ROOT_PROCEDURE_ID; while(true){ long procNext = iman.getInstanceId(targetInstId, Ntk.NTK_NEXT_PROCEDURE_ID, procId); if (procNext == 0){ break; } //イベント(トリガ)番号の取得 long triggerNumber = iman.getTrigger(procNext); //イベント名称(トリガ)の取得 String triggerName = triggerTable.getTriggerName(procNumber); //プロシージャ名の取得 String procName = iman.getProcedureName(procNext); //次のプロシージャの取得 procId = procNext; } //次のインスタンスの取得 selectedId = selectedNext; } context.unlock();
編集の終わったツールキットをファイルに保存し、ソースコードを生成し、ビルドを行う処理は以下のようになります。
//NtkManager を通じて INtkProjectManager を取得 INtkProjectManager pman = NtkManager.getNtkProjectManager(); //アプリケーションをビルドするのに必要なソースコードを生成 pman.createCurrentNtkProjectSources(); //ソースコードをビルド pman.createCurrentNtkProjectSources();
もちろん、NTK 向けのプロジェクトのデータの編集や、その保存先の設定等、INtkProjectManager を通じて設定、変更することもできます。
目次
![]() ![]() |