void GenerateAll(ModelNode node, IModelMergedDifferenceStrategyIncludedNodePaths modelMergedDifferenceStrategyNodePaths) { var modelApplicationCreator = ((ModelNode)node.Application.Views).CreatorInstance; var modelNodeInfo = modelApplicationCreator.GetNodeInfo(typeof(IModelDetailView)); GenerateNodePath(modelNodeInfo, modelMergedDifferenceStrategyNodePaths, ViewType.DetailView); modelNodeInfo = modelApplicationCreator.GetNodeInfo(typeof(IModelListView)); GenerateNodePath(modelNodeInfo, modelMergedDifferenceStrategyNodePaths, ViewType.ListView); }
void RemoveNodes(IModelMergedDifferenceStrategyIncludedNodePaths nodePaths, Func <HashSet <string>, string, bool> func) { for (int i = nodePaths.NodeCount - 1; i >= 0; i--) { var modelNode = nodePaths.GetNode(i); var value = modelNode.Id(); if (func.Invoke(LayoutNodeNames, value)) { modelNode.Remove(); } } }
void GenerateNodePath(ModelNodeInfo modelNodeInfo, IModelMergedDifferenceStrategyIncludedNodePaths modelMergedDifferenceStrategyNodePaths, ViewType viewType) { var names = ((IEnumerable <object>)modelNodeInfo.GetPropertyValue("ChildrenInfo")).Select(o => o.GetPropertyValue("Name")).Cast <string>(); foreach (var name in names) { var path = modelMergedDifferenceStrategyNodePaths[name]; if (path == null) { var nodePath = modelMergedDifferenceStrategyNodePaths.AddNode <IModelMergedDifferenceStrategyIncludedNodePath>(name); nodePath.NodePath = name; nodePath.ViewType = viewType; } else { path.ViewType = ViewType.Any; } } }