public void Setup()
        {
            _tv = new MultiSelectTreeView();

            // ensure handle is created. Some tests fail if you don't do this.
            IntPtr h = _tv.Handle;
        }
Example #2
0
        public ObjectTree()
        {
            ImageList il = new ImageList();

            il.ColorDepth = ColorDepth.Depth32Bit;
            il.Images.Add(Properties.Resources.document);
            il.Images.Add(Properties.Resources.topic);

            InnerTreeView                 = new MultiSelectTreeView();
            InnerTreeView.ImageList       = il;
            InnerTreeView.Dock            = System.Windows.Forms.DockStyle.Fill;
            InnerTreeView.HideSelection   = false;
            InnerTreeView.MultiSelect     = true;
            InnerTreeView.ShowRootLines   = false;
            InnerTreeView.BorderStyle     = BorderStyle.None;
            InnerTreeView.BackColor       = ContentBackColor;
            InnerTreeView.MouseUp        += new MouseEventHandler(InnerTreeView_MouseUp);
            InnerTreeView.AfterSelect    += new TreeViewEventHandler(InnerTreeView_AfterSelect);
            InnerTreeView.BeforeCollapse += new TreeViewCancelEventHandler(InnerTreeView_BeforeCollapse);

            LabCaption                 = new CaptionBar();
            LabCaption.Dock            = DockStyle.Top;
            LabCaption.Icon            = Properties.Resources.objects;
            LabCaption.Size            = new System.Drawing.Size(208, 16);
            LabCaption.Text            = Lang._("Objects");
            LabCaption.BackgroundStyle = CaptionStyle.BaseLine;
            LabCaption.BaseLineColor   = Color.Silver;
            LabCaption.BackColor       = ContentBackColor;

            Controls.Add(InnerTreeView);
            Controls.Add(LabCaption);
            //ImageList = il;
        }
Example #3
0
        public void Setup()
        {
            _tv = new MultiSelectTreeView();

            // ensure handle is created. Some tests fail if you don't do this.
            Assert.NotNull(_tv.Handle);
        }
        public void Setup()
        {
            _tv = new MultiSelectTreeView();

            // ensure handle is created. Some tests fail if you don't do this.
            IntPtr h = _tv.Handle;
        }
        public void Initialize(MultiSelectTreeView treeView)
        {
            mTreeView  = treeView;
            mMenuStrip = mTreeView.ContextMenuStrip;
            GumCommands.Self.GuiCommands.RefreshElementTreeView();

            mTreeView.DragDrop += HandleDragDropEvent;

            mTreeView.ItemDrag += (sender, e) =>
            {
                TreeNode node = e.Item as TreeNode;

                mTreeView.DoDragDrop(node, DragDropEffects.Move | DragDropEffects.Copy);
            };

            mTreeView.DragEnter += (sender, e) =>
            {
                e.Effect = DragDropEffects.All;
            };

            mTreeView.DragOver += (sender, e) =>
            {
                e.Effect = DragDropEffects.Move;
            };

            InitializeMenuItems();
        }
Example #6
0
        public void Initialize(MultiSelectTreeView treeView, ContextMenuStrip menuStrip)
        {
            if (treeView == null)
            {
                throw new ArgumentNullException(nameof(treeView));
            }
            mMenuStrip = menuStrip;
            mTreeView  = treeView;

            InitializeKeyboardShortcuts(treeView);


            mMenuStrip.Items.Clear();

            var tsmi = new ToolStripMenuItem();

            tsmi.Text   = "Add State";
            tsmi.Click += ((obj, arg) =>
            {
                GumCommands.Self.Edit.AddState();
            });
            mMenuStrip.Items.Add(tsmi);

            tsmi        = new ToolStripMenuItem();
            tsmi.Text   = "Add Category";
            tsmi.Click += ((obj, arg) =>
            {
                GumCommands.Self.Edit.AddCategory();
            });
            mMenuStrip.Items.Add(tsmi);
        }
