Пример #1
0
        protected override void SetSpecificValue(object value)
        {
            SwSpecificControl.SetSelectionFocus();

            if (value != null)
            {
                var disps = new List <DispatchWrapper>();

                if (SupportsMultiEntities)
                {
                    foreach (var item in value as IList)
                    {
                        disps.Add(new DispatchWrapper(item));
                    }
                }
                else
                {
                    disps.Add(new DispatchWrapper(value));
                }

                var selMgr = m_App.IActiveDoc2.ISelectionManager;

                var selData = selMgr.CreateSelectData();
                selData.Mark = SwSpecificControl.Mark;

                m_App.IActiveDoc2.Extension.MultiSelect2(disps.ToArray(), true, selData);
            }
        }
 private void OnPageOpened()
 {
     if (m_DefaultFocus)
     {
         if (Visible)
         {
             SwSpecificControl.SetSelectionFocus();
         }
     }
 }
        protected override void SetSpecificValue(object value)
        {
            SwSpecificControl.SetSelectionFocus();

            var disps = new List <DispatchWrapper>();

            if (value != null)
            {
                if (SupportsMultiEntities)
                {
                    foreach (SwSelObject item in value as IList)
                    {
                        disps.Add(new DispatchWrapper(item.Dispatch));
                    }
                }
                else
                {
                    disps.Add(new DispatchWrapper((value as SwSelObject).Dispatch));
                }
            }

            var selMgr = m_App.Sw.IActiveDoc2.ISelectionManager;

            var indicesToDeselect = new List <int>();

            for (int i = 0; i < SwSpecificControl.ItemCount; i++)
            {
                var selIndex = SwSpecificControl.SelectionIndex[i];
                var obj      = selMgr.GetSelectedObject6(selIndex, -1);

                var objIndex = disps.FindIndex(d => d.WrappedObject == obj);

                if (objIndex == -1)
                {
                    indicesToDeselect.Add(selIndex);
                }
                else
                {
                    disps.RemoveAt(objIndex);
                }
            }

            if (indicesToDeselect.Any())
            {
                int SUCCESS = 1;

                m_Handler.SuspendSelectionRaise(Id, true);

                if (selMgr.DeSelect2(indicesToDeselect.ToArray(), -1) != SUCCESS)
                {
                    //TODO: add log
                }

                m_Handler.SuspendSelectionRaise(Id, false);
            }

            if (disps.Any())
            {
                var selData = selMgr.CreateSelectData();
                selData.Mark = SwSpecificControl.Mark;

                m_App.Sw.IActiveDoc2.Extension.MultiSelect2(disps.ToArray(), true, selData);
            }
        }