All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.uni.freiburg.iig.telematik.jagal.visualization.circle.VisualGraph Maven / Gradle / Ivy

Go to download

JAGAL provides implementations for directed graphs (weighted and unweighted) and various types of transition systems as well as utils for graph traversal and modification.

The newest version!
package de.uni.freiburg.iig.telematik.jagal.visualization.circle;



import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.Iterator;

import de.invation.code.toval.graphic.util.GraphicUtils;
import de.uni.freiburg.iig.telematik.jagal.graph.Edge;
import de.uni.freiburg.iig.telematik.jagal.graph.Vertex;
import de.uni.freiburg.iig.telematik.jagal.graph.abstr.AbstractGraph;

public abstract class VisualGraph, E extends Edge, U> extends VisualVertexSet{
		private static final long serialVersionUID = 1L;
		
		public static final short arrowHeadLength = 10;
		public static final double arrowHeadAngle = 15*Math.PI/180;
		public static final Color defaultEdgeColor = Color.black;
		public static final double defaultWeight = 1;
		
		protected AbstractGraph baseGraph = null;
		
		public VisualGraph(AbstractGraph baseGraph, Dimension dimension){
			super(baseGraph.vertexes(), dimension);
			this.baseGraph = baseGraph;
		}
		
		public VisualGraph(AbstractGraph baseGraph){
			this(baseGraph, VisualVertexSet.defaultDimension);
		}
		
		@Override
		protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			drawBaseCircle();
			paintGraph();
		}
		
		protected void drawBaseCircle(){
			getGraphics().setColor(Color.black);
			GraphicUtils.drawCircle(getGraphics(), center, diameter);
		}
		
		protected void paintGraph(){
			for(E edge: baseGraph.getEdges()){
				drawEdge(edge);
			}
			for (Iterator iter=baseGraph.vertexes().iterator(); iter.hasNext();){
				drawVertex(iter.next());
			}
		}
		
		@Override
		protected void drawVertex(V vertex, Color color){
			super.drawVertex(vertex, color);
			drawCaption(vertex.getElement().toString(), vertexPointMap.get(vertex));
		}
		
		protected void drawEdge(E edge){
			drawEdge(edge, defaultEdgeColor);
		}
		
		protected void drawEdge(E edge, Color color){
			drawArrow(edge.getSource(), edge.getTarget(), defaultWeight, color);
		}
		
		protected void drawArrow(V source, V target, double weight, Color color){
			Graphics g = getGraphics();
			g.setColor(color);
			GraphicUtils.drawArrowOffset(g, vertexPointMap.get(source), vertexPointMap.get(target), diameterMap.get(source), diameterMap.get(target), weight);
		}
		
	}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy