public void AddItems(IOptionBuilderContext context, Type subjectType, object subject) { GenericOptionItem <StringTrimming> trimmingItem = new GenericOptionItem <StringTrimming>(StringFormatPropertyMapBuilder.TrimmingProperty); trimmingItem.SetAttribute(OptionItem.SUPPORT_NULL_VALUE_ATTRIBUTE, false); context.BindItem(trimmingItem, StringFormatPropertyMapBuilder.TrimmingProperty); GenericOptionItem <StringAlignment> alignmentItem = new GenericOptionItem <StringAlignment>(StringFormatPropertyMapBuilder.AlignmentProperty); alignmentItem.SetAttribute(OptionItem.SUPPORT_NULL_VALUE_ATTRIBUTE, false); context.BindItem(alignmentItem, StringFormatPropertyMapBuilder.AlignmentProperty); GenericOptionItem <StringAlignment> lineAlignItem = new GenericOptionItem <StringAlignment>(StringFormatPropertyMapBuilder.LineAlignmentProperty); lineAlignItem.SetAttribute(OptionItem.SUPPORT_NULL_VALUE_ATTRIBUTE, false); context.BindItem(lineAlignItem, StringFormatPropertyMapBuilder.LineAlignmentProperty); IList <StringFormatFlags> directionValues = new List <StringFormatFlags>(2); directionValues.Add(StringFormatFlags.DirectionRightToLeft); directionValues.Add(StringFormatFlags.DirectionVertical); CollectionOptionItem <StringFormatFlags> directionItem = new CollectionOptionItem <StringFormatFlags>(StringFormatPropertyMapBuilder.DirectionProperty, directionValues); directionItem.SetAttribute(OptionItem.SUPPORT_NULL_VALUE_ATTRIBUTE, true); directionItem.SetAttribute(OptionItem.NULL_VALUE_STRING_ATTRIBUTE, "LeftToRight"); context.BindItem(directionItem, StringFormatPropertyMapBuilder.DirectionProperty); }
/// <summary> /// Adds the currently valid <see cref="IPortStyle"/> items to the context. /// </summary> /// <remarks> /// Uses <see cref="ValidPortStyles"/>. /// </remarks> /// <param name="context">The context to use.</param> protected virtual void AddValidStyleItems(IOptionBuilderContext context) { CollectionOptionItem <Type> portStyleItems = new CollectionOptionItem <Type>(DefaultPortPropertyMapBuilder.PortStyleProperty, validPortStyles); portStyleItems.SetAttribute(CollectionOptionItem <Type> .USE_ONLY_DOMAIN_ATTRIBUTE, false); context.BindItem(portStyleItems, DefaultPortPropertyMapBuilder.PortStyleProperty); }
protected override void SetupHandler() { OptionGroup toplevelGroup = Handler.AddGroup(TOP_LEVEL); //the toplevel group will show neither in Table view nor in dialog view explicitely //it's children will be shown one level above ((IOptionItem)toplevelGroup).Attributes[TableEditorFactory.RenderingHintsAttribute] = TableEditorFactory.RenderingHints.Invisible; ((IOptionItem)toplevelGroup).Attributes[DefaultEditorFactory.RenderingHintsAttribute] = DefaultEditorFactory.RenderingHints.Invisible; OptionGroup spcg = toplevelGroup.AddGroup(SourcePortConstraints); spcg.Add(PortConstraintStr, PortConstraintType.Any).Attributes[OptionItem.SupportNullValueAttribute] = false; spcg.AddBool(StrongPortConstraint, false); OptionGroup tpcg = toplevelGroup.AddGroup(TargetPortConstraints); tpcg.Add(PortConstraintStr, PortConstraintType.Any).Attributes[OptionItem.SupportNullValueAttribute] = false; tpcg.AddBool(StrongPortConstraint, false); CollectionOptionItem <string> scopeItem = toplevelGroup.AddList(Scope, scopes, ScopeAllEdges); var clearItem = toplevelGroup.AddBool(ClearAllConstraints, false); ConstraintManager cm = new ConstraintManager(Handler); cm.SetEnabledOnValueEquals(clearItem, false, spcg); cm.SetEnabledOnValueEquals(clearItem, false, scopeItem); cm.SetEnabledOnValueEquals(clearItem, false, tpcg); }
protected override void SetupHandler() { OptionGroup toplevelGroup = Handler.AddGroup(TOP_LEVEL); //the toplevel group will show neither in Table view nor in dialog view explicitely //it's children will be shown one level above toplevelGroup.SetAttribute(TableEditorFactory.RENDERING_HINTS_ATTRIBUTE, (int)TableEditorFactory.RenderingHints.Invisible); toplevelGroup.SetAttribute(DefaultEditorFactory.RENDERING_HINTS_ATTRIBUTE, (int)DefaultEditorFactory.RenderingHints.Invisible); OptionGroup spcg = toplevelGroup.AddGroup(SourcePortConstraints); spcg.AddGeneric(PortConstraintStr, PortConstraintType.Any).SetAttribute(OptionItem.SUPPORT_NULL_VALUE_ATTRIBUTE, false); spcg.AddBool(StrongPortConstraint, false); OptionGroup tpcg = toplevelGroup.AddGroup(TargetPortConstraints); tpcg.AddGeneric(PortConstraintStr, PortConstraintType.Any).SetAttribute(OptionItem.SUPPORT_NULL_VALUE_ATTRIBUTE, false); tpcg.AddBool(StrongPortConstraint, false); CollectionOptionItem <string> scopeItem = toplevelGroup.AddList(Scope, scopes, ScopeAllEdges); BoolOptionItem clearItem = toplevelGroup.AddBool(ClearAllConstraints, false); ConstraintManager cm = new ConstraintManager(Handler); cm.SetEnabledOnValueEquals(clearItem, false, spcg); cm.SetEnabledOnValueEquals(clearItem, false, scopeItem); cm.SetEnabledOnValueEquals(clearItem, false, tpcg); }
/// <summary> /// Adds the currently valid <see cref="ILabelStyle"/> items to the context. /// </summary> /// <remarks> /// Uses <see cref="ValidLabelStyles"/>. /// </remarks> /// <param name="context">The context to use.</param> protected virtual void AddValidStyleItems(IOptionBuilderContext context) { CollectionOptionItem <Type> labelStyleItems = new CollectionOptionItem <Type>(DefaultLabelPropertyMapBuilder.LabelStyleProperty, validLabelStyles); labelStyleItems.Attributes[CollectionOptionItem <Type> .USE_ONLY_DOMAIN_ATTRIBUTE] = false; labelStyleItems.Attributes[OptionItem.ItemTemplateAttribute] = Application.Current.FindResource("LabelStyleTypeTemplate") as DataTemplate; context.BindItem(labelStyleItems, DefaultLabelPropertyMapBuilder.LabelStyleProperty); }
/// <summary> /// Adds the currently valid <see cref="ILabelModel"/> items to the context. /// </summary> /// <remarks> /// Uses <see cref="ValidEdgeLabelModels"/>, <see cref="ValidNodeLabelModels"/>, and <see cref="ValidPortLabelModels"/> /// respectively. /// </remarks> /// <param name="context">The context to use.</param> protected virtual void AddValidModelsItems(IOptionBuilderContext context) { CollectionOptionItem <Type> edgeLabelModelItem = new CollectionOptionItem <Type>(DefaultLabelPropertyMapBuilder.EdgeLabelModelProperty, validEdgeLabelModels); edgeLabelModelItem.SetAttribute(CollectionOptionItem <Type> .USE_ONLY_DOMAIN_ATTRIBUTE, false); context.BindItem(edgeLabelModelItem, DefaultLabelPropertyMapBuilder.EdgeLabelModelProperty); CollectionOptionItem <Type> nodeLabelModelItem = new CollectionOptionItem <Type>(DefaultLabelPropertyMapBuilder.NodeLabelModelProperty, validNodeLabelModels); nodeLabelModelItem.SetAttribute(CollectionOptionItem <Type> .USE_ONLY_DOMAIN_ATTRIBUTE, false); context.BindItem(nodeLabelModelItem, DefaultLabelPropertyMapBuilder.NodeLabelModelProperty); CollectionOptionItem <Type> portLabelModelItem = new CollectionOptionItem <Type>(DefaultLabelPropertyMapBuilder.PortLabelModelProperty, validPortLabelModels); portLabelModelItem.SetAttribute(CollectionOptionItem <Type> .USE_ONLY_DOMAIN_ATTRIBUTE, false); context.BindItem(portLabelModelItem, DefaultLabelPropertyMapBuilder.PortLabelModelProperty); }
protected override void SetupHandler() { OptionGroup toplevelGroup = Handler.AddGroup(TOP_LEVEL); //the toplevel group will show neither in Table view nor in dialog view explicitely //it's children will be shown one level above toplevelGroup.SetAttribute(TableEditorFactory.RENDERING_HINTS_ATTRIBUTE, (int)TableEditorFactory.RenderingHints.Invisible); toplevelGroup.SetAttribute(DefaultEditorFactory.RENDERING_HINTS_ATTRIBUTE, (int)DefaultEditorFactory.RenderingHints.Invisible); var sourceIdItem = toplevelGroup.AddString(SourceID, ""); var targetIdItem = toplevelGroup.AddString(TargetID, ""); CollectionOptionItem <string> scopeItem = toplevelGroup.AddList(Scope, scopes, ScopeAllEdges); var clearItem = toplevelGroup.AddBool(ClearAllConstraints, false); ConstraintManager cm = new ConstraintManager(Handler); cm.SetEnabledOnValueEquals(clearItem, false, sourceIdItem); cm.SetEnabledOnValueEquals(clearItem, false, scopeItem); cm.SetEnabledOnValueEquals(clearItem, false, targetIdItem); }
/// <summary> /// Adds the currently valid <see cref="ILabelModel"/> items to the context. /// </summary> /// <remarks> /// Uses <see cref="ValidEdgeLabelModels"/>, <see cref="ValidNodeLabelModels"/>, and <see cref="ValidPortLabelModels"/> /// respectively. /// </remarks> /// <param name="context">The context to use.</param> protected virtual void AddValidModelsItems(IOptionBuilderContext context) { CollectionOptionItem <Type> edgeLabelModelItem = new CollectionOptionItem <Type>(DefaultLabelPropertyMapBuilder.EdgeLabelModelProperty, validEdgeLabelModels); edgeLabelModelItem.Attributes[CollectionOptionItem <Type> .USE_ONLY_DOMAIN_ATTRIBUTE] = false; edgeLabelModelItem.Attributes[OptionItem.ItemTemplateAttribute] = Application.Current.FindResource("LabelModelTypeTemplate") as DataTemplate; context.BindItem(edgeLabelModelItem, DefaultLabelPropertyMapBuilder.EdgeLabelModelProperty); CollectionOptionItem <Type> nodeLabelModelItem = new CollectionOptionItem <Type>(DefaultLabelPropertyMapBuilder.NodeLabelModelProperty, validNodeLabelModels); nodeLabelModelItem.Attributes[CollectionOptionItem <Type> .USE_ONLY_DOMAIN_ATTRIBUTE] = false; nodeLabelModelItem.Attributes[OptionItem.ItemTemplateAttribute] = Application.Current.FindResource("LabelModelTypeTemplate") as DataTemplate; context.BindItem(nodeLabelModelItem, DefaultLabelPropertyMapBuilder.NodeLabelModelProperty); CollectionOptionItem <Type> portLabelModelItem = new CollectionOptionItem <Type>(DefaultLabelPropertyMapBuilder.PortLabelModelProperty, validPortLabelModels); portLabelModelItem.Attributes[CollectionOptionItem <Type> .USE_ONLY_DOMAIN_ATTRIBUTE] = false; portLabelModelItem.Attributes[OptionItem.ItemTemplateAttribute] = Application.Current.FindResource("LabelModelTypeTemplate") as DataTemplate; context.BindItem(portLabelModelItem, DefaultLabelPropertyMapBuilder.PortLabelModelProperty); }
///<inheritdoc/> protected override void SetupHandler() { OptionGroup generalGroup = Handler.AddGroup(GENERAL); OptionGroup interactionGroup = generalGroup.AddGroup(INTERACTION); interactionGroup.AddBool(SELECTED_ELEMENTS_INCREMENTALLY, false); IOptionItem useDrawingItem = interactionGroup.AddBool(USE_DRAWING_AS_SKETCH, false); interactionGroup.SetAttribute(TableEditorFactory.RENDERING_HINTS_ATTRIBUTE, TableEditorFactory.RenderingHints.Invisible); generalGroup.AddList(ORIENTATION, orientEnum.Keys, TOP_TO_BOTTOM); generalGroup.AddBool(LAYOUT_COMPONENTS_SEPARATELY, false); IOptionItem symmetricPlacement = generalGroup.AddBool(SYMMETRIC_PLACEMENT, true); generalGroup.AddInt(MAXIMUM_DURATION, 5); OptionGroup distanceGroup = generalGroup.AddGroup(MINIMUM_DISTANCES); distanceGroup.AddDouble(NODE_TO_NODE_DISTANCE, 30.0d); distanceGroup.AddDouble(NODE_TO_EDGE_DISTANCE, 15.0d); distanceGroup.AddDouble(EDGE_TO_EDGE_DISTANCE, 15.0d); distanceGroup.AddDouble(MINIMUM_LAYER_DISTANCE, 10.0d); OptionGroup edgeSettingsGroup = Handler.AddGroup(EDGE_SETTINGS); OptionItem eoi = edgeSettingsGroup.AddList(EDGE_ROUTING, edgeRoutingEnum.Keys, EDGE_ROUTING_ORTHOGONAL); edgeSettingsGroup.AddBool(BACKLOOP_ROUTING, false); edgeSettingsGroup.AddBool(AUTOMATIC_EDGE_GROUPING_ENABLED, false); IOptionItem edgeStraightening = edgeSettingsGroup.AddBool(EDGE_STRAIGHTENING_OPTIMIZATION_ENABLED, false); edgeSettingsGroup.AddBool(CONSIDER_EDGE_THICKNESS, false); edgeSettingsGroup.AddBool(CONSIDER_EDGE_DIRECTION, false); edgeSettingsGroup.AddDouble(MINIMUM_FIRST_SEGMENT_LENGTH, 10.0d); edgeSettingsGroup.AddDouble(MINIMUM_LAST_SEGMENT_LENGTH, 15.0d); edgeSettingsGroup.AddDouble(MINIMUM_EDGE_LENGTH, 20.0d); edgeSettingsGroup.AddDouble(MINIMUM_EDGE_DISTANCE, 15.0d); ConstraintManager cm = new ConstraintManager(Handler); cm.SetEnabledOnValueEquals(eoi, EDGE_ROUTING_POLYLINE, edgeSettingsGroup.AddDouble(MINIMUM_SLOPE, 0.25d, 0.0d, 5.0d)); cm.SetEnabledOnValueEquals(symmetricPlacement, false, edgeStraightening); edgeSettingsGroup.AddBool(PC_OPTIMIZATION_ENABLED, false); edgeSettingsGroup.AddList(RECURSIVE_EDGE_ROUTING, new[] { RECURSIVE_EDGE_ROUTING_OFF, RECURSIVE_EDGE_ROUTING_DIRECTED, RECURSIVE_EDGE_ROUTING_UNDIRECTED }, RECURSIVE_EDGE_ROUTING_OFF); OptionGroup rankGroup = Handler.AddGroup(RANKS); rankGroup.AddList(RANKING_POLICY, rankingPolicies.Keys, HIERARCHICAL_OPTIMAL); rankGroup.AddList(LAYER_ALIGNMENT, alignmentEnum.Keys, BOTTOM); rankGroup.AddList(COMPONENT_ARRANGEMENT_POLICY, componentAlignmentEnum.Keys, POLICY_TOPMOST); OptionGroup sketchGroup = rankGroup.AddGroup(FROM_SKETCH_PROPERTIES); sketchGroup.AddDouble(SCALE, 1.0d, 0.0d, 5.0d); sketchGroup.AddDouble(HALO, 0.0d); sketchGroup.AddDouble(MINIMUM_SIZE, 0.0d, 0, Double.MaxValue); sketchGroup.AddDouble(MAXIMUM_SIZE, 1000.0d, 0, Double.MaxValue); cm.SetEnabledOnValueEquals(Handler.GetItemByName(RANKS + "." + RANKING_POLICY), FROM_SKETCH, Handler.GetItemByName(RANKS + "." + FROM_SKETCH_PROPERTIES)); OptionGroup labelingGroup = Handler.AddGroup(LABELING); OptionGroup npGroup = labelingGroup.AddGroup(NODE_PROPERTIES); npGroup.AddBool(CONSIDER_NODE_LABELS, true); npGroup.SetAttribute(TableEditorFactory.RENDERING_HINTS_ATTRIBUTE, TableEditorFactory.RenderingHints.Invisible); //npGroup.SetAttribute(DefaultEditorFactory.RenderingHintsAttribute, // DefaultEditorFactory.RenderingHints.Invisible); OptionGroup epGroup = labelingGroup.AddGroup(LABELING_EDGE_PROPERTIES); CollectionOptionItem <string> edgeLabelingEnumItem = epGroup.AddList(EDGE_LABELING, edgeLabeling, EDGE_LABELING_NONE); CollectionOptionItem <string> labelModelItem = epGroup.AddList(EDGE_LABEL_MODEL, edgeLabelModel, EDGE_LABEL_MODEL_BEST); epGroup.SetAttribute(TableEditorFactory.RENDERING_HINTS_ATTRIBUTE, TableEditorFactory.RenderingHints.Invisible); ICondition cond = ConstraintManager.LogicalCondition.Not(cm.CreateValueEqualsCondition(edgeLabelingEnumItem, EDGE_LABELING_NONE)); cm.SetEnabledOnCondition(cond, labelModelItem); IOptionItem compactEdgeLabel = epGroup.AddBool(COMPACT_EDGE_LABEL_PLACEMENT, true); cm.SetEnabledOnValueEquals(edgeLabelingEnumItem, EDGE_LABELING_HIERARCHIC, compactEdgeLabel); OptionGroup groupingGroup = Handler.AddGroup(GROUPING); CollectionOptionItem <string> groupStrategyItem = groupingGroup.AddList(GROUP_LAYERING_STRATEGY, groupStrategyEnum.Keys, RECURSIVE_LAYERING); CollectionOptionItem <string> groupAlignItem = groupingGroup.AddList(GROUP_ALIGNMENT, groupAlignmentEnum.Keys, GROUP_ALIGN_TOP); IOptionItem groupCompactionItem = groupingGroup.AddBool(GROUP_ENABLE_COMPACTION, false); groupingGroup.AddList(GROUP_HORIZONTAL_COMPACTION, groupHorizCompactionEnum.Keys, GROUP_HORIZONTAL_COMPACTION_NONE); cm.SetEnabledOnValueEquals(groupStrategyItem, RECURSIVE_LAYERING, groupCompactionItem); cm.SetEnabledOnValueEquals(groupStrategyItem, RECURSIVE_LAYERING, groupAlignItem); cm.SetEnabledOnValueEquals(useDrawingItem, false, groupStrategyItem); cm.SetEnabledOnCondition(ConstraintManager.LogicalCondition.And(cm.CreateValueEqualsCondition(groupStrategyItem, RECURSIVE_LAYERING), cm.CreateValueEqualsCondition(groupCompactionItem, false)), groupAlignItem); cm.SetEnabledOnCondition(ConstraintManager.LogicalCondition.And(cm.CreateValueEqualsCondition(groupStrategyItem, RECURSIVE_LAYERING), cm.CreateValueEqualsCondition(useDrawingItem, false)), groupCompactionItem); OptionGroup swimGroup = Handler.AddGroup(SWIMLANES); IOptionItem swimlaneOption = swimGroup.AddBool(TREAT_ROOT_GROUPS_AS_SWIMLANES, false); IOptionItem fromSketchOption = swimGroup.AddBool(USE_ORDER_FROM_SKETCH, false); IOptionItem spacingOption = swimGroup.AddDouble(SWIMLANE_SPACING, 0.0d, 0, Double.MaxValue); cm.SetEnabledOnValueEquals(swimlaneOption, true, fromSketchOption); cm.SetEnabledOnValueEquals(swimlaneOption, true, spacingOption); OptionGroup gridGroup = Handler.AddGroup(GRID); IOptionItem gridEnabled = gridGroup.AddBool(GRID_ENABLED, false); IOptionItem gridSpacing = gridGroup.AddDouble(GRID_SPACING, 10); IOptionItem gridPortAssignment = gridGroup.AddList(GRID_PORT_ASSIGNMENT, new[] { GRID_PORT_ASSIGNMENT_DEFAULT, GRID_PORT_ASSIGNMENT_ON_GRID, GRID_PORT_ASSIGNMENT_ON_SUBGRID }, GRID_PORT_ASSIGNMENT_DEFAULT); cm.SetEnabledOnValueEquals(gridEnabled, true, gridSpacing); cm.SetEnabledOnValueEquals(gridEnabled, true, gridPortAssignment); }