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

エディタの情報にアクセスする

表示中のエディタ内の要素(シェイプ等)にアクセスするには、IEditorViewオブジェクトのEditorプロパティを用いてIEditorのオブジェクトを取得します。IEditorのプロパティやメソッドを使用して、エディタ内の要素にアクセスが可能です。

IEditorのプロパティやメソッドの使用方法には、次のようなものがあります。

以下は、メインエディタに表示中のERダイアグラムのシェイプの色を変更するサンプルです。

public void SetShapeColor(ICommandContext c, ICommandParams p)
{
// メインエディタに表示しているダイアグラムを取得します
IEditorView mainEditorView = c.App.Window.EditorPage?.MainEditorView;
IDiagram diagram = mainEditorView?.Editor as IDiagram;
if(diagram == null)
{
// ダイアグラムを表示していない場合は処理を終了します
c.App.Output.WriteLine("sample", "ダイアグラムを表示していません。");
return;
}

// ダイアグラム上に表示されているノードを取得します
INode node = diagram.Nodes.FirstOrDefault();
if(node == null)
{
// ノードを表示していない場合は処理を終了します
c.App.Output.WriteLine("sample", "ノードが表示されていません。");
return;
}

// ノードのスタイルを取得し、色を変更します
IShapeStyle style = node.Style;
style.BackColor = "Red"; // 背景色を既定値で変更します
style.ForeColor = "#ffffff"; // 前景色をコードで変更します
}

モデルエディタに比較対象のエディタを表示している場合は、IEditorViewDiffEditorプロパティを用いて比較対象エディタを取得できます。

public void GetDiffEditor(ICommandContext c, ICommandParams p)
{
// メインエディタに表示している差分比較エディタを取得します
IEditorView mainEditorView = c.App.Window.EditorPage?.MainEditorView;
IEditor diffEditor = mainEditorView?.DiffEditor;
if(diffEditor == null)
{
// 差分比較エディタを表示していない場合は処理を終了します
c.App.Output.WriteLine("sample", "差分比較エディタを表示していません。");
return;
}

c.App.Output.WriteLine("sample", $"差分比較エディタに表示中のモデルは {diffEditor.Model.Name} です。");
}