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

ビュー定義を取得する

すべてのエディタ定義を取得する

プロファイルで定義したすべてのエディタ定義を取得するにはIViewDefinitionsオブジェクトのEditorsプロパティを用います。

public void FindEditorDefByClass(ICommandContext c, ICommandParams p)
{
// ビュー定義を取得します
IViewDefinitions viewDefinitions = c.App.Workspace.CurrentProject.Profile.ViewDefinitions;

// すべてのエディタ定義を取得します
IEditorDefCollection editorDefs = viewDefinitions.Editors;

// すべてのエディタ定義を出力します
foreach (var editorDef in editorDefs)
{
c.App.Output.WriteLine("sample", $"EditorDefinition: {editorDef.DisplayName}");
}
}
備考

上記のサンプルコードでは試験的に実装された次のAPIを使用しています。

  • IEditorDef.DisplayName プロパティ

これらのAPIは品質保証しておらず、API仕様にも未記載のものです。ご利用される場合はユーザー様の責任でご利用ください。

クラスのエディタ定義を取得する

クラスに定義されたエディタのビュー定義を取得するには IViewDefinitionsオブジェクトのFindEditorDefByClassメソッドを用います。

public void FindEditorDefByClass(ICommandContext c, ICommandParams p)
{
// ビュー定義を取得します
IViewDefinitions viewDefinitions = c.App.Workspace.CurrentProject.Profile.ViewDefinitions;

// 現在表示されているモデルのクラスを取得します
IClass cls = c.App.Workspace.CurrentModel.Metaclass;

// クラスに定義されたエディタを取得します
IEditorDefCollection editorDefs = viewDefinitions.FindEditorDefByClass(cls);

// エディタ定義を出力します
c.App.Output.WriteLine("sample", $"Class: {cls.DisplayName}");
foreach (var editorDef in editorDefs)
{
c.App.Output.WriteLine("sample", $" EditorDefinition: {editorDef.DisplayName}");
}
}
備考

上記のサンプルコードでは試験的に実装された次のAPIを使用しています。

  • IEditorDef.DisplayName プロパティ

これらのAPIは品質保証しておらず、API仕様にも未記載のものです。ご利用される場合はユーザー様の責任でご利用ください。

エディタ要素定義の一覧を取得する

エディタ要素定義の一覧を取得するには IEditorDefオブジェクトのElementsプロパティを用います。

public void IEditorDefElements(ICommandContext c, ICommandParams p)
{
// 現在表示されているエディタのエディタ定義を取得します
IEditorDef editorDef = c.App.Workspace.CurrentEditor.EditorDefinition;

// エディタ要素定義の一覧を取得します
IElementDefCollection elementDefs = editorDef.Elements;

// エディタ要素定義を出力します
c.App.Output.WriteLine("sample", $"EditorDefinition: {editorDef.DisplayName}");
foreach (var elementDef in elementDefs)
{
c.App.Output.WriteLine("sample", $" Element: {elementDef.DisplayName}");
c.App.Output.WriteLine("sample", $" Type: {elementDef.Type}");
}
}
備考

上記のサンプルコードでは試験的に実装された次のAPIを使用しています。

  • IEditorDef.DisplayName プロパティ
  • IElementDef.DisplayName プロパティ

これらのAPIは品質保証しておらず、API仕様にも未記載のものです。ご利用される場合はユーザー様の責任でご利用ください。

エディタ定義からクラスに対応するエディタ要素定義を探す

IViewDefinitionsオブジェクトのFindElementDefByClassメソッドを用いることで、指定したエディタ定義から特定のクラスに対応するエディタ要素定義を探すことができます。例えばダイアグラムビューでの条件付き書式変更のためのコールバック関数の登録対象を簡単に取得することができます。

ヒント

ダイアグラムビューでの条件付き書式変更の詳しい利用方法は、こちらを参照してください。

public void IEditorDefElements(ICommandContext c, ICommandParams p)
{
// 現在表示されているエディタのエディタ定義を取得します
IEditorDef editorDef = c.App.Workspace.CurrentEditor.EditorDefinition;

IProfile profile = c.App.Workspace.CurrentProject.Profile;

// クラスを指定します
IClass cls = profile.Metamodels.GetClass("SomeClass");

// 指定のクラスに対応するエディタ要素定義の一覧を取得します
IEnumerable<IElementDef> elementDefs = profile.ViewDefinitions.FindElementDefByClass(editorDef, cls);

// エディタ要素定義を出力します
c.App.Output.WriteLine("sample", $"EditorDefinition: {editorDef.DisplayName}");
foreach (var elementDef in elementDefs)
{
c.App.Output.WriteLine("sample", $" Element: {elementDef.DisplayName}");
c.App.Output.WriteLine("sample", $" Type: {elementDef.Type}");
}
}
備考

上記のサンプルコードでは試験的に実装された次のAPIを使用しています。

  • IEditorDef.DisplayName プロパティ
  • IElementDef.DisplayName プロパティ

これらのAPIは品質保証しておらず、API仕様にも未記載のものです。ご利用される場合はユーザー様の責任でご利用ください。