use of edu.uci.ics.jung.visualization.VisualizationViewer in project tdq-studio-se by Talend.
the class JungGraphGenerator method configureVViewer.
/**
* DOC bZhou Comment method "configureVViewer".
*
* @param vv
*/
private void configureVViewer(final VisualizationViewer vv) {
// 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());
vv.addPostRenderPaintable(new VisualizationViewer.Paintable() {
int x;
int y;
Font font;
FontMetrics metrics;
int swidth;
int sheight;
// $NON-NLS-1$
String str = PluginConstant.EMPTY_STRING;
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;
}
});
// vv.addGraphMouseListener(new TestGraphMouseListener());
// add my listener for ToolTips
vv.setToolTipFunction(new DefaultToolTipFunction());
}
use of edu.uci.ics.jung.visualization.VisualizationViewer in project tdq-studio-se by Talend.
the class JungGraphGenerator method generate.
public Composite generate(Composite parent, boolean isWithHelp) {
Composite frameComp = createAWTSWTComposite(parent);
frame = SWT_AWT.new_Frame(frameComp);
// $NON-NLS-1$
frame.setTitle(DefaultMessagesImpl.getString("JungGraphGenerator.NominalAnalysis"));
pr = new LineRender(graphbuilder);
sr = new LineRender(graphbuilder);
PersistentLayout layout = new PersistentLayoutImpl(new ISOMLayout(graph));
VisualizationModel vm = new DefaultVisualizationModel(layout);
vv = new VisualizationViewer(vm, pr);
sv = new SatelliteVisualizationViewer(vv, vm, sr, new Dimension(200, 200));
configureVViewer(vv);
// create contollers
JPanel controllers = createToolControllers(vv);
// MOD yyi 2009-09-09 feature 8834
if (this.isPreview)
controllers.setVisible(false);
JPanel panel = new GraphZoomScrollPane(vv);
if (isWithHelp) {
helpDialog = createSatelliteDialog(vv, sv);
controllers.add(createShowSatelliteCheck(helpDialog));
}
frame.add(panel);
frame.add(controllers, BorderLayout.SOUTH);
frame.validate();
addListeners();
return frameComp;
}
use of edu.uci.ics.jung.visualization.VisualizationViewer 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.visualization.VisualizationViewer in project tdq-studio-se by Talend.
the class MyFullDemoMain method startFunction.
public JPanel startFunction() {
final GraphBuilder graphBuilder = new GraphBuilder();
// getGraph();
Graph g = graphBuilder.createMultiGraph(MyFirstMain.createListObjects());
// init variables
edge_weight = graphBuilder.getEdgeWeight();
vertexWeights = graphBuilder.getVertexWeight();
final GraphRenderer graphRenderer = new GraphRenderer();
// pr = graphRenderer.createPluggableRenderer();
pr = new PluggableRenderer();
Layout layout = new FRLayout(g);
vv = new VisualizationViewer(layout, pr);
// add Shape based pick support
vv.setPickSupport(new ShapePickSupport());
PickedState picked_state = vv.getPickedState();
affineTransformer = vv.getLayoutTransformer();
// create decorators
vcf = new SeedColor(picked_state);
ewcs = new EdgeWeightStrokeFunction(edge_weight);
vsh = new VertexStrokeHighlight(picked_state);
ff = new FontHandler();
vs_none = new ConstantVertexStringer(null);
es_none = new ConstantEdgeStringer(null);
vssa = new VertexShapeSizeAspect(vertexWeights);
show_edge = new DirectionDisplayPredicate(true, true);
show_arrow = new DirectionDisplayPredicate(true, false);
show_vertex = new VertexDisplayPredicate(false);
// uses a gradient edge if unpicked, otherwise uses picked selection
edgePaint = new GradientPickedEdgePaintFunction(new PickableEdgePaintFunction(picked_state, Color.black, Color.cyan), vv, vv, picked_state);
pr.setVertexPaintFunction(vcf);
pr.setVertexStrokeFunction(vsh);
pr.setVertexStringer(vs_none);
pr.setVertexFontFunction(ff);
pr.setVertexShapeFunction(vssa);
pr.setVertexIncludePredicate(show_vertex);
pr.setEdgePaintFunction(edgePaint);
pr.setEdgeStringer(es_none);
pr.setEdgeFontFunction(ff);
pr.setEdgeStrokeFunction(ewcs);
pr.setEdgeIncludePredicate(show_edge);
pr.setEdgeShapeFunction(new EdgeShape.Line());
pr.setEdgeArrowPredicate(show_arrow);
JPanel jp = new JPanel();
jp.setLayout(new BorderLayout());
vv.setBackground(Color.white);
GraphZoomScrollPane scrollPane = new GraphZoomScrollPane(vv);
jp.add(scrollPane);
gm = new DefaultModalGraphMouse();
vv.setGraphMouse(gm);
gm.add(new PopupGraphMousePlugin());
addBottomControls(jp);
vssa.setScaling(true);
vv.setToolTipFunction(new VoltageTips());
vv.setToolTipText("<html><center>Use the mouse wheel to zoom<p>Click and Drag the mouse to pan<p>Shift-click and Drag to Rotate</center></html>");
return jp;
}
use of edu.uci.ics.jung.visualization.VisualizationViewer in project titan.EclipsePlug-ins by eclipse.
the class GraphHandler method saveToImage.
/**
* Exports the graph set for this class to a PNG file
*
* @param path
* : The PNG file's path
* @param mode
* : The way of export, see {@link GraphHandler}
* <code>public static</code> fields for possible values (EXPORT_
* named fields)
* @param size
* : This parameter sets the size of the exported image in pixels
* @throws Exception
* on file handling error
*/
public void saveToImage(final String path, final ImageExportType mode) throws BadLayoutException {
if (layout == null || actVisualisator == null) {
throw new BadLayoutException("Either the layout or the visuaizer is not set (is null)", ErrorType.NO_OBJECT);
}
VisualizationViewer<NodeDescriptor, EdgeDescriptor> tempVisualisator = null;
Dimension size = null;
switch(mode) {
case EXPORT_SEEN_GRAPH:
{
tempVisualisator = actVisualisator;
size = actVisualisator.getPreferredSize();
}
break;
case EXPORT_WHOLE_GRAPH:
{
layout = actVisualisator.getGraphLayout();
if (size == null) {
size = new Dimension(layout.getSize().width, layout.getSize().height);
}
final Function<NodeDescriptor, Point2D> trf = new Function<NodeDescriptor, Point2D>() {
@Override
public Point2D apply(final NodeDescriptor v) {
return layout.apply(v);
}
};
tempVisualisator = new VisualizationViewer<NodeDescriptor, EdgeDescriptor>(new LayoutBuilder(g, Layouts.LAYOUT_STATIC, size).transformer(trf).build());
tempVisualisator.setPreferredSize(size);
tempVisualisator.setSize(size);
tempVisualisator.getRenderContext().setVertexLabelTransformer(NODE_LABELER);
final GraphRenderer<NodeDescriptor, EdgeDescriptor> rnd = new GraphRenderer<NodeDescriptor, EdgeDescriptor>(NODE_LABELER, tempVisualisator.getPickedVertexState(), tempVisualisator.getPickedEdgeState());
setNodeRenderer(rnd, tempVisualisator);
tempVisualisator.getRenderer().getVertexLabelRenderer().setPosition(Position.CNTR);
tempVisualisator.setBackground(Color.white);
tempVisualisator.setDoubleBuffered(false);
}
break;
case EXPORT_SATELLITE:
{
tempVisualisator = satView;
size = tempVisualisator.getSize();
}
break;
default:
ErrorReporter.logError("Unexpected image export type " + mode);
return;
}
BufferedImage image;
final GUIErrorHandler errorHandler = new GUIErrorHandler();
try {
image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
} catch (OutOfMemoryError e) {
final long needed = (long) size.width * (long) size.height * 4;
String temp;
if (needed < 1024) {
temp = needed + " bytes";
} else if (needed < 1024 * 1024) {
temp = needed / 1024 + " Kbytes";
} else {
temp = needed / 1024 / 1024 + " Mbytes";
}
final String errorText = "Could not save an image of " + size.width + "*" + size.height + " size as there was not enough free memory (" + temp + ")";
errorHandler.reportErrorMessage(errorText);
ErrorReporter.logExceptionStackTrace(errorText, e);
return;
}
final Graphics2D g2 = image.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
tempVisualisator.paint(g2);
g2.dispose();
try {
ImageIO.write(image, "png", new File(path));
} catch (IOException e) {
final String message = "Error while writing to file" + path;
ErrorReporter.logExceptionStackTrace(message, e);
errorHandler.reportException(message, e);
}
}
Aggregations