Exemple #1
0
        /// <exclude />
        public static bool ExecuteElementDraggedAndDropped(ElementHandle draggedElementHandle, ElementHandle newParentElementHandle, int dropIndex, bool isCopy, FlowControllerServicesContainer draggedElementFlowControllerServicesContainer)
        {
            if (draggedElementHandle == null)
            {
                throw new ArgumentNullException("draggedElementHandle");
            }
            if (newParentElementHandle == null)
            {
                throw new ArgumentNullException("newParentElementHandle");
            }
            if (draggedElementFlowControllerServicesContainer == null)
            {
                throw new ArgumentNullException("draggedElementFlowControllerServicesContainer");
            }

            if (draggedElementHandle.Equals(newParentElementHandle))
            {
                LoggingService.LogError("ElementFacade", "ExecuteElementDraggedAndDropped on the same element is not allowed");
                return(false);
            }

            DragAndDropType dragAndDropType = DragAndDropType.Move;

            if (isCopy)
            {
                dragAndDropType = DragAndDropType.Copy;
            }

            return(ElementProviderPluginFacade.OnElementDraggedAndDropped(draggedElementHandle.ProviderName, draggedElementHandle.EntityToken, newParentElementHandle.EntityToken, dropIndex, dragAndDropType, draggedElementFlowControllerServicesContainer));
        }
        public UIContainer(Color Colour, Color HighlightColour,
            Texture2D Texture = null, Vector2 Position = new Vector2(), Rectangle? SrcRect = null,
            int Width = UI_AUTO, int Height = UI_AUTO,
            bool IsActive = true, bool IsDraggable = false, CursorType CursorType = UI.CURSOR_DEFAULT,
            float MarginLeft = UI_AUTO, float MarginRight = UI_AUTO, float MarginTop = UI_AUTO, float MarginBottom = UI_AUTO,
            float opacity = UI_INHERIT, float layerDepth = UI_INHERIT,
            bool CentreHorizontal = false, bool CentreVertical = false,
            DragAndDropType DragAndDropType = DragAndDropType.None,
            object[] DataBinding = null)
            : base(Colour, HighlightColour, Texture, Position, SrcRect, Width, Height, IsActive, IsDraggable, CursorType, MarginLeft, MarginRight, MarginTop, MarginBottom, opacity, layerDepth)
        {
            Children = new List<UIElement>();
            this.CentreHorizontal = CentreHorizontal;
            this.CentreVertical = CentreVertical;

            this._dragAndDropType = DragAndDropType;
            if (_dragAndDropType == DragAndDropType.DropElement)
            {
                this.OnLeftReleased = OnLeftReleasedHandler;
            }

            this.DataBinding = DataBinding;
            if (this.DataBinding == null)
                this.DataBinding = new object[0];
        }
 public InventoryContainer(Texture2D Texture = null, Vector2 Position = new Vector2(), Rectangle? SrcRect = null,
  int Width = UI_AUTO, int Height = UI_AUTO,
  bool IsActive = true, bool IsDraggable = false, CursorType CursorType = UI.CURSOR_DEFAULT,
  int GridColumns = UI_AUTO, int GridRows = UI_AUTO,
  int RowHeight = UI_AUTO, int ColWidth = UI_AUTO,
  float MarginLeft = UI_AUTO, float MarginRight = UI_AUTO, float MarginTop = UI_AUTO, float MarginBottom = UI_AUTO,
  float opacity = UI_INHERIT, float layerDepth = UI_INHERIT,
  DragAndDropType DragAndDropType = DragAndDropType.None,
  object[] DataBinding = null)
     : base(Texture, Position, SrcRect, Width, Height, IsActive, IsDraggable, CursorType, GridColumns, GridRows, RowHeight, ColWidth, MarginLeft, MarginRight, MarginTop, MarginBottom, opacity, layerDepth, DragAndDropType, DataBinding)
 {
 }
        public bool OnElementDraggedAndDropped(EntityToken draggedEntityToken, EntityToken newParentEntityToken, int dropIndex, DragAndDropType dragAndDropType, FlowControllerServicesContainer flowControllerServicesContainer)
        {
            IPage draggedPage = (IPage)((DataEntityToken)draggedEntityToken).Data;

            Verify.IsNotNull(draggedPage, "Dragged page does not exist");

            Guid newParentPageId;

            if (newParentEntityToken is PageElementProviderEntityToken)
            {
                newParentPageId = Guid.Empty;
            }
            else if (newParentEntityToken is DataEntityToken)
            {
                IPage newParentPage = (IPage)((DataEntityToken)newParentEntityToken).Data;
                newParentPageId = newParentPage.Id;
            }
            else
            {
                throw new NotImplementedException();
            }

            IPage oldParent   = null;
            Guid  oldParentId = draggedPage.GetParentId();

            if (oldParentId != Guid.Empty)
            {
                oldParent = DataFacade.GetData <IPage>(f => f.Id == oldParentId).Single();
            }

            if (dragAndDropType == DragAndDropType.Move)
            {
                using (var transactionScope = TransactionsFacade.CreateNewScope())
                {
                    string urlTitle = draggedPage.UrlTitle;
                    int    counter  = 1;

                    while (true)
                    {
                        bool urlTitleClash =
                            (from p in PageServices.GetChildren(newParentPageId).AsEnumerable()
                             where p.UrlTitle == urlTitle && p.Id != draggedPage.Id
                             select p).Any();


                        if (!urlTitleClash)
                        {
                            break;
                        }

                        urlTitle = string.Format("{0}{1}", draggedPage.UrlTitle, counter++);
                    }

                    draggedPage.UrlTitle = urlTitle;

                    // Real drop index takes into account pages from other locales
                    int realDropIndex = GetRealDropIndex(draggedPage, newParentPageId, dropIndex);

                    draggedPage.MoveTo(newParentPageId, realDropIndex, false);

                    DataFacade.Update(draggedPage);

                    EntityTokenCacheFacade.ClearCache(draggedPage.GetDataEntityToken());

                    transactionScope.Complete();
                }
            }
            else
            {
                throw new NotImplementedException();
            }


            if (oldParent != null)
            {
                var oldParentParentTreeRefresher = new ParentTreeRefresher(flowControllerServicesContainer);
                oldParentParentTreeRefresher.PostRefreshMesseges(oldParent.GetDataEntityToken());
            }
            else
            {
                var oldParentspecificTreeRefresher = new SpecificTreeRefresher(flowControllerServicesContainer);
                oldParentspecificTreeRefresher.PostRefreshMesseges(new PageElementProviderEntityToken(_context.ProviderName));
            }

            var newParentParentTreeRefresher = new ParentTreeRefresher(flowControllerServicesContainer);

            newParentParentTreeRefresher.PostRefreshMesseges(newParentEntityToken);

            return(true);
        }
