JGraphX - Library for visualizing (mainly Swing) and interacting with node-edge graphs.

Related tags

Science jgraphx
Overview

JGraphX

This project is end of life.

We don't properly support Maven or publish to Maven Central. If that's an issue, use https://github.com/vlsi/jgraphx-publish

JGraphX is a Java Swing diagramming (graph visualisation) library licensed under the BSD license. Although, the package names use that of 'mxGraph', this library is not called mxGraph. mxGraph is the JavaScript diagramming library - https://github.com/jgraph/mxgraph.

It was originally named JGraph through versions 1-5, this technically is version 6, but we changed the name to reflect the fact that the entire codebase and API was rewritten from scratch.

JGraphX provides functionality for visualisation and interaction with node-edge graphs (not charts). Example applications that you might write with it are a workflow editor, an organisational chart, a business process modelling tool, a UML tool, an electronic circuit diagrammer, network/telecoms visualisation (you get the idea, things with nodes and edges that connect those nodes, a mathematical graph).

JGraphX also includes functionality like XML stencils support, various import/export and layouting (automatically node/edge positioning).

Each tag in github creates a downloadable file at https://github.com/jgraph/jgraphx/tags. Older versions are at https://www.jgraph.com/jgraphdownload.html.

There is a user manual https://jgraph.github.io/mxgraph/docs/manual_javavis.html that explains the basic architecture.

There are various examples, https://github.com/jgraph/jgraphx/tree/master/examples/com/mxgraph/examples/swing, from the usual HelloWorld to a more complete application example called GraphEditor.

There's also the API specifications at https://jgraph.github.io/mxgraph/java/docs/index.html

There is a 'jgraphx' tag on Stackoverflow - https://stackoverflow.com/questions/tagged/jgraphx, but please ensure you understand the SO FAQ and posting guidelines prior to posting. To post on SO you must 1) have a question , 2) that question be programming related and 3) use the 'jgraphx' tag.