Example #7
0
        public void Initialize(MultiSelectTreeView treeView, ContextMenuStrip menuStrip)
        {
            mMenuStrip = menuStrip;
            mTreeView  = treeView;


            mMenuStrip.Items.Clear();

            var tsmi = new ToolStripMenuItem();

            tsmi.Text   = "Add State";
            tsmi.Click += ((obj, arg) =>
            {
                GumCommands.Self.Edit.AddState();
            });
            mMenuStrip.Items.Add(tsmi);

            tsmi        = new ToolStripMenuItem();
            tsmi.Text   = "Add Category";
            tsmi.Click += ((obj, arg) =>
            {
                GumCommands.Self.Edit.AddCategory();
            });
            mMenuStrip.Items.Add(tsmi);
        }
Example #8
0
        public void Initialize(MultiSelectTreeView treeView)
        {
            mTreeView  = treeView;
            mMenuStrip = mTreeView.ContextMenuStrip;
            GumCommands.Self.GuiCommands.RefreshElementTreeView();

            InitializeMenuItems();
        }
        public NodeTreeController(TreeView nodeTree)
        {
            _nodeTree = nodeTree;
            _multiTree = nodeTree as MultiSelectTreeView;

            InitializeIconRegistry();
            ShowVirtualRoot = true;

            //_rootData = new TagCompoundDataNode(new TagNodeCompound());
            _rootData = new RootDataNode();
            RefreshRootNodes();
        }
        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            if (treeObj != null)
            {
                return;
            }

            treeObj = this.tree;
            PostLoad();
        }
        public NodeTreeController(TreeView nodeTree)
        {
            _nodeTree  = nodeTree;
            _multiTree = nodeTree as MultiSelectTreeView;

            InitializeIconRegistry();
            ShowVirtualRoot = true;

            //_rootData = new TagCompoundDataNode(new TagNodeCompound());
            _rootData = new RootDataNode();
            RefreshRootNodes();
        }
