You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.8 KiB
Java

package de.unibremen.informatik.hets.protege;
import java.io.File;
import de.unibremen.informatik.hets.graphviz.Graph;
import de.unibremen.informatik.hets.graphviz.DotGraphLayoutEngine;
import de.unibremen.informatik.hets.graphviz.NodeRenderer;
import de.unibremen.informatik.hets.graphviz.EdgeRenderer;
import de.unibremen.informatik.hets.graphviz.Node;
import de.unibremen.informatik.hets.graphviz.Edge;
import org.protege.editor.core.ui.view.ViewComponent;
import javax.swing.*;
import java.awt.*;
public class HetsVizView extends ViewComponent {
Graph g;
@Override
public void initialise() throws Exception {
}
@Override
public void dispose() throws Exception {
}
public void setDot(File file) {
DotGraphLayoutEngine engine = new DotGraphLayoutEngine();
g = engine.layoutGraph(file);
}
protected void paintComponent(Graphics graphics) {
super.paintComponent(graphics);
Graphics2D g2 = (Graphics2D) graphics;
Shape clip = g2.getClip();
g2.setColor(Color.WHITE);
g2.fill(clip);
g2.scale(1.0, 1.0);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
if (g == null) {
return;
}
NodeRenderer noderenderer = new NodeRenderer();
EdgeRenderer edgerenderer = new EdgeRenderer();
Dimension size = new Dimension();
Node[] nodes = g.getNodes();
for (int i = 0; i < nodes.length; i++) {
noderenderer.getPreferredSize(nodes[i], size);
nodes[i].setSize(size.width, size.height);
noderenderer.renderNode(g2, nodes[i], true, true);
}
Edge[] edges = g.getEdges();
for (int i = 0; i < edges.length; i++) {
edgerenderer.renderEdge(g2, edges[i], true, true);
}
}
}