@Override public List<RendererCommand> renderBody(final GridData model, final GridBodyRenderContext context, final BaseGridRendererHelper rendererHelper, final BaseGridRendererHelper.RenderingInformation renderingInformation) { final List<RendererCommand> commands = super.renderBody(model, context, rendererHelper, renderingInformation); if (!(rowHighlightRowIndexes == null || rowHighlightRowIndexes.isEmpty())) { commands.addAll(renderRowHighlights(model, context, rendererHelper, renderingInformation)); } return commands; }
@Test @SuppressWarnings("unchecked") public void checkSelectedCells() { this.model.selectCells(0, 0, 1, 1); when(context.getMinVisibleRowIndex()).thenReturn(0); when(context.getMaxVisibleRowIndex()).thenReturn(1); renderer.renderSelectedCells(model, context, rendererHelper, model.getSelectedCells(), (uiRowIndex, minVisibleUiRowIndex) -> 0.0, selectedRange -> 0.0).execute(rc); verify(renderer, never()).renderSelectedRange(anyList(), anyInt(), any(SelectedRange.class), any(Function.class)); }
@Before public void setUp() throws Exception { gridData = new BaseGridData(); gridSelectionManager = new DefaultGridLayer(); gridPinnedModeManager = new DefaultPinnedModeManager((DefaultGridLayer) gridSelectionManager); gridRenderer = new BaseGridRenderer(new GreenTheme()); gridColumnRenderer = mock(GridColumnRenderer.class); when(nativeEventMock.getClientX()).thenReturn(NATIVE_EVENT_CLIENT_X); when(nativeEventMock.getClientY()).thenReturn(NATIVE_EVENT_CLIENT_Y); when(targetMock.getOwnerDocument()).thenReturn(documentMock); when(targetMock.getAbsoluteLeft()).thenReturn(TARGET_ABSOLUTE_LEFT); when(targetMock.getScrollLeft()).thenReturn(TARGET_SCROLL_LEFT); when(targetMock.getAbsoluteTop()).thenReturn(TARGET_ABSOLUTE_TOP); when(targetMock.getScrollTop()).thenReturn(TARGET_SCROLL_TOP); when(documentMock.getScrollLeft()).thenReturn(DOCUMENT_SCROLL_LEFT); when(documentMock.getScrollTop()).thenReturn(DOCUMENT_SCROLL_TOP); when(contextMenuEventMock.getNativeEvent()).thenReturn(nativeEventMock); when(contextMenuEventMock.getRelativeElement()).thenReturn(targetMock); }
actualSelectionWidth[0] = (double) i.callRealMethod(); return actualSelectionWidth[0]; }).when(renderer).getSelectedRangeWidth(anyList(), anyInt(), any(SelectedRange.class)); renderer.renderSelectedCells(model, context, rendererHelper, times(1)).renderSelectedRange(columnsCaptor.capture(), eq(selectionColumnIndex), selectedRangeCaptor.capture(),
protected Group renderSelectedRange(final List<GridColumn<?>> blockColumns, final int minVisibleUiColumnIndex, final SelectedRange selectedRange, final Function<SelectedRange, Double> selectedCellsHeightStrategy) { final Group cellSelector = new Group(); final double gridLineStrokeWidth = theme.getBodyGridLine().getStrokeWidth(); final double selectorStrokeWidth = theme.getCellSelectorBorder().getStrokeWidth(); final double width = getSelectedRangeWidth(blockColumns, minVisibleUiColumnIndex, selectedRange) - (gridLineStrokeWidth + selectorStrokeWidth); final double height = selectedCellsHeightStrategy.apply(selectedRange) - (gridLineStrokeWidth + selectorStrokeWidth); final Rectangle selector = theme.getCellSelectorBorder() .setWidth(width) .setHeight(height) .setListening(false); final Rectangle highlight = theme.getCellSelectorBackground() .setWidth(width) .setHeight(height) .setListening(false); cellSelector.add(highlight); cellSelector.add(selector); return cellSelector; }
final Group cs = renderSelectedRange(blockColumns, minVisibleUiColumnIndex, _selectedRange,
@Test public void checkRenderHeaderWhenColumnsHaveNoMetaData() { column.getHeaderMetaData().clear(); final BaseGridRendererHelper.RenderingInformation ri = makeRenderingInformation(model); final GridHeaderRenderContext context = mock(GridHeaderRenderContext.class); final List<GridRenderer.RendererCommand> commands = renderer.renderHeader(model, context, rendererHelper, ri); assertThat(commands).isNotNull(); assertThat(commands).asList().hasSize(0); }
@Test public void checkRenderBoundary() { final double WIDTH = 100.0; final double HEIGHT = 200.0; final GridBoundaryRenderContext context = new GridBoundaryRenderContext(0, 0, WIDTH, HEIGHT); final RendererCommand command = renderer.renderGridBoundary(context); assertNotNull(command); assertRenderingCommands(Collections.singletonList(command), RenderGridBoundaryCommand.class); command.execute(rc); final ArgumentCaptor<Rectangle> boundaryCaptor = ArgumentCaptor.forClass(Rectangle.class); verify(parent).add(boundaryCaptor.capture()); assertRenderedRectangle(boundaryCaptor.getValue(), WIDTH, HEIGHT); }
@Test public void checkRenderSelector() { final BaseGridRendererHelper.RenderingInformation ri = makeRenderingInformation(model, Arrays.asList(0d, HEADER_ROW_HEIGHT, HEADER_ROW_HEIGHT * 2)); final RendererCommand command = renderer.renderSelector(WIDTH, HEIGHT, ri); assertNotNull(command); assertRenderingCommands(Collections.singletonList(command), RenderSelectorCommand.class); command.execute(rc); verify(parent, never()).add(anyObject()); }
@Override public RendererCommand renderHeaderBodyDivider(final double width) { return (RenderHeaderGridLinesCommand) (rc) -> { if (!rc.isSelectionLayer()) { final Line divider = theme.getGridHeaderBodyDivider(); divider.setPoints(new Point2DArray(new Point2D(0, getHeaderHeight() + 0.5), new Point2D(width, getHeaderHeight() + 0.5))); rc.getGroup().add(divider); } }; }
commands.add(renderHeaderBodyDivider(rendererHelper.getWidth(visibleBlockColumns)));
actualSelectionWidth[0] = (double) i.callRealMethod(); return actualSelectionWidth[0]; }).when(renderer).getSelectedRangeWidth(anyList(), anyInt(), any(SelectedRange.class)); renderer.renderSelectedCells(model, context, rendererHelper, times(1)).renderSelectedRange(columnsCaptor.capture(), eq(selectionColumnIndex), selectedRangeCaptor.capture(),
protected Group renderSelectedRange(final List<GridColumn<?>> blockColumns, final int minVisibleUiColumnIndex, final SelectedRange selectedRange, final Function<SelectedRange, Double> selectedCellsHeightStrategy) { final Group cellSelector = new Group(); final double gridLineStrokeWidth = theme.getBodyGridLine().getStrokeWidth(); final double selectorStrokeWidth = theme.getCellSelectorBorder().getStrokeWidth(); final double width = getSelectedRangeWidth(blockColumns, minVisibleUiColumnIndex, selectedRange) - (gridLineStrokeWidth + selectorStrokeWidth); final double height = selectedCellsHeightStrategy.apply(selectedRange) - (gridLineStrokeWidth + selectorStrokeWidth); final Rectangle selector = theme.getCellSelectorBorder() .setWidth(width) .setHeight(height) .setListening(false); final Rectangle highlight = theme.getCellSelectorBackground() .setWidth(width) .setHeight(height) .setListening(false); cellSelector.add(highlight); cellSelector.add(selector); return cellSelector; }
final Group cs = renderSelectedRange(blockColumns, minVisibleUiColumnIndex, _selectedRange,
@Test public void checkRenderHeaderWhenColumnsHaveNoMetaData() { column.getHeaderMetaData().clear(); final BaseGridRendererHelper.RenderingInformation ri = makeRenderingInformation(model); final GridHeaderRenderContext context = mock(GridHeaderRenderContext.class); final List<GridRenderer.RendererCommand> commands = renderer.renderHeader(model, context, rendererHelper, ri); assertThat(commands).isNotNull(); assertThat(commands).asList().hasSize(0); }
@Test public void checkRenderBoundary() { final double WIDTH = 100.0; final double HEIGHT = 200.0; final GridBoundaryRenderContext context = new GridBoundaryRenderContext(0, 0, WIDTH, HEIGHT); final RendererCommand command = renderer.renderGridBoundary(context); assertNotNull(command); assertRenderingCommands(Collections.singletonList(command), RenderGridBoundaryCommand.class); command.execute(rc); final ArgumentCaptor<Rectangle> boundaryCaptor = ArgumentCaptor.forClass(Rectangle.class); verify(parent).add(boundaryCaptor.capture()); assertRenderedRectangle(boundaryCaptor.getValue(), WIDTH, HEIGHT); }
@Test public void checkRenderSelector() { final BaseGridRendererHelper.RenderingInformation ri = makeRenderingInformation(model, Arrays.asList(0d, HEADER_ROW_HEIGHT, HEADER_ROW_HEIGHT * 2)); final RendererCommand command = renderer.renderSelector(WIDTH, HEIGHT, ri); assertNotNull(command); assertRenderingCommands(Collections.singletonList(command), RenderSelectorCommand.class); command.execute(rc); verify(parent, never()).add(anyObject()); }
@Override public RendererCommand renderHeaderBodyDivider(final double width) { return (RenderHeaderGridLinesCommand) (rc) -> { if (!rc.isSelectionLayer()) { final Line divider = theme.getGridHeaderBodyDivider(); divider.setPoints(new Point2DArray(new Point2D(0, getHeaderHeight() + 0.5), new Point2D(width, getHeaderHeight() + 0.5))); rc.getGroup().add(divider); } }; }
commands.add(renderHeaderBodyDivider(rendererHelper.getWidth(visibleBlockColumns)));
@Override public List<RendererCommand> renderBody(final GridData model, final GridBodyRenderContext context, final BaseGridRendererHelper rendererHelper, final BaseGridRendererHelper.RenderingInformation renderingInformation) { final List<RendererCommand> commands = super.renderBody(model, context, rendererHelper, renderingInformation); if (!(rowHighlightRowIndexes == null || rowHighlightRowIndexes.isEmpty())) { commands.addAll(renderRowHighlights(model, context, rendererHelper, renderingInformation)); } return commands; }