Example #12
0
        private void OnPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            MultiSelectTreeView treeViewItem = VisualUpwardSearch(e.OriginalSource as DependencyObject);

            if (treeViewItem == null)
            {
                return;
            }

            treeViewItem.Focus();

            //e.Handled = true;
        }
        private bool FindFirstDownItemWithValidOverlap(MultiSelectTreeView rootTreeView, ItemsControl parentItemsControl, int startIndex, MultiSelectTreeViewItem draggingContainer, Rect draggingRect, ref Size overlapSize, ref Rect overlapContainerRect, ref MultiSelectTreeViewItem overlapContainer)
        {
            while (startIndex < parentItemsControl.Items.Count)
            {
                var downTreeViewItem = parentItemsControl.ItemContainerGenerator.ContainerFromIndex(startIndex++) as MultiSelectTreeViewItem;
                if (downTreeViewItem == null)
                {
                    continue;
                }

                if (downTreeViewItem.HasItems &&
                    downTreeViewItem.IsExpanded     //for move over the collapsed group
                    //&& !(downTreeViewItem.DataContext as JOB_INFO).IsLocked  //for IsLocked is false
                    //&& draggingContainer.ContainDepth() + downTreeViewItem.InDepth() < LogicCenter.JobListMaxDepth //for tree depth
                    && ItemsControl.ItemsControlFromItemContainer(draggingContainer) == parentItemsControl)  //for move into first group
                {
                    if (FindFirstDownItemWithValidOverlap(rootTreeView, downTreeViewItem, 0, draggingContainer, draggingRect, ref overlapSize, ref overlapContainerRect, ref overlapContainer))
                    {
                        return(true);
                    }
                }
                else
                {
                    var downItemPos         = downTreeViewItem.TranslatePoint(new Point(), rootTreeView);
                    var downItemOverlapSize = GetOverlapSize(new Rect(downItemPos, new Point(downItemPos.X + downTreeViewItem.ActualWidth, downItemPos.Y + downTreeViewItem.ActualHeight)), draggingRect);

                    if (downItemOverlapSize.IsEmpty || DoubleUtil.IsZero(downItemOverlapSize.Width) || DoubleUtil.IsZero(downItemOverlapSize.Height))
                    {
                        continue;
                    }

                    overlapSize          = downItemOverlapSize;
                    overlapContainerRect = new Rect(downItemPos.X, downItemPos.Y, downTreeViewItem.ActualWidth, downTreeViewItem.ActualHeight);
                    overlapContainer     = downTreeViewItem;

                    return(true);
                }
            }
            ;

            var superIC = ItemsControl.ItemsControlFromItemContainer(parentItemsControl);

            if (superIC == null)
            {
                return(false);
            }

            var topIndex = superIC.ItemContainerGenerator.IndexFromContainer(parentItemsControl);

            return(FindFirstDownItemWithValidOverlap(rootTreeView, superIC, topIndex + 1, draggingContainer, draggingRect, ref overlapSize, ref overlapContainerRect, ref overlapContainer));
        }
        public WorldRoot(String worldName, MultiSelectTreeView tree, WorldEditor worldEditor)
        {
            instance = this;
            name = worldName;
            treeView = tree;
            app = worldEditor;

            worldTerrain = new WorldTerrain(app);
            ocean = new Ocean(this, app);
            skybox = new Skybox(this, app);
            fog = new GlobalFog(this, app);
            ambientLight = new GlobalAmbientLight(this, app);
            directionalLight = new GlobalDirectionalLight(this, app);
            worldCollections = new List<WorldObjectCollection>();
            pathObjectTypes = new PathObjectTypeContainer(this, app);
        }
        public WorldRoot(String worldName, MultiSelectTreeView tree, WorldEditor worldEditor)
        {
            instance = this;
            name     = worldName;
            treeView = tree;
            app      = worldEditor;

            worldTerrain     = new WorldTerrain(app);
            ocean            = new Ocean(this, app);
            skybox           = new Skybox(this, app);
            fog              = new GlobalFog(this, app);
            ambientLight     = new GlobalAmbientLight(this, app);
            directionalLight = new GlobalDirectionalLight(this, app);
            worldCollections = new List <WorldObjectCollection>();
            pathObjectTypes  = new PathObjectTypeContainer(this, app);
        }
        public WorldRoot(XmlReader r, String worldFilename, MultiSelectTreeView tree, WorldEditor worldEditor, bool loadCollections)
        {
            instance             = this;
            treeView             = tree;
            app                  = worldEditor;
            worldFilePath        = worldFilename;
            this.loadCollections = loadCollections;

            worldCollections = new List <WorldObjectCollection>();

            if (loadCollections)
            {
                FromXml(r);
            }
            else
            {
                FromXml(r, loadCollections);
            }

            // if the XML doesn't have ocean in it, then add it here
            if (ocean == null)
            {
                ocean = new Ocean(this, app);
            }
            if (skybox == null)
            {
                skybox = new Skybox(this, app);
            }
            if (fog == null)
            {
                fog = new GlobalFog(this, app);
            }
            if (ambientLight == null)
            {
                ambientLight = new GlobalAmbientLight(this, app);
            }
            if (directionalLight == null)
            {
                directionalLight = new GlobalDirectionalLight(this, app);
            }
            if (pathObjectTypes == null)
            {
                pathObjectTypes = new PathObjectTypeContainer(this, app);
            }
        }
Example #17
0
        public static void treeView_MouseMove(object sender, MouseEventArgs e)
        {
            if (_isDragging && e.LeftButton == MouseButtonState.Released)
            {
                _isDragging = false;
            }

            MultiSelectTreeView treeView = sender as MultiSelectTreeView;

            if (treeView == null)
            {
                return;
            }

            if (!_isDragging && e.LeftButton == MouseButtonState.Pressed &&
                treeView.SelectedItems.Count > 0)
            {
                if (!treeView.AllowDragDropState)
                {
                    return;
                }

                var SelectedItems = treeView.SelectedItems;
                _isDragging = true;
                if (Mouse.Captured != treeView)
                {
                    Mouse.Capture(treeView, CaptureMode.Element);
                }

                string[] paths = new string[SelectedItems.Count];
                for (int i = 0;
                     i < SelectedItems.Count && SelectedItems[i] as IconItem != null; i++)
                {
                    paths[i] = Path.GetFullPath((SelectedItems[i] as IconItem).Path);
                }

                if (paths[0] != null)
                {
                    DragDrop.DoDragDrop(treeView, new DataObject(DataFormats.FileDrop, paths),
                                        DragDropEffects.Link);
                }
            }
        }
 public static T LastSelectedItem <T>(this MultiSelectTreeView treeview) => (T)treeview.LastSelectedItem;
