UML图形元素上的标记



我有一个. UML文件,其中包含UML状态机、转换和状态。我设法在这个.uml文件中的对象上放了一个标记,但是不能在.aird文件中的图形表示上放一个标记。这是我用来放置标记的代码:

public static void addMarker(EObject eObj, String message, String location, int severity) throws CoreException{
  Resource resource = eObj.eResource();
  String uri = EcoreUtil.getURI(eObj).toString();
  String platformString = resource.getURI().toPlatformString(true);
  IResource iresource = ResourcesPlugin.getWorkspace().getRoot().findMember(platformString);
  IMarker imarker = iresource.createMarker(EValidator.MARKER);
  imarker.setAttribute(IMarker.SEVERITY, severity);
  imarker.setAttribute(IMarker.LOCATION, location);
  imarker.setAttribute(EValidator.URI_ATTRIBUTE, uri);
  imarker.setAttribute(IMarker.MESSAGE, message);
}

这是我用来找到图形表示的代码:

for(DView dview : SessionManager.INSTANCE.getSession(eObj).getOwnedViews()){
  if(dview.getViewpoint().getName().equals("Design")){
    for(DRepresentation drep : dview.getOwnedRepresentations()){
      for(DRepresentationElement drepElem : drep.getOwnedRepresentationElements()){
        if(drepElem.getTarget() == st.getSrcTransition().getTransition()){
          MarkerUtil.addMarker(drepElem, message, location, severity);
        }
      }
    }
  } 
}

当我尝试转到转换图形表示的标记时,它会突出显示状态机。下面是转换的uri:

平台:/资源/TestSuite/default.uml # _igwUwDFJEealS5qn_7gKFw平台:/资源/TestSuite/representations.aird # _igwUwTFJEealS5qn_7gKFw

我不习惯使用标记,但我认为标记应该出现在包含边缘的框的左角。因此,您的标记可能会超出您的图表。如果你想显式地将它添加到过渡中,你应该至少检查类型是否为edge。

如果您需要更多的细节,您可以在Eclipse论坛上询问有关Sirius的问题。

最新更新