Exemple #1
0
        /// <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();
        }