Exemplo n.º 1
0
        private void control_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right && ((Control.ModifierKeys & Keys.Alt) == 0))
            {
                Point  p      = new Point(e.X, e.Y);
                object target = null;

                foreach (IPickingAdapter pickingAdapter in AdaptedControl.AsAll <IPickingAdapter>())
                {
                    DiagramHitRecord hitRecord = pickingAdapter.Pick(p);
                    if (hitRecord.Item != null)
                    {
                        target = hitRecord.Item;
                        break;
                    }
                }

                // iter over IPickingAdapter
                if (target == null)
                {
                    foreach (IPickingAdapter2 pickingAdapter in AdaptedControl.AsAll <IPickingAdapter2>())
                    {
                        DiagramHitRecord hitRecord = pickingAdapter.Pick(p);
                        if (hitRecord.Item != null)
                        {
                            target = hitRecord.Item;
                            break;
                        }
                    }
                }

                object context = AdaptedControl.Context;
                TriggeringLocation = p;
                var commands = new List <object>(m_providers.GetCommands(context, target));

                OnContextMenuOpening(commands);


                Point screenP = AdaptedControl.PointToScreen(p);
                m_commandService.RunContextMenu(commands, screenP);
            }
        }