if (marker == null) {
return;
}
try {
IFile resource = (IFile) marker.getResource();
DesignerEditor designerEditor = (DesignerEditor) IDE.openEditor(getSite().getPage(), resource);
GraphElement graphElement = null;
String elementName = marker.getAttribute(PluginConstants.SELECTION_LINK_KEY, null);
if (elementName != null) {
graphElement = findElement(designerEditor.getDefinition(), NamedGraphElement.class, elementName);
}
String swimlaneName = marker.getAttribute(PluginConstants.SWIMLANE_LINK_KEY, null);
if (swimlaneName != null) {
graphElement = findElement(designerEditor.getDefinition(), Swimlane.class, swimlaneName);
}
int actionIndex = marker.getAttribute(PluginConstants.ACTION_INDEX_KEY, -1);
if (actionIndex != -1) {
String parentTreePath = marker.getAttribute(PluginConstants.PARENT_NODE_KEY, null);
String[] paths = parentTreePath.split("\\|", -1);
Active active;
if (paths.length == 1) {
active = (Active) findElement(designerEditor.getDefinition(), NamedGraphElement.class, paths[0]);
} else if (paths.length == 2) {
Node node = (Node) findElement(designerEditor.getDefinition(), Node.class, paths[0]);
active = node.getTransitionByName(paths[1]);
} else {
throw new RuntimeException("Invalid tree path: " + parentTreePath);
}
List<? extends Action> activeActions = active.getActions();
graphElement = activeActions.get(actionIndex);
}
if (graphElement != null) {
designerEditor.select(graphElement);
}
} catch (Exception e) {
// don't display error to user
DesignerLogger.logErrorWithoutDialog("Unable select element", e);