├── .github └── workflows │ └── build.yml ├── .gitignore ├── LICENSE ├── LayoutAlgorithms_and_LayoutModel.md ├── MouseGestures.md ├── README.md ├── Structure.md ├── images ├── CircleLayout.jpg ├── ReducedEdgeCrossingCircleLayout.jpg ├── bettercircle.jpg ├── brandeskopftestgraph.jpg ├── brandeskopftestgraph.png ├── circle.jpg ├── eiglspergersugiyama.jpg ├── eiglspergersugiyama.png ├── sugiyama.jpg ├── sugiyama2.jpg ├── sugiyamabrandeskopf.jpg └── tidiertree.jpg ├── jungrapht-layout ├── package.html ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── jungrapht │ │ │ └── visualization │ │ │ └── layout │ │ │ ├── algorithms │ │ │ ├── AbstractHierarchicalMinCrossLayoutAlgorithm.java │ │ │ ├── AbstractIterativeLayoutAlgorithm.java │ │ │ ├── AbstractLayoutAlgorithm.java │ │ │ ├── AbstractTreeLayoutAlgorithm.java │ │ │ ├── Balloon.java │ │ │ ├── BalloonLayoutAlgorithm.java │ │ │ ├── CircleLayoutAlgorithm.java │ │ │ ├── DAGLayoutAlgorithm.java │ │ │ ├── EdgeAwareLayoutAlgorithm.java │ │ │ ├── EdgeAwareTreeLayoutAlgorithm.java │ │ │ ├── EdgePredicated.java │ │ │ ├── EdgeSorting.java │ │ │ ├── EiglspergerLayoutAlgorithm.java │ │ │ ├── ExtendedEiglspergerLayoutAlgorithm.java │ │ │ ├── FRLayoutAlgorithm.java │ │ │ ├── ForceAtlas2LayoutAlgorithm.java │ │ │ ├── GEMLayoutAlgorithm.java │ │ │ ├── HierarchicalMinCrossLayoutAlgorithm.java │ │ │ ├── ISOMLayoutAlgorithm.java │ │ │ ├── IterativeLayoutAlgorithm.java │ │ │ ├── KKLayoutAlgorithm.java │ │ │ ├── Layered.java │ │ │ ├── LayoutAlgorithm.java │ │ │ ├── MultiRow.java │ │ │ ├── MultiRowEdgeAwareTreeLayoutAlgorithm.java │ │ │ ├── MultiRowTreeLayoutAlgorithm.java │ │ │ ├── NormalizesFavoredEdge.java │ │ │ ├── Radial.java │ │ │ ├── RadialEdgeAwareTreeLayoutAlgorithm.java │ │ │ ├── RadialTreeLayout.java │ │ │ ├── RadialTreeLayoutAlgorithm.java │ │ │ ├── ShapeFunctionAware.java │ │ │ ├── SpringLayoutAlgorithm.java │ │ │ ├── StaticLayoutAlgorithm.java │ │ │ ├── SugiyamaLayoutAlgorithm.java │ │ │ ├── TidierRadialTreeLayoutAlgorithm.java │ │ │ ├── TidierTreeLayoutAlgorithm.java │ │ │ ├── TreeLayout.java │ │ │ ├── TreeLayoutAlgorithm.java │ │ │ ├── VertexPredicated.java │ │ │ ├── VertexSorting.java │ │ │ ├── eiglsperger │ │ │ │ ├── Container.java │ │ │ │ ├── EiglspergerRunnable.java │ │ │ │ ├── EiglspergerSteps.java │ │ │ │ ├── EiglspergerStepsBackward.java │ │ │ │ ├── EiglspergerStepsForward.java │ │ │ │ ├── EiglspergerUtil.java │ │ │ │ ├── ExtendedEiglspergerRunnable.java │ │ │ │ ├── HorizontalCompaction.java │ │ │ │ ├── HorizontalCompactionDeprecated.java │ │ │ │ ├── HorizontalCoordinateAssignment.java │ │ │ │ ├── HorizontalCoordinateAssignmentDeprecated.java │ │ │ │ ├── InsertionOrderSplayTree.java │ │ │ │ ├── PVertex.java │ │ │ │ ├── QVertex.java │ │ │ │ ├── Segment.java │ │ │ │ ├── SegmentEdge.java │ │ │ │ ├── SegmentVertex.java │ │ │ │ ├── SelectiveEiglspergerHorizontalCoordinateAssignment.java │ │ │ │ ├── SyntheticLV.java │ │ │ │ ├── Synthetics.java │ │ │ │ ├── VerticalAlignment.java │ │ │ │ ├── VerticalAlignmentDeprecated.java │ │ │ │ └── VirtualEdge.java │ │ │ ├── package.html │ │ │ ├── repulsion │ │ │ │ ├── BarnesHutFA2Repulsion.java │ │ │ │ ├── BarnesHutFRRepulsion.java │ │ │ │ ├── BarnesHutRepulsion.java │ │ │ │ ├── BarnesHutSpringRepulsion.java │ │ │ │ ├── StandardFA2Repulsion.java │ │ │ │ ├── StandardFRRepulsion.java │ │ │ │ ├── StandardRepulsion.java │ │ │ │ └── StandardSpringRepulsion.java │ │ │ ├── sugiyama │ │ │ │ ├── AccumulatorTree.java │ │ │ │ ├── AccumulatorTreeUtil.java │ │ │ │ ├── AllLevelCross.java │ │ │ │ ├── ArticulatedEdge.java │ │ │ │ ├── AverageMedian.java │ │ │ │ ├── BrandesKopf.java │ │ │ │ ├── Comparators.java │ │ │ │ ├── ConstructiveCycleRemoval.java │ │ │ │ ├── ConstructiveFeedbackArcFunction.java │ │ │ │ ├── DFSCycleRemoval.java │ │ │ │ ├── DFSFeedbackArcGraphTransformer.java │ │ │ │ ├── DfsFeedbackArcFunction.java │ │ │ │ ├── GraphLayers.java │ │ │ │ ├── GreedyCycleRemoval.java │ │ │ │ ├── GreedyFeedbackArcFunction.java │ │ │ │ ├── GreedyFeedbackArcGraphTransformer.java │ │ │ │ ├── HorizontalCompaction.java │ │ │ │ ├── HorizontalCoordinateAssignment.java │ │ │ │ ├── LE.java │ │ │ │ ├── LEI.java │ │ │ │ ├── LV.java │ │ │ │ ├── LVI.java │ │ │ │ ├── Layering.java │ │ │ │ ├── LevelCross.java │ │ │ │ ├── LinearTimeMedian.java │ │ │ │ ├── NLogNMedian.java │ │ │ │ ├── RemoveCycles.java │ │ │ │ ├── SugiyamaRunnable.java │ │ │ │ ├── SyntheticLE.java │ │ │ │ ├── SyntheticLV.java │ │ │ │ ├── Synthetics.java │ │ │ │ ├── TransformedGraphSupplier.java │ │ │ │ ├── Unaligned.java │ │ │ │ ├── VertexMetadata.java │ │ │ │ └── VerticalAlignment.java │ │ │ └── util │ │ │ │ ├── AfterRunnable.java │ │ │ │ ├── Cancellable.java │ │ │ │ ├── CircleLayoutReduceEdgeCrossing.java │ │ │ │ ├── ComponentGrouping.java │ │ │ │ ├── DimensionConsumer.java │ │ │ │ ├── DimensionSummaryStatistics.java │ │ │ │ ├── EdgeArticulationFunctionSupplier.java │ │ │ │ ├── ExecutorConsumer.java │ │ │ │ ├── InitialDimensionFunction.java │ │ │ │ ├── InsertionSortCounter.java │ │ │ │ ├── IterativeContext.java │ │ │ │ ├── LayeredRunnable.java │ │ │ │ ├── NetworkSimplex.java │ │ │ │ ├── NetworkSimplexDevelopment.java │ │ │ │ ├── Pair.java │ │ │ │ ├── PointConsumer.java │ │ │ │ ├── PointSummaryStatistics.java │ │ │ │ ├── RectangleConsumer.java │ │ │ │ ├── RectangleSummaryStatistics.java │ │ │ │ ├── SubGraphFunction.java │ │ │ │ ├── Threaded.java │ │ │ │ ├── TreeView.java │ │ │ │ ├── VertexBoundsFunctionConsumer.java │ │ │ │ └── VertexShapeAware.java │ │ │ ├── event │ │ │ ├── LayoutSizeChange.java │ │ │ ├── LayoutStateChange.java │ │ │ ├── LayoutVertexPositionChange.java │ │ │ ├── ModelChange.java │ │ │ ├── ViewChange.java │ │ │ └── package.html │ │ │ ├── model │ │ │ ├── AbstractLayoutModel.java │ │ │ ├── AggregateLayoutModel.java │ │ │ ├── Circle.java │ │ │ ├── DefaultLayoutModel.java │ │ │ ├── Dimension.java │ │ │ ├── Expansion.java │ │ │ ├── LayoutModel.java │ │ │ ├── LocationUtil.java │ │ │ ├── Point.java │ │ │ ├── PolarPoint.java │ │ │ ├── Rectangle.java │ │ │ └── package.html │ │ │ ├── package.html │ │ │ ├── quadtree │ │ │ ├── BarnesHutQuadTree.java │ │ │ ├── ForceObject.java │ │ │ ├── Node.java │ │ │ ├── TreeNode.java │ │ │ └── package.html │ │ │ └── util │ │ │ ├── Caching.java │ │ │ ├── EdgeAccessor.java │ │ │ ├── LeftToRight.java │ │ │ ├── PropertyLoader.java │ │ │ ├── RadiusVertexAccessor.java │ │ │ ├── RandomLocationTransformer.java │ │ │ ├── RightToLeft.java │ │ │ ├── VertexAccessor.java │ │ │ ├── VisRunnable.java │ │ │ ├── package.html │ │ │ └── synthetics │ │ │ ├── ArticulatedEdge.java │ │ │ ├── SE.java │ │ │ ├── SEI.java │ │ │ ├── SV.java │ │ │ ├── SVI.java │ │ │ ├── SVTransformedGraphSupplier.java │ │ │ ├── SingletonTransformer.java │ │ │ ├── Synthetic.java │ │ │ ├── SyntheticSE.java │ │ │ ├── SyntheticSV.java │ │ │ └── TransformingGraphView.java │ └── resources │ │ └── sample.jungrapht.properties │ ├── site │ └── site.xml │ └── test │ ├── java │ └── org │ │ └── jungrapht │ │ └── visualization │ │ └── layout │ │ ├── algorithms │ │ ├── ForceObjectIterator.java │ │ ├── TestTreeLayouts.java │ │ ├── ThingTest.java │ │ ├── eiglsperger │ │ │ ├── EiglspergerTests.java │ │ │ ├── LayoutTests.java │ │ │ ├── TestInsertionOrderSplayTree.java │ │ │ └── TestSmallGraph.java │ │ ├── sugiyama │ │ │ ├── AccumulatorTreeCrossCountingTest.java │ │ │ ├── AvgMedianTests.java │ │ │ ├── BiLayerCrossCountingTest.java │ │ │ ├── BrandesKopfTest.java │ │ │ ├── TestAccumulatorTree.java │ │ │ ├── TestDelegateVerticesAndEdges.java │ │ │ ├── TestGreedyCycleRemoval.java │ │ │ ├── TestLevelCross.java │ │ │ ├── TestSugiyamaFunctions.java │ │ │ └── TestTransformingGraphView.java │ │ └── util │ │ │ ├── TestCircles.java │ │ │ ├── TestComponentGrouping.java │ │ │ ├── TestInsertionSortCounter.java │ │ │ ├── TestNetworkSimplex.java │ │ │ ├── TestNetworkSimplexFive.java │ │ │ ├── TestNetworkSimplexFour.java │ │ │ ├── TestNetworkSimplexOne.java │ │ │ ├── TestNetworkSimplexSix.java │ │ │ ├── TestNetworkSimplexThree.java │ │ │ ├── TestNetworkSimplexTwo.java │ │ │ └── synthetics │ │ │ ├── SingletonTransformerTest.java │ │ │ ├── TestDelegateVerticesAndEdges.java │ │ │ └── TestTransformingGraphView.java │ │ ├── model │ │ └── ModelTest.java │ │ ├── quadtree │ │ └── BarnesHutQuadTreeTests.java │ │ └── spatial │ │ ├── FA2LayoutsTest.java │ │ ├── FRLayoutsTest.java │ │ ├── FRLayoutsTimingTest.java │ │ └── SpringLayoutsTest.java │ └── resources │ └── logback.xml ├── jungrapht-visualization-samples ├── pom.xml └── src │ ├── main │ ├── assembly │ │ └── assembly.xml │ ├── java │ │ └── org │ │ │ └── jungrapht │ │ │ └── samples │ │ │ ├── AddRemoveVertexDemo.java │ │ │ ├── AnnotationsDemo.java │ │ │ ├── CircleLayoutDemo.java │ │ │ ├── DrawnIconVertexDemo.java │ │ │ ├── EdgeLabelDemo.java │ │ │ ├── GraphEditorDemo.java │ │ │ ├── GraphEditorDemoWithPalette.java │ │ │ ├── GraphEditorDemoWithPaletteDefaultMouse.java │ │ │ ├── ImageEdgeLabelDemo.java │ │ │ ├── InternalFrameSatelliteViewDemo.java │ │ │ ├── LensDemo.java │ │ │ ├── LensDemoWithDefaultGraphMouse.java │ │ │ ├── LensDemoWithDefaultGraphMouseProperyDriven.java │ │ │ ├── LensDemoWithMultiSelectStrategy.java │ │ │ ├── LensVertexImageFromLabelShaperDemo.java │ │ │ ├── LensVertexImageShaperDemo.java │ │ │ ├── MinimalEiglsperger.java │ │ │ ├── MinimalVisualization.java │ │ │ ├── MinimalVisualizationLayoutPaintable.java │ │ │ ├── MinimalVisualizationWithVertexSelectionOnly.java │ │ │ ├── MultiViewDemo.java │ │ │ ├── MultiViewDemoModal.java │ │ │ ├── RectangularLensDemo.java │ │ │ ├── SatelliteViewDemo.java │ │ │ ├── SatelliteViewRefactoredMouseDemo.java │ │ │ ├── ShortestPathDemo.java │ │ │ ├── ShowLayouts.java │ │ │ ├── ShowLayoutsGridGraph.java │ │ │ ├── ShowLayoutsWithGeneratedGraphs.java │ │ │ ├── ShowLayoutsWithGreedyVertexColoring.java │ │ │ ├── ShowLayoutsWithGuavaGraphs.java │ │ │ ├── ShowLayoutsWithGuavaNetworks.java │ │ │ ├── ShowLayoutsWithImageIconVertices.java │ │ │ ├── SubLayoutDemo.java │ │ │ ├── TwoModelDemo.java │ │ │ ├── UnicodeLabelDemo.java │ │ │ ├── VertexCollapseDemo.java │ │ │ ├── VertexCollapseDemoWithCollapseIds.java │ │ │ ├── VertexCollapseDemoWithLayouts.java │ │ │ ├── VertexImageShaperDemo.java │ │ │ ├── VertexImagesOrNotDemo.java │ │ │ ├── VertexLabelAsShapeDemo.java │ │ │ ├── VertexLabelPositionDemo.java │ │ │ ├── VisualizationImageServerDemo.java │ │ │ ├── VisualizationScrollPaneDemo.java │ │ │ ├── WorldMapGraphDemo.java │ │ │ ├── control │ │ │ └── modal │ │ │ │ └── Controllers.java │ │ │ ├── experimental │ │ │ ├── AttributedJSONImporter.java │ │ │ ├── EdgeComparator.java │ │ │ ├── LayoutHelperEiglsperger.java │ │ │ ├── ShowLayoutsWithGhidraGraphInputOneComponents.java │ │ │ ├── ShowLayoutsWithGhidraGraphInputThreeComponents.java │ │ │ ├── ShowLayoutsWithGhidraGraphInputTwoComponents.java │ │ │ └── ShowLayoutsWithGhidraGraphTwo.java │ │ │ ├── flow │ │ │ └── MaxFlowDemo.java │ │ │ ├── io │ │ │ └── CreateOutputFiles.java │ │ │ ├── large │ │ │ ├── AttributedShowLayoutsWithGraphFileImport.java │ │ │ ├── EiglspergerWithGhidraGraphInputExp.java │ │ │ ├── ForceAtlas2WithJGraphtIO.java │ │ │ ├── PerformanceGraph.java │ │ │ ├── ShowLayoutsWithDirectedGraphFileImport.java │ │ │ ├── ShowLayoutsWithGhidraGraphInput.java │ │ │ ├── ShowLayoutsWithGraphFileImport.java │ │ │ ├── ShowLayoutsWithIO7MGraph.java │ │ │ ├── ShowLayoutsWithJGraphtIO.java │ │ │ ├── SpatialLensLargeGraphDemo.java │ │ │ └── package.html │ │ │ ├── package.html │ │ │ ├── quadtree │ │ │ ├── BarnesHutVisualizer.java │ │ │ └── package.html │ │ │ ├── rtree │ │ │ ├── RTreeVisualizer.java │ │ │ └── package.html │ │ │ ├── spatial │ │ │ ├── RTreeVisualization.java │ │ │ ├── ShowLayoutsWithBarnesHutVisualization.java │ │ │ ├── SimpleGraphSpatialEdgeSearchTest.java │ │ │ ├── SimpleGraphSpatialSearchTest.java │ │ │ ├── SimpleGraphSpatialTest.java │ │ │ ├── SpatialLensDemo.java │ │ │ ├── SpatialLensDemoWithOneStarVertex.java │ │ │ ├── SpatialLensDemoWithThreeStarVertices.java │ │ │ ├── SpatialRTreeTest.java │ │ │ └── package.html │ │ │ ├── sugiyama │ │ │ ├── BrandesKopfSugiyamaGraphExample.java │ │ │ ├── BrandesKopfSugiyamaGraphExampleWithIsolatedVertices.java │ │ │ ├── BrandesKopfSugiyamaGraphExampleWithLayouts.java │ │ │ ├── BrandesKopfTestGraphExample.java │ │ │ ├── EiglspergerLayeringOptions.java │ │ │ ├── EiglspergerLayeringOptionsSmall.java │ │ │ ├── EiglspergerLayoutDemo.java │ │ │ ├── EiglspergerLayoutDemoLtoR.java │ │ │ ├── EiglspergerLongestPathComparison.java │ │ │ ├── EiglspergerMulticomponent.java │ │ │ ├── EiglspergerMulticomponentComparison.java │ │ │ ├── EiglspergerNetworkSimplex.java │ │ │ ├── EiglspergerNetworkSimplexComparison.java │ │ │ ├── EiglspergerSixSameGraphExample.java │ │ │ ├── EiglspergerSmallGraph.java │ │ │ ├── EiglspergerSmallNetworkSimplexComparison.java │ │ │ ├── EiglspergerWithWithoutTransposeSwapping.java │ │ │ ├── EiglspsergerSixTestGraphExample.java │ │ │ ├── LayeredTestGraphExample.java │ │ │ ├── MinCrossMulticomponent.java │ │ │ ├── MoreLayeringOptions.java │ │ │ ├── SugiyamaAndEiglsperger.java │ │ │ ├── SugiyamaAndEiglspergerAttributed.java │ │ │ ├── SugiyamaEiglspergerWithWithoutHorizontalCompaction.java │ │ │ ├── SugiyamaLayeringOptions.java │ │ │ ├── SugiyamaLayoutDemo.java │ │ │ ├── SugiyamaMulticomponent.java │ │ │ ├── SugiyamaSixSameGraphExample.java │ │ │ ├── SugiyamaSixTestGraphExample.java │ │ │ ├── SugiyamaWithWithoutStraighteningGraphExample.java │ │ │ ├── SugiyamaWithWithoutTransposeSwapping.java │ │ │ ├── package.html │ │ │ └── test │ │ │ │ └── algorithms │ │ │ │ ├── BrandesKopfLayoutAlgorithm.java │ │ │ │ ├── LayeredLayoutAlgorithm.java │ │ │ │ ├── SelectiveSugiyamaHorizontalCoordinateAssignment.java │ │ │ │ ├── TestSugiyamaLayoutAlgorithm.java │ │ │ │ └── TestSugiyamaRunnable.java │ │ │ ├── tree │ │ │ ├── ArbitraryShapeMultiSelectDemo.java │ │ │ ├── BalloonLayoutDemo.java │ │ │ ├── BalloonLayoutForestDemo.java │ │ │ ├── EdgePrioritizedTreeDAGLayoutDemo.java │ │ │ ├── GhidraModuleDependencyGraphDemo.java │ │ │ ├── L2RTreeLayoutDemo.java │ │ │ ├── MinimumSpanningTreeDemo.java │ │ │ ├── MultiRowTreeLayoutForestDemo.java │ │ │ ├── RadialTreeLensDemo.java │ │ │ ├── RandomDAGExample.java │ │ │ ├── RandomDAGExampleWithSatellite.java │ │ │ ├── SatelliteViewTreeDemo.java │ │ │ ├── TidierL2RTreeLayoutDemo.java │ │ │ ├── TidierTreeLayoutDemo.java │ │ │ ├── TreeCollapseDemo.java │ │ │ ├── TreeLayoutDemo.java │ │ │ ├── TreeLayoutDemoNoRoots.java │ │ │ ├── TreeLayoutDemoOneVertex.java │ │ │ ├── TreeLayoutDemoOverlapTest.java │ │ │ ├── TreeLayoutDemoWithIsolatedVertices.java │ │ │ ├── UniformVertexTreeDAGLayoutDemo.java │ │ │ ├── VertexSizeAwareTreeDAGLayoutDemo.java │ │ │ └── package.html │ │ │ └── util │ │ │ ├── ASAILoader.java │ │ │ ├── Colors.java │ │ │ ├── ControlHelpers.java │ │ │ ├── DemoTreeSupplier.java │ │ │ ├── ForceAtlas2ControlPanel.java │ │ │ ├── GeneratedGraphs.java │ │ │ ├── IconPalette.java │ │ │ ├── LayeringConfiguration.java │ │ │ ├── LayoutFunction.java │ │ │ ├── LayoutHelper.java │ │ │ ├── LayoutHelperDirectedGraphs.java │ │ │ ├── LensControlHelper.java │ │ │ ├── MultipleLayoutSelector.java │ │ │ ├── SpanningTreeAdapter.java │ │ │ ├── SubLayoutHelper.java │ │ │ ├── TestGraphs.java │ │ │ ├── TestGuavaGraphs.java │ │ │ ├── TestGuavaNetworks.java │ │ │ ├── TitlePaintable.java │ │ │ ├── TreeLayoutSelector.java │ │ │ ├── VerticalLabelUI.java │ │ │ └── package.html │ └── resources │ │ ├── 004018c0graph.json │ │ ├── AddRemoveVertexDemo.properties │ │ ├── BalloonLayoutDemo.properties │ │ ├── GraphEditorDemo.properties │ │ ├── L2RTreeLayoutDemo.properties │ │ ├── LensDemo.properties │ │ ├── LensDemoWithDefaultGraphMouseProperyDriven.properties │ │ ├── LensDemoWithMultiSelectStrategy.properties │ │ ├── MinimalOrthogonal.properties │ │ ├── PerformanceGraph.properties │ │ ├── RandomDAGExample.properties │ │ ├── SatelliteViewRefactoredMouseDemo.properties │ │ ├── ShowLayoutsWithJGraphtIO.properties │ │ ├── SpatialLensDemo.properties │ │ ├── SugiyamaAndEiglsperger.properties │ │ ├── SugiyamaAndEiglspergerCopy.properties │ │ ├── friends.graphml │ │ ├── ghidra.json │ │ ├── graph.json │ │ ├── images │ │ ├── Sandstone.jpg │ │ ├── china.gif │ │ ├── france.gif │ │ ├── germany.gif │ │ ├── japan.gif │ │ ├── lightning-s.gif │ │ ├── political_world_map.jpg │ │ ├── russia.gif │ │ ├── spain.gif │ │ ├── topicapple.gif │ │ ├── topicgamespcgames.gif │ │ ├── topicgraphics3.gif │ │ ├── topichumor.gif │ │ ├── topicinputdevices.gif │ │ ├── topiclinux.gif │ │ ├── topicmusic.gif │ │ ├── topicos.gif │ │ ├── topicprivacy.gif │ │ ├── topicsample.gif │ │ ├── topicsample2.gif │ │ ├── topicwireless.gif │ │ ├── topicx.gif │ │ └── united-states.gif │ │ ├── jungrapht.properties │ │ ├── logback.xml │ │ ├── marvel-movie-graph.graphml │ │ └── moduledeps.txt │ └── site │ └── site.xml ├── jungrapht-visualization ├── assembly.xml ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── jungrapht │ │ │ └── visualization │ │ │ ├── AbstractSatelliteVisualizationViewer.java │ │ │ ├── AbstractVisualizationModel.java │ │ │ ├── AbstractVisualizationServer.java │ │ │ ├── AbstractVisualizationViewer.java │ │ │ ├── DefaultRenderContext.java │ │ │ ├── DefaultSatelliteVisualizationViewer.java │ │ │ ├── DefaultTransformer.java │ │ │ ├── DefaultVisualizationModel.java │ │ │ ├── DefaultVisualizationServer.java │ │ │ ├── DefaultVisualizationViewer.java │ │ │ ├── FourPassImageShaper.java │ │ │ ├── LayeredIcon.java │ │ │ ├── MultiLayerTransformer.java │ │ │ ├── PivotingImageShaper.java │ │ │ ├── PropertyLoader.java │ │ │ ├── RenderContext.java │ │ │ ├── RenderContextStateChange.java │ │ │ ├── SatelliteVisualizationViewer.java │ │ │ ├── VisualizationComponent.java │ │ │ ├── VisualizationImageServer.java │ │ │ ├── VisualizationModel.java │ │ │ ├── VisualizationScrollPane.java │ │ │ ├── VisualizationServer.java │ │ │ ├── VisualizationViewer.java │ │ │ ├── annotations │ │ │ ├── AnnotatingGraphMousePlugin.java │ │ │ ├── AnnotatingModalGraphMouse.java │ │ │ ├── Annotation.java │ │ │ ├── AnnotationControls.java │ │ │ ├── AnnotationManager.java │ │ │ ├── AnnotationPaintable.java │ │ │ ├── AnnotationRenderer.java │ │ │ ├── MultiSelectedVertexPaintable.java │ │ │ ├── SelectedEdgePaintable.java │ │ │ ├── SelectedVertexPaintable.java │ │ │ ├── SingleSelectedVertexPaintable.java │ │ │ └── package.html │ │ │ ├── control │ │ │ ├── AbsoluteCrossoverScalingControl.java │ │ │ ├── AbstractGraphMouse.java │ │ │ ├── AbstractGraphMousePlugin.java │ │ │ ├── AbstractModalGraphMouse.java │ │ │ ├── AbstractPopupGraphMousePlugin.java │ │ │ ├── AnimatedPickingGraphMousePlugin.java │ │ │ ├── CrossoverScalingControl.java │ │ │ ├── CubicCurveEdgeEffects.java │ │ │ ├── DefaultGraphMouse.java │ │ │ ├── DefaultLensGraphMouse.java │ │ │ ├── DefaultModalGraphMouse.java │ │ │ ├── DefaultSatelliteGraphMouse.java │ │ │ ├── EdgeEffects.java │ │ │ ├── EdgeSelectingGraphMousePlugin.java │ │ │ ├── EdgeSupport.java │ │ │ ├── EditingDefaultGraphMouse.java │ │ │ ├── EditingGraphMousePlugin.java │ │ │ ├── EditingModalGraphMouse.java │ │ │ ├── EditingPopupGraphMousePlugin.java │ │ │ ├── GraphElementAccessor.java │ │ │ ├── GraphMouseAdapter.java │ │ │ ├── GraphMouseListener.java │ │ │ ├── GraphMousePlugin.java │ │ │ ├── LabelEditingGraphMousePlugin.java │ │ │ ├── LayoutScalingControl.java │ │ │ ├── LensGraphMouse.java │ │ │ ├── LensKillingGraphMousePlugin.java │ │ │ ├── LensMagnificationGraphMousePlugin.java │ │ │ ├── LensRegionSelectingGraphMousePlugin.java │ │ │ ├── LensSelectingGraphMousePlugin.java │ │ │ ├── LensTransformSupport.java │ │ │ ├── LensTranslatingGraphMousePlugin.java │ │ │ ├── LensVertexSelectingGraphMousePlugin.java │ │ │ ├── ModalGraphMouse.java │ │ │ ├── ModalLensGraphMouse.java │ │ │ ├── ModalSatelliteGraphMouse.java │ │ │ ├── Modifiers.java │ │ │ ├── MouseListenerTranslator.java │ │ │ ├── MultiSelectionStrategy.java │ │ │ ├── PluggableGraphMouse.java │ │ │ ├── RegionSelectingGraphMousePlugin.java │ │ │ ├── RotatingGraphMousePlugin.java │ │ │ ├── SatelliteAnimatedPickingGraphMousePlugin.java │ │ │ ├── SatelliteRotatingGraphMousePlugin.java │ │ │ ├── SatelliteScalingGraphMousePlugin.java │ │ │ ├── SatelliteShearingGraphMousePlugin.java │ │ │ ├── SatelliteTranslatingGraphMousePlugin.java │ │ │ ├── ScalingControl.java │ │ │ ├── ScalingGraphMousePlugin.java │ │ │ ├── SelectingGraphMousePlugin.java │ │ │ ├── SelectionIconListener.java │ │ │ ├── ShearingGraphMousePlugin.java │ │ │ ├── SimpleEdgeSupport.java │ │ │ ├── SimpleVertexSupport.java │ │ │ ├── TransformSupport.java │ │ │ ├── TranslatingGraphMousePlugin.java │ │ │ ├── VertexSelectingGraphMousePlugin.java │ │ │ ├── VertexSupport.java │ │ │ ├── ViewScalingControl.java │ │ │ ├── ViewTranslatingGraphMousePlugin.java │ │ │ ├── dnd │ │ │ │ ├── VertexImageDragGestureListener.java │ │ │ │ └── VertexImageDropTargetListener.java │ │ │ ├── modal │ │ │ │ ├── Modal.java │ │ │ │ ├── ModeComboBox.java │ │ │ │ ├── ModeContainer.java │ │ │ │ ├── ModeControl.java │ │ │ │ ├── ModeControls.java │ │ │ │ ├── ModeMenu.java │ │ │ │ └── ModePanel.java │ │ │ └── package.html │ │ │ ├── decorators │ │ │ ├── AbstractEdgeShapeFunction.java │ │ │ ├── AbstractShapeFunction.java │ │ │ ├── ArticulatedEdgeShapeFunction.java │ │ │ ├── ArticulatedEdgeShapeFunctions.java │ │ │ ├── EdgeShape.java │ │ │ ├── EllipseShapeFunction.java │ │ │ ├── ExpandXY.java │ │ │ ├── GradientEdgePaintFunction.java │ │ │ ├── GradientVertexPaintFunction.java │ │ │ ├── IconShapeFunction.java │ │ │ ├── ParallelEdgeShapeFunction.java │ │ │ ├── PickableElementPaintFunction.java │ │ │ ├── SettableShapeFunction.java │ │ │ └── package.html │ │ │ ├── package.html │ │ │ ├── renderers │ │ │ ├── AbstractEdgeRenderer.java │ │ │ ├── AbstractVertexRenderer.java │ │ │ ├── BiModalRenderer.java │ │ │ ├── BiModalSelectionRenderer.java │ │ │ ├── CenterEdgeArrowRenderingSupport.java │ │ │ ├── Checkmark.java │ │ │ ├── DefaultEdgeArrowRenderingSupport.java │ │ │ ├── DefaultModalRenderer.java │ │ │ ├── DefaultRenderer.java │ │ │ ├── EdgeArrowRenderingSupport.java │ │ │ ├── EdgeLabelRenderer.java │ │ │ ├── GradientVertexRenderer.java │ │ │ ├── HeavyweightEdgeRenderer.java │ │ │ ├── HeavyweightRenderer.java │ │ │ ├── HeavyweightVertexLabelRenderer.java │ │ │ ├── HeavyweightVertexRenderer.java │ │ │ ├── HeavyweightVertexSelectionRenderer.java │ │ │ ├── HeayweightEdgeLabelRenderer.java │ │ │ ├── JLabelEdgeLabelRenderer.java │ │ │ ├── JLabelVertexLabelRenderer.java │ │ │ ├── JTextAreaVertexLabelRenderer.java │ │ │ ├── LightweightEdgeRenderer.java │ │ │ ├── LightweightRenderer.java │ │ │ ├── LightweightVertexRenderer.java │ │ │ ├── LightweightVertexSelectionRenderer.java │ │ │ ├── ModalRenderer.java │ │ │ ├── Renderer.java │ │ │ ├── ReshapingEdgeRenderer.java │ │ │ ├── SelectionRenderer.java │ │ │ ├── VertexLabelAsShapeRenderer.java │ │ │ ├── VertexLabelRenderer.java │ │ │ ├── VertexShapeFunctionConsumer.java │ │ │ └── package.html │ │ │ ├── selection │ │ │ ├── AbstractMutableSelectedState.java │ │ │ ├── MultiMutableSelectedState.java │ │ │ ├── MutableSelectedState.java │ │ │ ├── MutableSelectedStateSink.java │ │ │ ├── SelectedState.java │ │ │ ├── ShapePickSupport.java │ │ │ ├── VertexEndpointsSelectedEdgeSelectedState.java │ │ │ ├── VertexSelectedEndpointsEdgeSelectionListener.java │ │ │ └── package.html │ │ │ ├── spatial │ │ │ ├── AbstractSpatial.java │ │ │ ├── Spatial.java │ │ │ ├── SpatialGrid.java │ │ │ ├── SpatialQuadTree.java │ │ │ ├── SpatialRTree.java │ │ │ ├── SwingThreadSpatial.java │ │ │ ├── package.html │ │ │ └── rtree │ │ │ │ ├── AbstractSplitter.java │ │ │ │ ├── Bounded.java │ │ │ │ ├── BoundedList.java │ │ │ │ ├── BoundedMap.java │ │ │ │ ├── HorizontalCenterNodeComparator.java │ │ │ │ ├── HorizontalEdgeMapEntryComparator.java │ │ │ │ ├── HorizontalEdgeNodeComparator.java │ │ │ │ ├── InnerNode.java │ │ │ │ ├── LeafNode.java │ │ │ │ ├── LeafSplitter.java │ │ │ │ ├── Node.java │ │ │ │ ├── NodeList.java │ │ │ │ ├── NodeMap.java │ │ │ │ ├── Pair.java │ │ │ │ ├── QuadraticLeafSplitter.java │ │ │ │ ├── QuadraticSplitter.java │ │ │ │ ├── RStarLeafSplitter.java │ │ │ │ ├── RStarSplitter.java │ │ │ │ ├── RTree.java │ │ │ │ ├── RTreeNode.java │ │ │ │ ├── Splitter.java │ │ │ │ ├── SplitterContext.java │ │ │ │ ├── TreeNode.java │ │ │ │ ├── VerticalEdgeMapEntryComparator.java │ │ │ │ ├── VerticalEdgeNodeComparator.java │ │ │ │ └── package.html │ │ │ ├── sublayout │ │ │ ├── Collapser.java │ │ │ ├── GraphCollapser.java │ │ │ ├── SubgraphSupplier.java │ │ │ ├── TreeCollapser.java │ │ │ ├── VisualGraphCollapser.java │ │ │ ├── VisualTreeCollapser.java │ │ │ └── package.html │ │ │ ├── transform │ │ │ ├── AbstractLensSupport.java │ │ │ ├── AffineTransformer.java │ │ │ ├── BidirectionalTransformer.java │ │ │ ├── HyperbolicTransformer.java │ │ │ ├── Intersections.java │ │ │ ├── LayoutLensSupport.java │ │ │ ├── Lens.java │ │ │ ├── LensManager.java │ │ │ ├── LensSupport.java │ │ │ ├── LensTransformer.java │ │ │ ├── MagnifyTransformer.java │ │ │ ├── MutableAffineTransformer.java │ │ │ ├── MutableTransformer.java │ │ │ ├── MutableTransformerDecorator.java │ │ │ ├── package.html │ │ │ └── shape │ │ │ │ ├── Graphics2DWrapper.java │ │ │ │ ├── GraphicsDecorator.java │ │ │ │ ├── HyperbolicShapeTransformer.java │ │ │ │ ├── Intersector.java │ │ │ │ ├── MagnifyIconGraphics.java │ │ │ │ ├── MagnifyImageLensSupport.java │ │ │ │ ├── MagnifyShapeTransformer.java │ │ │ │ ├── ShapeFlatnessTransformer.java │ │ │ │ ├── ShapeTransformer.java │ │ │ │ ├── TransformingFlatnessGraphics.java │ │ │ │ ├── TransformingGraphics.java │ │ │ │ ├── ViewLensSupport.java │ │ │ │ └── package.html │ │ │ └── util │ │ │ ├── AWT.java │ │ │ ├── AnimationLayoutAlgorithm.java │ │ │ ├── ArrowFactory.java │ │ │ ├── Attributed.java │ │ │ ├── BoundingRectangleCollector.java │ │ │ ├── BoundingRectanglePaintable.java │ │ │ ├── ChangeEventSupport.java │ │ │ ├── DefaultAttributed.java │ │ │ ├── DefaultChangeEventSupport.java │ │ │ ├── DimensionUtils.java │ │ │ ├── EdgeIndexFunction.java │ │ │ ├── GeneralPathAsString.java │ │ │ ├── GraphImage.java │ │ │ ├── IconCache.java │ │ │ ├── IconFunction.java │ │ │ ├── ImageShapeUtils.java │ │ │ ├── ItemSupport.java │ │ │ ├── LabelWrapper.java │ │ │ ├── LayoutAlgorithmTransition.java │ │ │ ├── LayoutPaintable.java │ │ │ ├── ParallelEdgeIndexFunction.java │ │ │ ├── PointUtils.java │ │ │ ├── PredicatedParallelEdgeIndexFunction.java │ │ │ ├── RadiusGraphElementAccessor.java │ │ │ ├── RectangleUtils.java │ │ │ ├── ShapeFactory.java │ │ │ ├── TreeUtils.java │ │ │ ├── VertexLocationAnimator.java │ │ │ ├── VertexStyleConfiguration.java │ │ │ └── package.html │ └── resources │ │ └── sample.jungrapht.properties │ ├── site │ └── site.xml │ └── test │ ├── java │ └── org │ │ └── jungrapht │ │ └── visualization │ │ ├── LayoutAlgorithmTransitionTest.java │ │ ├── ShapeTest.java │ │ ├── SpatialRTreeTest.java │ │ ├── TestImageShaper.java │ │ ├── VisualizationServerTest.java │ │ ├── layout │ │ ├── algorithms │ │ │ ├── ForceObjectIterator.java │ │ │ ├── eiglsperger │ │ │ │ ├── EiglspergerTests.java │ │ │ │ ├── TestInsertionOrderSplayTree.java │ │ │ │ └── TestSmallGraph.java │ │ │ ├── sugiyama │ │ │ │ ├── AccumulatorTreeCrossCountingTest.java │ │ │ │ ├── AvgMedianTests.java │ │ │ │ ├── BiLayerCrossCountingTest.java │ │ │ │ ├── BrandesKopfTest.java │ │ │ │ ├── TestAccumulatorTree.java │ │ │ │ ├── TestDelegateVerticesAndEdges.java │ │ │ │ ├── TestGreedyCycleRemoval.java │ │ │ │ ├── TestLevelCross.java │ │ │ │ ├── TestSugiyamaFunctions.java │ │ │ │ └── TestTransformingGraphView.java │ │ │ └── util │ │ │ │ ├── TestComponentGrouping.java │ │ │ │ ├── TestInsertionSortCounter.java │ │ │ │ ├── TestNetworkSimplex.java │ │ │ │ ├── TestNetworkSimplexFive.java │ │ │ │ ├── TestNetworkSimplexFour.java │ │ │ │ ├── TestNetworkSimplexOne.java │ │ │ │ ├── TestNetworkSimplexSix.java │ │ │ │ ├── TestNetworkSimplexThree.java │ │ │ │ ├── TestNetworkSimplexTwo.java │ │ │ │ └── synthetics │ │ │ │ ├── SingletonTransformerTest.java │ │ │ │ ├── TestDelegateVerticesAndEdges.java │ │ │ │ └── TestTransformingGraphView.java │ │ ├── model │ │ │ └── ModelTest.java │ │ └── quadtree │ │ │ └── BarnesHutQuadTreeTests.java │ │ ├── selection │ │ └── MultiMutableSelectedStateTest.java │ │ ├── spatial │ │ ├── RTreeTest.java │ │ ├── RTreeTest2.java │ │ ├── ShapesTest.java │ │ ├── SpatialGridTest.java │ │ └── SpatialQuadTreeTest.java │ │ ├── sublayout │ │ └── GraphCollapserTest.java │ │ └── transform │ │ └── IntersectionsTest.java │ └── resources │ └── logback.xml ├── pom.xml └── tools └── settings.xml /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Java CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | - main 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - uses: actions/checkout@v4 15 | - name: Set up JDK 17 16 | uses: actions/setup-java@v4 17 | with: 18 | java-version: '17' 19 | distribution: 'temurin' 20 | cache: 'maven' 21 | - name: Build with Maven 22 | run: mvn --batch-mode --update-snapshots package 23 | publish: 24 | runs-on: ubuntu-latest 25 | needs: build 26 | if: github.repository == 'tomnelson/jungrapht-visualization' 27 | steps: 28 | - uses: actions/checkout@v4 29 | - name: Set up Maven Snapshot Repository 30 | uses: actions/setup-java@v4 31 | with: 32 | java-version: '17' 33 | distribution: 'temurin' 34 | server-id: sonatype-nexus-snapshots 35 | server-username: MAVEN_USERNAME 36 | server-password: MAVEN_PASSWORD 37 | - name: Publish package 38 | run: mvn --batch-mode deploy 39 | env: 40 | MAVEN_USERNAME: ${{ secrets.SONATYPE_USERNAME }} 41 | MAVEN_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} 42 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/bin 2 | **/*.iml 3 | **/*.orig 4 | **/*.prefs 5 | **/.classpath 6 | **/.idea 7 | **/.project 8 | **/.settings 9 | **/lib 10 | **/.idea? 11 | *.iml 12 | *.o 13 | *.orig 14 | *~ 15 | ~* 16 | *.bak 17 | .*.swp 18 | .classpath 19 | .idea 20 | .project 21 | .settings 22 | .metadata/ 23 | .factoryPath 24 | **/nb-configuration.xml 25 | nbactions.xml 26 | nbproject/ 27 | tags 28 | target 29 | target/ 30 | **/target/ 31 | **/logs/ 32 | pom.xml.releaseBackup 33 | **/pom.xml.releaseBackup 34 | **/dependency-reduced-pom.xml 35 | docs/javadoc* 36 | docs/_site 37 | generated -------------------------------------------------------------------------------- /Structure.md: -------------------------------------------------------------------------------- 1 | LayoutAlgorithm computes vertex locations. 2 | 3 | LayoutModel accepts a LayoutAlgorithm and contains a Map of vertex to Point locations 4 | 5 | VisualizationModel contains a LayoutModel and adds awt classes and event support. 6 | 7 | VisualizationServer contains a VisualizationModel and contains affine transforms and 8 | renderers to draw a graph. 9 | 10 | VisualizationViewer extends VisualizationServer and adds mouse-driven event handling 11 | 12 | -------------------------------------------------------------------------------- /images/CircleLayout.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomnelson/jungrapht-visualization/aa08d63795f2be6aa1bf59cc8e4ad6191c8b32a0/images/CircleLayout.jpg -------------------------------------------------------------------------------- /images/ReducedEdgeCrossingCircleLayout.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomnelson/jungrapht-visualization/aa08d63795f2be6aa1bf59cc8e4ad6191c8b32a0/images/ReducedEdgeCrossingCircleLayout.jpg -------------------------------------------------------------------------------- /images/bettercircle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomnelson/jungrapht-visualization/aa08d63795f2be6aa1bf59cc8e4ad6191c8b32a0/images/bettercircle.jpg -------------------------------------------------------------------------------- /images/brandeskopftestgraph.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomnelson/jungrapht-visualization/aa08d63795f2be6aa1bf59cc8e4ad6191c8b32a0/images/brandeskopftestgraph.jpg -------------------------------------------------------------------------------- /images/brandeskopftestgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomnelson/jungrapht-visualization/aa08d63795f2be6aa1bf59cc8e4ad6191c8b32a0/images/brandeskopftestgraph.png -------------------------------------------------------------------------------- /images/circle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomnelson/jungrapht-visualization/aa08d63795f2be6aa1bf59cc8e4ad6191c8b32a0/images/circle.jpg -------------------------------------------------------------------------------- /images/eiglspergersugiyama.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomnelson/jungrapht-visualization/aa08d63795f2be6aa1bf59cc8e4ad6191c8b32a0/images/eiglspergersugiyama.jpg -------------------------------------------------------------------------------- /images/eiglspergersugiyama.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomnelson/jungrapht-visualization/aa08d63795f2be6aa1bf59cc8e4ad6191c8b32a0/images/eiglspergersugiyama.png -------------------------------------------------------------------------------- /images/sugiyama.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomnelson/jungrapht-visualization/aa08d63795f2be6aa1bf59cc8e4ad6191c8b32a0/images/sugiyama.jpg -------------------------------------------------------------------------------- /images/sugiyama2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomnelson/jungrapht-visualization/aa08d63795f2be6aa1bf59cc8e4ad6191c8b32a0/images/sugiyama2.jpg -------------------------------------------------------------------------------- /images/sugiyamabrandeskopf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomnelson/jungrapht-visualization/aa08d63795f2be6aa1bf59cc8e4ad6191c8b32a0/images/sugiyamabrandeskopf.jpg -------------------------------------------------------------------------------- /images/tidiertree.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tomnelson/jungrapht-visualization/aa08d63795f2be6aa1bf59cc8e4ad6191c8b32a0/images/tidiertree.jpg -------------------------------------------------------------------------------- /jungrapht-layout/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |Support for graph layout models and graph layout algorithms
6 | 7 |There are no java.awt imports in this package and its sub packages
8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /jungrapht-layout/src/main/java/org/jungrapht/visualization/layout/algorithms/Balloon.java: -------------------------------------------------------------------------------- 1 | package org.jungrapht.visualization.layout.algorithms; 2 | 3 | /** marker interface used only to signal that the balloon layout paintables might be applied */ 4 | public interface Balloon {} 5 | -------------------------------------------------------------------------------- /jungrapht-layout/src/main/java/org/jungrapht/visualization/layout/algorithms/EdgeAwareLayoutAlgorithm.java: -------------------------------------------------------------------------------- 1 | package org.jungrapht.visualization.layout.algorithms; 2 | 3 | import org.jungrapht.visualization.layout.model.LayoutModel; 4 | 5 | /** 6 | * A marker interface for LayoutAlgorithms that are aware of graph edges and can use the edges as 7 | * part of the layout vertex positioning 8 | * 9 | * @author Tom Nelson. 10 | */ 11 | public interface EdgeAwareLayoutAlgorithmstep
8 | *
that occurr in the current thread instead of in a new Thread. The purpose of
9 | * preRelax()
is to rapidly reach an initial state before spawning a new Thread to perform a
10 | * more lengthy relax operation.
11 | *
12 | * @param Support for graph layout algorithms
6 | 7 |There are no java.awt imports in this package and its sub packages
8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /jungrapht-layout/src/main/java/org/jungrapht/visualization/layout/algorithms/repulsion/BarnesHutRepulsion.java: -------------------------------------------------------------------------------- 1 | package org.jungrapht.visualization.layout.algorithms.repulsion; 2 | 3 | import org.jungrapht.visualization.layout.model.LayoutModel; 4 | 5 | /** 6 | * @author Tom Nelson 7 | * @paramstep()
will
14 | * advance the algorithm by one cycle thru the affected members.
15 | */
16 | public interface IterativeContext {
17 |
18 | /** Advances one step. */
19 | void step();
20 |
21 | /** @return {@code true} if this iterative process is finished, and {@code false} otherwise. */
22 | boolean done();
23 | }
24 |
--------------------------------------------------------------------------------
/jungrapht-layout/src/main/java/org/jungrapht/visualization/layout/algorithms/util/LayeredRunnable.java:
--------------------------------------------------------------------------------
1 | package org.jungrapht.visualization.layout.algorithms.util;
2 |
3 | import java.util.List;
4 | import java.util.Map;
5 | import org.jungrapht.visualization.layout.model.Point;
6 |
7 | public interface LayeredRunnableSupport for graph layout related events
6 | 7 |There are no java.awt imports in this package and its sub packages
8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /jungrapht-layout/src/main/java/org/jungrapht/visualization/layout/model/LocationUtil.java: -------------------------------------------------------------------------------- 1 | package org.jungrapht.visualization.layout.model; 2 | 3 | /** Utility to use where mutable points were required in older code */ 4 | public class LocationUtil { 5 | 6 | public staticSupport for graph layout models mapping vertices to location points
6 | 7 |There are no java.awt imports in this package and its sub packages
8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /jungrapht-layout/src/main/java/org/jungrapht/visualization/layout/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |Support for graph layout models and graph layout algorithms
6 | 7 |There are no java.awt imports in this package and its sub packages
8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /jungrapht-layout/src/main/java/org/jungrapht/visualization/layout/quadtree/TreeNode.java: -------------------------------------------------------------------------------- 1 | package org.jungrapht.visualization.layout.quadtree; 2 | 3 | import java.util.Collection; 4 | import org.jungrapht.visualization.layout.model.Rectangle; 5 | 6 | /** @author Tom Nelson */ 7 | public interface TreeNode { 8 | 9 | Rectangle getBounds(); 10 | 11 | Collection extends TreeNode> getChildren(); 12 | } 13 | -------------------------------------------------------------------------------- /jungrapht-layout/src/main/java/org/jungrapht/visualization/layout/quadtree/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |Support for spatial optimization of graph layout algorithms
6 | 7 |There are no java.awt imports in this package and its sub packages
8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /jungrapht-layout/src/main/java/org/jungrapht/visualization/layout/util/Caching.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2005, The JUNG Authors 3 | * All rights reserved. 4 | * 5 | * This software is open-source under the BSD license; see either "license.txt" 6 | * or https://github.com/tomnelson/jungrapht-visualization/blob/master/LICENSE for a description. 7 | * 8 | * 9 | */ 10 | package org.jungrapht.visualization.layout.util; 11 | 12 | /** 13 | * Interface to provide external controls to an implementing class that manages a cache. 14 | * 15 | * @author Tom Nelson 16 | */ 17 | public interface Caching { 18 | /** clear cache */ 19 | void clear(); 20 | } 21 | -------------------------------------------------------------------------------- /jungrapht-layout/src/main/java/org/jungrapht/visualization/layout/util/EdgeAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2005, The JUNG Authors 3 | * All rights reserved. 4 | * 5 | * This software is open-source under the BSD license; see either "license.txt" 6 | * or https://github.com/tomnelson/jungrapht-visualization/blob/master/LICEVSE for a description. 7 | * 8 | * 9 | */ 10 | package org.jungrapht.visualization.layout.util; 11 | 12 | import org.jungrapht.visualization.layout.model.LayoutModel; 13 | import org.jungrapht.visualization.layout.model.Point; 14 | 15 | /** 16 | * Interface for coordinate-based selection of graph edges. 17 | * 18 | * @author Tom Nelson 19 | */ 20 | public interface EdgeAccessorUtilities for graph layout models and graph layout algorithms
6 | 7 |There are no java.awt imports in this package and its sub packages
8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /jungrapht-layout/src/main/java/org/jungrapht/visualization/layout/util/synthetics/SE.java: -------------------------------------------------------------------------------- 1 | package org.jungrapht.visualization.layout.util.synthetics; 2 | 3 | /** 4 | * Interface for a delegate class for a generic edge of type E 5 | * 6 | * @param