#168 Can't add edge to wrapped directed graph

Possible Bug
open
nobody
5
2011-09-26
2011-09-26
mulova
No

When a directed graph is wrapped by ObservableGraph, adding edge by EditingGraphMousePlugin throws an error.
because Directed/UndrectedGraph is checked by instanceof.
I think the graph had better exposing getGraphType() method.

The stack trace is below
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Edge type 'UNDIRECTED' does not match the default edge type for this graph: 'DIRECTED'
at edu.uci.ics.jung.graph.AbstractTypedGraph.validateEdgeType(AbstractTypedGraph.java:93)
at edu.uci.ics.jung.graph.DirectedSparseGraph.addEdge(DirectedSparseGraph.java:63)
at edu.uci.ics.jung.graph.AbstractGraph.addEdge(AbstractGraph.java:60)
at edu.uci.ics.jung.graph.GraphDecorator.addEdge(GraphDecorator.java:48)
at edu.uci.ics.jung.graph.ObservableGraph.addEdge(ObservableGraph.java:69)
at edu.uci.ics.jung.visualization.control.EditingGraphMousePlugin.mouseReleased(EditingGraphMousePlugin.java:148)
at edu.uci.ics.jung.visualization.control.PluggableGraphMouse.mouseReleased(PluggableGraphMouse.java:109)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Discussion