Ejemplo n.º 1
0
        private void DoItemMouseDown(ItemMouseEventArgs e)
        {
            Point loc = new Point(e.X + ControlRectangle.X, e.Location.Y + ControlRectangle.Top);

            // Toggle expansion
            if (e.ItemBox.ExpandBox.Contains(loc))
            {
                e.ItemBox.Item.IsExpanded = !e.ItemBox.Item.IsExpanded;
                if (ExpandBoxMouseDown != null)
                {
                    ExpandBoxMouseDown(this, e);
                }

                ResetLegend();
                return;
            }

            if (e.ItemBox.Item.IsSelected)
            {
                // if we are already selected, prepare to edit in textbox
                _previousMouseDown = e.ItemBox;

                // Start dragging
                if (e.Button == MouseButtons.Left)
                {
                    _isDragging = true;
                    ILegendItem li = e.ItemBox.Item;
                    while (li != null && li as ILayer == null)
                    {
                        li = li.GetParentItem();
                    }
                    ILayer lyr = li as ILayer;
                    if (lyr != null)
                    {
                        _dragItem = BoxFromItem(lyr);
                    }
                    else
                    {
                        _isDragging = false;
                    }
                }
            }
            else
            {
                // Check for textbox clicking
                if (e.ItemBox.Textbox.Contains(loc))
                {
                    if (ModifierKeys != Keys.Shift)
                    {
                        ClearSelection();
                    }
                    e.ItemBox.Item.IsSelected = true;

                    //_selection.Add(e.ItemBox);
                    //IsInitialized = false;
                    //Invalidate();
                    //return;
                }
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Fires the ItemMouseMove Event, which handles the mouse moving over one of the legend items.
 /// </summary>
 /// <param name="e">An ItemMouseEventArgs</param>
 protected virtual void OnItemMouseMove(ItemMouseEventArgs e)
 {
     if (ItemMouseMove != null)
     {
         ItemMouseMove(this, e);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Checks for checkbox changes and fires the ItemMouseUp event.
 /// </summary>
 /// <param name="e"></param>
 protected virtual void OnItemMouseUp(ItemMouseEventArgs e)
 {
     if (ItemMouseUp != null)
     {
         ItemMouseUp(this, e);
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// The coordinates are in legend coordinates, but a LegendBox is provided to define the
 /// coordinates of the specified object.
 /// </summary>
 /// <param name="e">An ItemMouseEventArgs</param>
 protected virtual void OnItemMouseDown(ItemMouseEventArgs e)
 {
     if (ItemMouseDown != null)
     {
         ItemMouseDown(this, e);
     }
 }
Ejemplo n.º 5
0
        private void DoItemMouseUp(ItemMouseEventArgs e)
        {
            Point loc = new Point(e.X + ControlRectangle.X, e.Location.Y + ControlRectangle.Top);

            if (e.Button == MouseButtons.Left)
            {
                if (e.ItemBox.Item.LegendSymbolMode == SymbolMode.Checkbox)
                {
                    if (e.ItemBox.CheckBox.Contains(loc))
                    {
                        IRenderableLegendItem rendItem = e.ItemBox.Item as IRenderableLegendItem;
                        if (rendItem != null)
                        {
                            // force a re-draw in the case where we are talking about layers.
                            rendItem.IsVisible = !rendItem.IsVisible;
                        }
                        else
                        {
                            e.ItemBox.Item.Checked = !e.ItemBox.Item.Checked;
                        }
                        if (CheckBoxMouseUp != null)
                        {
                            CheckBoxMouseUp(this, e);
                        }
                        IsInitialized = false;
                        Invalidate();
                    }
                }
                if (e.ItemBox.Textbox.Contains(loc))
                {
                    if (e.ItemBox == _previousMouseDown)
                    {
                        _isDragging = false;
                        // Edit via text box
                        _editBox.Left         = e.ItemBox.Textbox.Left;
                        _editBox.Width        = e.ItemBox.Textbox.Width + 10;
                        _editBox.Top          = e.ItemBox.Bounds.Top;
                        _editBox.Height       = e.ItemBox.Bounds.Height;
                        _editBox.SelectedText = e.ItemBox.Item.LegendText;
                        _editBox.Font         = Font;
                        _editBox.Visible      = true;
                    }
                }
            }
            if (e.Button == MouseButtons.Right)
            {
                if (e.ItemBox.Item.ContextMenuItems == null)
                {
                    return;
                }
                _contextMenu.MenuItems.Clear();
                foreach (SymbologyMenuItem mi in e.ItemBox.Item.ContextMenuItems)
                {
                    AddMenuItem(_contextMenu.MenuItems, mi);
                }
                _contextMenu.Show(this, e.Location);
                _contextMenu.MenuItems.Clear();
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Handles the case where the mouse down occurs.
        /// </summary>
        /// <param name="e">A MouseEventArgs</param>
        protected override void OnMouseDown(MouseEventArgs e)
        {
            HideEditBox();
            if (_legendBoxes == null || _legendBoxes.Count == 0)
            {
                return;
            }
            Point loc = new Point(e.X + ControlRectangle.X, e.Location.Y + ControlRectangle.Top);

            foreach (LegendBox box in _legendBoxes)
            {
                if (box.Bounds.Contains(loc))
                {
                    ItemMouseEventArgs args = new ItemMouseEventArgs(e, box);
                    DoItemMouseDown(args);
                }
            }
            base.OnMouseDown(e);
        }
Ejemplo n.º 7
0
 private void DoItemMouseUp(ItemMouseEventArgs e)
 {
     Point loc = new Point(e.X + ControlRectangle.X, e.Location.Y + ControlRectangle.Top);
     if (e.Button == MouseButtons.Left)
     {
         if (e.ItemBox.Item.LegendSymbolMode == SymbolMode.Checkbox)
         {
             if (e.ItemBox.CheckBox.Contains(loc))
             {
                 IRenderableLegendItem rendItem = e.ItemBox.Item as IRenderableLegendItem;
                 if (rendItem != null)
                 {
                     // force a re-draw in the case where we are talking about layers.
                     rendItem.IsVisible = !rendItem.IsVisible;
                 }
                 else
                 {
                     e.ItemBox.Item.Checked = !e.ItemBox.Item.Checked;
                 }
                 if (CheckBoxMouseUp != null) CheckBoxMouseUp(this, e);
                 IsInitialized = false;
                 Invalidate();
             }
         }
         if (e.ItemBox.Textbox.Contains(loc))
         {
             if (e.ItemBox == _previousMouseDown)
             {
                 _isDragging = false;
                 // Edit via text box
                 _editBox.Left = e.ItemBox.Textbox.Left;
                 _editBox.Width = e.ItemBox.Textbox.Width + 10;
                 _editBox.Top = e.ItemBox.Bounds.Top;
                 _editBox.Height = e.ItemBox.Bounds.Height;
                 _editBox.SelectedText = e.ItemBox.Item.LegendText;
                 _editBox.Font = Font;
                 _editBox.Visible = true;
             }
         }
     }
     if (e.Button == MouseButtons.Right)
     {
         if (e.ItemBox.Item.ContextMenuItems == null) return;
         _contextMenu.MenuItems.Clear();
         foreach (SymbologyMenuItem mi in e.ItemBox.Item.ContextMenuItems)
         {
             AddMenuItem(_contextMenu.MenuItems, mi);
         }
         _contextMenu.Show(this, e.Location);
         _contextMenu.MenuItems.Clear();
     }
 }
Ejemplo n.º 8
0
        /// <summary>
        /// Performs the default handling for mouse movememnt, and decides
        /// whether or not to fire an ItemMouseMove event.
        /// </summary>
        /// <param name="e">A MouseEventArgs</param>
        protected override void OnMouseMove(MouseEventArgs e)
        {
            if (_legendBoxes == null)
            {
                return;
            }
            bool      cursorHandled = false;
            LegendBox currentBox    = null;
            Point     loc           = new Point(e.X + ControlRectangle.X, e.Location.Y + ControlRectangle.Top);

            foreach (LegendBox box in _legendBoxes)
            {
                if (box.Bounds.Contains(loc))
                {
                    currentBox = box;
                    ItemMouseEventArgs args = new ItemMouseEventArgs(e, box);
                    DoItemMouseMove(args);
                }
            }
            if (_isDragging)
            {
                _dragTarget = null;
                if (currentBox != null)
                {
                    _dragTarget = currentBox;
                }
                if (ClientRectangle.Contains(e.Location))
                {
                    if (currentBox == null)
                    {
                        _dragTarget = BottomBox;
                    }
                }
                if (_previousLine.IsEmpty == false)
                {
                    Invalidate(_previousLine);
                }
                _previousLine = Rectangle.Empty;

                if (_dragTarget != null && _dragItem != null && _dragTarget != _dragItem)
                {
                    LegendBox boxOverLine;
                    int       left      = 0;
                    LegendBox container = BoxFromItem(_dragTarget.Item.GetValidContainerFor(_dragItem.Item));
                    if (container != null)
                    {
                        left = (container.Indent + 1) * _indentation;
                    }
                    if (_dragTarget.Item.CanReceiveItem(_dragItem.Item))
                    {
                        boxOverLine = _dragTarget;
                    }
                    else
                    {
                        boxOverLine = BoxFromItem(_dragTarget.Item.BottomMember());
                    }
                    if (boxOverLine == null)
                    {
                        _previousLine = Rectangle.Empty;
                        Cursor        = Cursors.No;
                        cursorHandled = true;
                    }
                    else
                    {
                        _previousLine = new Rectangle(left, boxOverLine.Bounds.Bottom, Width - left, 4);
                        Cursor        = Cursors.Hand;
                        cursorHandled = true;
                        Invalidate(_previousLine);
                    }
                }
                if (cursorHandled == false)
                {
                    Cursor        = Cursors.No;
                    cursorHandled = true;
                }
            }
            if (cursorHandled == false)
            {
                Cursor = Cursors.Arrow;
            }
            base.OnMouseMove(e);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Checks the Mouse Up event to see if it occurs inside a legend item.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMouseUp(MouseEventArgs e)
        {
            Point loc = new Point(e.X + ControlRectangle.X, e.Location.Y + ControlRectangle.Top);
            if (!_wasDoubleClick)
            {
                foreach (LegendBox box in _legendBoxes)
                {
                    if (!box.Bounds.Contains(loc)) continue;
                    ItemMouseEventArgs args = new ItemMouseEventArgs(e, box);
                    DoItemMouseUp(args);
                }
            }

            if (_isDragging && _dragItem != null)
            {
                if (_dragTarget != null && _dragTarget.Item != _dragItem.Item)
                {
                    ILegendItem potentialParent = _dragTarget.Item.GetValidContainerFor(_dragItem.Item);
                    if (potentialParent != null)
                    {
                        potentialParent.ParentMapFrame().SuspendEvents();

                        // The target must be a group, and the item must be a layer.
                        ILayer lyr = _dragItem.Item as ILayer;
                        if (lyr != null)
                        {
                            IGroup grp = _dragItem.Item.GetParentItem() as IGroup;
                            lyr.LockDispose();
                            //when original location is inside group, remove layer from the group.
                            if (grp != null) grp.Remove(lyr);
                            int index = _dragTarget.Item.InsertIndex(_dragItem.Item);
                            if (index == -1) index = 0;
                            grp = potentialParent as IGroup;
                            if (grp != null)
                            {
                                grp.Insert(index, lyr);
                                //when the target is a group, assign the parent item.
                                lyr.SetParentItem(grp);
                            }
                            lyr.UnlockDispose();
                        }
                        potentialParent.ParentMapFrame().ResumeEvents();
                        OnOrderChanged();
                        potentialParent.ParentMapFrame().Invalidate();
                    }
                }
                Cursor = Cursors.Arrow;
                _isDragging = false;
                Invalidate();
            }
            _wasDoubleClick = false;

            base.OnMouseUp(e);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Checks the Mouse Up event to see if it occurs inside a legend item.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMouseUp(MouseEventArgs e)
        {
            Point loc = new Point(e.X + ControlRectangle.X, e.Location.Y + ControlRectangle.Top);

            if (!_wasDoubleClick)
            {
                foreach (LegendBox box in _legendBoxes)
                {
                    if (!box.Bounds.Contains(loc))
                    {
                        continue;
                    }
                    ItemMouseEventArgs args = new ItemMouseEventArgs(e, box);
                    DoItemMouseUp(args);
                }
            }

            if (_isDragging && _dragItem != null)
            {
                if (_dragTarget != null && _dragTarget.Item != _dragItem.Item)
                {
                    ILegendItem potentialParent = _dragTarget.Item.GetValidContainerFor(_dragItem.Item);
                    if (potentialParent != null)
                    {
                        potentialParent.ParentMapFrame().SuspendEvents();

                        // The target must be a group, and the item must be a layer.
                        ILayer lyr = _dragItem.Item as ILayer;
                        if (lyr != null)
                        {
                            IGroup grp = _dragItem.Item.GetParentItem() as IGroup;
                            lyr.LockDispose();
                            //when original location is inside group, remove layer from the group.
                            if (grp != null)
                            {
                                grp.Remove(lyr);
                            }
                            int index = _dragTarget.Item.InsertIndex(_dragItem.Item);
                            if (index == -1)
                            {
                                index = 0;
                            }
                            grp = potentialParent as IGroup;
                            if (grp != null)
                            {
                                grp.Insert(index, lyr);
                                //when the target is a group, assign the parent item.
                                lyr.SetParentItem(grp);
                            }
                            lyr.UnlockDispose();
                        }
                        potentialParent.ParentMapFrame().ResumeEvents();
                        OnOrderChanged();
                        potentialParent.ParentMapFrame().Invalidate();
                    }
                }
                Cursor      = Cursors.Arrow;
                _isDragging = false;
                Invalidate();
            }
            _wasDoubleClick = false;

            base.OnMouseUp(e);
        }
Ejemplo n.º 11
0
 /// <summary>
 /// Checks for checkbox changes and fires the ItemMouseUp event.
 /// </summary>
 /// <param name="e">The event  args.</param>
 protected virtual void OnItemMouseUp(ItemMouseEventArgs e)
 {
     ItemMouseUp?.Invoke(this, e);
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Checks for checkbox changes and fires the ItemMouseUp event.
 /// </summary>
 /// <param name="e"></param>
 protected virtual void OnItemMouseUp(ItemMouseEventArgs e)
 {
     if (ItemMouseUp != null) ItemMouseUp(this, e);
 }
Ejemplo n.º 13
0
 /// <summary>
 /// Handles the case where the mouse down occurs.
 /// </summary>
 /// <param name="e">A MouseEventArgs</param>
 protected override void OnMouseDown(MouseEventArgs e)
 {
     HideEditBox();
     if (_legendBoxes == null || _legendBoxes.Count == 0) return;
     Point loc = new Point(e.X + ControlRectangle.X, e.Location.Y + ControlRectangle.Top);
     foreach (LegendBox box in _legendBoxes)
     {
         if (box.Bounds.Contains(loc))
         {
             ItemMouseEventArgs args = new ItemMouseEventArgs(e, box);
             DoItemMouseDown(args);
         }
     }
     base.OnMouseDown(e);
 }
Ejemplo n.º 14
0
        /// <summary>
        /// Performs the default handling for mouse movememnt, and decides
        /// whether or not to fire an ItemMouseMove event.
        /// </summary>
        /// <param name="e">A MouseEventArgs</param>
        protected override void OnMouseMove(MouseEventArgs e)
        {
            if (_legendBoxes == null) return;
            bool cursorHandled = false;
            LegendBox currentBox = null;
            Point loc = new Point(e.X + ControlRectangle.X, e.Location.Y + ControlRectangle.Top);
            foreach (LegendBox box in _legendBoxes)
            {
                if (box.Bounds.Contains(loc))
                {
                    currentBox = box;
                    ItemMouseEventArgs args = new ItemMouseEventArgs(e, box);
                    DoItemMouseMove(args);
                }
            }
            if (_isDragging)
            {
                _dragTarget = null;
                if (currentBox != null) _dragTarget = currentBox;
                if (ClientRectangle.Contains(e.Location))
                {
                    if (currentBox == null) _dragTarget = BottomBox;
                }
                if (_previousLine.IsEmpty == false) Invalidate(_previousLine);
                _previousLine = Rectangle.Empty;

                if (_dragTarget != null && _dragItem != null && _dragTarget != _dragItem)
                {
                    LegendBox boxOverLine;
                    int left = 0;
                    LegendBox container = BoxFromItem(_dragTarget.Item.GetValidContainerFor(_dragItem.Item));
                    if (container != null)
                    {
                        left = (container.Indent + 1) * _indentation;
                    }
                    if (_dragTarget.Item.CanReceiveItem(_dragItem.Item))
                    {
                        boxOverLine = _dragTarget;
                    }
                    else
                    {
                        boxOverLine = BoxFromItem(_dragTarget.Item.BottomMember());
                    }
                    if (boxOverLine == null)
                    {
                        _previousLine = Rectangle.Empty;
                        Cursor = Cursors.No;
                        cursorHandled = true;
                    }
                    else
                    {
                        _previousLine = new Rectangle(left, boxOverLine.Bounds.Bottom, Width - left, 4);
                        Cursor = Cursors.Hand;
                        cursorHandled = true;
                        Invalidate(_previousLine);
                    }
                }
                if (cursorHandled == false)
                {
                    Cursor = Cursors.No;
                    cursorHandled = true;
                }
            }
            if (cursorHandled == false)
            {
                Cursor = Cursors.Arrow;
            }
            base.OnMouseMove(e);
        }
Ejemplo n.º 15
0
 private void DoItemMouseMove(ItemMouseEventArgs e)
 {
     OnItemMouseMove(e);
 }
Ejemplo n.º 16
0
 /// <summary>
 /// Fires the ItemMouseMove Event, which handles the mouse moving over one of the legend items.
 /// </summary>
 /// <param name="e">An ItemMouseEventArgs</param>
 protected virtual void OnItemMouseMove(ItemMouseEventArgs e)
 {
     if (ItemMouseMove != null) ItemMouseMove(this, e);
 }
Ejemplo n.º 17
0
 /// <summary>
 /// The coordinates are in legend coordinates, but a LegendBox is provided to define the
 /// coordinates of the specified object.
 /// </summary>
 /// <param name="e">An ItemMouseEventArgs</param>
 protected virtual void OnItemMouseDown(ItemMouseEventArgs e)
 {
     if (ItemMouseDown != null) ItemMouseDown(this, e);
 }
Ejemplo n.º 18
0
 private void DoItemMouseMove(ItemMouseEventArgs e)
 {
     OnItemMouseMove(e);
 }
Ejemplo n.º 19
0
        private void DoItemMouseDown(ItemMouseEventArgs e)
        {
            Point loc = new Point(e.X + ControlRectangle.X, e.Location.Y + ControlRectangle.Top);
            // Toggle expansion
            if (e.ItemBox.ExpandBox.Contains(loc))
            {
                e.ItemBox.Item.IsExpanded = !e.ItemBox.Item.IsExpanded;
                if (ExpandBoxMouseDown != null) ExpandBoxMouseDown(this, e);
                IsInitialized = false;
                SizePage();
                ResetScroll();
                Invalidate();
                return;
            }

            if (e.ItemBox.Item.IsSelected)
            {
                // if we are already selected, prepare to edit in textbox
                _previousMouseDown = e.ItemBox;

                // Start dragging
                if (e.Button == MouseButtons.Left)
                {
                    _isDragging = true;
                    ILegendItem li = e.ItemBox.Item;
                    while (li != null && li as ILayer == null)
                    {
                        li = li.GetParentItem();
                    }
                    ILayer lyr = li as ILayer;
                    if (lyr != null)
                    {
                        _dragItem = BoxFromItem(lyr);
                    }
                    else
                    {
                        _isDragging = false;
                    }
                }
            }
            else
            {
                // Check for textbox clicking
                if (e.ItemBox.Textbox.Contains(loc))
                {
                    if (ModifierKeys != Keys.Shift)
                    {
                        ClearSelection();
                    }
                    e.ItemBox.Item.IsSelected = true;
                    //_selection.Add(e.ItemBox);
                    //IsInitialized = false;
                    //Invalidate();
                    //return;
                }
            }
        }