Exemple #5
0
        public static bool OnElementDraggedAndDropped(string providerName, EntityToken draggedEntityToken, EntityToken newParentEntityToken, int dropIndex, DragAndDropType dragAndDropType, FlowControllerServicesContainer draggedElementFlowControllerServicesContainer)
        {
            Verify.ArgumentNotNullOrEmpty(providerName, nameof(providerName));
            Verify.ArgumentNotNull(draggedEntityToken, nameof(draggedEntityToken));
            Verify.ArgumentNotNull(newParentEntityToken, nameof(newParentEntityToken));
            Verify.ArgumentNotNull(draggedElementFlowControllerServicesContainer, nameof(draggedElementFlowControllerServicesContainer));

            var provider = GetElementProvider(providerName) as IDragAndDropElementProvider;

            if (provider == null)
            {
                throw new ArgumentException($"The Element Provider identified byu the specified provider name does not implement {typeof(IDragAndDropElementProvider)}");
            }

            return(provider.OnElementDraggedAndDropped(draggedEntityToken, newParentEntityToken, dropIndex, dragAndDropType, draggedElementFlowControllerServicesContainer));
        }
Exemple #6
0
        public static bool OnElementDraggedAndDropped(string providerName, EntityToken draggedEntityToken, EntityToken newParentEntityToken, int dropIndex, DragAndDropType dragAndDropType, FlowControllerServicesContainer draggedElementFlowControllerServicesContainer)
        {
            if (string.IsNullOrEmpty(providerName))
            {
                throw new ArgumentNullException("providerName");
            }
            if (draggedEntityToken == null)
            {
                throw new ArgumentNullException("draggedEntityToken");
            }
            if (newParentEntityToken == null)
            {
                throw new ArgumentNullException("newParentEntityToken");
            }
            if (draggedElementFlowControllerServicesContainer == null)
            {
                throw new ArgumentNullException("draggedElementFlowControllerServicesContainer");
            }

            IDragAndDropElementProvider provider = GetElementProvider(providerName) as IDragAndDropElementProvider;

            if (provider == null)
            {
                throw new ArgumentException(string.Format("The Element Provider identified byu the specified provider name does not implement {0}", typeof(IDragAndDropElementProvider)));
            }

            return(provider.OnElementDraggedAndDropped(draggedEntityToken, newParentEntityToken, dropIndex, dragAndDropType, draggedElementFlowControllerServicesContainer));
        }
        public bool OnElementDraggedAndDropped(EntityToken draggedEntityToken, EntityToken newParentEntityToken, int dropIndex, DragAndDropType dragAndDropType, FlowControllerServicesContainer draggedElementFlowControllerServicesContainer)
        {
            var destinationNamespace = (NamespaceFolderEntityToken)newParentEntityToken;

            var dataToken = draggedEntityToken as DataEntityToken;

            if (dataToken != null)
            {
                var draggedResource = (IResourceKey)dataToken.Data;

                draggedResource.Key = destinationNamespace.Namespace + "." + draggedResource.Key.Split('.').Last();

                using (var data = new DataConnection())
                {
                    data.Update(draggedResource);
                }
            }

            var namespaceFolderToken = draggedEntityToken as NamespaceFolderEntityToken;

            if (namespaceFolderToken != null)
            {
                var key = namespaceFolderToken.Namespace.Split('.').Last();

                LocalizationsFacade.RenameNamespace(namespaceFolderToken.Namespace, destinationNamespace.Namespace + "." + key);
            }

            var treeRefresher = new SpecificTreeRefresher(draggedElementFlowControllerServicesContainer);

            treeRefresher.PostRefreshMesseges(new LocalizationElementProviderEntityToken());

            return(true);
        }
        public static bool OnElementDraggedAndDropped(string providerName, EntityToken draggedEntityToken, EntityToken newParentEntityToken, int dropIndex, DragAndDropType dragAndDropType, FlowControllerServicesContainer draggedElementFlowControllerServicesContainer)
        {
            if (string.IsNullOrEmpty(providerName)) throw new ArgumentNullException("providerName");
            if (draggedEntityToken == null) throw new ArgumentNullException("draggedEntityToken");
            if (newParentEntityToken == null) throw new ArgumentNullException("newParentEntityToken");
            if (draggedElementFlowControllerServicesContainer == null) throw new ArgumentNullException("draggedElementFlowControllerServicesContainer");

            IDragAndDropElementProvider provider = GetElementProvider(providerName) as IDragAndDropElementProvider;
            if (provider == null) throw new ArgumentException(string.Format("The Element Provider identified byu the specified provider name does not implement {0}", typeof(IDragAndDropElementProvider)));

            return provider.OnElementDraggedAndDropped(draggedEntityToken, newParentEntityToken, dropIndex, dragAndDropType, draggedElementFlowControllerServicesContainer);
        }