/** * */ package agg.layout; import java.awt.event.ActionListener; import java.util.Enumeration; import javax.swing.AbstractButton; import javax.swing.ButtonGroup; import javax.swing.JCheckBoxMenuItem; import javax.swing.JPopupMenu; /** * @author olga * */ public class GraphLayouts { final static public String DEFAULT_LAYOUT = "Default ( Spring based )"; // ZEST Layouts final static public String SPRING_LAYOUT = "Spring"; final static public String TREE_VERTICAL_LAYOUT = "Tree (vertical)"; final static public String TREE_HORIZONTAL_LAYOUT = "Tree (horizontal)"; final static public String RADIAL_LAYOUT = "Radial"; final static public String GRID_LAYOUT = "Grid"; final static public String VERTICAL_LAYOUT = "Vertical"; final static public String HORIZONTAL_LAYOUT = "Horizontal"; final private JPopupMenu menu; private ButtonGroup group; private ZestGraphLayout zestLayouter; private String msg = ""; // private boolean zestavailable, available; /** * */ public GraphLayouts() { this.menu = new JPopupMenu(); this.group = new ButtonGroup(); createMenu(); // zestavailable = this.canCreateZestGraphLayouter(); } public String getMessage() { return this.msg; } public void addActionListener(final ActionListener l) { Enumeration<AbstractButton> en = this.group.getElements(); while (en.hasMoreElements()) { en.nextElement().addActionListener(l); } } public JPopupMenu getMenu() { return this.menu; } public void setZestLayoutEnabled(boolean b) { Enumeration<AbstractButton> en = this.group.getElements(); en.nextElement(); while (en.hasMoreElements()) { en.nextElement().setEnabled(b); } } public ZestGraphLayout getZestLayouter() { return this.zestLayouter; } private void createMenu() { this.menu.setName("Graph Layout"); JCheckBoxMenuItem mi = new JCheckBoxMenuItem(GraphLayouts.DEFAULT_LAYOUT); mi.setActionCommand(GraphLayouts.DEFAULT_LAYOUT); mi.setSelected(true); this.menu.add(mi); this.group.add(mi); this.menu.addSeparator(); mi = new JCheckBoxMenuItem(GraphLayouts.SPRING_LAYOUT); mi.setActionCommand(GraphLayouts.SPRING_LAYOUT); this.menu.add(mi); this.group.add(mi); mi = new JCheckBoxMenuItem(GraphLayouts.TREE_VERTICAL_LAYOUT); mi.setActionCommand(GraphLayouts.TREE_VERTICAL_LAYOUT); this.menu.add(mi); this.group.add(mi); mi = new JCheckBoxMenuItem(GraphLayouts.TREE_HORIZONTAL_LAYOUT); mi.setActionCommand(GraphLayouts.TREE_HORIZONTAL_LAYOUT); this.menu.add(mi); this.group.add(mi); mi = new JCheckBoxMenuItem(GraphLayouts.RADIAL_LAYOUT); mi.setActionCommand(GraphLayouts.RADIAL_LAYOUT); this.menu.add(mi); this.group.add(mi); mi = new JCheckBoxMenuItem(GraphLayouts.GRID_LAYOUT); mi.setActionCommand(GraphLayouts.GRID_LAYOUT); this.menu.add(mi); this.group.add(mi); mi = new JCheckBoxMenuItem(GraphLayouts.VERTICAL_LAYOUT); mi.setActionCommand(GraphLayouts.VERTICAL_LAYOUT); this.menu.add(mi); this.group.add(mi); mi = new JCheckBoxMenuItem(GraphLayouts.HORIZONTAL_LAYOUT); mi.setActionCommand(GraphLayouts.HORIZONTAL_LAYOUT); this.menu.add(mi); this.group.add(mi); this.menu.pack(); this.menu.setBorderPainted(true); } public boolean canCreateZestGraphLayouter() { try { Class.forName("org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm"); this.zestLayouter = new ZestGraphLayout(); return true; } catch (Exception ex) { this.msg = "WARNING! Class is not found. " +" Program tries to load the JAR file: \n"+ex.getMessage() +"\nThere will be no further warnings about this issue.\n"; System.out.println(this.msg); this.setZestLayoutEnabled(false); } return false; } public void runCurrentLayoutAlgorithm() { } }