DiagonalLayoutModule.java |
1 /**************************************************************************** 2 * This demo file is part of yFiles for Java 2.14. 3 * Copyright (c) 2000-2017 by yWorks GmbH, Vor dem Kreuzberg 28, 4 * 72070 Tuebingen, Germany. All rights reserved. 5 * 6 * yFiles demo files exhibit yFiles for Java functionalities. Any redistribution 7 * of demo files in source code or binary form, with or without 8 * modification, is not permitted. 9 * 10 * Owners of a valid software license for a yFiles for Java version that this 11 * demo is shipped with are allowed to use the demo source code as basis 12 * for their own yFiles for Java powered applications. Use of such programs is 13 * governed by the rights and conditions as set out in the yFiles for Java 14 * license agreement. 15 * 16 * THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESS OR IMPLIED 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 19 * NO EVENT SHALL yWorks BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 21 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 24 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * 27 ***************************************************************************/ 28 package demo.layout.module; 29 30 import demo.layout.withoutview.DiagonalLayouter; 31 import y.module.LayoutModule; 32 import y.option.OptionHandler; 33 34 /** 35 * This module represents an interactive configurator and launcher for the demo 36 * Layouter {@link demo.layout.withoutview.DiagonalLayouter}. 37 * <br> 38 * Additionally, this class can be executed separately. In this case it shows off 39 * the internationalization and serialization features of the 40 * {@link y.option.OptionHandler} class. 41 * By launching the module class using a two letter language constant as an 42 * argument, the dialog will be internationalized in that language if the 43 * corresponding localized properties file is available. Try either 'en' for 44 * English or 'de' for German. 45 * 46 * 47 * @see <a href="http://docs.yworks.com/yfiles/doc/api/index.html#/dguide/option_basic#i18n_l10n" target="_blank">Section Internationalization and Localization</a> in the yFiles for Java Developer's Guide 48 */ 49 public class DiagonalLayoutModule extends LayoutModule 50 { 51 //// Module 'Diagonal Layout' 52 protected static final String MODULE_DIAGONAL = "DIAGONAL"; 53 54 //// Section 'default' items 55 protected static final String ITEM_MINIMAL_NODE_DISTANCE = "MINIMAL_NODE_DISTANCE"; 56 57 /** 58 * Creates an instance of this module. 59 */ 60 public DiagonalLayoutModule() { 61 super(MODULE_DIAGONAL); 62 } 63 64 /** 65 * Creates an OptionHandler and adds the option items used by this module. 66 * @return the created <code>OptionHandler</code> providing module related options 67 */ 68 protected OptionHandler createOptionHandler() { 69 final OptionHandler options = new OptionHandler(getModuleName()); 70 // Defaults provider 71 final DiagonalLayouter defaults = new DiagonalLayouter(); 72 73 // Populate default section 74 options.addDouble(ITEM_MINIMAL_NODE_DISTANCE, defaults.getMinimalNodeDistance()); 75 76 return options; 77 } 78 79 /** 80 * Main module execution routine. 81 * Launches the module's underlying algorithm on the module's graph based on user options. 82 */ 83 protected void mainrun() { 84 final DiagonalLayouter diagonal = new DiagonalLayouter(); 85 86 final OptionHandler options = getOptionHandler(); 87 configure(diagonal, options); 88 89 launchLayouter(diagonal); 90 } 91 92 /** 93 * Configures the module's layout algorithm according to the given options. 94 * @param diagonal the <code>DiagonalLayouter</code> to be configured 95 * @param options the layout options to set 96 */ 97 protected void configure(final DiagonalLayouter diagonal, final OptionHandler options) { 98 diagonal.setMinimalNodeDistance(options.getDouble(ITEM_MINIMAL_NODE_DISTANCE)); 99 } 100 } 101 102