/* * Licensed Materials - Property of Rogue Wave Software, Inc. * © Copyright Rogue Wave Software, Inc. 2014, 2015 * © 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 gui.GradientPanel; import gui.GradientPanel2; import gui.LayoutShelf; import gui.StackLayout; import ilog.views.util.IlvProductUtil; 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 javax.swing.JApplet; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; /** * This is the main class of the demo. It creats the GUI and loads all needed images and data (graph and control panels). * */ public class GraphLayout extends JApplet { { // 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; 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( getClass().getResource("/displays/tree.idpr")); GraphLayoutControlPanel treeDiagrammerController = new GraphLayoutControlPanel(getClass().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( getClass().getResource("/displays/radialtree.idpr") ); GraphLayoutControlPanel radialtreeDiagrammerController = new GraphLayoutControlPanel(getClass().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( getClass().getResource("/displays/treetipover.idpr") ); GraphLayoutControlPanel treetipoveDiagrammerController = new GraphLayoutControlPanel(getClass().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( getClass().getResource("/displays/grid.idpr") ); GraphLayoutControlPanel gridDiagrammerController = new GraphLayoutControlPanel(getClass().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( getClass().getResource("/displays/linklayout.idpr") ); GraphLayoutControlPanel linklayoutDiagrammerController = new GraphLayoutControlPanel(getClass().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( getClass().getResource("/displays/nestedlayout.idpr") ); GraphLayoutControlPanel nestedlayoutDiagrammerController = new GraphLayoutControlPanel(getClass().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(getClass().getResource("/displays/hierarchical2.idpr")); GraphLayoutControlPanel hierarchicalLayoutDiagrammerController = new GraphLayoutControlPanel(getClass().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. 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)); } /** * The initialization method of the applet. */ public void init() { try { init(getContentPane()); } catch (Exception e) { e.printStackTrace(System.err); } } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { 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); } } }); } }