エディタの情報にアクセスする
表示中のエディタ内の要素(シェイプ等)にアクセスするには、IEditorViewオブジェクトのEditorプロパティを用いてIEditorのオブジェ クトを取得します。IEditorのプロパティやメソッドを使用して、エディタ内の要素にアクセスが可能です。
IEditorのプロパティやメソッドの使用方法には、次のようなものがあります。
- ERダイアグラム
- シーケンス図
- フォーム
- ツリーグリッド
以下は、メインエディタに表示中の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"; // 前景色をコードで変更します
}
モデルエディタに比較対象のエディタを表示している場合は、IEditorViewのDiffEditorプロパティを用いて比較対象エディタを取得できます。
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} です。");
}