Esempio n. 1
0
        public virtual void Dock(IDockTile dockie, DockTileDirection dockDirection)
        {
            ISplitDockTile node = null;
            switch (dockDirection)
            {
                case DockTileDirection.Left:
                case DockTileDirection.Right:
                    node = new HorizontalSplitViewModel();
                    break;
                case DockTileDirection.Top:
                case DockTileDirection.Bottom:
                    node = new VerticalSplitViewModel();
                    break;
            }
            switch (dockDirection)
            {
                case DockTileDirection.Left:
                case DockTileDirection.Top:
                    node.LeftNode = dockie;
                    node.RightNode = this;
                    break;
                case DockTileDirection.Right:
                case DockTileDirection.Bottom:
                    node.LeftNode = this;
                    node.RightNode = dockie;
                    break;
            }

            Parent.ReplaceNode(this, node);
            //Place both parents DOH!
            this.Parent = node;
            dockie.Parent = node;
        }
 /// <summary>
 /// This will move an item to the new lovation.
 /// </summary>
 /// <param name="item"></param>
 /// <param name="destinationItem"></param>
 /// <param name="dockDirection"></param>
 public void MoveTile(Object destinationItem, Object item, DockTileDirection dockDirection)
 {
     if (ObjectToDocktileMap.ContainsKey(item))
     {
         RemoveTile(item);
         AddTile(destinationItem, item, dockDirection);
     }
 }
 /// <summary>
 /// This will move an item to the new lovation.
 /// </summary>
 /// <param name="item"></param>
 /// <param name="destinationItem"></param>
 /// <param name="dockDirection"></param>
 public void MoveTile(Object destinationItem, Object item, DockTileDirection dockDirection)
 {
     if (ObjectToDocktileMap.ContainsKey(item))
     {
         RemoveTile(item);
         AddTile(destinationItem, item, dockDirection);
     }
 }
        private DockTileDirection DetermineDirectionDropped(Size element, Point dropPoint)
        {
            Point             center          = GetCenterOfSize(element);
            Point             pointFromOrigin = GetOffsetFromCenter(center, dropPoint);
            Point             rotatedPoint    = RotatePointInRespectToCenter(pointFromOrigin);
            DockTileDirection direction       = QuadrentToDirection(rotatedPoint);

            return(direction);
        }
        public void Drop(IDropInfo dropInfo)
        {
            // TODO(Matthew) clean this up a bit
            DockTileDirection direction = DetermineDirectionDropped(dropInfo.VisualTarget.RenderSize, dropInfo.DropPosition);

            var data   = dropInfo.Data;
            var target = (dropInfo.VisualTarget as FrameworkElement).DataContext;

            View.MoveTile(target, data, direction);
        }
        /// <summary>
        /// Adds a new Item to the DockTile Configuration
        /// </summary>
        /// <param name="destinationItem">This is the base item that the new item will dock to</param>
        /// <param name="item">This is the item that you wish to display, this item cannot already be apart of the DockTiles</param>
        /// <param name="dockDirection">The basic cardinal direction of that the item will dock to the base item</param>
        public void AddTile(Object destinationItem, Object item, DockTileDirection dockDirection)
        {
            // NOTE(MATTHEW): if we have the item in the map and the person is not docking an item to itself.
            if (ObjectToDocktileMap.ContainsKey(item) || ObjectToDocktileMap.ContainsValue(item as IDockTile))
            {
                // TODO(Matthew):  decide what the default behavior for this stuff truly is.
                throw new Exception();
            }
            if (destinationItem != item && ObjectToDocktileMap.ContainsKey(destinationItem))
            {
                IDockTile baseDockTile = null;
                IDockTile dockedItem = new LeafViewModel() { Item = item };
                ObjectToDocktileMap.TryGetValue(destinationItem, out baseDockTile);
                ObjectToDocktileMap.Add(item, dockedItem);
                if (baseDockTile.Parent != null)
                {
                    baseDockTile.Dock(dockedItem, dockDirection);
                }

            }
        }
 /// <summary>
 /// Adds a new Item to the DockTile Configuration
 /// </summary>
 /// <param name="destinationItem">This is the base item that the new item will dock to</param>
 /// <param name="item">This is the item that you wish to display, this item cannot already be apart of the DockTiles</param>
 /// <param name="dockDirection">The basic cardinal direction of that the item will dock to the base item</param>
 public void AddTile(Object destinationItem, Object item, DockTileDirection dockDirection)
 {
     // NOTE(MATTHEW): if we have the item in the map and the person is not docking an item to itself.
     if (ObjectToDocktileMap.ContainsKey(item) || ObjectToDocktileMap.ContainsValue(item as IDockTile))
     {
         // TODO(Matthew):  decide what the default behavior for this stuff truly is.
         throw new Exception();
     }
     if (destinationItem != item && ObjectToDocktileMap.ContainsKey(destinationItem))
     {
         IDockTile baseDockTile = null;
         IDockTile dockedItem   = new LeafViewModel()
         {
             Item = item
         };
         ObjectToDocktileMap.TryGetValue(destinationItem, out baseDockTile);
         ObjectToDocktileMap.Add(item, dockedItem);
         if (baseDockTile.Parent != null)
         {
             baseDockTile.Dock(dockedItem, dockDirection);
         }
     }
 }
        public virtual void Dock(IDockTile dockie, DockTileDirection dockDirection)
        {
            ISplitDockTile node = null;

            switch (dockDirection)
            {
            case DockTileDirection.Left:
            case DockTileDirection.Right:
                node = new HorizontalSplitViewModel();
                break;

            case DockTileDirection.Top:
            case DockTileDirection.Bottom:
                node = new VerticalSplitViewModel();
                break;
            }
            switch (dockDirection)
            {
            case DockTileDirection.Left:
            case DockTileDirection.Top:
                node.LeftNode  = dockie;
                node.RightNode = this;
                break;

            case DockTileDirection.Right:
            case DockTileDirection.Bottom:
                node.LeftNode  = this;
                node.RightNode = dockie;
                break;
            }

            Parent.ReplaceNode(this, node);
            //Place both parents DOH!
            this.Parent   = node;
            dockie.Parent = node;
        }