/** * Retrieve the <code>GridColumn</code> of a <code>GridWidget</code> at a given point x. * It returns <code>null</code> if none is present at that position. * @param gridWidget * @param cx * @return */ public static GridColumn<?> getGridColumn(GridWidget gridWidget, double cx) { //Get column information final BaseGridRendererHelper rendererHelper = gridWidget.getRendererHelper(); final BaseGridRendererHelper.RenderingInformation ri = rendererHelper.getRenderingInformation(); if (ri == null) { return null; } final BaseGridRendererHelper.ColumnInformation ci = rendererHelper.getColumnInformation(cx); return ci.getColumn(); }
private void setupGridWidget() { view = spy(new BaseGridWidget(gridData, gridSelectionManager, gridPinnedModeManager, gridRenderer)); doReturn(gridRenderer).when(view).getRenderer(); doReturn(gridRendererHelper).when(view).getRendererHelper(); doReturn(ri).when(gridRendererHelper).getRenderingInformation(); doReturn(ci).when(gridRendererHelper).getColumnInformation(anyDouble()); doReturn(mock(Viewport.class)).when(view).getViewport(); doReturn(0.0).when(ci).getOffsetX(); doReturn(0).when(ci).getUiColumnIndex(); } }
private void setupGridWidget() { view = spy(new BaseGridWidget(gridData, gridSelectionManager, gridPinnedModeManager, gridRenderer)); doReturn(gridRenderer).when(view).getRenderer(); doReturn(gridRendererHelper).when(view).getRendererHelper(); doReturn(ri).when(gridRendererHelper).getRenderingInformation(); doReturn(ci).when(gridRendererHelper).getColumnInformation(anyDouble()); doReturn(mock(Viewport.class)).when(view).getViewport(); doReturn(0.0).when(ci).getOffsetX(); doReturn(0).when(ci).getUiColumnIndex(); } }
@Before public void setup() { when(gridWidget.getViewport()).thenReturn(viewport); when(gridWidget.getModel()).thenReturn(uiModel); when(gridWidget.getRendererHelper()).thenReturn(helper); when(gridWidget.getLayer()).thenReturn(layer); when(gridWidget.getRenderer()).thenReturn(renderer); when(renderer.getHeaderHeight()).thenReturn(64.0); when(renderer.getHeaderRowHeight()).thenReturn(32.0); when(uiModel.getHeaderRowCount()).thenReturn(2); final BaseGridRendererHelper.RenderingInformation ri = BaseGridWidgetRenderingTestUtils.makeRenderingInformation(uiModel, Collections.emptyList()); when(helper.getRenderingInformation()).thenReturn(ri); final BaseGridRendererHelper.ColumnInformation ci = new BaseGridRendererHelper.ColumnInformation(uiColumn, 0, 0); when(helper.getColumnInformation(anyDouble())).thenReturn(ci); this.mouseClickHandler = new BaseGridWidgetMouseClickHandler(gridWidget, Collections.singletonList(eventHandler)); }
@Before public void setup() { when(gridWidget.getViewport()).thenReturn(viewport); when(gridWidget.getModel()).thenReturn(uiModel); when(gridWidget.getRendererHelper()).thenReturn(helper); when(gridWidget.getLayer()).thenReturn(layer); when(gridWidget.getRenderer()).thenReturn(renderer); when(renderer.getHeaderHeight()).thenReturn(64.0); when(renderer.getHeaderRowHeight()).thenReturn(32.0); when(uiModel.getHeaderRowCount()).thenReturn(2); final BaseGridRendererHelper.RenderingInformation ri = BaseGridWidgetRenderingTestUtils.makeRenderingInformation(uiModel, Collections.emptyList()); when(helper.getRenderingInformation()).thenReturn(ri); final BaseGridRendererHelper.ColumnInformation ci = new BaseGridRendererHelper.ColumnInformation(uiColumn, 0, 0); when(helper.getColumnInformation(anyDouble())).thenReturn(ci); this.mouseClickHandler = new BaseGridWidgetMouseClickHandler(gridWidget, Collections.singletonList(eventHandler)); }
@Before @SuppressWarnings("unchecked") public void setup() { super.setUp(); this.clickEvent = new NodeMouseClickEvent(nativeClickEvent); this.doubleClickEvent = new NodeMouseDoubleClickEvent(nativeDoubleClickEvent); when(scenarioGridMock.getRendererHelper()).thenReturn(rendererHelper); when(scenarioGridMock.getViewport()).thenReturn(viewportMock); when(scenarioGridMock.getComputedLocation()).thenReturn(computedLocation); when(rendererHelper.getRenderingInformation()).thenReturn(renderingInformation); when(rendererHelper.getColumnInformation(anyDouble())).thenReturn(columnInformation); when(columnInformation.getColumn()).thenReturn((GridColumn) gridColumnMock); when(renderingInformation.getBodyBlockInformation()).thenReturn(renderingBlockInformation); when(renderingInformation.getFloatingBlockInformation()).thenReturn(renderingBlockInformation); when(informationHeaderMetaDataMock.getSupportedEditAction()).thenReturn(GridCellEditAction.SINGLE_CLICK); this.handler = spy(new ScenarioSimulationGridWidgetMouseEventHandler()); }
when(helper.getColumnInformation(any(Double.class))).thenReturn(columnInformation);
@Before public void setup() { when( renderer.getHeaderHeight() ).thenReturn( 64.0 ); when( renderer.getHeaderRowHeight() ).thenReturn( 32.0 ); when( helper.getColumnInformation( any( Double.class ) ) ).thenReturn( columnInformation ); when( columnInformation.getColumn() ).thenReturn( uiColumn ); when( uiModel.getHeaderRowCount() ).thenReturn( 2 ); when( uiModel.getColumnCount() ).thenReturn( 1 ); when( uiModel.getColumns() ).thenReturn( new ArrayList<GridColumn<?>>() {{ add( uiColumn ); }} ); when( uiColumn.getWidth() ).thenReturn( 100.0 ); setupDecisionTable( dtPresenter1, dtView1 ); setupDecisionTable( dtPresenter2, dtView2 ); this.handler = new ColumnHeaderPopOverHandler( modellerPresenter, columnPopOverPresenter ); }
@Override public boolean startEditingCell(final Point2D rp) { //Get row information final Integer uiRowIndex = CoordinateUtilities.getUiRowIndex(gridWidget, rp.getY()); if (uiRowIndex == null) { return false; } //Get column information final Point2D gridWidgetComputedLocation = gridWidget.getComputedLocation(); final BaseGridRendererHelper rendererHelper = gridWidget.getRendererHelper(); final BaseGridRendererHelper.ColumnInformation ci = rendererHelper.getColumnInformation(rp.getX()); final GridColumn<?> column = ci.getColumn(); if (column == null) { return false; } return edit(uiRowIndex, ci, Optional.of(rp.add(gridWidgetComputedLocation))); }
@Before public void setUp() { super.setup(); doReturn(scenarioGridCellMock).when(scenarioGridModelMock).getCell(UI_ROW_INDEX, UI_COLUMN_INDEX); when(scenarioGridPanelMock.getScenarioGrid()).thenReturn(scenarioGridMock); when(scenarioGridMock.getWidth()).thenReturn(GRID_WIDTH); when(scenarioGridMock.getModel()).thenReturn(scenarioGridModelMock); when(scenarioGridMock.getRenderer()).thenReturn(scenarioGridRendererMock); when(scenarioGridMock.getRendererHelper()).thenReturn(scenarioGridRendererHelperMock); when(scenarioGridMock.getViewport()).thenReturn(viewportMock); when(scenarioGridRendererMock.getHeaderHeight()).thenReturn(HEADER_HEIGHT); when(scenarioGridRendererMock.getHeaderRowHeight()).thenReturn(HEADER_ROW_HEIGHT); when(scenarioGridRendererHelperMock.getRenderingInformation()).thenReturn(scenarioRenderingInformationMock); // mock single column in grid when(scenarioGridModelMock.getHeaderRowCount()).thenReturn(1); columnsMock = Arrays.asList(gridColumnMock, gridColumnMock); when(scenarioGridModelMock.getColumns()).thenReturn(columnsMock); when(scenarioGridModelMock.getColumnCount()).thenReturn(2); // mock that column to index 0 BaseGridRendererHelper.ColumnInformation columnInformation = new BaseGridRendererHelper.ColumnInformation(gridColumnMock, UI_COLUMN_INDEX, OFFSET_X); when(scenarioGridRendererHelperMock.getColumnInformation(AdditionalMatchers.or(eq(0.0), eq(CLICK_POINT_X)))) .thenReturn(columnInformation); when(scenarioRenderingInformationMock.getFloatingBlockInformation()).thenReturn(floatingBlockInformationMock); } }
@Before public void setup() { this.event = new NodeMouseDoubleClickEvent(doubleClickEvent); when(gridWidget.getViewport()).thenReturn(viewport); when(gridWidget.getModel()).thenReturn(uiModel); when(gridWidget.getRenderer()).thenReturn(renderer); when(gridWidget.getRendererHelper()).thenReturn(helper); when(gridWidget.getLayer()).thenReturn(layer); when(gridWidget.getHeader()).thenReturn(header); when(renderer.getHeaderHeight()).thenReturn(64.0); when(renderer.getHeaderRowHeight()).thenReturn(32.0); when(uiModel.getHeaderRowCount()).thenReturn(2); when(uiModel.getColumnCount()).thenReturn(1); when(uiModel.getColumns()).thenReturn(new ArrayList<GridColumn<?>>() {{ add(uiColumn); }}); final BaseGridRendererHelper.RenderingInformation ri = BaseGridWidgetRenderingTestUtils.makeRenderingInformation(uiModel, Collections.emptyList()); when(helper.getRenderingInformation()).thenReturn(ri); final BaseGridRendererHelper.ColumnInformation ci = new BaseGridRendererHelper.ColumnInformation(uiColumn, 0, 0); when(helper.getColumnInformation(anyDouble())).thenReturn(ci); this.mouseDoubleClickHandler = new BaseGridWidgetMouseDoubleClickHandler(gridWidget, Collections.singletonList(eventHandler)); }
@Before public void setup() { this.event = new NodeMouseDoubleClickEvent(doubleClickEvent); when(gridWidget.getViewport()).thenReturn(viewport); when(gridWidget.getModel()).thenReturn(uiModel); when(gridWidget.getRenderer()).thenReturn(renderer); when(gridWidget.getRendererHelper()).thenReturn(helper); when(gridWidget.getLayer()).thenReturn(layer); when(gridWidget.getHeader()).thenReturn(header); when(renderer.getHeaderHeight()).thenReturn(64.0); when(renderer.getHeaderRowHeight()).thenReturn(32.0); when(uiModel.getHeaderRowCount()).thenReturn(2); when(uiModel.getColumnCount()).thenReturn(1); when(uiModel.getColumns()).thenReturn(new ArrayList<GridColumn<?>>() {{ add(uiColumn); }}); final BaseGridRendererHelper.RenderingInformation ri = BaseGridWidgetRenderingTestUtils.makeRenderingInformation(uiModel, Collections.emptyList()); when(helper.getRenderingInformation()).thenReturn(ri); final BaseGridRendererHelper.ColumnInformation ci = new BaseGridRendererHelper.ColumnInformation(uiColumn, 0, 0); when(helper.getColumnInformation(anyDouble())).thenReturn(ci); this.mouseDoubleClickHandler = new BaseGridWidgetMouseDoubleClickHandler(gridWidget, Collections.singletonList(eventHandler)); }
@Override public boolean startEditingCell(final Point2D rp) { //Get row information final Integer uiRowIndex = CoordinateUtilities.getUiRowIndex(gridWidget, rp.getY()); if (uiRowIndex == null) { return false; } //Get column information final Point2D gridWidgetComputedLocation = gridWidget.getComputedLocation(); final BaseGridRendererHelper rendererHelper = gridWidget.getRendererHelper(); final BaseGridRendererHelper.ColumnInformation ci = rendererHelper.getColumnInformation(rp.getX()); final GridColumn<?> column = ci.getColumn(); if (column == null) { return false; } return edit(uiRowIndex, ci, Optional.of(rp.add(gridWidgetComputedLocation))); }
/** * Gets the column index corresponding to the provided Canvas x-coordinate relative to the grid. Grid-relative coordinates can be * obtained from {@link INodeXYEvent} using {@link CoordinateUtilities#convertDOMToGridCoordinate(GridWidget, Point2D)} * @param gridWidget GridWidget to check. * @param relativeX x-coordinate relative to the GridWidget. * @return The column index or null if the coordinate did not map to a cell. */ public static Integer getUiColumnIndex(final GridWidget gridWidget, final double relativeX) { final GridData gridModel = gridWidget.getModel(); final BaseGridRendererHelper rendererHelper = gridWidget.getRendererHelper(); if (relativeX < 0 || relativeX > gridWidget.getWidth()) { return null; } //Get column index final BaseGridRendererHelper.ColumnInformation ci = rendererHelper.getColumnInformation(relativeX); final GridColumn<?> uiColumn = ci.getColumn(); final int uiColumnIndex = ci.getUiColumnIndex(); if (uiColumn == null) { return null; } if (uiColumnIndex < 0 || uiColumnIndex > gridModel.getColumnCount() - 1) { return null; } return uiColumnIndex; }
@Test public void testEditWhenHeaderCellSelected() { final GridColumn.HeaderMetaData headerMetaDataC1 = mock(GridColumn.HeaderMetaData.class); final GridColumn.HeaderMetaData headerMetaDataC2 = mock(GridColumn.HeaderMetaData.class); final GridColumn<?> gridColumnOne = mockGridColumn(100.0, Arrays.asList(headerMetaDataC1)); final GridColumn<?> gridColumnTwo = mockGridColumn(100.0, Arrays.asList(headerMetaDataC2)); doReturn(0).when(gridColumnOne).getIndex(); doReturn(1).when(gridColumnTwo).getIndex(); final double secondColumnXCoordinate = gridColumnOne.getWidth() + gridColumnTwo.getWidth() / 2; doReturn(ci).when(gridRendererHelper).getColumnInformation(secondColumnXCoordinate); doReturn(gridColumnOne.getWidth()).when(gridRendererHelper).getColumnOffset(gridColumnTwo); doReturn(gridColumnTwo).when(ci).getColumn(); doReturn(0.0).when(ci).getOffsetX(); doReturn(1).when(ci).getUiColumnIndex(); doReturn(Arrays.asList(gridColumnOne, gridColumnTwo)).when(ri).getAllColumns(); gridWidget.getModel().appendColumn(gridColumnOne); gridWidget.getModel().appendColumn(gridColumnTwo); gridWidget.getModel().selectHeaderCell(0, 1); CellContextUtilities.editSelectedCell(gridWidget); verify(headerMetaDataC1, never()).edit(any(GridBodyCellEditContext.class)); verify(headerMetaDataC2).edit(gridBodyCellEditContextCaptor.capture()); final GridBodyCellEditContext gridBodyCellEditContext = gridBodyCellEditContextCaptor.getValue(); assertThat(gridBodyCellEditContext) .hasFieldOrPropertyWithValue("columnIndex", 1) .hasFieldOrPropertyWithValue("rowIndex", 0); verify(gridWidget, never()).startEditingCell(anyInt(), anyInt()); verify(gridWidget, never()).startEditingCell(any(Point2D.class)); }
/** * Checks if the {@link AbstractNodeMouseEvent} happened on a "linked" {@link GridColumn}. If * the {@link AbstractNodeMouseEvent} was found to have happened on a {@link GridWidget} "linked" column then * selection of the "linked" {@link GridColumn} is delegated to {@link GridSelectionManager#selectLinkedColumn(GridColumn)}. */ @Override public boolean handleHeaderCell(final GridWidget gridWidget, final Point2D relativeLocation, final int uiHeaderRowIndex, final int uiHeaderColumnIndex, final AbstractNodeMouseEvent event) { final BaseGridRendererHelper rendererHelper = gridWidget.getRendererHelper(); final double cx = relativeLocation.getX(); final BaseGridRendererHelper.ColumnInformation ci = rendererHelper.getColumnInformation(cx); final GridColumn<?> column = ci.getColumn(); if (column == null) { return false; } //If linked scroll it into view if (column.isLinked()) { final GridColumn<?> link = column.getLink(); selectionManager.selectLinkedColumn(link); return true; } return false; } }
/** * Checks if the {@link AbstractNodeMouseEvent} happened on a "linked" {@link GridColumn}. If * the {@link AbstractNodeMouseEvent} was found to have happened on a {@link GridWidget} "linked" column then * selection of the "linked" {@link GridColumn} is delegated to {@link GridSelectionManager#selectLinkedColumn(GridColumn)}. */ @Override public boolean handleHeaderCell(final GridWidget gridWidget, final Point2D relativeLocation, final int uiHeaderRowIndex, final int uiHeaderColumnIndex, final AbstractNodeMouseEvent event) { final BaseGridRendererHelper rendererHelper = gridWidget.getRendererHelper(); final double cx = relativeLocation.getX(); final BaseGridRendererHelper.ColumnInformation ci = rendererHelper.getColumnInformation(cx); final GridColumn<?> column = ci.getColumn(); if (column == null) { return false; } //If linked scroll it into view if (column.isLinked()) { final GridColumn<?> link = column.getLink(); selectionManager.selectLinkedColumn(link); return true; } return false; } }
/** * Gets the column index corresponding to the provided Canvas x-coordinate relative to the grid. Grid-relative coordinates can be * obtained from {@link INodeXYEvent} using {@link CoordinateUtilities#convertDOMToGridCoordinate(GridWidget, Point2D)} * @param gridWidget GridWidget to check. * @param relativeX x-coordinate relative to the GridWidget. * @return The column index or null if the coordinate did not map to a cell. */ public static Integer getUiColumnIndex(final GridWidget gridWidget, final double relativeX) { final GridData gridModel = gridWidget.getModel(); final BaseGridRendererHelper rendererHelper = gridWidget.getRendererHelper(); if (relativeX < 0 || relativeX > gridWidget.getWidth()) { return null; } //Get column index final BaseGridRendererHelper.ColumnInformation ci = rendererHelper.getColumnInformation(relativeX); final GridColumn<?> uiColumn = ci.getColumn(); final int uiColumnIndex = ci.getUiColumnIndex(); if (uiColumn == null) { return null; } if (uiColumnIndex < 0 || uiColumnIndex > gridModel.getColumnCount() - 1) { return null; } return uiColumnIndex; }
public static void editSelectedCell(final GridWidget gridWidget) { final GridData gridModel = gridWidget.getModel(); if (gridModel.getSelectedHeaderCells().size() > 0) { final GridData.SelectedCell selectedCell = gridModel.getSelectedHeaderCells().get(0); final int uiHeaderRowIndex = selectedCell.getRowIndex(); final int uiColumnIndex = ColumnIndexUtilities.findUiColumnIndex(gridModel.getColumns(), selectedCell.getColumnIndex()); final GridColumn<?> column = gridModel.getColumns().get(uiColumnIndex); final GridColumn.HeaderMetaData headerMetaData = column.getHeaderMetaData().get(uiHeaderRowIndex); final BaseGridRendererHelper rendererHelper = gridWidget.getRendererHelper(); final BaseGridRendererHelper.RenderingInformation ri = rendererHelper.getRenderingInformation(); final double columnXCoordinate = rendererHelper.getColumnOffset(column) + column.getWidth() / 2; final BaseGridRendererHelper.ColumnInformation ci = rendererHelper.getColumnInformation(columnXCoordinate); final GridBodyCellEditContext context = CellContextUtilities.makeRenderContext(gridWidget, ri, ci, null, uiHeaderRowIndex); headerMetaData.edit(context); } else if (gridModel.getSelectedCells().size() > 0) { final GridData.SelectedCell origin = gridModel.getSelectedCellsOrigin(); if (origin == null) { return; } gridWidget.startEditingCell(origin.getRowIndex(), ColumnIndexUtilities.findUiColumnIndex(gridModel.getColumns(), origin.getColumnIndex())); } }
public static void editSelectedCell(final GridWidget gridWidget) { final GridData gridModel = gridWidget.getModel(); if (gridModel.getSelectedHeaderCells().size() > 0) { final GridData.SelectedCell selectedCell = gridModel.getSelectedHeaderCells().get(0); final int uiHeaderRowIndex = selectedCell.getRowIndex(); final int uiColumnIndex = ColumnIndexUtilities.findUiColumnIndex(gridModel.getColumns(), selectedCell.getColumnIndex()); final GridColumn<?> column = gridModel.getColumns().get(uiColumnIndex); final GridColumn.HeaderMetaData headerMetaData = column.getHeaderMetaData().get(uiHeaderRowIndex); final BaseGridRendererHelper rendererHelper = gridWidget.getRendererHelper(); final BaseGridRendererHelper.RenderingInformation ri = rendererHelper.getRenderingInformation(); final double columnXCoordinate = rendererHelper.getColumnOffset(column) + column.getWidth() / 2; final BaseGridRendererHelper.ColumnInformation ci = rendererHelper.getColumnInformation(columnXCoordinate); final GridBodyCellEditContext context = CellContextUtilities.makeRenderContext(gridWidget, ri, ci, null, uiHeaderRowIndex); headerMetaData.edit(context); } else if (gridModel.getSelectedCells().size() > 0) { final GridData.SelectedCell origin = gridModel.getSelectedCellsOrigin(); if (origin == null) { return; } gridWidget.startEditingCell(origin.getRowIndex(), ColumnIndexUtilities.findUiColumnIndex(gridModel.getColumns(), origin.getColumnIndex())); } }