internal Item( DominatorDescription description, Func<DominatorState> getter, Action<DominationAction> setter) { Description = description; _getter = getter; _setter = setter; }
public IDominator Specification() { // it comes in handy to allow zero nested items when building new dominators. // if (_nested.Count == 0) // throw new InvalidOperationException($"{_title}: no nested dominators"); var description = new DominatorDescription(_title, _explanation_ ?? ""); var dominator = new Group(description, _nested.ToArray()); return dominator; }
public Group(DominatorDescription description, IDominator[] nested) { Description = description; Nested = nested; }
IDominator Specification() { if (_getter_ == null) throw new InvalidOperationException($"{_title}: missing getter"); if (_setter_ == null) throw new InvalidOperationException($"{_title}: missing setter"); var description = new DominatorDescription(_title, _explanation_ ?? "", _more_); var dominator = new Item(description, _getter_, _setter_); return dominator; }
public static UIElement CreateDescription(DominatorDescription description, bool forGroup) { var panel = new StackPanel(); var hasExplanation = description.Explanation != ""; var showTitle = hasExplanation; if (showTitle) { var title = CreateTextBlock(description.Title); title.FontSize = forGroup ? 22 : 16; panel.Children.Add(title); } var explanation = hasExplanation ? description.Explanation : description.Title; var explanationLabel = CreateTextBlock(explanation); if (!showTitle) explanationLabel.FontSize = forGroup ? 22 : 16; if (description.More_ != null) { var hPanel = new Grid { ColumnDefinitions = { new ColumnDefinition { Width=new GridLength(1, GridUnitType.Star) }, new ColumnDefinition { Width = GridLength.Auto } } }; hPanel.Children.Add(explanationLabel); var moreLink = createHyperlink(M_more___, description.More_.Value.Action, description.More_.Value.Info); moreLink.Margin = new Thickness(0, 0, 0, DefaultMargin); moreLink.VerticalAlignment = VerticalAlignment.Bottom; Grid.SetColumn(moreLink, 1); hPanel.Children.Add(moreLink); panel.Children.Add(hPanel); } else { panel.Children.Add(explanationLabel); } return panel; }