JUNG: Java Universal Network/Graph Framework

Overview

JUNG: The Java Universal Network/Graph Framework

Build Status Maven Central

JUNG is a software library that provides a common and extensible language for the modeling, analysis, and visualization of data that can be represented as a graph or network. Its basis in Java allows JUNG-based applications to make use of the extensive built-in capabilities of the Java API, as well as those of other existing third-party Java libraries.

JUNG Website

Latest Release

The most recent version of JUNG is version 2.1.1, released 7 September 2016.

To add a dependency on this release of JUNG using Maven, use the following for each JUNG subpackage that you need:

<dependency>
  <groupId>net.sf.jung</groupId>
  <artifactId>jung-[subpackage]</artifactId>
  <version>2.1.1</version>
</dependency>

To add a dependency on a snapshot of the master branch in gradle:

dependencies {
   // ...
	compile("com.github.jrtom:jung:master-SNAPSHOT")
}
repositories {
    // ...
    maven { url "https://jitpack.io" }
    
}

Snapshots

Snapshots of JUNG built from the master branch are available through Maven using version 2.2-SNAPSHOT.

Links

Contributions

JUNG is currently administered primarily by @jrtom, one of the original co-creators of the JUNG project.

Bug fixes (with tests) are appreciated and will generally be acted upon pretty quickly if the fix is a clear win.

If you'd like to add a feature, or suggest a way that things could be done better, more cleanly, or more efficiently, we really appreciate it, we encourage you to open an issue, and you're welcome to make a pull request to show off a proof of concept.

However, at the moment we're largely focused on some big architectural changes that are going to touch essentially everything in JUNG. Once those changes land, we'll have more time and energy available to consider other changes.

