/*
* Licensed Materials - Property of Rogue Wave Software, Inc.
* © Copyright Rogue Wave Software, Inc. 2014, 2017
* © Copyright IBM Corp. 2009, 2014
* © Copyright ILOG 1996, 2009
* All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights:
* The Software and Documentation were developed at private expense and
* are "Commercial Items" as that term is defined at 48 CFR 2.101,
* consisting of "Commercial Computer Software" and
* "Commercial Computer Software Documentation", as such terms are
* used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4,
* as applicable.
*/
// the Rogue Wave JViews Graphic Framework
// the Java AWT package
import java.awt.Color;
// the Java Swing package
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import ilog.views.IlvDirection;
import ilog.views.IlvGrapher;
import ilog.views.IlvManagerView;
// the Rogue Wave JViews Graph Layout Framework
import ilog.views.graphlayout.IlvGraphLayoutException;
import ilog.views.graphlayout.IlvGraphLayoutReport;
// the Rogue Wave JViews Tree Layout
import ilog.views.graphlayout.tree.IlvTreeLayout;
import ilog.views.util.IlvProductUtil;
/**
* A very simple example for the use of a Layout Algorithm. It shows how to use
* graph layout directly with the graphics framework. It illustrates the usage
* of graph layout outside the diagram component. It shows how to apply a Tree
* Layout directly to a grapher and how to set layout parameters by code.
*/
public class Sample4 {
public static void main(String[] arg) {
// This sample uses JViews Diagrammer features. When deploying an
// application that includes this code, you need to be in possession
// of a Rogue Wave JViews Diagrammer Deployment license.
IlvProductUtil.DeploymentLicenseRequired(IlvProductUtil.JViews_Diagrammer_Deployment);
SwingUtilities.invokeLater(new Runnable() {
Override
public void run() {
// Declare a handle for the layout instance
IlvTreeLayout layout = new IlvTreeLayout();
// Create the grapher instance
IlvGrapher grapher = new IlvGrapher();
// Create the manager view instance
IlvManagerView view = new IlvManagerView(grapher);
// Change view parameters.
view.setBackground(Color.white);
view.setKeepingAspectRatio(true);
// The name of the IVL file containing the graph data
String fileName = "data/Sample.ivl";
// Fill the grapher with nodes and links from a JViews IVL file.
// Alternatively, the nodes and links could be created programmatically.
try {
grapher.read(fileName);
} catch (Exception e) {
System.out.println("could not read " + fileName);
return;
}
// A Swing Frame to display
JFrame frame = new JFrame("Layout Sample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Put the manager view inside the Swing Frame and show it.
frame.getContentPane().add(view);
frame.setSize(600, 600);
frame.setVisible(true);
// Perform the layout. Should always be done in the AWT thread
performLayout(grapher, view, layout);
}
});
}
/**
* Perform the layout.
*/
private static void performLayout(IlvGrapher grapher, IlvManagerView view, IlvTreeLayout layout) {
// Attach the grapher to the layout instance
layout.attach(grapher);
// Change some layout parameters
layout.setFlowDirection(IlvDirection.Bottom);
layout.setGlobalLinkStyle(IlvTreeLayout.ORTHOGONAL_STYLE);
try {
// Perform the layout and get the layout report
IlvGraphLayoutReport layoutReport = layout.performLayout();
int code = layoutReport.getCode();
// Print information from the layout report (optional)
System.out.println("Done in " + layoutReport.getLayoutTime() + " millisec., return code = " + code + " ("
+ layoutReport.codeToString(code) + ")");
}
// Catch the exceptions
catch (IlvGraphLayoutException e) {
System.out.println(e.getMessage());
}
finally {
// Fit the view to show the entire graph
view.fitTransformerToContent();
// Redraw the grapher
grapher.reDraw();
}
// Detach the grapher from the layout instance
layout.detach();
}
}