エディタにシェイプを追加する
ビュー定義でフィールドと対応づけている場合、モデルの追加や関連の追加等、対応するフィールドを更新することで自動的にシェイプが追加されます。
ビュー定義でクラスと対応づけている場合、モデルを更新しても自動でシェイプは追加されません。このようなシェイプを追加する場合、IDiagram
オブジェクトの AddNodeShape
メソッドを用いてシェイプを追加できます。
public void AddNodeShape(ICommandContext c, ICommandParams p)
{
// 現在表示しているダイアグラムを取得します
IDiagram diagram = c.App.Workspace.CurrentEditor as IDiagram;
if (diagram == null)
{
// ダイアグラムを表示していない場合は処理を終了します
c.App.Output.WriteLine("sample", "ダイアグラムを表示していません。");
return;
}
// ダイアグラムの兄弟要素となるよう、
// ダイアグラムのモデルの親モデルの "OwnedElements" フィールドに "Class" メタクラスのモデルを追加します
IModel package = diagram.Model.Owner;
IModel newModel = package.AddNewModel("OwnedElements", "Class");
// 追加したモデルに対応するシェイプを追加します。
if (!diagram.CanAddNodeShape(newModel))
{
// 追加できない場合は処理を終了します
c.App.Output.WriteLine("sample", $"ダイアグラム:{diagram.Model.Name}にモデル:{newModel.Name}に対応するシェイプを追加できません。");
return;
}
diagram.AddNodeShape(newModel);
}
シェイプの削除はこちらを参考にしてください。