如何添加用于在 DSL 工具中布置图表的上下文菜单选项?

How to add context menu option for laying out the diagram in DSL Tools?

我想为我在 Visual Studio DSL 工具(可视化和建模 SDK)中创建的 DSL 扩展添加一个选项,以通过右侧出现的上下文菜单自动安排布局- 点击图表。这可能吗?

这可以通过首先声明一个新命令来完成,该命令在右键单击图表时出现在上下文菜单中,然后为此编写处理程序代码来布置图表。

在 MSDN 上有一个非常好的声明和注册新命令的指南:How to: Add a Command to the Shortcut Menu

布置图表所需的方法是 AutoLayoutShapeElements Diagram class。

以下代码将用于布置图表(假设您在覆盖 GetMenuCommands 方法时将名为 OnArrangeDiagramClick 的方法注册为事件处理程序):

private void OnArrangeDiagramClick(object sender, EventArgs e)
{
    foreach (var selectedObject in CurrentSelection)
    {
        if (selectedObject is YourDslDiagram)
        {
            var diagram = (selectedObject as YourDslDiagram);
            using (var tx = diagram.Store.TransactionManager.BeginTransaction("ModelAutoLayout"))
            {
                diagram.AutoLayoutShapeElements(diagram.NestedChildShapes, Microsoft.VisualStudio.Modeling.Diagrams.GraphObject.VGRoutingStyle.VGRouteStraight, Microsoft.VisualStudio.Modeling.Diagrams.GraphObject.PlacementValueStyle.VGPlaceSN, false);
                tx.Commit();
            }
        }
    }
}