Beispiel #1
0
        ///<inheritdoc/>
        protected override void SetupHandler()
        {
            OptionGroup scopeGroup = Handler.AddGroup(SCOPE);

            scopeGroup.AddBool(PLACE_NODE_LABELS, true);
            scopeGroup.AddBool(PLACE_EDGE_LABELS, true);
            scopeGroup.AddBool(CONSIDER_SELECTED_FEATURES_ONLY, false);

            OptionGroup qualityGroup = Handler.AddGroup(QUALITY);

            qualityGroup.AddBool(USE_OPTIMIZATION, false);
            qualityGroup.AddOptionItem(new OptionItem(OPTIMIZATION_STRATEGY)
            {
                Value = OptimizationStrategy.Balanced, Type = typeof(OptimizationStrategy)
            });
            qualityGroup.AddBool(ALLOW_NODE_OVERLAPS, false);
            qualityGroup.AddBool(ALLOW_EDGE_OVERLAPS, true);
            qualityGroup.AddBool(USE_POSTPROCESSING, false);

            var edgeLabelGroup   = Handler.AddGroup(MODEL);
            var labelModelItem   = edgeLabelGroup.AddList(EDGE_LABEL_MODEL, edgeLabelModel, BEST);
            var autoRotationItem = edgeLabelGroup.AddBool(AUTO_ROTATE, true);
            ConstraintManager cm = new ConstraintManager(Handler);

            cm.SetEnabledOnCondition(cm.CreateValueIsOneOfCondition(labelModelItem, CENTER_SLIDER, SIDE_SLIDER), autoRotationItem);
        }
        ///<inheritdoc/>
        protected override void SetupHandler()
        {
            CreateOrganic();

            ConstraintManager cm          = new ConstraintManager(Handler);
            OptionGroup       visualGroup = Handler.AddGroup(VISUAL);

            visualGroup.AddList(SCOPE, scopes.Keys, SCOPE_ALL);
            visualGroup.AddInt(PREFERRED_EDGE_LENGTH, (int)organic.PreferredEdgeLength, 5, int.MaxValue);
            IOptionItem considerNodeLabelsItem = visualGroup.AddBool(CONSIDER_NODE_LABELS, organic.ConsiderNodeLabels);
            IOptionItem allowNodeOverlapsItem  = visualGroup.AddBool(ALLOW_NODE_OVERLAPS, organic.NodeOverlapsAllowed);

            IOptionItem minDistItem = visualGroup.AddDouble(MINIMAL_NODE_DISTANCE, 10, 0, double.MaxValue);
            ICondition  condition   = ConstraintManager.LogicalCondition.Or(cm.CreateValueEqualsCondition(allowNodeOverlapsItem, false),
                                                                            cm.CreateValueEqualsCondition(considerNodeLabelsItem, true));

            cm.SetEnabledOnCondition(condition, minDistItem);

            visualGroup.AddBool(AVOID_NODE_EDGE_OVERLAPS, organic.NodeEdgeOverlapAvoided);
            cm.SetEnabledOnValueEquals(considerNodeLabelsItem, false, allowNodeOverlapsItem);

            visualGroup.AddDouble(COMPACTNESS, organic.CompactnessFactor, 0, 1);
            visualGroup.AddBool(USE_AUTO_CLUSTERING, organic.ClusterNodes);
            visualGroup.AddDouble(AUTO_CLUSTERING_QUALITY, organic.ClusteringQuality, 0, 1);
            cm.SetEnabledOnValueEquals(visualGroup[USE_AUTO_CLUSTERING], true, visualGroup[AUTO_CLUSTERING_QUALITY]);

            OptionGroup outputRestrictionsGroup = Handler.AddGroup(RESTRICTIONS);

            OptionItem outputRestrictionsItem =
                outputRestrictionsGroup.AddList(RESTRICT_OUTPUT, outputRestrictions, NONE);

            OptionGroup outputCageGroup = outputRestrictionsGroup.AddGroup(BOUNDS);

            ICondition cond = cm.CreateValueIsOneOfCondition(outputRestrictionsItem, OUTPUT_CAGE, OUTPUT_ELLIPTICAL_CAGE);

            cm.SetEnabledOnCondition(cond, outputCageGroup);

            //IOptionItem rectCageUseViewItem = new BoolOptionItem(RECT_CAGE_USE_VIEW, true);
            IOptionItem rectCageUseViewItem = outputCageGroup.AddBool(RECT_CAGE_USE_VIEW, true);
            IOptionItem cageXItem           = outputCageGroup.AddDouble(CAGE_X, 0.0d);
            IOptionItem cageYItem           = outputCageGroup.AddDouble(CAGE_Y, 0.0d);
            IOptionItem cageWidthItem       = outputCageGroup.AddDouble(CAGE_WIDTH, 1000.0d, 1, double.MaxValue);
            IOptionItem cageHeightItem      = outputCageGroup.AddDouble(CAGE_HEIGHT, 1000.0d, 1, double.MaxValue);

            cm.SetEnabledOnValueEquals(rectCageUseViewItem, false, cageXItem);
            cm.SetEnabledOnValueEquals(rectCageUseViewItem, false, cageYItem);
            cm.SetEnabledOnValueEquals(rectCageUseViewItem, false, cageWidthItem);
            cm.SetEnabledOnValueEquals(rectCageUseViewItem, false, cageHeightItem);

            OptionGroup outputARGroup = outputRestrictionsGroup.AddGroup(OUTPUT_AR);

            cm.SetEnabledOnValueEquals(outputRestrictionsItem, OUTPUT_AR, outputARGroup);
            IOptionItem arCageUseViewItem = outputARGroup.AddBool(AR_CAGE_USE_VIEW, true);
            IOptionItem cageRatioItem     = outputARGroup.AddDouble(CAGE_RATIO, 1.0d);

            cm.SetEnabledOnValueEquals(arCageUseViewItem, false, cageRatioItem);

            OptionGroup groupingGroup = Handler.AddGroup(GROUPING);

            groupingGroup.AddList(GROUP_LAYOUT_POLICY, groupModes, LAYOUT_GROUPS);

            OptionGroup algorithmGroup = Handler.AddGroup(ALGORITHM);

            algorithmGroup.AddDouble(QUALITY_TIME_RATIO, organic.QualityTimeRatio, 0, 1);
            algorithmGroup.AddInt(MAXIMAL_DURATION, (int)(organic.MaximumDuration / 1000), 0, int.MaxValue);
            algorithmGroup.AddBool(ACTIVATE_DETERMINISTIC_MODE, organic.Deterministic);
            algorithmGroup.AddBool(ALLOW_MULTI_THREADING, true);
        }
