예제 #1
0
        /// <summary>
        /// Setup default values for various configuration parameters.
        /// </summary>
        public ClassicTreeLayoutConfig()
        {
            var layout = new ClassicTreeLayout();

            RoutingStyleForNonTreeEdgesItem = EnumRoute.Orthogonal;
            EdgeBundlingStrengthItem        = 0.95;
            ActOnSelectionOnlyItem          = false;

            ClassicLayoutOrientationItem = LayoutOrientation.TopToBottom;

            MinimumNodeDistanceItem  = (int)layout.MinimumNodeDistance;
            MinimumLayerDistanceItem = (int)layout.MinimumLayerDistance;
            PortStyleItem            = PortStyle.NodeCenter;

            ConsiderNodeLabelsItem = false;

            OrthogonalEdgeRoutingItem = false;

            VerticalAlignmentItem     = 0.5;
            LeafPlacementPolicyItem   = LeafPlacement.SiblingsOnSameLayer;
            EnforceGlobalLayeringItem = false;

            BusAlignmentItem = 0.5;

            EdgeLabelingItem              = EnumEdgeLabeling.None;
            LabelPlacementAlongEdgeItem   = EnumLabelPlacementAlongEdge.Centered;
            LabelPlacementSideOfEdgeItem  = EnumLabelPlacementSideOfEdge.OnEdge;
            LabelPlacementOrientationItem = EnumLabelPlacementOrientation.Horizontal;
            LabelPlacementDistanceItem    = 10;
        }
