Esempio n. 1
0
 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();
     }
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }