/* * @(#)SugiyamaLayoutSettings.java 1.0 12-JUL-2004 * * Copyright (c) 2004, Gaudenz Alder * Copyright (c) 2004, Nicholas Sushkin * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * - Neither the name of JGraph nor the names of its contributors may be used * to endorse or promote products derived from this software without specific * prior written permission. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package org.jgraph.layout; import java.awt.GridLayout; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; /** * A Dialog for configuring a SugiyamaLayoutAlgorithm. * You can use horizontal and vertical spacing.
*
* Will be shown by the SugiyamaLayoutController.
*
*
* @author Gaudenz Alder
* @version 1.0 init */ public class SugiyamaLayoutSettings extends JPanel implements JGraphLayoutSettings { protected SugiyamaLayoutAlgorithm layout; private JTextField verticalSpacingTextField = new JTextField(), horizontalSpacingTextField = new JTextField(); private JCheckBox verticalDirectionCheckBox = new JCheckBox(), flushToOriginCheckBox = new JCheckBox(); /** * Creates new form SugiyamaLayoutConfigurationDialog */ public SugiyamaLayoutSettings(SugiyamaLayoutAlgorithm layout) { this.layout = layout; JPanel jPanel1 = new javax.swing.JPanel(new GridLayout(4, 2, 5, 0)); JLabel label = new JLabel("Horizontal Spacing"); label.setToolTipText("Sets horizontal spacing of the layout grid"); label.setLabelFor(horizontalSpacingTextField); label.setDisplayedMnemonic('h'); jPanel1.add(label); jPanel1.add(horizontalSpacingTextField); label = new JLabel("Vertical Spacing"); label.setToolTipText("Sets vertical spacing of the layout grid"); label.setLabelFor(verticalSpacingTextField); label.setDisplayedMnemonic('v'); jPanel1.add(label); jPanel1.add(verticalSpacingTextField); label = new JLabel("Vertical Orientation"); label.setToolTipText("Check to set vertical (top-down) orientation of the layout. Uncheck for horizontal (left-right)"); label.setLabelFor(verticalDirectionCheckBox); label.setDisplayedMnemonic('o'); jPanel1.add(label); jPanel1.add(verticalDirectionCheckBox); label = new JLabel("Flush to Origin"); label.setToolTipText("Check to flush the graph to the canvas origin"); label.setLabelFor(flushToOriginCheckBox); label.setDisplayedMnemonic('f'); jPanel1.add(label); jPanel1.add(flushToOriginCheckBox); add(jPanel1, java.awt.BorderLayout.CENTER); revert(); } public void revert() { horizontalSpacingTextField.setText(String.valueOf(layout.getSpacing().x)); verticalSpacingTextField.setText(String.valueOf(layout.getSpacing().y)); verticalDirectionCheckBox.setSelected(layout.isVertical()); flushToOriginCheckBox.setSelected(layout.getFlushToOrigin()); } /** * Implementation. */ public void apply() { check(); layout.setSpacing(new java.awt.Point(Integer.parseInt(getIndention()), Integer.parseInt(getVerticalSpacing()))); layout.setVertical(getVerticalDirection()); layout.setFlushToOrigin(getFlushToOrigin()); } private void check() { try { Integer.parseInt(horizontalSpacingTextField.getText()); Integer.parseInt(verticalSpacingTextField.getText()); } catch (Exception e) { throw new IllegalArgumentException(e.getMessage()); } } /** * Returns the value of the "Horizontal spacing" as text. */ public String getIndention() { return horizontalSpacingTextField.getText().trim(); } /** * Set the value of the "Horizontal spacing" text field. */ public void setIndention(String text) { horizontalSpacingTextField.setText(text); } /** * Returns the value of the "Vertical spacing" as text. */ public String getVerticalSpacing() { return verticalSpacingTextField.getText().trim(); } /** * Set the value of the "Vertical Spacing" text field. */ public void setVerticalSpacing(String text) { verticalSpacingTextField.setText(text); } /** * Returns the value of the "Vertical Direction" check box */ public boolean getVerticalDirection() { return verticalDirectionCheckBox.isSelected(); } /** * Sets the value of the "Vertical Direction" check box */ public void setVerticalDirection(boolean vertical) { verticalDirectionCheckBox.setSelected(vertical); } public boolean getFlushToOrigin() { return flushToOriginCheckBox.isSelected(); } public void setFlushToOrigin(boolean flushToOrigin) { flushToOriginCheckBox.setSelected(flushToOrigin); } }