예제 #2
0
        private ClassicTreeLayout ConfigureClassicLayout()
        {
            var layout = new ClassicTreeLayout();

            layout.MinimumNodeDistance  = MinimumNodeDistanceItem;
            layout.MinimumLayerDistance = MinimumLayerDistanceItem;

            ((OrientationLayout)layout.OrientationLayout).Orientation = ClassicLayoutOrientationItem;

            if (OrthogonalEdgeRoutingItem)
            {
                layout.EdgeRoutingStyle = yWorks.Layout.Tree.EdgeRoutingStyle.Orthogonal;
            }
            else
            {
                layout.EdgeRoutingStyle = yWorks.Layout.Tree.EdgeRoutingStyle.Plain;
            }

            layout.LeafPlacement         = LeafPlacementPolicyItem;
            layout.EnforceGlobalLayering = EnforceGlobalLayeringItem;
            layout.PortStyle             = PortStyleItem;

            layout.VerticalAlignment = VerticalAlignmentItem;
            layout.BusAlignment      = BusAlignmentItem;

            return(layout);
        }
        /// <summary>
        /// Setup default values for various configuration parameters.
        /// </summary>
        public TreeLayoutConfig()
        {
            var layout = new ClassicTreeLayout();
            var aspectRatioNodePlacer = new AspectRatioNodePlacer();
            var defaultNodePlacer     = new DefaultNodePlacer();

            LayoutStyleItem = EnumStyle.Default;
            RoutingStyleForNonTreeEdgesItem = EnumRoute.Orthogonal;
            EdgeBundlingStrengthItem        = 0.95;
            ActOnSelectionOnlyItem          = false;

            DefaultLayoutOrientationItem = LayoutOrientation.TopToBottom;
            ClassicLayoutOrientationItem = LayoutOrientation.TopToBottom;

            MinimumNodeDistanceItem  = (int)layout.MinimumNodeDistance;
            MinimumLayerDistanceItem = (int)layout.MinimumLayerDistance;
            PortStyleItem            = PortStyle.NodeCenter;

            ConsiderNodeLabelsItem = false;

            OrthogonalEdgeRoutingItem = false;

            VerticalAlignmentItem     = 0.5;
            ChildPlacementPolicyItem  = LeafPlacement.SiblingsOnSameLayer;
            EnforceGlobalLayeringItem = false;

            NodePlacerItem = EnumNodePlacer.Default;

            SpacingItem           = 20;
            RootAlignmentItem     = EnumRootAlignment.Center;
            AllowMultiParentsItem = false;
            PortAssignmentItem    = PortAssignmentMode.None;

            HvHorizontalSpaceItem = (int)defaultNodePlacer.HorizontalDistance;
            HvVerticalSpaceItem   = (int)defaultNodePlacer.VerticalDistance;

            BusAlignmentItem = 0.5;

            ArHorizontalSpaceItem     = (int)aspectRatioNodePlacer.HorizontalDistance;
            ArVerticalSpaceItem       = (int)aspectRatioNodePlacer.VerticalDistance;
            NodePlacerAspectRatioItem = aspectRatioNodePlacer.AspectRatio;

            ArUseViewAspectRatioItem        = true;
            CompactPreferredAspectRatioItem = aspectRatioNodePlacer.AspectRatio;

            EdgeLabelingItem              = EnumEdgeLabeling.None;
            LabelPlacementAlongEdgeItem   = EnumLabelPlacementAlongEdge.Centered;
            LabelPlacementSideOfEdgeItem  = EnumLabelPlacementSideOfEdge.OnEdge;
            LabelPlacementOrientationItem = EnumLabelPlacementOrientation.Horizontal;
            LabelPlacementDistanceItem    = 10;
        }
        ///<inheritdoc/>
        protected override void SetupHandler()
        {
            OptionGroup generalGroup = Handler.AddGroup(GENERAL);

            generalGroup.AddList(LAYOUT_STYLE, enumStyle, DIRECTED);
            IOptionItem       allowNonTreeItem = generalGroup.AddBool(ALLOW_NON_TREE_EDGES, true);
            IOptionItem       nonTreeStyleItem = generalGroup.AddList(ROUTING_STYLE_FOR_NON_TREE_EDGES, enumRoute, ROUTE_ORTHOGONAL);
            ConstraintManager cm = new ConstraintManager(Handler);

            cm.SetEnabledOnValueEquals(allowNonTreeItem, true, nonTreeStyleItem);

            generalGroup.AddBool(ACT_ON_SELECTION_ONLY, false);
            var bundlingStrength = generalGroup.AddDouble(EDGE_BUNDLING_STRENGTH, 0.99, 0, 1);

            cm.SetEnabledOnValueEquals(nonTreeStyleItem, ROUTE_BUNDLED, bundlingStrength);

            ClassicTreeLayout treeLayout    = new ClassicTreeLayout();
            OptionGroup       directedGroup = Handler.AddGroup(DIRECTED);

            directedGroup.AddInt(MINIMAL_NODE_DISTANCE, (int)treeLayout.MinimumNodeDistance, 1, int.MaxValue);
            directedGroup.AddInt(MINIMAL_LAYER_DISTANCE, (int)treeLayout.MinimumLayerDistance, 10, int.MaxValue);
            directedGroup.AddList(ORIENTATION, enumOrient.Keys, TOP_TO_BOTTOM);
            directedGroup.AddList(PORT_STYLE, enumPortStyle.Keys, NODE_CENTER_PORTS);

            directedGroup.AddBool(INTEGRATED_NODE_LABELING, false);
            directedGroup.AddBool(INTEGRATED_EDGE_LABELING, false);

            IOptionItem edgeRoutingOption  = directedGroup.AddBool(ORTHOGONAL_EDGE_ROUTING, false);
            IOptionItem busAlignmentOption = directedGroup.AddDouble(BUS_ALIGNMENT, 0.5, 0, 1);

            directedGroup.AddDouble(VERTICAL_ALIGNMENT, 0.5, 0, 1);
            var childPolicyItem    = directedGroup.AddList(CHILD_PLACEMENT_POLICY, childPlacementPolicies.Keys, SIBLINGS_ON_SAME_LAYER);
            var globalLayeringItem = directedGroup.AddBool(ENFORCE_GLOBAL_LAYERING, false);

            cm.SetEnabledOnCondition(ConstraintManager.LogicalCondition.And(cm.CreateValueEqualsCondition(edgeRoutingOption, true),
                                                                            ConstraintManager.LogicalCondition.Or(cm.CreateValueEqualsCondition(globalLayeringItem, true),
                                                                                                                  cm.CreateValueEqualsCondition(childPolicyItem, ALL_LEAVES_ON_SAME_LAYER))),
                                     busAlignmentOption);

            var         ar      = new AspectRatioTreeLayout();
            OptionGroup arGroup = Handler.AddGroup(AR);

            arGroup.AddInt(HORIZONTAL_SPACE, (int)ar.HorizontalDistance);
            arGroup.AddInt(VERTICAL_SPACE, (int)ar.VerticalDistance);
            arGroup.AddInt(BEND_DISTANCE, (int)ar.BendDistance);
            IOptionItem ratioItem   = arGroup.AddDouble(ASPECT_RATIO, ar.AspectRatio);
            IOptionItem useViewItem = arGroup.AddBool(USE_VIEW_ASPECT_RATIO, true);

            cm.SetEnabledOnValueEquals(useViewItem, false, ratioItem);
        }
        private MultiStageLayout ConfigureDirectedRouter()
        {
            ClassicTreeLayout tree = new ClassicTreeLayout
            {
                MinimumNodeDistance  = (int)Handler.GetValue(DIRECTED, MINIMAL_NODE_DISTANCE),
                MinimumLayerDistance = (int)Handler.GetValue(DIRECTED, MINIMAL_LAYER_DISTANCE)
            };

            OrientationLayout ol = (OrientationLayout)tree.OrientationLayout;
            string            orientationChoice = (string)Handler.GetValue(DIRECTED, ORIENTATION);

            ol.Orientation = enumOrient[orientationChoice];

            if ((bool)Handler.GetValue(DIRECTED, ORTHOGONAL_EDGE_ROUTING))
            {
                tree.EdgeRoutingStyle = yWorks.Layout.Tree.EdgeRoutingStyle.Orthogonal;
            }
            else
            {
                tree.EdgeRoutingStyle = yWorks.Layout.Tree.EdgeRoutingStyle.Plain;
            }

            tree.LeafPlacement         = childPlacementPolicies[(string)Handler.GetValue(DIRECTED, CHILD_PLACEMENT_POLICY)];
            tree.EnforceGlobalLayering = (bool)Handler.GetValue(DIRECTED, ENFORCE_GLOBAL_LAYERING);

            string portStyleChoice = (string)Handler.GetValue(DIRECTED, PORT_STYLE);

            tree.PortStyle = enumPortStyle[portStyleChoice];

            tree.ConsiderNodeLabels     = (bool)Handler.GetValue(DIRECTED, INTEGRATED_NODE_LABELING);
            tree.IntegratedEdgeLabeling = (bool)Handler.GetValue(DIRECTED, INTEGRATED_EDGE_LABELING);

            tree.VerticalAlignment = (double)Handler.GetValue(DIRECTED, VERTICAL_ALIGNMENT);
            tree.BusAlignment      = (double)Handler.GetValue(DIRECTED, BUS_ALIGNMENT);

            return(tree);
        }