- List<String> styles = result.first;
- List<SVGNodeAssignment> assignments = new ArrayList<>(styles.size()/3);
- for (int i = 0; i < styles.size()/3; i++)
- assignments.add(new SVGNodeAssignment(styles.get(3*i), styles.get(3*i+1), styles.get(3*i+2)));
+ Map<Object,SingleElementNode> elements = null;
+
+ G2DNodeModification modification = result.first;
+
+ if(node instanceof ConnectionNode) {
+
+ if (modification.svgAssignments != null && !modification.svgAssignments.isEmpty()) {
+ INode child = NodeUtil.getFirstChild(node);
+ if(child instanceof RouteGraphNode) {
+ RouteGraphNode rgn = (RouteGraphNode)child;
+ rgn.setAssignments(modification.svgAssignments);
+ }
+ }
+
+ } else if(node instanceof SingleElementNode) {
+
+ Map<SVGNode, List<SVGNodeAssignment>> assignmentMap = new HashMap<>();
+
+ if (modification.svgAssignments != null && !modification.svgAssignments.isEmpty()) {
+ for (SVGNode p : NodeUtil.collectNodes(node, SVGNode.class)) {
+ List<SVGNodeAssignment> list = assignmentMap.get(p);
+ if(list == null) {
+ list = new ArrayList<>();
+ assignmentMap.put(p, list);
+ }
+ list.addAll(modification.svgAssignments);
+ }
+ }
+
+ if(modification.targetedSVGAssignments != null && !modification.targetedSVGAssignments.isEmpty()) {
+ elements = buildSingleElementMap(node);
+ for(TargetedSVGNodeAssignment ass : modification.targetedSVGAssignments) {
+ SingleElementNode sen = elements.get(ass.singleElementKey);
+ for (SVGNode p : NodeUtil.collectNodes(sen, SVGNode.class)) {
+ List<SVGNodeAssignment> list = assignmentMap.get(p);
+ if(list == null) {
+ list = new ArrayList<>();
+ assignmentMap.put(p, list);
+ }
+ list.add(ass);
+ }
+ }
+ }
+
+ for(Map.Entry<SVGNode, List<SVGNodeAssignment>> entry : assignmentMap.entrySet()) {
+ SVGNode p = entry.getKey();
+ p.setAssignments(entry.getValue());
+ p.cleanDiagramCache();
+ }