private Node realizeNeigbour(Graph2D graph, Node node) { Iterator<Node> iterator = new ComponentIterator(graph, node); for (; iterator.hasNext(); ) { Node next = iterator.next(); if (_viewModel.getEditorViewMap().containsKey(next) && !MonomerInfoUtils.isChemicalModifierPolymer(next)) { Node mapped = _viewModel.getViewNode(next); if (MonomerInfoUtils.is5Node(mapped, _graph)) { continue; } _viewModel.putViewNode(node, mapped); return mapped; } } // this should never happen. We're doing this for safety Node result = createNode(MonomerInfoUtils.getMonomerID(node), ViewElementsConstructor.SIMPLE_NODE); _viewModel.putViewNode(node, result); return result; }
private void addBranchToBranchEdge( Edge currentEdge, Attachment sourceAttachment, Attachment targetAttachment) { EdgeMap edgeTypeMap = (EdgeMap) _graph.getDataProvider(EdgeMapKeys.EDGE_INFO); Node sourceNode = _viewModel.getViewNode(currentEdge.source()); Node targetNode = _viewModel.getViewNode(currentEdge.target()); Edge newEdge = _graph.createEdge(sourceNode, targetNode); edgeTypeMap.set( newEdge, new SViewEdgeInfo(EdgeType.BRANCH_BRANCH, sourceAttachment, targetAttachment)); sourceNode = getViewStartingNode(newEdge.source(), _graph); targetNode = getViewStartingNode(newEdge.target(), _graph); _viewModel.addComplentaryViewNodes(sourceNode, targetNode); }
private Edge addSimpleEdge(Edge currentEdge) { Node sourceFrom = currentEdge.source(); Node from = _viewModel.getViewNode(sourceFrom); if (from == null) { from = realizeNeigbour(_graph, sourceFrom); } Node sourceTo = currentEdge.target(); Node to = _viewModel.getViewNode(sourceTo); if (to == null) { to = realizeNeigbour(_graph, sourceTo); } Edge newEdge = _graph.createEdge(from, to); return newEdge; }
/** * get the starting node of the sequence in where the current node is sitting in * * @deprecated use getViewStartingNode * @param node * @param graph * @return */ @Deprecated private Node getStartingNode(Node node, Graph2D graph) { if (_viewModel.getStartingViewNodeList().contains(node)) { return node; } else { NodeCursor pres = node.predecessors(); Edge edge; Node currentNode = node; EdgeMap edgeMap = (EdgeMap) graph.getDataProvider(EdgeMapKeys.EDGE_INFO); Node preNode = currentNode; while (pres.ok()) { for (; pres.ok(); pres.next()) { edge = currentNode.getEdge(pres.node()); EdgeType edgeType = ((SViewEdgeInfo) edgeMap.get(edge)).getType(); if ((edgeType == EdgeType.REGULAR) || (edgeType == EdgeType.MODIFIED_P)) { currentNode = pres.node(); break; } } if (currentNode != preNode) { pres = currentNode.predecessors(); preNode = currentNode; } else { break; } } if (_viewModel.getStartingViewNodeList().contains(currentNode)) { return currentNode; } else { return null; } } }