コード例 #1
0
        public bool DoSelect(Point ptLogique, bool bToucheControl, bool bOnMouseDown)
        {
            List <I2iObjetGraphique> lstSelect = Editeur.ObjetEdite.SelectionnerElements(ptLogique);
            bool bTousDedans = true;
            bool bUnDedans   = false;

            foreach (I2iObjetGraphique objet in lstSelect)
            {
                if (!Contains(objet))
                {
                    bTousDedans = false;
                }
                else if (!objet.IsLock)
                {
                    bUnDedans = true;
                }
            }

            if (bOnMouseDown)
            {
                //Sur mouse down, sans touche control, si l'un des éléments
                //est dedans et qu'on est proche du dernier point, la sélection ne bouge pas

                /*if (bUnDedans && !bToucheControl )//&& new CSegmentDroite(m_lastPointSelect, ptLogique).Longueur < 5)
                 *  return false;*/
                m_lastPointSelect = ptLogique;

                //Sinon, sélectionne le premier
                I2iObjetGraphique sel = Editeur.ObjetEdite.SelectionnerElementDuDessus(ptLogique);
                if (!bToucheControl)
                {
                    if (Contains(sel))
                    {
                        Point pt = sel.GlobalToClient(ptLogique);
                        if (sel.OnDesignerMouseDown(pt))
                        {
                            Editeur.Refresh();
                        }
                        return(false);
                    }
                    Clear();
                }
                else
                {
                    if (Contains(sel))
                    {
                        if (sel.Equals(ControlReference))
                        {
                            I2iObjetGraphique prof = Editeur.ObjetEdite.SelectionnerElementDuDessus(ptLogique, sel);
                            if (prof != null)
                            {
                                Add(prof);
                            }
                            Remove(sel);
                            return(true);
                        }
                        else
                        {
                            ControlReference = sel;
                            return(true);
                        }
                    }
                }
                if (sel != null)
                {
                    Add(sel);
                }
            }

            if (!bOnMouseDown && !bToucheControl)
            {
                I2iObjetGraphique lastSel = null;
                if (Count == 1)
                {
                    lastSel = this[0];
                }
                //Sélectionne le premier
                Clear();
                I2iObjetGraphique sel = Editeur.ObjetEdite.SelectionnerElementApresElement(ptLogique, lastSel);
                if (sel != null)
                {
                    Add(sel);
                }
            }
            return(true);
        }