如何添加用于在 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();
}
}
}
}
我想为我在 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();
}
}
}
}