Comments
  • this branch updates the visualization and samples modules to work wit…

    this branch updates the visualization and samples modules to work wit…

    …h common.graph. It also introduces a SpatialGrid

    On branch spatial-plus-visualization-fixes modified: jung-samples/pom.xml modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/AddNodeDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/AnimatingAddNodeDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/BalloonLayoutDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/ClusteringDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/EdgeLabelDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/GraphEditorDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/GraphFromGraphMLDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/GraphZoomScrollPaneDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/L2RTreeLayoutDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/LensDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/MinimumSpanningTreeDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/MultiViewDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/PluggableRendererDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/RadialTreeLensDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/SatelliteViewDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/ShortestPathDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/ShowLayouts.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/SimpleGraphDraw.java new file: jung-samples/src/main/java/edu/uci/ics/jung/samples/SimpleGraphSpatialTest.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/SubLayoutDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/TreeCollapseDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/TreeLayoutDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/VertexCollapseDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/VertexCollapseDemoWithLayouts.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/VertexImageShaperDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/VertexLabelAsShapeDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/VisualizationImageServerDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/WorldMapGraphDemo.java new file: jung-samples/src/main/java/edu/uci/ics/jung/samples/util/ControlHelpers.java new file: jung-samples/src/main/resources/log4j.properties modified: jung-visualization/pom.xml modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/BasicVisualizationServer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/DefaultVisualizationModel.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/PluggableRenderContext.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/RenderContext.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/VisualizationModel.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/VisualizationServer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/EdgeSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/EditingGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/EditingModalGraphMouse.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/EditingPopupGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SatelliteVisualizationViewer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SimpleEdgeSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SimpleVertexSupport.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/AbstractEdgeShapeTransformer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/EdgeShape.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/GradientEdgePaintTransformer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/ParallelEdgeShapeTransformer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/BoundingRectangleCollector.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/BoundingRectanglePaintable.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/LayoutChangeListener.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/LayoutEvent.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/LayoutEventSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/LayoutTransition.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/ObservableCachingLayout.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/picking/ClosestShapePickSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/picking/LayoutLensShapePickSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/picking/ShapePickSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/picking/ViewLensShapePickSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicEdgeLabelRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicEdgeRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicVertexLabelRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicVertexRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/CachingEdgeRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/CachingRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/CachingVertexRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/GradientVertexRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/Renderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/ReshapingEdgeRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/VertexLabelAsShapeRenderer.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/Spatial.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/SpatialGrid.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/subLayout/GraphCollapser.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/transform/shape/MagnifyImageLensSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/transform/shape/ViewLensSupport.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/util/Context.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/util/LayoutMediator.java new file: jung-visualization/src/test/java/edu/uci/ics/jung/visualization/spatial/SpatialGridTest.java new file: jung-visualization/src/test/java/edu/uci/ics/jung/visualization/sublayout/GraphCollapserTest.java new file: jung-visualization/src/test/resources/log4j.properties

    opened by tomnelson 31
  • layout event refactor

    layout event refactor

    Changes to be committed: new file: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/event/LayoutChange.java new file: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/event/LayoutNodePositionChange.java new file: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/event/LayoutStateChange.java modified: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/model/AbstractLayoutModel.java deleted: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/model/DefaultLayoutModelChangeSupport.java deleted: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/model/DefaultLayoutStateChangeSupport.java modified: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/model/LayoutModel.java modified: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/model/LoadingCacheLayoutModel.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/BaseVisualizationModel.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/BasicVisualizationServer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/VisualizationModel.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/VisualizationServer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/AggregateLayoutModel.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/AbstractSpatial.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/Spatial.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/SpatialGrid.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/SpatialQuadTree.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/SpatialRTree.java

    opened by tomnelson 18
  • Introduce tests for CTree

    Introduce tests for CTree

    This is a work-in-progress PR to introduce tests for CTree et al. It partially resolves https://github.com/jrtom/jung/issues/83.

    The tests are heavily inspired by Guava's own com.google.common.graph tests and borrows their general structure and many other ideas. At time of writing, no effort has been made yet to make the tests go green.

    Constructive feedback is welcome!

    opened by jbduncan 18
  • Consider removing `DiscreteDistribution.[kullbackLeibler|symmetricKL]

    Consider removing `DiscreteDistribution.[kullbackLeibler|symmetricKL]

    Following on from https://github.com/jrtom/jung/pull/143, I'd like to suggest that we remove DiscreteDistributon.kullbackLeibler() and DiscreteDistribution.symmetricKL(). These methods aren't currently being used anywhere in JUNG, and it's not clear to me that they're useful outside of JUNG.

    Pros for removing these methods:

    1. Codebase would be less cluttered.
    2. One thing less to test.

    Cons:

    1. These methods may be being used by JUNG 2.x users (since they are public API, as pointed out by @jrtom here), in which case we should likely move the methods out of the utils package (which may become an internals package, as discussed in https://github.com/jrtom/jung/issues/94) and into a more dedicated class elsewhere.

    It also occurs to me that the name of the methods aren't so user friendly. One could Google what Kullback-Leibler divergence is, but I personally find the Wikipedia article too technical. So if we decide to keep these methods, it would be good to rename them to say what they do, instead of how, and then say in the JavaDoc that the implementation in based on Kullback-Leibler.

    opened by jbduncan 18
  • Fixes to various visualization problems

    Fixes to various visualization problems

    Changes to be committed:

    modified:   jung-algorithms/pom.xml
    modified:   jung-algorithms/src/main/java/edu/uci/ics/jung/algorithms/layout/util/VisRunner.java
    new file:   jung-algorithms/src/main/resources/log4j.properties
    new file:   jung-algorithms/src/test/java/edu/uci/ics/jung/algorithms/layout/LayoutTest.java
    modified:   jung-samples/pom.xml
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/AddNodeDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/AnimatingAddNodeDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/BalloonLayoutDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/ClusteringDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/EdgeLabelDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/GraphFromGraphMLDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/GraphZoomScrollPaneDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/L2RTreeLayoutDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/LensDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/PluggableRendererDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/SatelliteViewDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/ShortestPathDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/ShowLayouts.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/SubLayoutDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/TreeCollapseDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/TreeLayoutDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/VertexCollapseDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/VertexCollapseDemoWithLayouts.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/VertexImageShaperDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/VertexLabelAsShapeDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/VisualizationImageServerDemo.java
    modified:   jung-samples/src/main/java/edu/uci/ics/jung/samples/WorldMapGraphDemo.java
    modified:   jung-visualization/pom.xml
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/BasicVisualizationServer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/DefaultVisualizationModel.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/PluggableRenderContext.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/RenderContext.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/VisualizationModel.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/VisualizationServer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/EditingModalGraphMouse.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/EditingPopupGraphMousePlugin.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SatelliteVisualizationViewer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SimpleEdgeSupport.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SimpleVertexSupport.java
    new file:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/AbstractEdgeShapeTransformer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/EdgeShape.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/GradientEdgePaintTransformer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/ParallelEdgeShapeTransformer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/BoundingRectangleCollector.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/BoundingRectanglePaintable.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/LayoutChangeListener.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/LayoutEvent.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/LayoutEventSupport.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/LayoutTransition.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/ObservableCachingLayout.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/picking/ClosestShapePickSupport.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/picking/LayoutLensShapePickSupport.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/picking/ShapePickSupport.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/picking/ViewLensShapePickSupport.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicEdgeLabelRenderer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicEdgeRenderer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicRenderer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicVertexLabelRenderer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicVertexRenderer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/CachingEdgeRenderer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/CachingRenderer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/CachingVertexRenderer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/GradientVertexRenderer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/Renderer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/ReshapingEdgeRenderer.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/VertexLabelAsShapeRenderer.java
    new file:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/Spatial.java
    new file:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/SpatialGrid.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/subLayout/GraphCollapser.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/transform/shape/MagnifyImageLensSupport.java
    modified:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/transform/shape/ViewLensSupport.java
    new file:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/util/Context.java
    new file:   jung-visualization/src/main/java/edu/uci/ics/jung/visualization/util/LayoutMediator.java
    new file:   jung-visualization/src/main/resources/log4j.properties
    modified:   pom.xml
    
    opened by tomnelson 15
  • Possible Contribution to JUNG

    Possible Contribution to JUNG

    This is my current JUNG visualization and samples code. It has an R-Tree and R*-Tree in use for Nodes and Edges. The RTree.java class has a link to a paper that describes how they work. This code also changes all V to N, Vertex to Node, and Transformer to Function. All Applet references are also gone.

    Let me know what you think and we can discuss this as a contribution to JUNG.

    Cheers. Tom Nelson

    Changes to be committed: modified: jung-algorithms/src/main/java/edu/uci/ics/jung/algorithms/util/IterativeContext.java modified: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/algorithms/AbstractIterativeLayoutAlgorithm.java modified: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/algorithms/TreeLayoutAlgorithm.java modified: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/model/AbstractLayoutModel.java new file: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/model/DefaultLayoutStateChangeSupport.java modified: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/model/LayoutModel.java deleted: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/model/LayoutModelAware.java modified: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/model/LoadingCacheLayoutModel.java deleted: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/util/Animator.java deleted: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/util/LayoutAlgorithmTransition.java modified: jung-algorithms/src/main/java/edu/uci/ics/jung/layout/util/VisRunnable.java modified: jung-api/src/main/java/edu/uci/ics/jung/graph/ObservableNetwork.java modified: jung-samples/pom.xml modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/AddNodeDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/AnnotationsDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/BalloonLayoutDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/ClusteringDemo.java deleted: jung-samples/src/main/java/edu/uci/ics/jung/samples/DemoLensVertexImageShaperDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/DrawnIconVertexDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/EdgeLabelDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/GraphEditorDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/GraphFromGraphMLDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/GraphZoomScrollPaneDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/ImageEdgeLabelDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/InternalFrameSatelliteViewDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/L2RTreeLayoutDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/LensDemo.java renamed: jung-samples/src/main/java/edu/uci/ics/jung/samples/LensVertexImageShaperDemo.java -> jung-samples/src/main/java/edu/uci/ics/jung/samples/LensNodeImageShaperDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/MinimumSpanningTreeDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/MultiViewDemo.java renamed: jung-samples/src/main/java/edu/uci/ics/jung/samples/VertexCollapseDemo.java -> jung-samples/src/main/java/edu/uci/ics/jung/samples/NodeCollapseDemo.java renamed: jung-samples/src/main/java/edu/uci/ics/jung/samples/VertexCollapseDemoWithLayouts.java -> jung-samples/src/main/java/edu/uci/ics/jung/samples/NodeCollapseDemoWithLayouts.java renamed: jung-samples/src/main/java/edu/uci/ics/jung/samples/VertexImageShaperDemo.java -> jung-samples/src/main/java/edu/uci/ics/jung/samples/NodeImageShaperDemo.java renamed: jung-samples/src/main/java/edu/uci/ics/jung/samples/VertexLabelAsShapeDemo.java -> jung-samples/src/main/java/edu/uci/ics/jung/samples/NodeLabelAsShapeDemo.java renamed: jung-samples/src/main/java/edu/uci/ics/jung/samples/VertexLabelPositionDemo.java -> jung-samples/src/main/java/edu/uci/ics/jung/samples/NodeLabelPositionDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/PluggableRendererDemo.java new file: jung-samples/src/main/java/edu/uci/ics/jung/samples/RTreeVisualizer.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/RadialTreeLensDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/SatelliteViewDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/ShortestPathDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/ShowLayouts.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/SimpleGraphDraw.java new file: jung-samples/src/main/java/edu/uci/ics/jung/samples/SimpleGraphSpatialEdgeSearchTest.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/SimpleGraphSpatialSearchTest.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/SimpleGraphSpatialTest.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/SpatialLensDemo.java new file: jung-samples/src/main/java/edu/uci/ics/jung/samples/SpatialLensLargeGraphDemo.java new file: jung-samples/src/main/java/edu/uci/ics/jung/samples/SpatialRTreeTest.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/SubLayoutDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/TreeCollapseDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/TreeLayoutDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/TwoModelDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/UnicodeLabelDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/VisualizationImageServerDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/WorldMapGraphDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/util/ControlHelpers.java new file: jung-samples/src/main/resources/SpatialLensDemo.properties new file: jung-samples/src/main/resources/jung.properties modified: jung-samples/src/main/resources/logback.xml modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/BaseVisualizationModel.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/BasicTransformer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/BasicVisualizationServer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/GraphZoomScrollPane.java deleted: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/Layer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/MultiLayerTransformer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/PluggableRenderContext.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/RenderContext.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/VisualizationImageServer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/VisualizationModel.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/VisualizationServer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/VisualizationViewer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/annotations/AnnotatingGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/annotations/AnnotatingModalGraphMouse.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/annotations/AnnotationControls.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/annotations/AnnotationManager.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/annotations/AnnotationPaintable.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/AbsoluteCrossoverScalingControl.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/AnimatedPickingGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/CrossoverScalingControl.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/CubicCurveEdgeEffects.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/DefaultModalGraphMouse.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/EdgeEffects.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/EdgeSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/EditingGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/EditingModalGraphMouse.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/EditingPopupGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/LabelEditingGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/LayoutScalingControl.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/LensMagnificationGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/LensPickingGraphMousePlugin.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/LensPickingGraphMousePlugin.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/LensTransformSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/LensTranslatingGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/ModalSatelliteGraphMouse.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/MouseListenerTranslator.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/NodeSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/PickingGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/RotatingGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SatelliteAnimatedPickingGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SatelliteRotatingGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SatelliteShearingGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SatelliteTranslatingGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SatelliteVisualizationViewer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/ShearingGraphMousePlugin.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SimpleEdgeSupport.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SimpleNodeSupport.java deleted: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/SimpleVertexSupport.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/TransformSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/TranslatingGraphMousePlugin.java deleted: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/VertexSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/ViewScalingControl.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/control/ViewTranslatingGraphMousePlugin.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/AbstractEdgeShapeTransformer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/AbstractEdgeShapeFunction.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/AbstractVertexShapeTransformer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/AbstractNodeShapeFunction.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/EdgeShape.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/EllipseVertexShapeTransformer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/EllipseNodeShapeFunction.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/GradientEdgePaintTransformer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/GradientEdgePaintFunction.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/InterpolatingVertexSizeTransformer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/InterpolatingNodeSizeFunction.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/VertexIconShapeTransformer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/NodeIconShapeFunction.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/NumberFormattingTransformer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/NumberFormattingFunction.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/ParallelEdgeShapeTransformer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/ParallelEdgeShapeFunction.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/PickableEdgePaintTransformer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/PickableEdgePaintFunction.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/PickableVertexIconTransformer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/PickableNodeIconFunction.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/PickableVertexPaintTransformer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/PickableNodePaintFunction.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/SettableVertexShapeTransformer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/SettableNodeShapeFunction.java deleted: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/decorators/ToStringLabeller.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/AggregateLayoutModel.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/AnimationLayoutAlgorithm.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/BoundingRectangleCollector.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/BoundingRectanglePaintable.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/LayoutAlgorithmTransition.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/SpatialGridLayoutModel.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/SpatialQuadTreeLayoutModel.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/picking/ClosestShapePickSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/picking/ShapePickSupport.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/properties/VisualizationViewerUI.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicEdgeArrowRenderingSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicEdgeLabelRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicEdgeRenderer.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicVertexLabelRenderer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicNodeLabelRenderer.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicVertexRenderer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicNodeRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/BasicRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/CachingEdgeRenderer.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/CachingVertexRenderer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/CachingNodeRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/CachingRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/CenterEdgeArrowRenderingSupport.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/DefaultVertexLabelRenderer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/DefaultNodeLabelRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/EdgeArrowRenderingSupport.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/GradientVertexRenderer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/GradientNodeRenderer.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/VertexLabelAsShapeRenderer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/NodeLabelAsShapeRenderer.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/VertexLabelRenderer.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/NodeLabelRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/Renderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/renderers/ReshapingEdgeRenderer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/AbstractSpatial.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/Spatial.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/SpatialGrid.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/SpatialQuadTree.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/SpatialRTree.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/TreeNode.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/AbstractSplitter.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/Bounded.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/BoundedList.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/BoundedMap.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/HorizontalEdgeMapEntryComparator.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/HorizontalEdgeNodeComparator.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/InnerNode.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/LeafNode.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/LeafSplitter.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/Node.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/NodeList.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/NodeMap.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/Pair.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/QuadraticLeafSplitter.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/QuadraticSplitter.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/RStarLeafSplitter.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/RStarSplitter.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/RTree.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/RTreeNode.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/Splitter.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/SplitterContext.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/VerticalEdgeMapEntryComparator.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/rtree/VerticalEdgeNodeComparator.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/transform/AbstractLensSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/transform/LayoutLensSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/transform/shape/MagnifyImageLensSupport.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/transform/shape/MagnifyShapeTransformer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/transform/shape/ViewLensSupport.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/util/EdgeIndexFunction.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/util/VertexShapeFactory.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/util/NodeShapeFactory.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/util/ParallelEdgeIndexFunction.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/util/PredicatedParallelEdgeIndexFunction.java modified: jung-visualization/src/test/java/edu/uci/ics/jung/visualization/BasicVisualizationServerTest.java modified: jung-visualization/src/test/java/edu/uci/ics/jung/visualization/control/TestCrossoverScalingControl.java modified: jung-visualization/src/test/java/edu/uci/ics/jung/visualization/spatial/SpatialQuadTreeTest.java new file: jung-visualization/src/test/java/edu/uci/ics/jung/visualization/spatial/SpatialRTreeTest.java new file: jung-visualization/src/test/java/edu/uci/ics/jung/visualization/spatial/rtree/RTreeTest.java

    opened by tomnelson 13
  • spatial quadtree work - part one

    spatial quadtree work - part one

    This is the initial code for a QuadTree based spatial layout data structure. For now, it is used only in the visualization system to prevent rendering of elements that are not visible. The next step is to move most of the quadtree code to jung-algorithms and create a node accessor better than RadiusNetworkNodeAccessor (which does an O(N) pythagorean theorem measure of distance). The quadtree version will do an O(logN) search for nodes in nearby cells, and if there is only one, not even measure distance, If there is more than one, it will calculate distance for only a few nodes. This should also enable improvement for some layout algorithms that evaluate spatial proximity.

    Changes to be committed: modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/BaseVisualizationModel.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/BasicVisualizationServer.java renamed: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/SpatialLayoutModel.java -> jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/SpatialGridLayoutModel.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/layout/SpatialQuadTreeLayoutModel.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/AbstractSpatial.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/Spatial.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/SpatialGrid.java new file: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/spatial/SpatialQuadTree.java modified: jung-visualization/src/test/java/edu/uci/ics/jung/visualization/spatial/SpatialGridTest.java new file: jung-visualization/src/test/java/edu/uci/ics/jung/visualization/spatial/SpatialQuadTreeTest.java

    opened by tomnelson 13
  • It this project active anymore?

    It this project active anymore?

    I read in other issues, that a version V3 is on the way. Where is the sourcecode?

    I saw that this pom.xml is already at 3.0-SNAPSHOT. So forget this question.

    When is V3 released? Is there any work to be done? Java 8?

    opened by wumpz 11
  • setNodeLabelFunction issue with a custom node object

    setNodeLabelFunction issue with a custom node object

    Hi all, Thanks for this great graph visualization library. I'm using version 2.2.1 and have some issues with "setNodeLabelFunction" once the network uses a custom object as its node (not String but MyNode). The problem is the node label doesn't show up! I've prepared a minimal demo code here. If you run it, you'll see the "setNodeToolTipFunction" works but "setNodeLabelFunction" doesn't. Even though both of them use the same function as input.

    package edu.uci.ics.jung.samples;
    
    import java.awt.*;
    import javax.swing.*;
    import edu.uci.ics.jung.graph.*;
    import edu.uci.ics.jung.layout.algorithms.TreeLayoutAlgorithm;
    import edu.uci.ics.jung.visualization.*;
    
    
    
    /**
     * Demonsrates TreeLayout and RadialTreeLayout.
     *
     * @author Tom Nelson
     */
    @SuppressWarnings("serial")
    public class TreeLayoutDemoCustom extends JPanel {
    
    	CTreeNetwork<MyNode, Integer> graph;
    
    	/** the visual component and renderer for the graph */
    	VisualizationViewer<MyNode, Integer> vv;
    
    	TreeLayoutAlgorithm<MyNode> treeLayoutAlgorithm;
    
    	public TreeLayoutDemoCustom() {
    
    		setLayout(new BorderLayout());
    		// create a simple graph for the demo
    		graph = createTree();
    		treeLayoutAlgorithm = new TreeLayoutAlgorithm<>();
    		vv = new VisualizationViewer<>(graph, treeLayoutAlgorithm, new Dimension(300, 300));
    
    		vv.getRenderContext().setNodeLabelFunction(MyNode::toString);
    		vv.setNodeToolTipFunction(MyNode::toString);
    
    		final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv);
    		add(panel);
    
    	}
    
    	private CTreeNetwork<MyNode, Integer> createTree() {
    		MutableCTreeNetwork<MyNode, Integer> tree = TreeNetworkBuilder.builder().expectedNodeCount(27).build();
    
    		MyNode root = new MyNode("root", 0);
    		MyNode v1 = new MyNode("V1", 1);
    		int edgeId = 0;
    		tree.addEdge(root, v1, edgeId++);
    		return tree;
    	}
    
    	public static void main(String[] args) {
    		JFrame frame = new JFrame();
    		Container content = frame.getContentPane();
    		frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    
    		content.add(new TreeLayoutDemoCustom());
    		frame.pack();
    		frame.setVisible(true);
    	}
    }
    
    class MyNode {
    	String label;
    	Integer id;
    
    	public MyNode(String label, Integer id) {
    		this.label = label;
    		this.id = id;
    	}
    
    	@Override
    	public String toString() {
    		return id + ";" + label;
    	}
    }
    
    opened by mhnamaki 11
  • remove default sizes - add property for type of spatialstructure

    remove default sizes - add property for type of spatialstructure

    Changes to be committed: modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/ClusteringDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/DrawnIconVertexDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/GraphFromGraphMLDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/GraphZoomScrollPaneDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/PluggableRendererDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/ShortestPathDemo.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/ShowLayouts.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/SimpleGraphDraw.java modified: jung-samples/src/main/java/edu/uci/ics/jung/samples/UnicodeLabelDemo.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/BaseVisualizationModel.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/BasicVisualizationServer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/VisualizationModel.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/VisualizationServer.java modified: jung-visualization/src/main/java/edu/uci/ics/jung/visualization/VisualizationViewer.java modified: jung-visualization/src/test/java/edu/uci/ics/jung/visualization/BasicVisualizationServerTest.java modified: jung-visualization/src/test/java/edu/uci/ics/jung/visualization/control/TestCrossoverScalingControl.java

    opened by tomnelson 11
  • problems with sample code

    problems with sample code

    • ShowLayouts, SubLayoutDemo don’t work (layout creation needs refactoring as with VertexCollapseDemoWithLayouts)
    • TwoModelDemo is busted (NPE in BasicEdgeRenderer.paintEdge; GraphicsDecorator is null)
    • VertexCollapseDemo is busted (attempts to reuse an edge object already in use)
    • GraphEditorDemo
      • parallel edges not rendering as parallel (strangely, edge labels appear to be OK)
      • failed edges (dragged edges whose release point is not on a node) are not being cleared
    opened by jrtom 11
  • fix flaky test(testDAG) under TestMinimumSpanningTree

    fix flaky test(testDAG) under TestMinimumSpanningTree

    Hi, edu.uci.ics.jung.algorithms.shortestpath.TestMinimumSpanningTree.testDAG is expressing a non-deterministic behavior under NonDex(https://github.com/TestingResearchIllinois/NonDex), because MinimumSpanningTree is using hashset & hashmap for implementation. Thus the fix would be replacing hash-components with tree-components, which ensure the deterministic order. Please let me know if there are any problems or you want to discuss more about this fix.

    opened by SpiceOwlf 5
  • Fixed flaky test in mst

    Fixed flaky test in mst

    The problem comes from the implementation of Minimum spanning tree rather than MutableNetwork, i.e., the implementation of MutatableNetwork is free from generating flaky results. In the implementation of Minimum spanning tree, nodes and node data are stored in hashset and hashmap before processing, where both data structures have indeterministic ordering of their member data. Thus, although graph.edges() will return all edges in a graph, they are likely to have different ordering depending on different test iterations and causing assertEqual to fail sometimes and produces flaky test.

    Thus, the proposed fix replaces hashSet and hashMap with TreeSet and TreeMap, where the ordering of elements are deterministic.

    Another possible way is to adjust the minimum spanning tree test, where the test ignores the ordering and only checks whether elements are present in both graph (possiblt using containsInAnyOrder). But it might be a less ideal solution and having fixed ordering of edges and nodes is more stable.

    Additional test is provided for minimum spanning tree. More tests for ValueGraph can be added for more coverage.

    Fixes issue #256.

    opened by sliu-UIUC 1
  • [jung-algorithm]: Flaky results from minimum spanning tree implementation.

    [jung-algorithm]: Flaky results from minimum spanning tree implementation.

    In TestMinimumSpanningTree",testDAGproduces flaky results that failed the Nondex test. Specifically,assertEquals(graph.edges(), mst.edges());` is indeterministic and and fails occasionally. A possible fix would be to change data structures to deterministic ones in the mst implementation.

    Here is one of the bug report generated by the Nondex test: (all failures come from the same line of code)

    Results :
    
    Failed tests:   testDAG(edu.uci.ics.jung.algorithms.shortestpath.TestMinimumSpanningTree): expected:<[0, 1]> but was:<[]>
    
    Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
    
    INFO: Surefire failed when running tests for yK9tofntn8W0FBUjSzlWEkeeZ+qWFkXW+I8mhwbvb7M=
    INFO: Adding excluded groups to newly created one
    INFO: Creating new argline for Surefire
    CONFIG: nondexFilter=.*
    nondexMode=FULL
    nondexSeed=1016066
    nondexStart=0
    nondexEnd=9223372036854775807
    nondexPrintstack=false
    nondexDir=/home/shiyul3/myFix/jung/jung-algorithms/.nondex
    nondexJarDir=/home/shiyul3/myFix/jung/jung-algorithms/.nondex
    nondexExecid=GTe7xXta62Ld4WZGJfXJ4MDtyuHMfuT9dQlm4B6w49Q=
    nondexLogging=CONFIG
    test=
    [INFO] Surefire report directory: /home/shiyul3/myFix/jung/jung-algorithms/.nondex/GTe7xXta62Ld4WZGJfXJ4MDtyuHMfuT9dQlm4B6w49Q=
    
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Concurrency config is parallel='none', perCoreThreadCount=true, threadCount=2, useUnlimitedThreads=false
    Running edu.uci.ics.jung.algorithms.shortestpath.TestMinimumSpanningTree
    Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.103 sec <<< FAILURE!
    testDAG(edu.uci.ics.jung.algorithms.shortestpath.TestMinimumSpanningTree)  Time elapsed: 0.002 sec  <<< FAILURE!
    junit.framework.AssertionFailedError: expected:<[0, 1]> but was:<[0]>
            at junit.framework.Assert.fail(Assert.java:57)
            at junit.framework.Assert.failNotEquals(Assert.java:329)
            at junit.framework.Assert.assertEquals(Assert.java:78)
            at junit.framework.Assert.assertEquals(Assert.java:86)
            at junit.framework.TestCase.assertEquals(TestCase.java:253)
            at edu.uci.ics.jung.algorithms.shortestpath.TestMinimumSpanningTree.testDAG(TestMinimumSpanningTree.java:32)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at junit.framework.TestCase.runTest(TestCase.java:176)
            at junit.framework.TestCase.runBare(TestCase.java:141)
            at junit.framework.TestResult$1.protect(TestResult.java:122)
            at junit.framework.TestResult.runProtected(TestResult.java:142)
            at junit.framework.TestResult.run(TestResult.java:125)
            at junit.framework.TestCase.run(TestCase.java:129)
            at junit.framework.TestSuite.runTest(TestSuite.java:252)
            at junit.framework.TestSuite.run(TestSuite.java:247)
            at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
            at org.junit.runners.Suite.runChild(Suite.java:128)
            at org.junit.runners.Suite.runChild(Suite.java:27)
            at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
            at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
            at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
            at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
            at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
            at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
            at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
            at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
            at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:62)
            at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:139)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
            at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
            at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
            at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
            at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
    
    opened by sliu-UIUC 0
  • [jung-visualization] AbstractGraphMousePlugin, AbstractPopupGraphMousePlugin and deprecated getModifiers()

    [jung-visualization] AbstractGraphMousePlugin, AbstractPopupGraphMousePlugin and deprecated getModifiers()

    Hi all, I'm working on the migration to Java 11 of a project that uses Jung heavily. I've stumbled to some code that extends AbstractPopupGraphMousePlugin and depends on AbstractGraphMousePlugin. the pop-up plugins uses MouseEvent.BUTTON3_MASK, while its super-class uses MouseEvent.getModifiers() (in checkModifiers()). Both those elements have been deprecated in Java 9 and I'm concerned they'll be removed sooner than later.

    My questions is: Are there plans to upgrade Jung? Do you have a timeline for it?

    opened by marco-brandizi 0
  • Question: version 2.1.1 vs current snapshot

    Question: version 2.1.1 vs current snapshot

    Hi!

    First, thanks for the great library!

    Jung 2.1.1 was released on Sep 7, 2016 and since then a lot of new code was committed. For a new project, is it preferable to stick to the official 2.1.1 release or use the snapshot version? (for production usage, where quality is important).

    Also, are there any plans for the next official release?

    Thanks and keep up the good work! Eli

    opened by parubok 2
  • Fix problem with line endings not being normalised when cloning a fresh copy of JUNG

    Fix problem with line endings not being normalised when cloning a fresh copy of JUNG

    In https://github.com/jrtom/jung/issues/236, @wumpz reported a problem where, if I understand correctly, Spotless and Git don't agree on what sort of line endings they should both use; Git thinks it should use auto line endings, according to our .gitattributes, but Spotless seems to think otherwise?

    @wumpz Would you mind either confirming my understanding or clarifying what I've misunderstood?

    Regardless, there are two possible solutions that come to mind:

    1. Upgrade Spotless to the latest version, in the hope that it recognises GIT_ATTRIBUTES by default.

    2. Tell both Git and Spotless to consistently use some sort of line ending, like Unix LF.

    opened by jbduncan 12
