public virtual void SaveView(ViewGroupId groupId, ViewSpec viewSpec, string originalName) { var viewSpecList = GetViewSpecList(groupId) ?? ViewSpecList.EMPTY; viewSpecList = viewSpecList.ReplaceView(originalName, viewSpec); SaveViewSpecList(groupId, viewSpecList); }
public virtual void SaveView(ViewGroupId groupId, ViewSpec viewSpec, string originalName) { var viewSpecList = GetViewSpecList(groupId) ?? ViewSpecList.EMPTY; viewSpecList = viewSpecList.ReplaceView(originalName, new ViewSpecLayout(viewSpec, viewSpecList.GetViewLayouts(viewSpec.Name))); SaveViewSpecList(groupId, viewSpecList); }
public override int GetHashCode() { unchecked { return(((ViewSpec != null ? ViewSpec.GetHashCode() : 0) * 397) ^ (ViewLayoutList != null ? ViewLayoutList.GetHashCode() : 0)); } }
private void ReadXml(XmlReader reader) { if (ViewSpecs != null) { throw new ReadOnlyException(); } if (reader.IsEmptyElement) { ViewSpecs = ImmutableList.Empty <ViewSpec>(); reader.ReadElementString("views"); // Not L10N return; } reader.Read(); var viewItems = new List <ViewSpec>(); while (true) { if (reader.IsStartElement("view")) // Not L10N { viewItems.Add(ViewSpec.ReadXml(reader)); } else if (reader.NodeType == XmlNodeType.EndElement) { reader.ReadEndElement(); break; } else { reader.Read(); } } ViewSpecs = ImmutableList.ValueOf(viewItems); }
public void ReadXml(XmlReader reader) { Name = reader.GetAttribute("name"); if (reader.IsEmptyElement) { reader.ReadElementString("views"); return; } reader.Read(); var viewSpecs = new List <ViewSpec>(); while (true) { if (reader.IsStartElement("view")) { viewSpecs.Add(ViewSpec.ReadXml(reader)); } else if (reader.NodeType == XmlNodeType.EndElement) { reader.ReadEndElement(); break; } else { reader.Read(); } } ViewSpecs = viewSpecs.AsReadOnly(); }
public ViewSpecLayout ChangeName(string name) { return(ChangeProp(ImClone(this), im => { im.ViewSpec = ViewSpec.SetName(name); im.ViewLayoutList = ViewLayoutList.ChangeViewName(name); })); }
public ViewInfo GetViewInfo(ViewGroup viewGroup, ViewSpec viewSpec) { var rowSourceInfo = GetRowSourceInfo(viewSpec); if (null == rowSourceInfo) { return(null); } return(new ViewInfo(DataSchema, rowSourceInfo.RowType, viewSpec).ChangeViewGroup(viewGroup)); }
public ViewInfo(ColumnDescriptor parentColumn, ViewSpec viewSpec) { ParentColumn = parentColumn; DataSchema = parentColumn.DataSchema; Name = viewSpec.Name; var columnSpecs = viewSpec.Columns.ToDictionary(c => c.IdentifierPath, c => c); _columnDescriptors.Add(parentColumn.IdPath, parentColumn); ColumnDescriptors = Array.AsReadOnly(viewSpec.Columns .Select(c => GetColumnDescriptor(columnSpecs, c.IdentifierPath)).ToArray()); SublistId = viewSpec.SublistId; }
public ViewSpec CustomizeView(Control owner, ViewSpec viewSpec) { viewSpec = MakeEditable(viewSpec); using (var customizeViewForm = new CustomizeViewForm(this, viewSpec)) { if (customizeViewForm.ShowDialog(owner.TopLevelControl) == DialogResult.Cancel) { return(null); } // Consider: if save fails, reshow CustomizeViewForm? return(SaveView(customizeViewForm.ViewSpec)); } }
public ColumnSelector(ColumnDescriptor rootColumn, PropertyPath propertyPath) { var viewSpec = new ViewSpec().SetColumns(ImmutableList.Singleton(new ColumnSpec(propertyPath))) .SetSublistId(propertyPath); ViewInfo = new ViewInfo(rootColumn, viewSpec); var displayColumn = ViewInfo.DisplayColumns[0]; if (displayColumn.ColumnDescriptor != null && null != displayColumn.ColumnDescriptor.CollectionAncestor()) { Pivoter = new Pivoter(ViewInfo); } }
public ViewInfo(ColumnDescriptor parentColumn, ViewSpec viewSpec) { ParentColumn = parentColumn; DataSchema = parentColumn.DataSchema; Name = viewSpec.Name; RowSourceName = viewSpec.RowSource; _columnDescriptors.Add(parentColumn.PropertyPath, parentColumn); var displayColumns = new List <DisplayColumn>(); foreach (var column in viewSpec.Columns) { var columnDescriptor = GetColumnDescriptor(column.PropertyPath); displayColumns.Add(new DisplayColumn(this, column, columnDescriptor)); } DisplayColumns = Array.AsReadOnly(displayColumns.ToArray()); SublistId = viewSpec.SublistId; var filters = new List <FilterInfo>(); foreach (var filterSpec in viewSpec.Filters) { var columnDescriptor = GetColumnDescriptor(filterSpec.ColumnId); ColumnDescriptor collectionColumn = null; if (columnDescriptor != null) { collectionColumn = columnDescriptor.CollectionAncestor() ?? ParentColumn; } filters.Add(new FilterInfo(filterSpec, columnDescriptor, collectionColumn)); } Filters = Array.AsReadOnly(filters.ToArray()); var sorts = new List <KeyValuePair <int, DisplayColumn> >(); for (int i = 0; i < DisplayColumns.Count; i++) { if (DisplayColumns[i].ColumnSpec.SortDirection != null) { sorts.Add(new KeyValuePair <int, DisplayColumn>(i, DisplayColumns[i])); } } if (sorts.Count > 0) { sorts.Sort(CompareSortEntries); SortColumns = Array.AsReadOnly(sorts.Select(kvp => kvp.Value).ToArray()); } else { SortColumns = new DisplayColumn[0]; } }
public virtual ViewSpec CustomizeView(Control owner, ViewSpec viewSpec, ViewGroup viewPath) { using (var customizeViewForm = CreateViewEditor(viewPath, viewSpec)) { if (FormUtil.ShowDialog(owner, customizeViewForm) == DialogResult.Cancel) { return(null); } // Consider: if save fails, reshow CustomizeViewForm? ViewInfo viewInfo = customizeViewForm.ViewInfo; viewInfo = new ViewInfo(viewInfo.ParentColumn, viewInfo.GetViewSpec().SetName(customizeViewForm.ViewName)); SaveView(viewPath.Id, viewInfo.GetViewSpec(), viewSpec.Name); return(viewInfo.GetViewSpec()); } }
public virtual ViewSpec SaveView(ViewSpec newViewSpec) { var viewSpecs = new List <ViewSpec>(CustomViewSpecs); var existingIndex = viewSpecs.FindIndex(vs => vs.Name == newViewSpec.Name); if (existingIndex >= 0) { viewSpecs[existingIndex] = newViewSpec; } else { viewSpecs.Add(newViewSpec); } SetCustomViewSpecs(viewSpecs); return(newViewSpec); }
public ViewSpecList ReplaceView(string oldName, ViewSpec newView) { List <ViewSpec> items = new List <ViewSpec>(); bool found = false; foreach (var item in ViewSpecs) { if (item.Name != oldName) { items.Add(item); continue; } found = true; if (newView != null) { items.Add(newView); } } if (!found && null != newView) { items.Add(newView); } IEnumerable <ViewLayoutList> newLayouts; if (oldName != null) { if (newView == null) { newLayouts = ViewLayouts.Where(layout => layout.ViewName != oldName); } else if (newView.Name == oldName) { newLayouts = ViewLayouts; } else { newLayouts = ViewLayouts.Where(layout => layout.ViewName != newView.Name) .Select(layout => layout.ViewName == oldName ? layout.ChangeViewName(newView.Name) : layout); } } else { newLayouts = ViewLayouts; } return(new ViewSpecList(items, newLayouts)); }
public virtual ViewSpec MakeEditable(ViewSpec viewSpec) { if (!IsReadOnly(viewSpec) && !string.IsNullOrEmpty(viewSpec.Name)) { return(viewSpec); } var viewNames = new HashSet <string>(BuiltInViewSpecs.Select(builtInViewSpec => builtInViewSpec.Name)); viewNames.UnionWith(CustomViewSpecs.Select(customViewSpec => customViewSpec.Name)); for (int index = 1; ; index++) { string name = "CustomView" + index; if (!viewNames.Contains(name)) { return(viewSpec.SetName(name)); } } }
protected static ViewSpec GetDefaultViewSpec(ColumnDescriptor parentColumn) { var viewSpec = new ViewSpec().SetName(DefaultViewName).SetRowType(parentColumn.PropertyType).SetUiMode(parentColumn.UiMode); var columns = new List <ColumnSpec>(); foreach (var column in parentColumn.GetChildColumns()) { if (null != column.DataSchema.GetCollectionInfo(column.PropertyType)) { continue; } if (column.DataSchema.IsHidden(column)) { continue; } columns.Add(new ColumnSpec(PropertyPath.Root.Property(column.Name))); } viewSpec = viewSpec.SetColumns(columns); return(viewSpec); }
private void ReadXml(XmlReader reader) { if (Views != null) { throw new ReadOnlyException(); } if (reader.IsEmptyElement) { ViewSpecLayouts = ImmutableList.Empty <ViewSpecLayout>(); reader.ReadElementString(@"views"); return; } reader.Read(); var viewItems = new List <ViewSpec>(); var layouts = new List <ViewLayoutList>(); while (true) { if (reader.IsStartElement(@"view")) { viewItems.Add(ViewSpec.ReadXml(reader)); } else if (reader.IsStartElement(@"layouts")) { layouts.Add(ViewLayoutList.ReadXml(reader)); } else if (reader.NodeType == XmlNodeType.EndElement) { reader.ReadEndElement(); break; } else { reader.Skip(); } } ViewSpecLayouts = ImmutableList.ValueOf(MakeViewSpecLayouts(viewItems, layouts)); }
public ViewSpecList ReplaceView(string oldName, ViewSpec newView) { List <ViewSpec> items = new List <ViewSpec>(); bool found = false; foreach (var item in ViewSpecs) { if (item.Name != oldName) { items.Add(item); continue; } found = true; if (newView != null) { items.Add(newView); } } if (!found && null != newView) { items.Add(newView); } return(new ViewSpecList(items)); }
public virtual int GetImageIndex(ViewSpec viewItem) { return(-1); }
public ViewSpecLayout(ViewSpec viewSpec, ViewLayoutList layouts) { ViewSpec = viewSpec; ViewLayoutList = EnsureName(layouts, viewSpec.Name); }
protected virtual ViewEditor CreateViewEditor(ViewGroup viewGroup, ViewSpec viewSpec) { return(new ViewEditor(this, GetViewInfo(viewGroup, viewSpec))); }
protected RowSourceInfo GetRowSourceInfo(ViewSpec viewSpec) { return(RowSources.FirstOrDefault(rowSource => rowSource.Name == viewSpec.RowSource)); }
public ViewInfo(DataSchema dataSchema, Type rootType, ViewSpec viewSpec) : this(ColumnDescriptor.RootColumn(dataSchema, rootType, viewSpec.UiMode), viewSpec) { }
public ViewInfo(DataSchema dataSchema, Type rootType, ViewSpec viewSpec) : this(new ColumnDescriptor(dataSchema, rootType), viewSpec) { }
public ViewSpecList() { ViewSpecs = new ViewSpec[0]; }
protected virtual bool IsReadOnly(ViewSpec viewSpec) { return(BuiltInViewSpecs.Any(builtInViewSpec => viewSpec.Name == builtInViewSpec.Name)); }
public View(ViewSpec spec, ViewLayoutList layouts) { ViewSpec = spec; _layouts = layouts; }
protected AbstractViewContext(ColumnDescriptor parentColumn) { ParentColumn = parentColumn; BuiltInViewSpecs = new ViewSpec[0]; }