Beispiel #3
0
        /// <inheritdoc/>
        public virtual void AddItems(IOptionBuilderContext context, Type subjectType, object subject)
        {
//      CollectionOptionItem<string> fillTypeItem =
//        new CollectionOptionItem<string>(DefaultBrushPropertyMapBuilder.FillType,
//        new string[] {
//                       DefaultBrushPropertyMapBuilder.SolidBrushFillType,
//      DefaultBrushPropertyMapBuilder.HatchBrushFillType,
//      DefaultBrushPropertyMapBuilder.LinearGradientBrushFillType,
//      DefaultBrushPropertyMapBuilder.TextureBrushFillType
//    });
            GenericOptionItem <BrushTypes> fillTypeItem =
                new GenericOptionItem <BrushTypes>(DefaultBrushPropertyMapBuilder.FillType);

            fillTypeItem.SetAttribute(OptionItem.SUPPORT_NULL_VALUE_ATTRIBUTE, AllowNullValue);
//      fillTypeItem.SetAttribute(OptionItem.NULL_VALUE_OBJECT, BrushTypes.Nothing);
            fillTypeItem.SetAttribute(OptionItem.NULL_VALUE_STRING_ATTRIBUTE, "Nothing");
            bool fillTypeAdded =
                context.BindItem(fillTypeItem,
                                 DefaultBrushPropertyMapBuilder.FillType
                                 );

            ColorOptionItem foreColorItem  = new ColorOptionItem(DefaultBrushPropertyMapBuilder.ForegroundColor);
            bool            foreColorAdded = context.BindItem(foreColorItem, DefaultBrushPropertyMapBuilder.ForegroundColor);

            ColorOptionItem backColorOptionItem = new ColorOptionItem(DefaultBrushPropertyMapBuilder.BackgroundColor);
            bool            backColorAdded      = context.BindItem(backColorOptionItem, DefaultBrushPropertyMapBuilder.BackgroundColor);

            GenericOptionItem <HatchStyle> hatchStyleItem =
                new GenericOptionItem <HatchStyle>(DefaultBrushPropertyMapBuilder.HatchStyle, OptionItem.VALUE_UNDEFINED);

            hatchStyleItem.SetAttribute(OptionItem.SUPPORT_UNDEFINED_VALUE_ATTRIBUTE, true);
            hatchStyleItem.SetAttribute(OptionItem.SUPPORT_NULL_VALUE_ATTRIBUTE, false);


            bool hatchItemAdded =
                context.BindItem(hatchStyleItem, DefaultBrushPropertyMapBuilder.HatchStyle);

            if (hatchItemAdded)
            {
                EnumUITypeEditor <HatchStyle> hatchEditor = new EnumUITypeEditor <HatchStyle>();
                hatchEditor.Renderer = new HatchStyleItemRenderer();
                hatchStyleItem.SetAttribute(OptionItem.CUSTOM_TABLEITEM_EDITOR, hatchEditor);
            }

            FloatOptionItem rotationItem   = new FloatOptionItem(DefaultBrushPropertyMapBuilder.Rotation);
            bool            floatItemAdded = context.BindItem(rotationItem, DefaultBrushPropertyMapBuilder.Rotation);

            GenericOptionItem <Image> imageItem =
                new GenericOptionItem <Image>(DefaultBrushPropertyMapBuilder.Image, OptionItem.VALUE_UNDEFINED);

            imageItem.SetAttribute(OptionItem.SUPPORT_UNDEFINED_VALUE_ATTRIBUTE, true);
            imageItem.SetAttribute(OptionItem.SUPPORT_NULL_VALUE_ATTRIBUTE, false);
            bool imageItemAdded = context.BindItem(imageItem, DefaultBrushPropertyMapBuilder.Image);

            if (fillTypeAdded)
            {
                ConstraintManager cm = context.Lookup <ConstraintManager>();
                if (cm != null)
                {
                    if (foreColorAdded)
                    {
                        ICondition cond = cm.CreateValueIsOneOfCondition(fillTypeItem, BrushTypes.SolidBrush, BrushTypes.HatchBrush, BrushTypes.LinearGradientBrush);
                        cm.SetEnabledOnCondition(cond, foreColorItem);
                    }
                    if (backColorAdded)
                    {
                        ICondition cond = cm.CreateValueIsOneOfCondition(fillTypeItem, BrushTypes.HatchBrush, BrushTypes.LinearGradientBrush);
                        cm.SetEnabledOnCondition(cond, backColorOptionItem);
                    }
                    if (hatchItemAdded)
                    {
                        cm.SetEnabledOnValueEquals(fillTypeItem, BrushTypes.HatchBrush, hatchStyleItem);
                    }
                    if (imageItemAdded)
                    {
                        cm.SetEnabledOnValueEquals(fillTypeItem, BrushTypes.TextureBrush, imageItem);
                    }
                    if (floatItemAdded)
                    {
                        cm.SetEnabledOnValueEquals(fillTypeItem, BrushTypes.LinearGradientBrush, rotationItem);
                    }
                }
            }
        }