public virtual void RefreshHostDescriptor(IGroupDescriptor descriptor) { PatternNodes.Where(p => p.Value.GetType() == typeof(Place)).ToList().ForEach( pp => { var k = pp.Key + "_" + GetHashCode(); var v = new FieldDescriptor <Place> { Value = pp.Value as Place, Attributes = new List <Attribute>() // GetType().GetField(pp.Key).GetCustomAttributes(true).Cast<Attribute>().ToList() }; descriptor.Places.Add( k, v ); } ); var pns = PatternNodes.Where(p => p.Value.GetType() == typeof(Transition)).ToList(); pns.ForEach( p => { var key = p.Key + "_" + GetHashCode(); var t = GetType(); var f = t.GetField( p.Key, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance ); var val = new FieldDescriptor <Transition>() { Value = (Transition)p.Value }; if (f != null) { var attrs = f.GetCustomAttributes(true).Cast <Attribute>().ToList(); val.Attributes = attrs; } descriptor.Transitions.Add(key, val); } ); }
private static IGroupDescriptor[] Simplify(IGroupDescriptor groupDescriptor) { var itemCount = groupDescriptor.Items.Count; if (itemCount == 0) { return(EmptyArray <IGroupDescriptor> .Instance); } // ReSharper disable once TailRecursiveCall if (itemCount == 1 && groupDescriptor.Items.First() is IGroupDescriptor group) { return(Simplify(group)); } if (groupDescriptor.Items.All(item => item is IGroupDescriptor)) { return(groupDescriptor.Items.OfType <IGroupDescriptor>().ToArray()); } return(new[] { groupDescriptor }); }
public static string GetMemberName(this IGroupDescriptor descriptor) { var groupDescriptor = descriptor as GroupDescriptor; if (groupDescriptor != null) { return(groupDescriptor.Member); } var columnGroupDescriptor = descriptor as ColumnGroupDescriptor; if (columnGroupDescriptor != null) { var boundColumn = columnGroupDescriptor.Column as GridViewBoundColumnBase; if (boundColumn != null) { return(boundColumn.GetDataMemberName()); } } return(null); }
public static GroupViewModel CreateGroupViewModel(IGroupDescriptor group, int depth = 0, bool click2Collapse = false, Func <bool> collapseControl = null) { var groupHeader = CreateGroupHeader(group.Name, group.Description, click2Collapse); var dockPanel = CreateGroupPanel(groupHeader, depth); var itemsPanel = new StackPanel(); dockPanel.Children.Add(itemsPanel); var viewModel = new GroupViewModel(group, groupHeader, dockPanel, itemsPanel, depth); if (click2Collapse) { groupHeader.MouseLeftButtonUp += (sender, e) => { var collapse = !viewModel.IsCollapsed; if (collapse && collapseControl != null && !collapseControl()) { return; } viewModel.SetCollapsed(collapse); } } ; return(viewModel); }
private bool Equals(IGroupDescriptor other) => string.Equals(Name, other.Name) && Equals(Items, other.Items);
public virtual bool CanCollapse(IGroupDescriptor group, int depth) => true;