예제 #1
0
        //-------------------------------------------------------------------
        protected override void OnMouseWheel(MouseEventArgs e)
        {
            if (Root == null)
            {
                return;
            }

            if (ModifierKeys.HasFlag(Keys.Control))
            {
                Options.Zoom *= Math.Sign(e.Delta) > 0 ? 1.1f : 0.9f;
                EditionToolUpdate(null);
                ShortcutModeClear();
                RefreshGraph();
                if (Selected != null)
                {
                    Goto(Selected);
                }
                return;
            }

            PickingResult pickResult = PickTaxon(Root, ClientToGraph(e.Location));
            TaxonTreeNode pick       = pickResult?.GetMain();

            if (pick != null)
            {
                if (e.Delta > 0)
                {
                    pick.ExpandExtended();
                    RefreshGraph();
                }
                else
                {
                    pick.CollapseExtended();
                    RefreshGraph();
                    if (pick.R.Bottom < e.Location.Y - Origin.Y)
                    {
                        Origin.Y = e.Location.Y + 10 - pick.R.Bottom;
                    }
                }
            }
        }