Example #1
0
 public void OnClicked(IClickStatus clickStatus)
 {
     if (_imageCell == null)
     {
         return;                     //TODO-Later-Log
     }
     _imageCell.OnClicked(clickStatus);
 }
Example #2
0
        private void ClickOn(T operationElement, IClickStatus clickStatus)
        {
            Debug.Assert(operationElement != null);

            //0. 焦点
            var operationElementIndex = IndexOf(operationElement);
            var lastFocus             = Focus;
            var lastFocusElement      = this.ElementAtOrDefault(lastFocus);

            //1. 仅仅右键按下
            if (clickStatus.IsRightMouseButtonClicked && !clickStatus.IsLeftMouseButtonClicked)
            {
                if (clickStatus.IsCtrlPressed && !clickStatus.IsShiftPressed)
                {
                    return;                                                           //仅仅ctrl按下, 不改变选中状态
                }
                if (operationElement.IsSelected)
                {
                    return;                              //作用在选中的cell上,不改变选中状态
                }
                //operationCell未选中                               //作用在未选中的cell上,仅仅选中该cell
                SelectOnly(operationElement);
                return;
            }

            //2. 有左键按下


            //2.1 ctrl+shift按下
            if (clickStatus.IsShiftPressed && clickStatus.IsCtrlPressed)
            {
                SelectRange(lastFocus, operationElementIndex, lastFocusElement != null && lastFocusElement.IsSelected);
            }
            //2.2 仅仅 ctrl 按下
            else if (clickStatus.IsShiftPressed)
            {
                ForEach(cell => cell.IsSelected = false);
                SelectRange(lastFocus, operationElementIndex, true);
            }
            //2.3 仅仅 ctrl 按下
            else if (clickStatus.IsCtrlPressed)
            {
                operationElement.IsSelected = !operationElement.IsSelected;
                Focus = operationElementIndex;
            }
            //2.4 没有modifier key 按下
            else
            {
                SelectOnly(operationElement);
            }
        }
Example #3
0
 public void OnClicked(IClickStatus clickStatus)
 {
     Clicked(this, new ClickStatusEventArgs(clickStatus));
 }
Example #4
0
 public ClickStatusEventArgs(IClickStatus clickStatus)
 {
     ClickStatus = clickStatus;
 }
Example #5
0
        public static SelectOperator <T> CreateSelectOperator(T item, List <T> items, IClickStatus clickStatus)
        {
            // 1. only right mouse clicked
            if (clickStatus.IsRightMouseButtonClicked && !clickStatus.IsLeftMouseButtonClicked)
            {
                if (clickStatus.IsCtrlPressed && !clickStatus.IsShiftPressed)
                {
                    return(new DummySelectOperator <T>(item, items)); // modifier key, only ctrl pressed
                }
                if (item.IsSelected)
                {
                    return(new DummySelectOperator <T>(item, items));                // click on selected element
                }
                return(new SelectOnlyOpertator <T>(item, items));
            }

            // 2. left mouse clicked

            // 2.1 ctrl & shift pressed
            if (clickStatus.IsShiftPressed && clickStatus.IsCtrlPressed)
            {
                return(new SelectRangeBaseOnFocusOperator <T>(item, items));
            }
            // 2.2 only shift pressed
            if (clickStatus.IsShiftPressed)
            {
                return(new SelectRangeOperator <T>(item, items));
            }
            // 2.3 only ctrl pressed
            if (clickStatus.IsCtrlPressed)
            {
                return(new TakeBackSelectOperator <T>(item, items));
            }
            // 2.4 no modifier key pressed
            return(new SelectOnlyOpertator <T>(item, items));
        }