public void OnClicked(IClickStatus clickStatus) { if (_imageCell == null) { return; //TODO-Later-Log } _imageCell.OnClicked(clickStatus); }
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); } }
public void OnClicked(IClickStatus clickStatus) { Clicked(this, new ClickStatusEventArgs(clickStatus)); }
public ClickStatusEventArgs(IClickStatus clickStatus) { ClickStatus = clickStatus; }
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)); }