彩票走势图

Visual Paradigm教程:如何使用Open API更改子元素的顺序

原创|使用教程|编辑:郝浩|2017-07-14 14:09:01.000|阅读 248 次

概述:使用Open API,你可以通过创建插件来进行程序化控制。在本文中,我们将向你展示如何更改所选定的父模型元素中子元素的顺序。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

模型资源管理器是在项目中显示整个模型集合以及它们的结构的地方。通过使用不同的排序算法,Visual Paradigm提供了展示模型中元素的不同方法,但即使是最好的排序算法有时也不适合你。在这种情况下,您可能需要以你想要的方式对排列元素手动排序。使用Open API,你可以通过创建插件来进行程序化控制。在本文中,我们将向你展示如何更改所选定的父模型元素中子元素的顺序。

获取需要更改子元素顺序的选定元素

首先,我们必须从模型资源管理器树中获取所选的元素。

// Obtain the selected elements in Model Explorer tree 
Object[] selectedObjects = ApplicationManager.instance().getViewManager().getSelectedObjectsFromModelExplorer();
if (selectedObjects != null && selectedObjects.length > 0) {
  // Get the first element in selection
  Object selectedObject = selectedObjects[0];

将子元素检索到数组中

一旦我们获得了选中的元素,我们就会将所有的子元素检索到一个数组中。

if (selectedObject instanceof IModelElement) {
  IModelElement parent = (IModelElement) selectedObject;
  // Obtain the child model element from the selected model element 
  IModelElement[] children = parent.toChildArray();

更改子元素的顺序

接下来,我们将子元素的顺序从一个数组移到另一个数组中。

if (children != null && children.length > 0) {
        
  // Put the child elements into another collection with order shifted for one 
  // then remove the child element form parent
  IModelElement[] newOrder = new IModelElement[children.length]; 
          
  for (int i = 0; i < children.length; i++) {
    if (children.length > i+1) {
      newOrder[i+1] = children[i];
    } else {
      newOrder[0] = children[i];
    }
    parent.removeChild(children[i]);
  }

通过更改命令将子元素添加回父元素

最后,我们将子元素添加回父元素中。

// Add the child element back to parent according to the shifted order
for (IModelElement child : newOrder) {
  parent.addChild(child);
}

示例插件

示例插件展示了如何更改模型资源管理器中所选元素的子元素的顺序。当你将插件部署到Visual Paradigm之后,你可以从模型资源管理器(Model Explorer)树中选择元素然后点击插件按钮插件按钮来交换子元素的顺序。

 

相关:

    Visual Paradigm v14.1下载>>


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP