PortEditMode.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.view.advanced.ports; 29 30 import y.view.CreateEdgeMode; 31 import y.view.EditMode; 32 import y.view.MouseInputMode; 33 import y.view.MovePortMode; 34 import y.view.SelectionBoxMode; 35 import y.view.ViewMode; 36 37 /** 38 * Customized {@link y.view.EditMode} that takes {@link y.view.NodePort}s 39 * into account. 40 * 41 */ 42 class PortEditMode extends EditMode { 43 PortEditMode() { 44 setCyclicSelectionEnabled(true); 45 } 46 47 /** 48 * Overwritten to create a {@link demo.view.advanced.ports.NodePortPopupMode} 49 * instance. 50 * @return a {@link demo.view.advanced.ports.NodePortPopupMode} 51 * instance. 52 */ 53 protected ViewMode createPopupMode() { 54 return new NodePortPopupMode(); 55 } 56 57 /** 58 * Overwritten to create a {@link y.view.MovePortMode} instance that allows 59 * reassigning edges to new nodes. 60 * @return a {@link y.view.MovePortMode} instance. 61 */ 62 protected ViewMode createMovePortMode() { 63 final MovePortMode mpm = new MovePortMode(); 64 mpm.setChangeEdgeEnabled(true); 65 return mpm; 66 } 67 68 /** 69 * Overwritten to create a {@link y.view.CreateEdgeMode} instance that 70 * visually indicates target nodes and ports for newly created edges. 71 * @return a {@link y.view.CreateEdgeMode} instance. 72 */ 73 protected ViewMode createCreateEdgeMode() { 74 final CreateEdgeMode cem = new PortCreateEdgeMode(); 75 cem.setIndicatingTargetNode(true); 76 return cem; 77 } 78 79 /** 80 * Overwritten to create a {@link y.view.MouseInputMode} instance 81 * that supports interactive selecting/deselecting and moving of 82 * {@link y.view.NodePort} instances. 83 * @return a {@link y.view.MouseInputMode} instance. 84 */ 85 protected MouseInputMode createMouseInputMode() { 86 final MouseInputMode mim = new MouseInputMode(); 87 mim.setNodeSearchingEnabled(true); 88 return mim; 89 } 90 91 /** 92 * Overwritten to create a {@link y.view.SelectionBoxMode} instance 93 * that supports selecting {@link y.view.NodePort} instances and 94 * {@link y.view.YLabel} instances as well as {@link y.base.Node}, 95 * {@link y.base.Edge}, and {@link y.view.Bend} instances. 96 * @return a {@link y.view.SelectionBoxMode} instance. 97 */ 98 protected ViewMode createSelectionBoxMode() { 99 final SelectionBoxMode sbm = new SelectionBoxMode(); 100 sbm.setExtendedTypeSelectionEnabled(true); 101 return sbm; 102 } 103 } 104