Skip to content

ATF FSM Editor Sample_j

Gary edited this page Mar 17, 2015 · 2 revisions

Table of Contents

説明

FsmEditor は、有限ステートマシン (FSM) のサンプルエディターです。データファイル形式の定義に XML スキーマを使用し、XML FSM ファイルの読み込みと書き込みを行います。また、ステートと遷移を視覚的に表示して編集できるようにします。AdaptableControl を使用して、FSM を表示および編集します。同時に複数のドキュメントを編集できます。標準の編集コマンドの実装には多くの ATF Editor コンポーネントが使用されています。FsmEditor では、ドキュメントに挿入可能な FSM フラグメントのカスタムクリップボードの作成に PrototypeLister コンポーネントが使用されています。ドキュメントキャンバスには、付箋紙のような役割を果たす注釈を追加できます。

サンプルの内容に関する詳細は、FSM Editor Programming Discussion をご覧ください。

FsmEditor が示す ATF の機能

  • FSM.xsd XML スキーマを使用するデータモデルを定義します。
  • DOM を使用してメモリ内にデータモデルを格納します。
  • ContextRegistry を使用して、アクティブな編集コンテキストを追跡し、編集している場所にアプリケーションコンポーネントが常に適用されるようにします。
  • AdaptableControl を使用して、グラフ抽象化を使い FSM を表示および編集します。

FsmEditor サンプルの実行

  1. \bin\wws_atf\Release にある FsmEditor.exe をダブルクリックします。
  2. [FSM Editor] ウィンドウが表示されます。

FsmEditor には以下のペインがあります。

  • [パレット] ([FSM]): FSM のパーツパレットで、[State] と [Comment] があります。
  • [プロパティエディター]: 選択した要素のプロパティをリストコントロールで編集します。
  • [グリッドプロパティエディター]: 選択した要素のプロパティをグリッドコントロールで編集します。
  • [プロトタイプ]: FSM で定義し使用するカスタム FSM フラグメントを一覧表示します。
  • キャンバス: FSM を定義、表示、および編集する場所です。
ツールバーには、次のボタンが含まれます。
  • ファイル管理: [保存]、[名前を付けて保存]、および [すべて保存]。
  • 配置: [左揃え]、[上揃え]、[右揃え]、[中央揃え]、[下揃え]、および [上下中央揃え]。
  • 最大表示: [選択範囲] および [全体]
  • ウィンドウレイアウトのロックとロック解除の切り替え。
  • 編集: [切り取り]、[コピー]、[貼り付け]、[削除]、[元に戻す]、[やり直し]。
メニューバーには次の項目があります。
  • [ファイル]: [Finite State Machine を新規作成]、[Finite State Machine を開く]、[保存]、[名前を付けて保存]、[すべて保存]、[閉じる]、[最近使用したファイル] および [終了]。
  • [編集]: 標準の編集機能 ([元に戻す]/[やり直し]、[切り取り]、[コピー]、[貼り付け]、[削除]、[すべて選択]/[選択解除]、[選択対象を反転する]) のほかに、次の項目があります。
    • [キーボードショートカット]: [キーボードショートカットをカスタマイズ] ウィンドウを使用して、キーボードショートカットを設定します。
    • [設定を読み込み/保存]: 現在の設定を保存するか、またはファイルからアプリケーション設定を読み込みます。
    • [基本設定]: コマンドアイコンのサイズや最後にアクティブになったドキュメントの自動読み込みなど、アプリケーションやドキュメントを設定します。
  • [表示]: [選択範囲を最大表示] または [全体を最大表示] を選択します。
  • [フォーマット]: ステート要素の配置とサイズを指定します。
  • [ウィンドウ]
    • [左右に並べて表示]: ウィンドウペインを水平に並べて表示します。
    • [上下に並べて表示]: ウィンドウペインを上下に並べて表示します。
    • [重ねて表示]: ウィンドウペインを重ねて表示します。
    • [UI レイアウトをロック] および [UI レイアウトのロックを解除]: ウィンドウレイアウトのロックとロックの解除を切り替えます。
    • チェックボックス付きのメニューアイテムのリスト: チェックマークをオンにすると、コントロールが表示されます。
  • [ヘルプ]: [バージョン情報] ダイアログに FsmEditor の情報を表示します。

FsmEditor の使用法

FsmEditor を開くと空のキャンバスグリッドが表示されます。[パレット] の [FSM] タブから [State] 要素を選択してグリッド上にドラッグアンドドロップし、配置位置までドラッグします。[プロパティエディター] または [グリッドプロパティエディター] をクリックして、選択したアイテムのステートプロパティを表示、編集します。

ステートを接続するには、ステート間に遷移ラインを描きます。ひとつのステートの端に、上矢印が表示されるようにカーソルを置いて他方のステートに向けてドラッグし、カーソルが再び上矢印になったらドロップします。

ステートのラベルは、ステートを選択してラベルをクリックすれば編集できます。ステートおよびステート間の遷移はコピー、貼り付けできます。また、選択したステートおよび遷移を [プロトタイプ] タブに貼り付けるとプロトタイプが作成されます。これは名前を付けて再利用できます。

[Comment] 要素をステートにドラッグして、ステートに注釈を付けます。

FsmEditor のモジュール

モジュールには次のような機能があります。

  • Program.cs: Main プログラムを含みます。このプログラムが、使用されている ATF クラスおよび内部クラスをリストした TypeCatalog を作成します。
  • Editor.cs: IDocumentClient を実装して、ドキュメントを開き、視覚化し、保存し、閉じることができるようにします。
  • Fsm.cs: DOM ルートノードを、AdaptableControl を使用して表示するために、有限ステートマシン (FSM) および有向グラフに適合させます。
  • Document.cs: FSM を IDocument に適合させます。
  • TransitionRouter.cs: 遷移の変更を追跡し、検証中に経路をアップデートするアダプターです。
  • ViewingContext.cs: FSM に表示機能を提供するアダプターです。
  • SchemaLoader.cs: FSM スキーマをロードし、データ拡張を DOM 型に登録し、型に表示情報と PropertyDescriptors の注釈を付けます。
  • EditingContext.cs: FSM を編集用に適合させます。AdaptableControl による編集のために、IselectionContext、IvalidationContext、ItransactionContext、IhistoryContext、IinstancingContext、および IEditableGraph を実装します。
FsmEditor は、ステートおよび遷移の表示と処理に ATF モジュールを活用するために、適応を多用します。

このセクションのトピック一覧

Clone this wiki locally