Comments
  • Maven POM improvements

    Maven POM improvements

    Fixes the exclusion filter, so that the java files are not included in the main jar. Added a sources jar generation. Fixed formatting (mixed spaces and tabs -> tabs). Specified plugin versions for a repeatable build. Optional javadoc generation (by an explicit mvn javadoc:jar command). Added a .gitignore for Maven/Eclipse output & Eclipse project files.

    opened by VsevolodGolovanov 10
  • Migrate build to Maven and add Travis

    Migrate build to Maven and add Travis

    I've migrated build to Maven, and added Travis configuration. I've removed doc/api and lib. lib/jgraphx.jar can be shared via Maven Central. javadoc could be served either via Maven Central (regular javadoc integration in IDEs) or via separate branch.

    Note: maven coordinates are com.github.vlsi.mxgraph:* as I'm testing it via my own account. Note: readme should be improved to account maven build instructions, release instructions, example execution instructions.

    You can see Travis CI here: https://travis-ci.org/vlsi/jgraphx (current javadoc fails under java 8)

    opened by vlsi 6
  • Added maven related targets in ant build

    Added maven related targets in ant build

    Add targets to create artifacts, install them to local repository and deploy them to remote repository. Those targets are not called by the default build.

    Requires Maven Ant Task (http://maven.apache.org/ant-tasks/), copy maven-ant-task jar in lib directory of Ant installation.

    opened by Toilal 3
  • Assign an Automatic-Module-Name

    Assign an Automatic-Module-Name

    This adds an Automatic-Module-Name entry with value com.mxgraph.jgraphx to the jar manifest. This provides a stable name upon which Java 9 modules can depend in modular projects.

    See http://blog.joda.org/2017/05/java-se-9-jpms-automatic-modules.html

    Fix #91

    opened by io7m 2
  • Log, don't suppress silently

    Log, don't suppress silently

    This builds on top of https://github.com/jgraph/jgraphx/pull/82 Adds more logging with adequate levels. We're using the build with these changes in a server environment, it's fine - it doesn't spam the log or something. Also tested with the java GraphEditor example, it's fine too.

    opened by VsevolodGolovanov 2
  • Image shape style that uses an image loaded in memory, instead of reading it from an image path.

    Image shape style that uses an image loaded in memory, instead of reading it from an image path.

    Added a shape style called mxLoadedImageShape, that allows the use of an image that is loaded into memory. Instead of mxImageShape, which requires the path to an image stored on file.

    opened by affogato 2
  • Adding the double rectangle shape element.

    Adding the double rectangle shape element.

    Hey guys,

    What's up. I did a minor contribution adding a new graphical shape (double rectangle). I did it because I need in my project. Please take my contribution if you think it is interesting.

    Cheers Anderson

    opened by andymarinho 2
  • fixes #101 NullPointerException in mxCellRenderer.java

    fixes #101 NullPointerException in mxCellRenderer.java

    The Nullpointer also happens in other cases. To trace it checking the canvas to be null is a first start to have a handle for debugging and be able to work on the problem in surrounding code without having to catch a NullPointer Exception. The check for the svgdoc to be null seems more appropriate to me.

    opened by WolfgangFahl 1
  • Fix issue #71 (endless loop in mxHierarchicalLayout)

    Fix issue #71 (endless loop in mxHierarchicalLayout)

    Changes were ported from mxgraph/javascript/src/js/layout/hierarchical/mxHierarchicalLayout.js. I don't really understand this layouting algorithm, so please double-check my code.

    Fix is mainly located in traverse function, but I also found a difference in filterDescendants function between Java and JS versions.

    You can find sample XML graphs that are causing endless loop in issue #71 description

    opened by vpanfilov 1
  • Parse Dash Pattern

    Parse Dash Pattern

    I'd like to validate a dash pattern that I'm giving to JGraph, and it makes most sense for this validation to be done inside JGraph in case the number separator (currently space) or number type (currently float) changes in the future (the former is not available as a style constant).

    It looks like com.mxgraph.canvas.mxGraphics2DCanvas could also be refactored to use this mxUtils.parseDashPattern https://github.com/jgraph/jgraphx/blob/774aa8d63b178ea7995875902ac018600f4e554f/src/com/mxgraph/canvas/mxGraphics2DCanvas.java#L518 https://github.com/jgraph/jgraphx/blob/774aa8d63b178ea7995875902ac018600f4e554f/src/com/mxgraph/canvas/mxGraphicsCanvas2D.java#L355

    I was not sure what behavior mxUtils.parseDashPattern should take on when the dash pattern string is null or empty string, whether it return the JGraph default dash pattern (https://github.com/jgraph/jgraphx/blob/1c4000edd211923136ea4f11e8554ed1696cc030/src/com/mxgraph/canvas/mxGraphicsCanvas2D.java#L1650), an empty float array, null, or throw an exception.

    opened by onealj 1
  • fix mvn test

    fix mvn test

    I am sorry I did not test my changes from the command line. Since jgraphx uses a non standard source directory "src" instead of "src/main/java" it is not possible to keep the test sources under the standard "src/test/java" - i have moved them to test/java instead and added the directory declaration in the pom file. Also the test case would fail with the null assignment - since that is only a workaround I made it succeed for the time being until the underlying problem is really fixed.

    This pull request is based on the original master i forked from i do not know whether you can merge it directly. Please let me know if i should update my fork for a pull request that only has the differences to the already merged version.

    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running com.mxgraph.util.TestMxCellRenderer
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.508 sec
    
    Results :
    
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    
    opened by WolfgangFahl 0
Owner
JGraph
JGraph specialises in browser-based diagramming components and applications.
JGraph
Java dataframe and visualization library

Tablesaw Overview Tablesaw is Java for data science. It includes a dataframe and a visualization library, as well as utilities for loading, transformi

Tablesaw 3.1k Jan 7, 2023
A scientific charting library focused on performance optimised real-time data visualisation at 25 Hz update rates for data sets with a few 10 thousand up to 5 million data points.

ChartFx ChartFx is a scientific charting library developed at GSI for FAIR with focus on performance optimised real-time data visualisation at 25 Hz u

GSI CS-CO/ACO 386 Jan 2, 2023
The Next Generation Logic Library

Introduction LogicNG is a Java Library for creating, manipulating and solving Boolean and Pseudo-Boolean formulas. It includes 100% Java implementatio

LogicNG 103 Nov 19, 2022
The foundational library of the Morpheus data science framework

Introduction The Morpheus library is designed to facilitate the development of high performance analytical software involving large datasets for both

Zavtech Systems 226 Dec 20, 2022
XChart is a light-weight Java library for plotting data.

XChart XChart is a light weight Java library for plotting data. Description XChart is a light-weight and convenient library for plotting data designed

Knowm 1.3k Dec 26, 2022
modular and modern graph-theory algorithms framework in Java

Erdos is a very light, modular and super easy to use modern Graph theoretic algorithms framework for Java. It contains graph algorithms that you can a

Erdos 111 Aug 14, 2022
Tank - a beginner-friendly, fast, and efficient FTC robot framework

Tank beta a beginner-friendly, fast, and efficient FTC robot framework Overview tank is a FTC robot framework designed to be beginner-friendly, fast,

Aarush Gupta 1 Jan 8, 2022
One file java script for visualizing JDK flight recorder execution logs as flamegraphs without any dependencies except Java and a browser.

Flamegraph from JFR logs Simple one file Java script to generate flamegraphs from Java flight recordings without installing Perl and the Brendan Gregg

Billy Sjöberg 17 Oct 2, 2022
DB3 class for interacting with postgresql database

DatabaseDB3 - class for interacting with psql database in DB3 scripts database table should use username as the primary key and should be named "main"

Amo3 1 Aug 6, 2022
A small mod to improve support for architectures and libraries officially unsupported by Minecraft. Mainly targeting Apple Macs using arm processors.

fabric-loom-native-support A small mod to improve support for architectures and libraries officially unsupported by Minecraft. Mainly targeting Apple

FabricMC 5 Oct 17, 2022
Bukkit transaction API for predicting when a server packet arrives at a client. Mainly intended for use in Minecraft anticheats.

Pledge A high performance and lightweight Bukkit packet tracking API for predicting when a server packet arrives at a client using transactions. Mainl

Thomazz 32 Dec 1, 2022
The Apache Software Foundation 605 Dec 30, 2022
A simple configuration library for Java applications providing a node structure, a variety of formats, and tools for transformation

Configurate Configurate is a simple configuration library for Java applications that provides a node-based representation of data, able to handle a wi

SpongePowered 274 Jan 3, 2023
Utilizando do Java swing e do banco de dados MySQL, criei esse projeto com intuito de práticar a conexão do Java com MySQL e as janelas do Java swing

MeusCursos.com Meu primeiro projeto sozinho Utilizando do Java swing e do banco de dados MySQL, criei esse projeto com intuito de práticar a conexão d

João Vitor Ferreira Peixoto 1 Apr 2, 2022
Anthos Edge Use Cases for bringing apps and computation closer to the location where the action is, to improve response times and save bandwidth.

Anthos Bare Metal Edge Use Cases Edge computing is a distributed computing paradigm that brings computation and data storage closer to the location wh

Google Cloud Platform 27 Dec 20, 2022
A Toolkit for Modeling and Simulation of Resource Management Techniques in Internet of Things, Edge and Fog Computing Environments

The iFogSimToolkit (with its new release iFogSim2) for Modeling and Simulation of Resource Management Techniques in Internet of Things, Edge and Fog Computing Environments. In the new release Mobili Management, Microservice Management, and Dynamic Clustering mechanisms are added as new features.

The Cloud Computing and Distributed Systems (CLOUDS) Laboratory 69 Dec 17, 2022
A JavaFX library that allows Java2D code (Graphics2D) to be used to draw to a Canvas node.

FXGraphics2D Version 2.1, 3 October 2020. Overview FXGraphics2D is a free implementation of Java's Graphics2D API that targets the JavaFX Canvas. It m

David Gilbert 184 Dec 31, 2022
Koios Java Client Library is based on Koios Elastic Query Layer for Cardano Node by Cardano Community Guild Operators

Koios Java Client What is Koios? Koios Java Client Library is based on Koios Elastic Query Layer for Cardano Node by Cardano Community Guild Operators

Dudi Edri 13 Dec 4, 2022
A maven plugin to include features from jmeter-plugins.org for JMeterPluginsCMD Command Line Tool to create graphs, export csv files from jmeter result files and Filter Result tool.

jmeter-graph-tool-maven-plugin A maven plugin to create graphs using the JMeter Plugins CMDRunner from JMeter result files (*.jtl or *.csv) or using F

Vincent DABURON 6 Nov 3, 2022
Let Fixture Monkey generate test instances including edge cases automatically

Fixture Monkey is designed to generate controllable arbitrary instances easily. It allows you to reuse same configurations of the instances in several tests.

NAVER 247 Jan 9, 2023