use of edu.uci.ics.jung.graph.Edge in project tdq-studio-se by Talend.
the class MyFirstMain method run.
public void run(final GraphBuilder graphbuilder) {
Graph graph = graphbuilder.createMultiGraph(allData);
PluggableRenderer pr = new PluggableRenderer();
vv = new VisualizationViewer(new FRLayout(graph), pr);
// vv = new VisualizationViewer(new CircleLayout(graph), pr);
// vv = new VisualizationViewer(new SpringLayout(graph), pr);
// vv = new VisualizationViewer(new KKLayout(graph), pr);
vv.setBackground(Color.white);
vv.setPickSupport(new ShapePickSupport());
pr.setEdgeShapeFunction(new EdgeShape.Line());
vv.addPostRenderPaintable(new VisualizationViewer.Paintable() {
int x;
int y;
Font font;
FontMetrics metrics;
int swidth;
int sheight;
String str = "My first Demo";
public void paint(Graphics g) {
Dimension d = vv.getSize();
if (font == null) {
font = new Font(g.getFont().getName(), Font.BOLD, 30);
metrics = g.getFontMetrics(font);
swidth = metrics.stringWidth(str);
sheight = metrics.getMaxAscent() + metrics.getMaxDescent();
x = (d.width - swidth) / 2;
y = (int) (d.height - sheight * 1.5);
}
g.setFont(font);
Color oldColor = g.getColor();
g.setColor(Color.DARK_GRAY);
g.drawString(str, x, y);
g.setColor(oldColor);
}
public boolean useTransform() {
return false;
}
});
pr.setVertexPaintFunction(new VertexPaintFunction() {
public Paint getFillPaint(Vertex v) {
final Object userDatum = v.getUserDatum(GraphBuilder.COLUMN_IDX_KEY);
if (userDatum != null) {
Integer colIndex = (Integer) userDatum;
return AWTColorUtils.getColor(colIndex);
}
return null;
}
public Paint getDrawPaint(Vertex v) {
return Color.BLACK;
}
});
pr.setVertexStringer(new VertexStringer() {
public String getLabel(ArchetypeVertex v) {
final Object userDatum = v.getUserDatum(GraphBuilder.V_LABEL_KEY);
if (userDatum != null) {
return (String) userDatum;
}
return null;
}
});
pr.setEdgeStrokeFunction(new EdgeStrokeFunction() {
public Stroke getStroke(Edge e) {
Integer weight = graphbuilder.getEdgeWeight().getNumber(e).intValue();
// return new BasicStroke(10 * weight / graphbuilder.getTotalWeight());
return new BasicStroke(10.0f / weight);
}
});
pr.setEdgePaintFunction(new EdgePaintFunction() {
public Paint getFillPaint(Edge e) {
return null;
}
public Paint getDrawPaint(Edge e) {
return getInternalPaint(e);
}
private Paint getInternalPaint(Edge e) {
final Object userDatum = e.getUserDatum(GraphBuilder.E_ROWNUM_KEY);
if (userDatum != null) {
Integer color = (Integer) userDatum;
return AWTColorUtils.getColor(color);
}
return Color.GRAY;
}
});
pr.setEdgeStringer(new EdgeStringer() {
public String getLabel(ArchetypeEdge arg0) {
return String.valueOf(graphbuilder.getEdgeWeight().getNumber(arg0));
// final Object userDatum = arg0.getUserDatum(GraphBuilder.E_LABEL_KEY);
// if (userDatum != null) {
// return (String) userDatum;
// }
// return null;
}
});
// vv.addGraphMouseListener(new TestGraphMouseListener());
// add my listener for ToolTips
vv.setToolTipFunction(new DefaultToolTipFunction());
// create a frome to hold the graph
final JFrame frame = new JFrame();
Container content = frame.getContentPane();
final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv);
content.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final GraphMouse graphMouse = new DefaultModalGraphMouse();
vv.setGraphMouse(graphMouse);
JMenuBar menu = new JMenuBar();
menu.add(((DefaultModalGraphMouse) graphMouse).getModeMenu());
panel.setCorner(menu);
final ScalingControl scaler = new CrossoverScalingControl();
JButton plus = new JButton("+");
plus.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
scaler.scale(vv, 1.1f, vv.getCenter());
}
});
JButton minus = new JButton("-");
minus.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
scaler.scale(vv, 1 / 1.1f, vv.getCenter());
}
});
JButton reset = new JButton("reset");
reset.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
vv.getLayoutTransformer().setToIdentity();
vv.getViewTransformer().setToIdentity();
}
});
JPanel controls = new JPanel();
controls.add(plus);
controls.add(minus);
controls.add(reset);
content.add(controls, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
use of edu.uci.ics.jung.graph.Edge in project tdq-studio-se by Talend.
the class GraphBuilder method createVertices.
/**
* DOC scorreia Comment method "createVertices".
*
* @param key2Vertex
* @param toEdge
* @param row
* @param rowIdx
* @return
*/
private Vertex[] createVertices(Map<MultipleKey, Vertex> key2Vertex, Map<MultipleKey, Edge> toEdge, Object[] row, int rowIdx) {
// last column is the result of count(*)
final int nbNominalColumn = row.length - 1;
// vertices in one row
Vertex[] verticesInRow = new Vertex[nbNominalColumn];
for (int colIdx = 0; colIdx < nbNominalColumn; colIdx++) {
final Object value = row[colIdx];
Object[] key = { value, String.valueOf(colIdx) };
MultipleKey mulkey = new MultipleKey(key, 2);
// search for already created vertex
Vertex myVertex = key2Vertex.get(mulkey);
// create the new vertex
if (myVertex == null) {
myVertex = newVertex(key2Vertex, colIdx, value, mulkey);
vertexWeight.setNumber(myVertex, getIntegerValue(row[nbNominalColumn]));
} else {
// existing vertex
vertexWeight.setNumber(myVertex, vertexWeight.getNumber(myVertex).intValue() + getIntegerValue(row[nbNominalColumn]));
}
verticesInRow[colIdx] = myVertex;
}
for (int i = 0; i < verticesInRow.length; i++) {
Vertex vi = verticesInRow[i];
for (int j = 0; j < i; j++) {
Vertex vj = verticesInRow[j];
MultipleKey mulkey = new MultipleKey(new Object[] { vi, vj }, 2);
Edge edge = toEdge.get(mulkey);
if (edge == null) {
// either allow parallel edges or avoid create a new edge when it already exists
edge = newEdge(row, rowIdx, nbNominalColumn, vi, vj);
toEdge.put(mulkey, edge);
} else {
updateEdge(edge, row, rowIdx, nbNominalColumn, vi, vj);
}
}
}
return verticesInRow;
}
use of edu.uci.ics.jung.graph.Edge in project tdq-studio-se by Talend.
the class GraphBuilder method newEdge.
/**
* DOC scorreia Comment method "newEdge".
*
* @param row
* @param rowIdx
* @param countColumnIndex
* @param vertexFrom
* @param vertexTo
* @return
*/
private Edge newEdge(Object[] row, int rowIdx, final int countColumnIndex, Vertex vertexFrom, Vertex vertexTo) {
final Edge edge = graph.addEdge(new UndirectedSparseEdge(vertexFrom, vertexTo));
// $NON-NLS-1$
String fullRow = StringUtils.join(row, " , ");
edge.addUserDatum(GraphBuilder.E_ROWNUM_KEY, rowIdx, UserData.CLONE);
// TODO remove this line ?
edge.addUserDatum(GraphBuilder.E_WEIGHT_KEY, getIntegerValue(row[countColumnIndex]), UserData.CLONE);
edge.addUserDatum(E_LABEL_KEY, fullRow, UserData.SHARED);
edgeWeight.setNumber(edge, getIntegerValue(row[countColumnIndex]));
return edge;
}
Aggregations