Example #19
0
 private void InitializeKeyboardShortcuts(MultiSelectTreeView treeView)
 {
     treeView.KeyDown += HandleKeyDown;
     //treeView.KeyPress += HandleTreeViewKeyPressed;
 }
        public WorldRoot(XmlReader r, String worldFilename, MultiSelectTreeView tree, WorldEditor worldEditor, bool loadCollections)
        {
            instance = this;
            treeView = tree;
            app = worldEditor;
            worldFilePath = worldFilename;
            this.loadCollections = loadCollections;

            worldCollections = new List<WorldObjectCollection>();

            if (loadCollections)
            {
                FromXml(r);
            }
            else
            {
                FromXml(r, loadCollections);
            }

            // if the XML doesn't have ocean in it, then add it here
            if (ocean == null)
            {
                ocean = new Ocean(this, app);
            }
            if (skybox == null)
            {
                skybox = new Skybox(this, app);
            }
            if (fog == null)
            {
                fog = new GlobalFog(this, app);
            }
            if (ambientLight == null)
            {
                ambientLight = new GlobalAmbientLight(this, app);
            }
            if (directionalLight == null)
            {
                directionalLight = new GlobalDirectionalLight(this, app);
            }
            if (pathObjectTypes == null)
            {
                pathObjectTypes = new PathObjectTypeContainer(this, app);
            }
        }
        void SelectNode(MultiSelectTreeView treeView)
        {
            string tempString1 = tabControl1.SelectedTab.Text;
            string tempString2 = "";

            foreach (Control cl in tabControl1.SelectedTab.Controls)
            {
                if (cl is TabControl)
                {
                    tempString2 = (cl as TabControl).SelectedTab.Text;
                    break;
                }
            }

            CE_CW_BasicParameters accountingType =
                GlobalObject.GeneralFunction.StringConvertToEnum <CE_CW_BasicParameters>(tempString1 + "_" + tempString2);

            List <string> lstColName = new List <string>();

            switch (accountingType)
            {
            case CE_CW_BasicParameters.核算_科目:
                dgvSubjects.DataSource = _serviceParametersSetting.GetTableInfo(accountingType.ToString(), treeView.SelectedNode.Tag.ToString());

                lstColName.Add("科目代码");
                SelectDataGridViewRow(treeView.SelectedNode, dgvSubjects, lstColName);
                dgvSubjects_CellClick(null, null);
                break;

            case CE_CW_BasicParameters.核算_用途:
                dgvPurpose.DataSource = _serviceParametersSetting.GetTableInfo(accountingType.ToString(), treeView.SelectedNode.Tag.ToString());

                lstColName.Add("用途代码");
                SelectDataGridViewRow(treeView.SelectedNode, dgvPurpose, lstColName);
                dgvPurpose_CellClick(null, null);
                break;

            case CE_CW_BasicParameters.核算_库房:
                break;

            case CE_CW_BasicParameters.核算_科目与用途关系:
                dgvSubjectsPurpose.DataSource = _serviceParametersSetting.GetTableInfo(accountingType.ToString(), treeView.SelectedNode.Tag.ToString());

                lstColName.Add("用途代码");
                lstColName.Add("科目代码");
                SelectDataGridViewRow(treeView.SelectedNode, dgvSubjectsPurpose, lstColName);
                dgvSubjectsPurpose_CellClick(null, null);
                break;

            case CE_CW_BasicParameters.预算_科目:
                dgvBudgetProject.DataSource = _serviceParametersSetting.GetTableInfo(accountingType.ToString(), treeView.SelectedNode.Tag.ToString());

                lstColName.Add("科目代码");
                SelectDataGridViewRow(treeView.SelectedNode, dgvBudgetProject, lstColName);
                dgvBudgetProject_CellClick(null, null);
                break;

            default:
                break;
            }
        }
 public static List <T> SelectedItems <T>(this MultiSelectTreeView treeview) => treeview.SelectedItems.Cast <T>().ToList();
 public MultiSelectTreeViewAutomationPeer(MultiSelectTreeView owner)
     : base(owner)
 {
 }
        private bool MoveDown(MultiSelectTreeView rootTreeView, Rect draggingRect, ref MultiSelectTreeViewItem draggingContainer, ref MultiSelectTreeViewItem lastOverlapContainer, ref DateTime startOverlapTime)
        {
            Size overlapSize     = new Size();
            Rect overlapItemRect = new Rect();
            MultiSelectTreeViewItem overlapContainer = null;

            var sourceItemsControl = ItemsControl.ItemsControlFromItemContainer(draggingContainer);

            if (sourceItemsControl == null)
            {
                return(false);
            }

            var sourceCollection = sourceItemsControl.ItemsSource as IList <TestModel>;
            var sourceIndex      = sourceItemsControl.ItemContainerGenerator.IndexFromContainer(draggingContainer);
            var sourceItem       = sourceCollection[sourceIndex];

            var sourcePos = draggingContainer.TranslatePoint(new Point(), rootTreeView);

            //从组中分离
            if (IsFromGroup(sourceItemsControl) && sourceIndex == sourceItemsControl.Items.Count - 1 && DoubleUtil.GreaterThan(draggingRect.Y, sourcePos.Y + draggingContainer.ActualHeight / 2))
            {
                //加入上层集合
                var superItemsControl = ItemsControl.ItemsControlFromItemContainer(sourceItemsControl);
                var superCollection   = superItemsControl.ItemsSource as IList <TestModel>;
                var superIndex        = superItemsControl.ItemContainerGenerator.IndexFromContainer(sourceItemsControl);

                sourceCollection.RemoveAt(sourceIndex);
                if (superIndex + 1 < superItemsControl.Items.Count)
                {
                    superCollection.Insert(superIndex + 1, sourceItem);
                    draggingContainer = ContainerFromIndex(superItemsControl, superIndex + 1) as MultiSelectTreeViewItem;
                }
                else
                {
                    superCollection.Add(sourceItem);
                    draggingContainer = ContainerFromIndex(superItemsControl, superCollection.Count - 1) as MultiSelectTreeViewItem;
                }

                //原组若剩余一项,则将该项加入上层集合,移除组
                if (sourceItemsControl.Items.Count == 1)
                {
                    sourceItem = sourceCollection[0];
                    sourceCollection.RemoveAt(0);

                    superCollection.Insert(superIndex + 1, sourceItem);
                    superCollection.RemoveAt(superIndex);
                }

                lastOverlapContainer = null;
                return(true);
            }

            if (!FindFirstDownItemWithValidOverlap(rootTreeView, sourceItemsControl, sourceIndex + 1, draggingContainer, draggingRect, ref overlapSize, ref overlapItemRect, ref overlapContainer))
            {
                return(false);
            }

            var targetItemsControl = ItemsControl.ItemsControlFromItemContainer(overlapContainer);
            var targetCollection   = targetItemsControl.ItemsSource as IList <TestModel>;
            var targetIndex        = targetItemsControl.ItemContainerGenerator.IndexFromContainer(overlapContainer);

            if (DoubleUtil.LessThan(draggingRect.Bottom, overlapItemRect.Y + overlapItemRect.Height / 2))
            {
                //Do noting
            }
            else if (DoubleUtil.LessThan(draggingRect.Bottom, overlapItemRect.Y + overlapItemRect.Height * 3 / 4)) // 1/4 -> 3/4 height
            {
                //非同组,则加入
                if (IsFromGroup(targetItemsControl) && targetItemsControl != sourceItemsControl)
                {
                    sourceCollection.RemoveAt(sourceIndex);
                    targetCollection.Insert(0, sourceItem);

                    lastOverlapContainer = null;
                    draggingContainer    = ContainerFromIndex(targetItemsControl, 0) as MultiSelectTreeViewItem;
                }
            }
            else if (DoubleUtil.GreaterThan(draggingRect.Y, overlapItemRect.Y + overlapItemRect.Height / 4)) //Top -> 1/4 height 移动
            {
                sourceCollection.RemoveAt(sourceIndex);
                targetCollection.Insert(targetIndex, sourceItem);

                lastOverlapContainer = null;
                draggingContainer    = ContainerFromIndex(targetItemsControl, targetIndex) as MultiSelectTreeViewItem;
            }
            else //处理悬停,创建新组
            {
                if (!DealHover(
                        targetItemsControl, targetCollection, targetIndex,
                        sourceCollection, sourceIndex, sourceItem,
                        targetIndex - 1, overlapContainer,
                        ref lastOverlapContainer, ref startOverlapTime))
                {
                    return(false);
                }
            }

            return(true);
        }