Exemplo n.º 1
0
        DropEffects IDropTarget.DragOver(HtmlMouseEvent e)
        {
            hit     = treeView.Hit(e);
            clientY = e.ClientY;
            if (hit != null)
            {
                RootNode target = hit.Nodes.List[hit.Index] as RootNode;
                if (target == null)
                {
                    return(DropEffects.None);
                }
                if (target == webNode.RootNode)
                {
                    return(DropEffects.Copy);
                }
                if (2 * (clientY - hit.Rect.Top) < hit.Rect.Height)
                {
                    if (hit.Index > 0 && hit.Nodes.List[hit.Index - 1] == webNode)
                    {
                        return(DropEffects.Copy);
                    }
                }
                else if (hit.Index < hit.Nodes.List.Count - 1 && hit.Nodes.List[hit.Index + 1] == webNode)
                {
                    return(DropEffects.Copy);
                }
            }

            return(canMove ? DropEffects.Move | DropEffects.Copy : DropEffects.Copy);
        }
Exemplo n.º 2
0
        void IDropTarget.Drop(HtmlMouseEvent e, DropEffects dropEffect)
        {
            TreeViewHit hit = base.Drop(e);

            if (Feedback != FeedbackMode.None)
            {
                try
                {
                    object   node = hit.Nodes.List[hit.Index];
                    ListNode list = node as ListNode;
                    ListItemsDropUtility.Drop(listItems, list != null ? list.RootFolder : node as Folder);
                }
                catch (Exception ex)
                {
                    LazyWindow.ShowError(ex);
                }
            }
        }
Exemplo n.º 3
0
        internal MainPane(App app)
        {
            Data = app;
            TreeView.AdviseContextMenu(TreeView_ContextMenu);
            TreeView.AdviseDrag(delegate(HtmlMouseEvent e)
            {
                TreeViewHit hit = TreeView.Hit(e);
                if (hit != null)
                {
                    object node       = hit.Nodes.List[hit.Index];
                    FolderNode folder = node as FolderNode;
                    if (folder != null)
                    {
                        return(new ListItemsDragSource(new ListItem[] { folder.Item }));
                    }

                    WebNode web = node as WebNode;
                    if (web != null)
                    {
                        return(new WebNodeDragSource(web));
                    }
                }

                return(null);
            });

            TreeView.AdviseDrop(delegate(object dataObject)
            {
                IList <ListItem> listItems = dataObject as IList <ListItem>;
                if (listItems != null)
                {
                    return(new ListItemsNodeDropTarget(TreeView, listItems));
                }

                WebNode web = dataObject as WebNode;
                return(web != null ? new WebNodeDragTarget(TreeView, web) : null);
            });

            if (SupportedHtml5Features.File)
            {
                PostAdvise(
                    delegate()
                {
                    return(Element.AdviseDrop(null, null));
                });

                TreeViewFileDropTarget fileDropTarget = new TreeViewFileDropTarget(TreeView);
            }


            TreeView.AdviseKeyDown(
                delegate(HtmlKeyboardEvent e)
            {
                if (e.KeyCode == KeyCode.Delete)
                {
                    FolderNode folder = TreeView.Selection.Data as FolderNode;
                    if (folder != null)
                    {
                        NodeUtil.DeleteFolder(folder);
                    }
                }
            });
        }