Releases(jung-2.1.1)
  • jung-2.1.1(Sep 7, 2016)

    This is primarily a bugfix release based on v2.1; with one minor exception there are no new features here.

    Bug fixes:

    • Barabasi-Albert random graph generator fixed to work properly for undirected graphs (#55)
    • BasicVisualizationServer now correctly initializes its PluggableRendererContext for all constructors (#45)
    • BasicEdgeLabelRenderer (and elsewhere) fixed to not provide a null graph to the parallel edge indexer (#47, #50)
    • Lattice2DGenerator.getRow() logic fixed (#54)
    • OrderedKAryTree.getSource() bug fixed (#56)
    • Maven dependencies cleaned up (#57, #62)

    New feature:

    • GraphMLReader2 now has an InputStream constructor, which allows it to handle different character sets (#46, discussion in #47)

    Thanks to those who spotted, reported, and provided fixes for these bugs, including @dominic-jones, @takanori-ugai, @rondicus, @JMMarchant, @shatu, and @mletenay.

    Source code(tar.gz)
    Source code(zip)
  • jung-2.1(Mar 19, 2016)

    Highlights:

    • GitHub is now the new home of JUNG. You can continue to find versions of JUNG prior to 2.1 at SourceForge, but no new versions will be released there. Now that it is easier to review
    • The commons-collections-generics library dependency has been replaced with Guava v19. This change is not backwards-compatible with existing code. It was necessary because of a security issue, but we also decided that Guava was a much better library to depend on in future for a variety of reasons (some of which will become apparent in future JUNG releases).
    • As of this version, JUNG now depends on Java v1.6 (up from 1.5).
    • The matrix-related code has been removed, and with it the dependency on Colt.
    • The (now unnecessary) woodstox dependency has been removed.
    • JUNG now uses Travis to ensure that new code builds correctly before it is merged into the master branch.
    • Everyone's favorite trivial change: the Maven artifact ID for JUNG is now jung, not jung2.

    Many thanks to @cgruber for his help in getting the release and testing machinery in place.

    In terms of interfaces, the replacement of commons-collections with Guava has the following user-visible effects:

    • Predicate -> Predicate
    • Factory -> Supplier
    • Transformer -> Function

    There are also (of course) many internal changes related to this replacement, e.g.

    • ChainedTransformer -> Functions.compose()
    • Buffer, UnboundedFifoBuffer -> Queue, LinkedList
    • BidiMap -> BiMap

    (Note that some of the method signatures on these interfaces are different, e.g., Predicate.evaluate() -> Predicate.apply().)

    Bug fixes:

    • Fixed path problem in TestGraphMLReader.java

    General:

    • Replaced uses of assert with Preconditions checks.
    • Updated a lot of Javadoc to be standards-compliant with the latest formatter expectations.
    • Removed some dead code.
    • Replaced (almost all) uses of MapMaker with LoadingCache/CacheBuilder/CacheLoader
    • StructurallyEquivalent: renamed canPossiblyCompare() to canBeEquivalent
    • PajekNetIOTest: fixed a bug (improper use of RandomLocationTransformer)
    • `MixedRandomGraphGenerator: removed unused ‘parallel’ param
    • AggregateLayout: made isLocked() and done() more efficient (early exit)
    • DAGLayout: setRoot(): removed unused ‘g’ param
    • MinimumSpanningForest: converted internal Map to Function
    • ConstantMap: no longer used, removed
    • DiscreteDistribution: replaced checkLengths() by Preconditions.checkArgument() calls
    • MapBinaryHeap: removed deprecated pop() method
    • WeakComponentClustererTest, TestKStepMarkov, TestBetweennessCentrality, TestImageShaper: commented out println() (note: these tests are not actually testing anything :P)
    • TreeUtils: removed commented-out mergeForests(), addChildrenToForest()
    • ToStringLabeller(): removed unnecessary type parameter
    • DefaultVertexIconTransfomer: no longer needed, removed
    • PluggableRendererDemo: removed unnecessary/unused guacamole in Seed{Draw,Fill}Color inner classes
    • FourPassImageShaper: mostly refactored into ImageShapeUtils
    • ClassicPickSupport: removed, no longer needed
    • SpatialRectangle: removed, not used
    • commented out a few System.out.println instances
    • removed a few unused parameters
    • fixed a lot of compilation warnings (missing generic types, etc.)
    Source code(tar.gz)
    Source code(zip)
Owner
Joshua O'Madadhain
Joshua O'Madadhain
Library for helping mods that use graph networks, like Wired Redstone

GraphLib Library for helping mods that use graph networks, like Wired Redstone. GraphLib and HCTM-Base This library is based on HCTM-Base by 2xsaiko a

Data 6 Nov 5, 2022
A little helper to complete homework #4 "Graph planarization" in discrete mathematics at ITMO University in the second semester.

graph_planarization A little helper to complete homework #4 "Graph planarization" in discrete mathematics at ITMO University in the second semester. A

Daria Starikova 9 Dec 8, 2022
NMCN(Niche Multi Channel Network),小眾多頻道網絡,是「同和新媒體矩陣」創始團隊於輿論資本全球化背景下率先提出的一種非營利性的去中心化自媒體聯盟形式,通過聯盟內創作單位的交流互推、共享資源等方式對抗資本侵蝕,在產出卓越作品的同時保障亞文化生存空間,為守護寶貴的非物質文化遺產盡綿薄之力。

同和新媒體矩陣 文檔 • 發布會 • 如何使用 • 素材矩陣示例站 • 視頻矩陣示例站 • 人脈矩陣demo 自媒體大航海時代,五大矩陣領航 同和新媒體矩陣是什麼? 我們旨在通過IT/互聯網+技術手段,為處於自媒體大航海時代的中小型創作者提供高效和去中心化的創作輔助服務,這些服務包括素材處理、信息分

同和君Hocassian 151 Dec 22, 2022
A group of neural-network libraries for functional and mainstream languages

Synapses A group of neural-network libraries for functional and mainstream languages! Choose a programming language: Clojure C# Elixir F# Gleam Java J

Dimos Michailidis 65 Nov 9, 2022
An Engine-Agnostic Deep Learning Framework in Java

Deep Java Library (DJL) Overview Deep Java Library (DJL) is an open-source, high-level, engine-agnostic Java framework for deep learning. DJL is desig

Amazon Web Services - Labs 2.9k Jan 7, 2023
Datumbox is an open-source Machine Learning framework written in Java which allows the rapid development of Machine Learning and Statistical applications.

Datumbox Machine Learning Framework The Datumbox Machine Learning Framework is an open-source framework written in Java which allows the rapid develop

Vasilis Vryniotis 1.1k Dec 9, 2022
Java Exp FrameWork

Exp Poc框架并不少,TangScan、Pocsuite 等等,用python写一个其实是很简单的事情。为什么要重复造这个轮子呢? 看过不少漏洞了,差不多都是本地很杂乱的存放poc,很多语言都有,而且大多数poc也只能弹个计算器而已.....所以很早就想拥有一个属于自己的统一存放Exp的地方,也

Skay 100 Oct 9, 2022
An Engine-Agnostic Deep Learning Framework in Java

Deep Java Library (DJL) Overview Deep Java Library (DJL) is an open-source, high-level, engine-agnostic Java framework for deep learning. DJL is desig

DeepJavaLibrary 2.9k Jan 7, 2023
Model import deployment framework for retraining models (pytorch, tensorflow,keras) deploying in JVM Micro service environments, mobile devices, iot, and Apache Spark

The Eclipse Deeplearning4J (DL4J) ecosystem is a set of projects intended to support all the needs of a JVM based deep learning application. This mean

Eclipse Foundation 12.7k Dec 30, 2022
A powerful, extendable, flexible yet simple to use commands annotation framework.

Lamp Background Building commands has always been a core concept in many applications, and, lots of times, a really boring and cumbersome one to pull

Revxrsal 95 Jan 5, 2023
Java Statistical Analysis Tool, a Java library for Machine Learning

Java Statistical Analysis Tool JSAT is a library for quickly getting started with Machine Learning problems. It is developed in my free time, and made

null 752 Dec 20, 2022
Hierarchical Temporal Memory implementation in Java - an official Community-Driven Java port of the Numenta Platform for Intelligent Computing (NuPIC).

htm.java Official Java™ version of... Hierarchical Temporal Memory (HTM) Community-supported & ported from the Numenta Platform for Intelligent Comput

Numenta 301 Dec 1, 2022
java deep learning algorithms and deep neural networks with gpu acceleration

Deep Neural Networks with GPU support Update This is a newer version of the framework, that I developed while working at ExB Research. Currently, you

Ivan Vasilev 1.2k Jan 6, 2023
Java version of LIBLINEAR

This is the Java version of LIBLINEAR. The project site of the original C++ version is located at http://www.csie.ntu.edu.tw/~cjlin/liblinear/ The ups

Benedikt Waldvogel 307 Dec 11, 2022
Learning Based Java (LBJava)

Learning Based Java LBJava core LBJava examples LBJava maven plugin Compiling the whole package From the root directory run the following command: Jus

CogComp 12 Jun 9, 2019
Kodlama IO | JAVA & REACT Projects

Human Resources Management System Creating a human resources system using Java-SpringBoot that can be used by employers, job seekers and system person

Aykut Şahin 23 Oct 19, 2022
An Open Source Java Library for the Rubiks Cube!

?? Table of contents Overview What is Cubot? Why would you want it? Documentation Installation Updates ?? Overview A Java library to help you : Virtua

Akshath Raghav 13 Oct 17, 2022
A Simple movies app using JAVA,MVVM and with a offline caching capability

IMDB-CLONE A simple imdb clone using JAVA,MVVM with searching and bookmarking ability with offline caching ability screenshots Home Screen 1 Home Scre

saiteja janjirala 13 Aug 16, 2022