This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
When a widget has a loop edge the edge grows when moving the attached widget.
Created attachment 70374 [details] An example of the problem.
To see the problem run the attached example. Move the bottom node and watch the edge change shape.
Unfortunately we cannot do anything with it. This is a default behavior of OrthogonalSearchRouter algorithm. The algorithm is tried to route the horizontal segment of the "bottom-edge" somewhere in the space between the nodes. Since the space is limited from two side (top and bottom node) then it decides to route the horizontal segment just in the middle of the space. The algorithm does not have any information about the loop-edges and therefore it is rendered with the same logic as the rest of the edges. With this routing the algorithm is trying to prevent from overlapped edges which was heavily happening with previous implementation. A general fix is definitely not simple and may break another visualizations. To workaround it, create a simple Router implementation and assign it to the loop-edges only. The other edges may use the current algorithm still.
Trey, does the workaround work for you? Please, let us know. I suggest decreasing to P3.
I have made our own router to handle this situation. I also found that in one of our diagrams the router was throwing an assertion error. java.lang.AssertionError at org.netbeans.modules.visual.router.OrthogonalSearchRouterCore.search(OrthogonalSearchRouterCore.java:184) at org.netbeans.modules.visual.router.OrthogonalSearchRouterCore.route(OrthogonalSearchRouterCore.java:107) at org.netbeans.modules.visual.router.OrthogonalSearchRouter.routeConnection(OrthogonalSearchRouter.java:163) at org.netbeans.api.visual.widget.ConnectionWidget.calculateRouting(ConnectionWidget.java:527) at org.netbeans.modules.visual.layout.ConnectionWidgetLayout.layout(ConnectionWidgetLayout.java:109) at org.netbeans.api.visual.widget.Widget.layout(Widget.java:1350) at org.netbeans.api.visual.widget.Widget.layout(Widget.java:1342) at org.netbeans.api.visual.widget.LayerWidget.layout(LayerWidget.java:86) at org.netbeans.api.visual.widget.Widget.layout(Widget.java:1342) at org.netbeans.api.visual.widget.Scene.layoutScene(Scene.java:312) at org.netbeans.api.visual.widget.Scene.validate(Scene.java:393) at org.netbeans.api.visual.widget.SceneComponent.setBounds(SceneComponent.java:110) at javax.swing.OverlayLayout.layoutContainer(OverlayLayout.java:216)
Regarding assertation: It seems that the scene is bigger than +-10000px in some direction from [0,0] origin. Unfortunately this is the limitation of the algorithm as well. Regarding the workaround: It is also possible to use the OrthogonalSearchRouter even for loop edges but they have to use CollisionsCollection that returns the Node-Widget only as a collision in case that the ConnectionWidget is lead-in and comming-out from the same Node-Widget...