9章 自作ツール画面、自作ツールプログラム等の組み込み
9.1 CommonMP Ver1.3
以後
( 例:CommonMPで計算した結果をGoogleEarthで表示)
CommonMPでは、依存性の注入(Dependency
Injection)のソフトウエアパターン構造を採用しています。 この為、自作した「要素モデル」をCommonMP本体のコンパイルを行う事無しに
組み込むことができます。 要素モデル以外にも、独自に作成したグラフ表示画面やツールプログラムをCommonMPに組み込めます。 本頁では、
Ver1.3 以後での 独自ツール組み込み方法を説明します。
組み込むツールの起動は、CommonMPのメニュー「ヘルプ」−「ツール管理」−「ツール起動」を選択します。 すると、ツールを起動する為のランチャーが表示されます。
ツールランチャー起動
ランチャー上のボタンを押下すると、組み込んだツールや画面が起動されます。
このランチャーに登録するツールを作成してみます。
例として、GIS2次元メッシュ時系列ファイル出力要素モデルが出力したファイルを、GoogleEarth(Google
社が無料で配布しているバーチャル地球儀ソフト)上に表示するツールを作成します。 本ツールを出力する前に、GoogleEarthを PCにインストールしておく必要があります。
以降、C:\Program
Files\Google\Google
Earth\client\下に googleearth.exe がインストールされているものとして 説明を行います。
CommonMPは、大きな機能がコンポーネント化されており、GIS機能はその一つの機能です。 機能は、同一の種類が同時に複数組み込むことが許さ
れる場合と、必ず1個しか許されない場合があります。 例えば、計算モデルは 複数の計算モデルを同時に組み込むことが可能です。 一方、画面(ビューア
機能:直感的には、メニューが設定されている画面)は、同時に複数立ち上げる事ができません。 同様に CommonMPと連動して動作することが可能な
GIS機能は1個のみです。 このため、GIS機能付きCommonMPをインストールした場合には、CommonMPと他のGIS(例えば、
GoogleEarth)を連動して動作できません。(但し、連動しないで、互いに独立したアプリケーションとして使用することは可能です。 これから述
べる例でも、CommonMPからGoogleEarthを制御することはできません。)
そこで、此処では、計算結果を GoogleEarthに表示するための KMLファイルを出力する機能をツールとしてCommonMPに組み込みま
す。 尚、GIS付きGommonMPは 最初からこの機能を有していますが、 GIS無しCommonmMPはこの機能が無いので、有益な機能かもしれ
ません。
CommonMPVer1.3 をダウンロードし、インストールすると、2次元GIS計算結果出力ファイルを、KMLファイルに変化するツールの、組み
込み例が一緒にダウンロードされます。(CommonMP\Source\HYSSOP\AddinSysToolsVer1.2\HSViewer\
HyssopGISControllerJob)
しかしながら、この例は、CommonMPVer1.2 の方法が記述されており、Ver1.3の方法には対応していません。 そこで、Ver1.2用に作成されたKMLファイル出力機能を、Ver1.3対応に修正します。
下図に Ver1.2までのツール組込み時の動作概要を示します。
CommonMP.diconファイルにツールを生成するFactoryクラスを登録することで、CommonMPは立ち上がり時にそこに記述されたDLL内のFactoryクラスを取り込みます。
また、ツールを起動するメニューを、Menu.xml
に記述しておくと、ツールを起動するメニューが表示されます。
メニュー上でツールが選択されると、メニューに登録された番号が、ツールのMenuCallBack()メソッドに通知されて、この中に記述された処理により、各種画面表示やツール起動等が行われます。
CommonMP Ver1.2
以前の ツール組み込み
Ver1.3 以降では、メニューの代わりに、ランチャー上に登録されたボタンからツールが起動されます。 このため、Menu.xmlファイルを変更
する必要が無くなりました。 また、要素モデルの場合と同じように 「.dicon
」ファイルに登録しなくても、DLLで提供されたツールをCommonMPに取り込めるようにしてあります。(但し、これは、各ツールが互いに独立し、干
渉し合わない事を前提としています。)
一方、メニューの場合には、一つのツールに対して、メニューから色々な機能を選択できましたが、ランチャーに登録されるボタンはツールに一つ割り当てる
だけなので、ツールは、MenuCallBack()メソッドではなく、StartTool()メソッドに対して、ツールボタンが押下された事を通知しま
す。 ツールは、StartTool()メソッド内に記述された機能を実施します。
複数の機能を操作者から選択したいツールは、CommonMPVer1.2以前のメニュー選択に代わる機能を自前で準備する必要があります。(例えば、画面を準備し、その画面上にメニューやボタンを配置する等)
Ver1.3以降、ランチャーに登録する事が可能となりましたが、MenuCallBack()メソッドを実装して、Menu.xmlファイルにメニューを記述すれば、Ver1.2以前の場合と同様に、メニューからツールを起動する事は可能です。
CommonMP Ver1.3 からのツール組み込み
それでは、具体的に、ツールを組み込んで見ます。
一般的な ツール作成方法は、\CommonMP\Source\HYSSOP\AddInSysTools\DeveloperTestMain\
bin\help\AddInSamples下のAddinScreenManual.pdf に記述されているので、それに沿って行います。
但し、これから制作しようとする「KMLファイル作成ツール」は、Ver1.2に対応しているツールが、「\CommonMP\Source\
HYSSOP\AddinSysToolsVer1.2\HSViewer」下の「HyssopGISControllerJob」に存在しているので、
それをコピーして、改修します。
先ず、\CommonMP\Source\HYSSOP\AddinSysToolsVer1.2下の HSViewer フォルダーを コピーし、\
CommonMP\Source\HYSSOP\AddInSysTools\下にコピーします。SHViewer
フォルダー内には、AddInDotNetScreenフォルダーと、HyssopGISControllerJobフォルダーが存在しますが、必要なの
は HyssopGISControllerJobフォルダー なので、AddInDotNetScreenフォルダーは削除します。
HyssopGISControllerJobフォルダーの中には
「HyssopAddinGISControlJob.csproj」、
「HyssopGISController\HyssopAddinGISController.csproj」
の2つのプロジェクトが存在しています。
HyssopAddinGISControlJob.csproj プロジェクトは CommonMPメニューから起動されるツールで、DLLとし
て提供されます。 一方、HyssopGISController\HyssopAddinGISController.csproj は、ツールから起
動される別のプログラム(.exe)で、GIS付きCommonMPの2次元GIS出力結果選択画面に似せて制作してあります。
GIS付きCommonMPの場合でもツールが動作できる様に ネームスペース名称、、クラス名等を変更します。
プロジェクト「HyssopAddinGISControlJob.csproj」をMicrosoft Visual C# から開きます。
この状態で、 下図の様に リファクタリング機能を利用して、 ネームスペース名称、クラス名称を変更します。
↓
変更する名称は下記の通りです。
<プロジェクト内の ネームスペース名>
・CommonMP.HYSSOP.OptionImpl.HysGISControllerJob → CommonMP.HYSSOP.OptionImpl.HysGglEarthControllerJob
<プロジェクト内の クラス名称>
・HysGISJobControllerDefine.cs → HysGglEartJobControllerDefine.cs
・HysGISControllerJobFactory.cs → HysGglEarthControllerJobFactory.cs
・HysGISControllerJob.cs → HysGglEarthControllerJob.cs
クラス名を変更した後、ソース名とクラス名を一致化させるために、ファイル名を修正します。
上記変更を完了した後、一旦 プロジェクトを閉じます。
この状態で、\CommonMP\Source\HYSSOP\AddInSysTools\SysToolTestMain.sln
を開き、ツール作成用ソリューションを開きます。
ソリューションに、コピーしてきたプロジェクトを追加します。
\CommonMP\Source\HYSSOP\AddInSysTools\HSViewer\HyssopGISControllerJob\HyssopAddinGISControlJob.csproj
\CommonMP\Source\HYSSOP\AddInSysTools\HSViewer\HyssopGISControllerJob\HyssopGISController\HyssopAddinGISController.csproj
次に、SysToolTestMain
プロジェクトの参照のに対して、HyssopAddinGISControlJob.csproj と HyssopAddinGISController.csproj を追加します。
プロジェクトをリビルドして コンパイルエラーがない事を確認します。
プロジェクトの開発環境が揃ったので、Ver1.3への対応を行います。
\CommonMP\Source\HYSSOP\AddInSysTools\DeveloperTestMain\bin\help\AddInSamples\AddinScreenManual.pdf
に記述されているように
HysGglEarthControllerJobFactory.cs
に対して、DLLから ファクトリークラスをロードするメソッドを追加します。
//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ // ↓↓↓ 下記コードが必須 ↓↓↓ //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ namespace CommonMP.HYSSOP._SYSTEM_ { /// <summary><para>class outline:</para> /// <para>ツールファクトリ生成</para> /// </summary> /// <remarks><para>history:</para> /// <para>[CommonMP][ver 1.3.0][2013/1/29][新規作成]</para> /// </remarks> public class HYSSOP_USRVIEWERJOB_FACTORY_CREATOR_IMPLE : HYSSOP_USRVIEWERJOB_FACTORY_CREATOR { /// <summary><para>method outline:</para> /// <para>ツールのファクトリクラス生成</para> /// </summary> /// <example><para>usage:</para> /// <para> HySScreenFactory csToolFactory = CreateFactory( ) </para> /// </example> /// <param name="">無し</param> /// <returns>ツールのファクトリクラス</returns> /// <exception cref="">無し</exception> /// <remarks><para>remarks:</para> /// <para>無し</para> /// </remarks> public CommonMP.HYSSOP.Interface.HSViewer.HySViewerJobFactory CreateFactory() { // ToDo 自作の画面ファクトリ(ネームスペース付き)を new して下さい。 return new CommonMP.HYSSOP.OptionImpl.HysGglEarthControllerJob.HysGglEarthControllerJobFactory(); } } } //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ // ↑↑↑ 上記コードが必須 ↑↑↑ //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ namespace CommonMP.HYSSOP.OptionImpl.HysGglEarthControllerJob { /// <summary><para>class outline:</para> /// <para>ビューア内処理ファクトリ</para> /// </summary> /// <remarks><para>history:</para> /// <para>[CommonMP][ver 1.1.0][2012/01/22][新規作成]</para> /// </remarks> public class HysGglEarthControllerJobFactory : HySDotNetAddInBaseJobFactory { |
public class HysGglEarthControllerJobFactory : HySDotNetAddInBaseJobFactory { 。。。。。 。。。。。 。。。。。 //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ // ↓↓↓ 下記コードが必須 ↓↓↓ //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ /// <summary><para>method outline:</para> /// <para>アドインツール情報生成</para> /// </summary> /// <example><para>usage:</para> /// <para> HySUserToolInfoData csAddinInf = CreateToolInf( ) </para> /// </example> /// <param name="">無し</param> /// <returns>HySUserToolInfoData アドイン情報</returns> /// <exception cref="">無し</exception> /// <remarks><para>remarks:</para> /// <para>無し</para> /// </remarks> override public HySUserToolInfoData CreateToolInf( ) { HySString csToolName; // ↓↓↓ 多言語対応 ↓↓↓ // ランチャー画面に表示されるツール名称をOS設定に応じて表示切替 if (System.Threading.Thread.CurrentThread.CurrentUICulture.Name.StartsWith("ja") == true) { // OS設定が日本語の場合 csToolName = new HySString("グーグル・アース"); } else { // OS設定が日本語以外の場合 csToolName = new HySString("GoogleEarth"); } // ↑↑↑ 多言語対応 ↑↑↑ return new HySUserToolInfoData( HysGglEartJobControllerDefine.BUSINESS_KIND, ← システム内でユニークな値 csToolName, ← ランチャーに表示される名称 new HySString("GEarth.ico") ← ランチャーに表示されるアイコン ); } //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ // ↑↑↑ 上記コードが必須 ↑↑↑ //★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ |
public class HysGglEarthControllerJob : HySDotNetAddInBaseJob
//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ |
初版:2014/03/29 |