/// <summary> /// Initializes a new instance of the <see cref="DetailCell"/> class. /// </summary> /// <param name="column">The column.</param> /// <param name="spreadsheetItemContainer">The spreadsheet item container.</param> public DetailCell(IColumn column, SpreadsheetItemContainer spreadsheetItemContainer) : base(column, spreadsheetItemContainer) { ValuePresenter = new CellValuePresenter(this); ItemSelected = InitializeItemSelected(); if (ChildSpreadsheet != null) { ChildSpreadsheet.SwitchVisibility(); RaiseShowDetailsChanged(); } ((SpreadsheetDetailColumn) column).ColumnExpanded += OnColumnExpanded; }
/// <summary> /// Draws the horizontal lines. /// </summary> /// <param name="presenter">The presenter.</param> /// <param name="topLevelSpreadSheet">The top level spread sheet.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> private static bool DrawHorizontalLines(CellValuePresenter presenter, SpreadsheetView topLevelSpreadSheet) { var parentCell = presenter.ParentCell; if ((topLevelSpreadSheet.GridLinesVisibility & GridLinesVisibility.Horizontal) == GridLinesVisibility.Horizontal) { if (parentCell != null && parentCell.ShowDetails && parentCell.ItemSelected.Count > 0) { return true; } } return false; }
public void OnKeyUpTest() { var args = Mock.Create<KeyEventArgs>(Behavior.Loose); Assert.IsFalse(args.Handled); var privateAccessor = new PrivateAccessor(_contentControl); //Our cell is not a DetailCell so KeyNavigationByDemand should be invoked Mock.Arrange(() => _spreadsheet.KeyNavigationByDemand(Arg.IsAny<Key>(), false)).DoNothing().MustBeCalled(); privateAccessor.CallMethod("OnKeyUp", args); Mock.Assert(_spreadsheet); Assert.IsTrue(args.Handled); //Create cell of type DetailCell and assert that its IsEditMode is false so we call KeyNavigationByDemand again var cell = Mock.Create<DetailCell>(Constructor.Mocked); var valuePresenter = new CellValuePresenter(cell); Mock.Arrange(() => cell.ValuePresenter).Returns(valuePresenter); Mock.Arrange(() => cell.Owner).Returns(_spreadsheet); Mock.Arrange(() => _contentControl.DataContext).Returns(cell); Assert.IsFalse(cell.IsEditMode); Assert.IsFalse(cell.ValuePresenter.IsEditMode); privateAccessor.CallMethod("OnKeyUp", args); Mock.Assert(() => _spreadsheet.KeyNavigationByDemand(Arg.IsAny<Key>(), false), Occurs.Exactly(2)); //Now at least ValuePresenter is in edit mode and Key is not Tab or Escape args.Handled = false; Mock.Arrange(() => valuePresenter.IsEditMode).Returns(true); privateAccessor.CallMethod("OnKeyUp", args); Mock.Assert(() => _spreadsheet.KeyNavigationByDemand(Arg.IsAny<Key>(), false), Occurs.Exactly(2)); Assert.IsTrue(args.Handled); //Make Key to be Tab args.Handled = false; Mock.Arrange(() => args.Key).Returns(Key.Tab); privateAccessor.CallMethod("OnKeyUp", args); Mock.Assert(() => _spreadsheet.KeyNavigationByDemand(Arg.IsAny<Key>(), false), Occurs.Exactly(2)); Assert.IsFalse(args.Handled); //Make Key to be Escape Mock.Arrange(() => args.Key).Returns(Key.Escape); privateAccessor.CallMethod("OnKeyUp", args); Mock.Assert(() => _spreadsheet.KeyNavigationByDemand(Arg.IsAny<Key>(), false), Occurs.Exactly(2)); Assert.IsFalse(args.Handled); _cellInteractionBehaviorMock.Detach(); }