/*
* 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.
*/
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.SwingUtilities;
import gui.GradientPanel;
import gui.GradientPanel2;
import gui.LayoutShelf;
import gui.StackLayout;
import ilog.views.util.IlvProductUtil;
/**
* This is the main class of the demo. It creates the GUI and loads all needed images and data (graph and control panels).
*
*/
public class GraphLayout extends JRootPane {
{
// 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);
}
private static final int WIDTH = 1000;
private static final int HEIGHT = 800;
// The frame of the application
private static JFrame frame;
Insets noinsets = new Insets(0, 0, 0, 0);
private JPanel view = null;
private URL getResource(String path) {
return getClass().getResource(path);
}
public void init(Container contentPane) throws Exception {
// creates a diagrammer to load a graph+tree layout, and crates the control panel and its
// associated controller
GraphLayoutDiagrammer treeDiagrammer =
new GraphLayoutDiagrammer(getResource("/displays/tree.idpr"));
GraphLayoutControlPanel treeDiagrammerController = new GraphLayoutControlPanel(
getResource("/displays/tree.idbd"), treeDiagrammer, new TreeController());
// creates a diagrammer to load a graph+radialtree layout, and crates the control panel and its
// associated controller
GraphLayoutDiagrammer radialtreeDiagrammer =
new GraphLayoutDiagrammer(getResource("/displays/radialtree.idpr"));
GraphLayoutControlPanel radialtreeDiagrammerController = new GraphLayoutControlPanel(
getResource("/displays/radialtree.idbd"), radialtreeDiagrammer, new TreeController());
// creates a diagrammer to load a graph+tree tipover layout, and crates the control panel and
// its associated controller
GraphLayoutDiagrammer treetipoverDiagrammer =
new GraphLayoutDiagrammer(getResource("/displays/treetipover.idpr"));
GraphLayoutControlPanel treetipoveDiagrammerController = new GraphLayoutControlPanel(
getResource("/displays/treetipover.idbd"), treetipoverDiagrammer, new TreeController());
// creates a diagrammer to load a graph+grid layout, and crates the control panel and its
// associated controller
GraphLayoutDiagrammer gridDiagrammer =
new GraphLayoutDiagrammer(getResource("/displays/grid.idpr"));
GraphLayoutControlPanel gridDiagrammerController = new GraphLayoutControlPanel(
getResource("/displays/grid.idbd"), gridDiagrammer, new GridController());
// creates a diagrammer to load a graph+link layout, and crates the control panel and its
// associated controller
GraphLayoutDiagrammer linklayoutDiagrammer =
new GraphLayoutDiagrammer(getResource("/displays/linklayout.idpr"));
GraphLayoutControlPanel linklayoutDiagrammerController = new GraphLayoutControlPanel(
getResource("/displays/linklayout.idbd"), linklayoutDiagrammer, new LinkLayoutController());
// creates a diagrammer to load a graph+link layout, and crates the control panel and its
// associated controller
GraphLayoutDiagrammer nestedlayoutDiagrammer =
new GraphLayoutDiagrammer(getResource("/displays/nestedlayout.idpr"));
GraphLayoutControlPanel nestedlayoutDiagrammerController =
new GraphLayoutControlPanel(getResource("/displays/nestedlayout.idbd"),
nestedlayoutDiagrammer, new NestedLayoutController());
// creates a diagrammer to load a graph+hierarchical layout, and creates
// the control panel and its associated controller
GraphLayoutDiagrammer hierarchicalLayoutDiagrammer =
new GraphLayoutDiagrammer(getResource("/displays/hierarchical2.idpr"));
GraphLayoutControlPanel hierarchicalLayoutDiagrammerController =
new GraphLayoutControlPanel(getResource("/displays/hierarchical2.idbd"),
hierarchicalLayoutDiagrammer, new HierarchicalController());
// data structure to represent layout on the "shelf" and containing the diagrammer and control
// panel to display
// when a layout is choosen.
final Object[][] data = {{"/images/ilog.gif", " ", null},
{"/images/tree1.gif", "Tree", treeDiagrammer, treeDiagrammerController},
{"/images/tree2.gif", "Radial Tree", radialtreeDiagrammer, radialtreeDiagrammerController},
{"/images/tree3.gif", "Tree Tip-over", treetipoverDiagrammer,
treetipoveDiagrammerController},
{"/images/grid1.gif", "Grid", gridDiagrammer, gridDiagrammerController},
{"/images/linklayout.gif", "Link", linklayoutDiagrammer, linklayoutDiagrammerController},
{"/images/nested1.gif", "Nested", nestedlayoutDiagrammer, nestedlayoutDiagrammerController},
{"/images/hierarchical2.gif", "Hierarchical", hierarchicalLayoutDiagrammer,
hierarchicalLayoutDiagrammerController}};
LayoutShelf shelf = new LayoutShelf(data) {
// do the job when a new layout is choosen.
Override
public void avatarChanged(int index) {
if (view == null) {
return;
}
view.removeAll();
if (index > 0 && (data[index][2] instanceof GraphLayoutDiagrammer)) {
Object[] d = data[7];
// displays the graph
GraphLayoutDiagrammer diagrammer = (GraphLayoutDiagrammer) data[index][2];
if (diagrammer != null) {
view.add(diagrammer, BorderLayout.CENTER);
diagrammer.fitToContents();
}
// displays the control panel
GraphLayoutControlPanel controller = (GraphLayoutControlPanel) data[index][3];
if (controller != null) {
view.add(controller, BorderLayout.WEST);
}
}
view.updateUI();
}
};
JPanel mainMenu = new JPanel();
mainMenu.setLayout(new StackLayout());
mainMenu.add(new GradientPanel(), StackLayout.BOTTOM);
mainMenu.add(shelf, StackLayout.TOP);
view = new GradientPanel2(new BorderLayout());
contentPane.setLayout(new GridBagLayout());
contentPane.setBackground(Color.black);
contentPane.add(mainMenu, new GridBagConstraints(0, 0, 1, 1, 1, 0, GridBagConstraints.CENTER,
GridBagConstraints.HORIZONTAL, noinsets, 0, 0));
contentPane.add(view, new GridBagConstraints(0, 1, 1, 1, 1, 1, GridBagConstraints.CENTER,
GridBagConstraints.BOTH, noinsets, 0, 0));
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
Override
public void run() {
// Create an instance of the application, and show it.
try {
frame = new JFrame("Graph Layout");
GraphLayout app = new GraphLayout();
app.init(frame.getContentPane());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(50, 50);
frame.pack();
frame.setSize(WIDTH, HEIGHT);
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
});
}
}