Git Product home page Git Product logo

fxgraph's Introduction

FXGraph

FXGraph is javafx graph visualizer. It's a continuation of a post I found on stackoverflow. Pull requests and feature requests are appreciated. You can find the original question here: https://stackoverflow.com/questions/30679025/graph-visualisation-like-yfiles-in-javafx

Features

  • Draggable nodes
  • Resizable nodes
  • Zooming / Panning
  • Custom nodes and edges
  • Directed and non-directed edges
  • Random layout
  • Tree layout
  • Sequence Diagram

Screenshot

Screenshot

Download

You can get it from maven central

<dependency>
	<groupId>com.sirolf2009</groupId>
	<artifactId>fxgraph</artifactId>
	<version>0.0.3</version>
</dependency>

Usage

You can look at the test classes for basic examples. The relevant code for the graph in the screenshot above is as follows

Graph graph = new Graph();
final Model model = graph.getModel();

graph.clearCanvas();

final ICell cellA = new RectangleCell();
final ICell cellB = new RectangleCell();
final ICell cellC = new RectangleCell();
final ICell cellD = new TriangleCell();
final ICell cellE = new TriangleCell();
final ICell cellF = new RectangleCell();
final ICell cellG = new RectangleCell();

model.addCell(cellA);
model.addCell(cellB);
model.addCell(cellC);
model.addCell(cellD);
model.addCell(cellE);
model.addCell(cellF);
model.addCell(cellG);

final Edge edgeAB = new Edge(cellA, cellB);
edgeAB.textProperty().set("Edges can have text too!");
model.addEdge(edgeAB);
final CorneredEdge edgeAC = new CorneredEdge(cellA, cellC, Orientation.HORIZONTAL);
edgeAC.textProperty().set("Edges can have corners too!");
model.addEdge(edgeAC);
model.addEdge(cellB, cellD);
final DoubleCorneredEdge edgeBE = new DoubleCorneredEdge(cellB, cellE, Orientation.HORIZONTAL);
edgeBE.textProperty().set("You can implement custom edges and nodes too!");
model.addEdge(edgeBE);
model.addEdge(cellC, cellF);
model.addEdge(cellC, cellG);

graph.repopulateCanvas();

graph.layout(new RandomLayout());

Or for the sequence diagram

SequenceDiagram seqDiagram = new SequenceDiagram();

ActorCell actorA = new ActorCell("Actor A", 400d);
ActorCell actorB = new ActorCell("Actor B", 400d);
ActorCell actorC = new ActorCell("Actor C", 400d);
Arrays.asList(actorA, actorB, actorC).forEach(actor -> seqDiagram.addActor(actor));

seqDiagram.addMessage(actorA, actorB, "checkEmail");
seqDiagram.addMessage(actorB, actorC, "readSavedUser");
seqDiagram.addMessage(actorC, actorB, "savedUser");
seqDiagram.addMessage(actorB, actorA, "noNewEmails");

seqDiagram.layout();

TODO

If you have a feature request, just file an issue.

  • unit tests
  • better layouts

fxgraph's People

Contributors

col-e avatar dependabot[bot] avatar octogonapus avatar ogallagher avatar sirolf2009 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

ogallagher bradh

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.