public override void Execute() { using (SceneEditTransaction editTransaction = this.SceneViewModel.CreateEditTransaction(this.UndoString)) { ItemsControlElement itemsControlElement = this.TargetElement as ItemsControlElement; if (itemsControlElement != null) { ITypeId itemType = this.ItemType; StyleAsset asset = this.Asset; IProperty targetProperty = this.SceneViewModel.ProjectContext.ResolveProperty(ItemsControlElement.ItemsProperty); ISceneInsertionPoint insertionPoint = (ISceneInsertionPoint) new PropertySceneInsertionPoint((SceneElement)itemsControlElement, targetProperty); if (asset != null && asset.CanCreateInstance(insertionPoint)) { IExpandable expandable = this.TargetElement as IExpandable; if (expandable != null) { using (this.SceneViewModel.ForceBaseValue()) this.TargetElement.SetValue(expandable.ExpansionProperty, (object)true); } asset.CreateInstance(this.DesignerContext.LicenseManager, insertionPoint, Rect.Empty, (OnCreateInstanceAction)null); } else { this.TypeInstantiator.CreateInstance(itemType, insertionPoint, Rect.Empty, (OnCreateInstanceAction)null); } } editTransaction.Commit(); } }
internal static IViewObject GetContainerHost(SceneElement container) { ItemsControlElement itemsControlElement = container as ItemsControlElement; if (itemsControlElement != null) { return((IViewObject)itemsControlElement.ItemsHost); } if (container != null) { return(container.ViewObject); } return((IViewObject)null); }
private static MoveStrategy CreateForLayoutMode(MoveStrategyContext context, SceneElement hitElement) { SceneElement sceneElement = hitElement; while (sceneElement != null) { BaseFrameworkElement frameworkElement = sceneElement as BaseFrameworkElement; if (frameworkElement != null && context.RootNode.IsAncestorOf((SceneNode)frameworkElement)) { if (!MoveStrategyFactory.CanMoveInside(context, frameworkElement)) { sceneElement = frameworkElement.ParentElement; continue; } MoveStrategy byParentType = MoveStrategyFactory.CreateByParentType(context, frameworkElement); if (byParentType != null) { bool flag = false; ItemsControlElement itemsControlElement = frameworkElement.ParentElement as ItemsControlElement; ContentControlElement contentControlElement = frameworkElement as ContentControlElement; if (itemsControlElement != null && contentControlElement != null && (ItemsControlElement.ItemsProperty.Equals((object)itemsControlElement.GetPropertyForChild((SceneNode)frameworkElement)) && (itemsControlElement.ViewObject as IViewItemsControl).IsItemItsOwnContainer(contentControlElement.ViewObject))) { flag = true; } if (!flag) { IProperty contentProperty = MoveStrategyFactory.GetContentProperty(context, (SceneNode)frameworkElement); int childrenForElement = MoveStrategy.GetMaxChildrenForElement((SceneElement)frameworkElement, contentProperty); if (context.DraggedElements.Count <= childrenForElement && (childrenForElement != 1 || context.DraggedElements.Count != 1 || (!frameworkElement.IsAncestorOf((SceneNode)context.DraggedElements[0]) || context.DraggedElements[0].Parent == frameworkElement))) { byParentType.LayoutContainer = frameworkElement; return(byParentType); } } } } if (sceneElement != context.RootNode) { sceneElement = sceneElement.ParentElement; } else { break; } } return((MoveStrategy)null); }
protected string GetDisplayName(IPropertyId referenceStep) { ItemsControlElement itemsControlElement = this.TargetElement as ItemsControlElement; if (itemsControlElement != null && referenceStep == ItemsControlElement.GetItemContainerStyleProperty(itemsControlElement.ProjectContext, (ITypeId)itemsControlElement.Type)) { referenceStep = ItemsControlElement.ItemContainerStyleProperty; } foreach (KeyValuePair <IPropertyId, string> keyValuePair in ControlStylingPropertyListCommandBase.displayNames) { if (keyValuePair.Key.Equals((object)referenceStep)) { return(keyValuePair.Value); } } return((string)null); }
public static ILayoutDesigner Instantiate(SceneNode node) { LayoutDesignerFactory.LayoutDesignerTypeHandlerFactory orCreateCache = DesignSurfacePlatformCaches.GetOrCreateCache <LayoutDesignerFactory.LayoutDesignerTypeHandlerFactory>(node.Platform.Metadata, DesignSurfacePlatformCaches.LayoutDesignerFactory); ItemsControlElement itemsControlElement = node as ItemsControlElement; Type type = (Type)null; if (itemsControlElement != null && itemsControlElement.ItemsHost != null) { type = orCreateCache.GetLayoutDesignerType((ITypeResolver)itemsControlElement.ProjectContext, itemsControlElement.ProjectContext.GetType(itemsControlElement.ItemsHost.GetType()), true); } if (type == (Type)null) { type = orCreateCache.GetLayoutDesignerType((ITypeResolver)node.ProjectContext, node.Type, false); } if (!(type == (Type)null)) { return((ILayoutDesigner)Activator.CreateInstance(type, (object[])null)); } return((ILayoutDesigner)null); }
private static MoveStrategy CreateByParentType(MoveStrategyContext context, BaseFrameworkElement parentContainer) { MoveStrategyFactory.MoveStrategyTypeHandlerFactory orCreateCache = DesignSurfacePlatformCaches.GetOrCreateCache <MoveStrategyFactory.MoveStrategyTypeHandlerFactory>(parentContainer.Platform.Metadata, DesignSurfacePlatformCaches.MoveStrategyFactoryCache); ItemsControlElement itemsControlElement = parentContainer as ItemsControlElement; TextBlockElement textBlockElement = parentContainer as TextBlockElement; Type type = (Type)null; if (itemsControlElement != null && itemsControlElement.ItemsHost != null) { type = orCreateCache.GetHandlerType((ITypeResolver)itemsControlElement.ProjectContext, itemsControlElement.ItemsHost.GetIType((ITypeResolver)parentContainer.ProjectContext), true); } if (type == (Type)null) { type = orCreateCache.GetHandlerType((ITypeResolver)parentContainer.ProjectContext, parentContainer.Type, false); } if (type == typeof(GenericMoveStrategy)) { ILayoutDesigner designerForParent = parentContainer.ViewModel.GetLayoutDesignerForParent((SceneElement)parentContainer, true); if ((designerForParent.GetWidthConstraintMode(parentContainer, (BaseFrameworkElement)null) & LayoutConstraintMode.CanvasLike) == LayoutConstraintMode.NonOverlappingGridlike && (designerForParent.GetHeightConstraintMode(parentContainer, (BaseFrameworkElement)null) & LayoutConstraintMode.CanvasLike) == LayoutConstraintMode.NonOverlappingGridlike) { type = typeof(LayoutMoveStrategy); } } if (textBlockElement != null && !parentContainer.ViewModel.ProjectContext.IsCapabilitySet(PlatformCapability.SupportsTextBlockInlineUIContainer)) { type = (Type)null; } if (!(type != (Type)null)) { return((MoveStrategy)null); } MoveStrategy moveStrategy = (MoveStrategy)Activator.CreateInstance(type, new object[1] { (object)context }); moveStrategy.LayoutContainer = parentContainer; return(moveStrategy); }
public virtual IList <SceneNode> CreateNodeTreeOnInsertion(SceneNode node) { List <SceneNode> list = new List <SceneNode>(); list.Add(node); if (ProjectNeutralTypes.TabControl.IsAssignableFrom((ITypeId)node.Type)) { ItemsControlElement itemsControlElement = (ItemsControlElement)node; SceneElement sceneElement1 = (SceneElement)node.ViewModel.CreateSceneNode(ProjectNeutralTypes.TabItem); itemsControlElement.Items.Add((SceneNode)sceneElement1); list.AddRange((IEnumerable <SceneNode>) this.CreateNodeTreeOnInsertion((SceneNode)sceneElement1)); SceneElement sceneElement2 = (SceneElement)node.ViewModel.CreateSceneNode(ProjectNeutralTypes.TabItem); itemsControlElement.Items.Add((SceneNode)sceneElement2); list.AddRange((IEnumerable <SceneNode>) this.CreateNodeTreeOnInsertion((SceneNode)sceneElement2)); } else if (PlatformTypes.Popup.IsAssignableFrom((ITypeId)node.Type) || ProjectNeutralTypes.Expander.IsAssignableFrom((ITypeId)node.Type) || ProjectNeutralTypes.TabItem.IsAssignableFrom((ITypeId)node.Type)) { GridElement gridElement = (GridElement)node.ViewModel.CreateSceneNode(PlatformTypes.Grid); SolidColorBrushNode solidColorBrushNode = (SolidColorBrushNode)node.ViewModel.CreateSceneNode(PlatformTypes.SolidColorBrush); solidColorBrushNode.SetValueAsWpf(SolidColorBrushNode.ColorProperty, (object)Color.FromArgb(byte.MaxValue, (byte)229, (byte)229, (byte)229)); gridElement.SetValueAsSceneNode(PanelElement.BackgroundProperty, (SceneNode)solidColorBrushNode); SceneElement sceneElement = (SceneElement)node; if (sceneElement.DefaultInsertionPoint != null) { sceneElement.DefaultInsertionPoint.Insert((SceneNode)gridElement); list.Add((SceneNode)gridElement); IExpandable expandable = node as IExpandable; if (expandable != null) { expandable.EnsureExpandable(); if (sceneElement.ProjectContext.ResolveProperty(expandable.DesignTimeExpansionProperty) != null) { node.SetLocalValue(expandable.DesignTimeExpansionProperty, (object)true); } } } } return((IList <SceneNode>)list); }