メインコンテンツまでスキップ

エディタにモデルを表示する

メインエディタ、サブエディタでモデルを表示する方法を説明します。

メインエディタで表示する

次のようにモデルナビゲータの選択を変更します。

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");
}