private void GenerateDataGridColumnsIfNeeded(DataGridElement dataGridElement, IProperty targetProperty) { if (!DataGridElement.ItemsSourceProperty.Equals((object)targetProperty) && !ItemsControlElement.ItemsSourceProperty.Equals((object)targetProperty) || this.DragModel.RelativeDropSchemaPath.IsProperty) { return; } IList <DataSchemaNodePath> relativeSchemaPaths = this.GetRelativeSchemaPaths(); if (relativeSchemaPaths.Count == 0) { return; } using (SceneEditTransaction editTransaction = this.DragModel.Document.CreateEditTransaction(StringTable.UndoUnitCreateTemplate)) { dataGridElement.SetValue(DataGridElement.AutoGenerateColumnsProperty, (object)false); ISceneNodeCollection <SceneNode> columnCollection = dataGridElement.ColumnCollection; for (int index = 0; index < relativeSchemaPaths.Count; ++index) { DataSchemaNodePath schemaPath = relativeSchemaPaths[index]; IType type = schemaPath.Type; if (type.NullableType != null) { type = type.NullableType; } SceneNode sceneNode = !PlatformTypes.Boolean.IsAssignableFrom((ITypeId)type) ? (!PlatformTypes.IConvertible.IsAssignableFrom((ITypeId)type) ? this.CreateDataGridTemplateColumn(schemaPath) : this.CreateDataGridBoundColumn(schemaPath, ProjectNeutralTypes.DataGridTextColumn)) : this.CreateDataGridBoundColumn(schemaPath, ProjectNeutralTypes.DataGridCheckBoxColumn); columnCollection.Add(sceneNode); } editTransaction.Commit(); } }
public static bool CanEditInPlace(SceneElement targetElement, ReferenceStep targetProperty, DocumentNodePath template) { DocumentNodePath documentNodePath = targetElement.DocumentNodePath; SceneViewModel viewModel = targetElement.ViewModel.GetViewModel(template.Node.DocumentRoot, true); if (targetElement.IsViewObjectValid && (targetElement.IsInstantiatedElementVisible || PlatformTypes.Style.IsAssignableFrom((ITypeId)template.Node.Type) && (targetProperty.Equals((object)BaseFrameworkElement.StyleProperty) || targetProperty == StyleNode.BasedOnProperty)) && (viewModel == targetElement.ViewModel && documentNodePath.IsAncestorOf(template))) { if (viewModel.DefaultView.GetInstantiatedElements(template).Count > 0) { return(true); } if (!viewModel.ProjectContext.IsCapabilitySet(PlatformCapability.IsWpf) && PlatformTypes.FrameworkTemplate.IsAssignableFrom((ITypeId)template.Node.Type)) { SceneNode valueAsSceneNode = viewModel.GetSceneNode(template.Node).GetLocalValueAsSceneNode(viewModel.ProjectContext.PlatformMetadata.KnownProperties.FrameworkTemplateVisualTree); if (valueAsSceneNode != null) { IViewVisual viewVisual = targetElement.ViewTargetElement as IViewVisual; if (viewVisual == null && ProjectNeutralTypes.DataGridColumn.IsAssignableFrom((ITypeId)targetElement.Type)) { DataGridElement dataGridElement = targetElement.Parent as DataGridElement; if (dataGridElement != null && targetElement.DocumentNode.IsChild && (targetElement.DocumentNode.Parent.IsProperty && DataGridElement.ColumnsProperty.Equals((object)targetElement.DocumentNode.Parent.SitePropertyKey))) { viewVisual = dataGridElement.ViewTargetElement as IViewVisual; } } if (viewVisual != null) { DocumentNodePath pathInContainer = template.GetPathInContainer(valueAsSceneNode.DocumentNode); foreach (IViewObject viewObject in (IEnumerable <IViewObject>)viewModel.DefaultView.GetInstantiatedElements(pathInContainer)) { IViewVisual visual = viewObject as IViewVisual; if (visual != null && viewVisual.IsAncestorOf(visual)) { return(true); } } } } } } return(false); }
private void GenerateDetailsIfNeeded(SceneNode targetNode, IProperty targetProperty) { if (!this.ShouldGenerateDetails(targetProperty)) { return; } DataGridElement dataGridElement = targetNode as DataGridElement; if (dataGridElement != null) { this.GenerateDataGridColumnsIfNeeded(dataGridElement, targetProperty); } else if (ProjectNeutralTypes.TreeView.IsAssignableFrom((ITypeId)targetNode.Type)) { this.GenerateHierarchicalDataTemplateIfNeeded(targetNode); } else { this.GenerateDataTemplateIfNeeded(targetNode, PlatformTypes.DataTemplate); } }
private static IEnumerable <IType> GetGridColumnTypes(DataGridElement gridElement) { IType columnBaseType = gridElement.ColumnBaseType; AddDataGridColumnsCommand.resolvedColumnTypes.RemoveAll((Predicate <List <WeakReference> >)(reaOnlyList => !reaOnlyList[0].IsAlive)); int index = AddDataGridColumnsCommand.resolvedColumnTypes.FindIndex((Predicate <List <WeakReference> >)(reaOnlyList => reaOnlyList[0].Target == columnBaseType)); List <WeakReference> list = (List <WeakReference>)null; if (index >= 0) { list = AddDataGridColumnsCommand.resolvedColumnTypes[index]; if (list.Find((Predicate <WeakReference>)(r => !r.IsAlive)) != null) { AddDataGridColumnsCommand.resolvedColumnTypes.RemoveAt(index); list = (List <WeakReference>)null; } } if (list == null) { list = new List <WeakReference>(); foreach (Type type1 in AssemblyHelper.GetTypes(columnBaseType.RuntimeAssembly)) { if (columnBaseType.RuntimeType.IsAssignableFrom(type1) && !type1.IsAbstract && (!type1.IsGenericType && !type1.IsNotPublic)) { IType type2 = gridElement.DocumentNode.TypeResolver.GetType(type1); list.Add(new WeakReference((object)type2)); } } list.Sort((Comparison <WeakReference>)((a, b) => { string name1 = ((IMemberId)a.Target).Name; string name2 = ((IMemberId)b.Target).Name; return(StringLogicalComparer.Instance.Compare(name1, name2)); })); list.Insert(0, new WeakReference((object)columnBaseType)); AddDataGridColumnsCommand.resolvedColumnTypes.Add(list); } return(Enumerable.Select <WeakReference, IType>(Enumerable.Skip <WeakReference>((IEnumerable <WeakReference>)list, 1), (Func <WeakReference, IType>)(r => (IType)r.Target))); }
public AddDataGridColumnCommand(DataGridElement gridElement, IType columnType) { this.GridElement = gridElement; this.ColumnType = columnType; }