エディタにモデルを表示する
メインエディタ、サブエディタでモデルを表示する方法を説明します。
メインエディタで表示する
次のようにモデルナビゲータの選択を変更します。
public void ShowInEditor(ICommandContext c, ICommandParams p)
{
// エディタの表示対象となるモデルを取得します
IModel model = ...;
// モデルナビゲータをアクティブにして選択します
IEditorPage editorPage = c.App.Window.EditorPage;
editorPage.ActiveNavigator = "Model";
editorPage.CurrentNavigator.Select(model);
// さらにビュー定義を切り替える場合は下記のようにします
var viewDefinitionName = "Detail"; // "Detail"という名前のビュー定義の例
IEditorDef viewDef = model.OwnerProject.Profile.ViewDefinitions.Editors.FirstOrDefault(e => e.ModelClass.Id == model.Metaclass.Id && e.Name == viewDefinitionName);
editorPage.MainEditorView.SelectViewDefinition(viewDef);
}
備考
上記のサンプルコードでは試験的に実装された次のAPIを使用しています。
- IEditorDef.Name プロパティ
これらのAPIは品質保証しておらず、API仕様にも未記載のものです。ご利用される場合はユーザー様の責任でご利用ください。
サブエディタで表示する
サブエディタで特定のモデルを表示するには、サブエディタを表示した後、手動
モードでモデルを指定します。
public void ShowInSubEditor(ICommandContext c, ICommandParams p)
{
// サブエディタの表示対象となるモデルを取得します
IModel model = ...;
// サブエディタを表示します
IEditorPage editorPage = c.App.Window.EditorPage;
editorPage.IsSubEditorVisible = true;
// サブエディタ手動モードにし、表示対象のモデルを指定します
editorPage.SetSubEditorMode(SubEditorMode.Manual, model);
}
参考:拡張メソッド
次のような拡張メソッドとして用意しておくと便利です。
IEditorPageExtension.cs
public static class IEditorPageExtension
{
/// <summary>
/// モデルをメインエディタで表示します。
/// </summary>
/// <param name="self">エディタページ。</param>
/// <param name="model">メインエディタで表示するモデル。</param>
/// <param name="viewDefinitionName">表示するビュー定義名。</param>
public static void SelectMainEditorView(this IEditorPage self, IModel model, string viewDefinitionName = null)
{
// モデルナビゲータをアクティブにします
self.ActiveNavigator = "Model";
// モデルを選択します
self.CurrentNavigator.Select(model);
// ビュー定義を選択します
if (!string.IsNullOrEmpty(viewDefinitionName))
{
var viewDef = model.OwnerProject.Profile.ViewDefinitions.Editors.FirstOrDefault(e => e.ModelClass.Id == model.Metaclass.Id && e.Name == viewDefinitionName);
self.MainEditorView.SelectViewDefinition(viewDef);
}
}
/// <summary>
/// モデルをサブエディタで表示します。
/// </summary>
/// <param name="self">エディタページ。</param>
/// <param name="model">サブエディタで表示するモデル。</param>
/// <param name="viewDefinitionName">表示するビュー定義名。</param>
public static void SelectSubEditorView(this IEditorPage self, IModel model, string viewDefinitionName = null)
{
self.IsSubEditorVisible = true;
self.SetSubEditorMode(SubEditorMode.Manual, model);
// ビュー定義を選択します
if (!string.IsNullOrEmpty(viewDefinitionName))
{
var viewDef = model.OwnerProject.Profile.ViewDefinitions.Editors.FirstOrDefault(e => e.ModelClass.Id == model.Metaclass.Id && e.Name == viewDefinitionName);
self.SubEditorView.SelectViewDefinition(viewDef);
}
}
}
備考
上記のサンプルコードでは試験的に実装された次のAPIを使用しています。
- IEditorDef.Name プロパティ
これらのAPIは品質保証しておらず、API仕様にも未記載のものです。ご利用される場合はユーザー様の責任でご利用ください。
次のように直感的に操作できます。
利用例
public void SomeCommand(ICommandContext c, ICommandParams p)
{
IModel model = ...;
IEditorPage editorPage = c.App.Window.EditorPage;
// メインエディタで選択します
editorPage.SelectMainEditorView(model);
// サブエディタで"Diagram"のビューを表示します
editorPage.SelectSubEditorView(model, "Diagram");
}