Optional<GridColumn<?>> getFirstRightAutoColumn(GridColumn<?> target, GridData model) { List<GridColumn<?>> columns = model.getColumns(); int targetIndex = columns.indexOf(target); for (int i = targetIndex + 1; i < columns.size(); i += 1) { GridColumn<?> gridColumn = columns.get(i); if (GridColumn.ColumnWidthMode.isAuto(gridColumn)) { return Optional.of(gridColumn); } } return Optional.empty(); }
Optional<GridColumn<?>> getFirstRightAutoColumn(GridColumn<?> target, GridData model) { List<GridColumn<?>> columns = model.getColumns(); int targetIndex = columns.indexOf(target); for (int i = targetIndex + 1; i < columns.size(); i += 1) { GridColumn<?> gridColumn = columns.get(i); if (GridColumn.ColumnWidthMode.isAuto(gridColumn)) { return Optional.of(gridColumn); } } return Optional.empty(); }
@Override public void appendColumn(final GridColumn<?> column) { double originalWidth = getWidth(); column.setIndex(columns.size()); columns.add(column); OptionalDouble optionalOriginalWidth = OptionalDouble.of(originalWidth); if (GridColumn.ColumnWidthMode.isAuto(column)) { column.setWidth(calculateInitWidth(column, optionalOriginalWidth)); internalRefreshWidth(true, optionalOriginalWidth); } selectionsManager.onInsertColumn(columns.size() - 1); }
if (!column.isVisible() || !GridColumn.ColumnWidthMode.isAuto(column)) { continue;
if (!column.isVisible() || !GridColumn.ColumnWidthMode.isAuto(column)) { continue;
protected double adjustColumnWidth(double columnNewWidth, GridColumn<?> activeGridColumn, GridWidget activeGridWidget) { final GridData activeGridModel = activeGridWidget.getModel(); double originalLeftColumnWidth = activeGridColumn.getWidth(); double delta = originalLeftColumnWidth - columnNewWidth; int visibleWidth = activeGridModel.getVisibleWidth(); double gridWidgetWidth = activeGridWidget.getWidth(); double newGridWidth = gridWidgetWidth - delta; // if the grid is becoming less than 100% width if (newGridWidth < visibleWidth && delta > 0) { // look for a column with AUTO width on the right Optional<GridColumn<?>> rightGridColumn = getFirstRightAutoColumn(activeGridColumn, activeGridModel); if (rightGridColumn.isPresent()) { GridColumn<?> rightColumn = rightGridColumn.get(); double originalRightColumnWidth = rightColumn.getWidth(); double newWidth = originalRightColumnWidth + delta; rightColumn.setWidth(newWidth); } // or revert column resizing if the column itself has AUTO width else if (GridColumn.ColumnWidthMode.isAuto(activeGridColumn)) { columnNewWidth = originalLeftColumnWidth; } } return columnNewWidth; }
protected double adjustColumnWidth(double columnNewWidth, GridColumn<?> activeGridColumn, GridWidget activeGridWidget) { final GridData activeGridModel = activeGridWidget.getModel(); double originalLeftColumnWidth = activeGridColumn.getWidth(); double delta = originalLeftColumnWidth - columnNewWidth; int visibleWidth = activeGridModel.getVisibleWidth(); double gridWidgetWidth = activeGridWidget.getWidth(); double newGridWidth = gridWidgetWidth - delta; // if the grid is becoming less than 100% width if (newGridWidth < visibleWidth && delta > 0) { // look for a column with AUTO width on the right Optional<GridColumn<?>> rightGridColumn = getFirstRightAutoColumn(activeGridColumn, activeGridModel); if (rightGridColumn.isPresent()) { GridColumn<?> rightColumn = rightGridColumn.get(); double originalRightColumnWidth = rightColumn.getWidth(); double newWidth = originalRightColumnWidth + delta; rightColumn.setWidth(newWidth); } // or revert column resizing if the column itself has AUTO width else if (GridColumn.ColumnWidthMode.isAuto(activeGridColumn)) { columnNewWidth = originalLeftColumnWidth; } } return columnNewWidth; }
private GridWidthMetadata(OptionalDouble optionalCurrentWidth) { for (GridColumn<?> column : getColumns()) { if (!column.isVisible()) { continue; } double columnWidth = column.getWidth(); currentGrossWidth += columnWidth; numberOfAutoColumn = GridColumn.ColumnWidthMode.isAuto(column) ? numberOfAutoColumn + 1 : numberOfAutoColumn; fixedWidth = GridColumn.ColumnWidthMode.isFixed(column) ? fixedWidth + columnWidth : fixedWidth; } previousWidth = optionalCurrentWidth.orElse(currentGrossWidth); if (optionalCurrentWidth.isPresent()) { currentGrossWidth = optionalCurrentWidth.getAsDouble(); } } }
private GridWidthMetadata(OptionalDouble optionalCurrentWidth) { for (GridColumn<?> column : getColumns()) { if (!column.isVisible()) { continue; } double columnWidth = column.getWidth(); currentGrossWidth += columnWidth; numberOfAutoColumn = GridColumn.ColumnWidthMode.isAuto(column) ? numberOfAutoColumn + 1 : numberOfAutoColumn; fixedWidth = GridColumn.ColumnWidthMode.isFixed(column) ? fixedWidth + columnWidth : fixedWidth; } previousWidth = optionalCurrentWidth.orElse(currentGrossWidth); if (optionalCurrentWidth.isPresent()) { currentGrossWidth = optionalCurrentWidth.getAsDouble(); } } }
@Override public void insertColumn(final int index, final GridColumn<?> column) { double originalWidth = getWidth(); column.setIndex(columns.size()); columns.add(index, column); OptionalDouble optionalOriginalWidth = OptionalDouble.of(originalWidth); if (GridColumn.ColumnWidthMode.isAuto(column)) { column.setWidth(calculateInitWidth(column, optionalOriginalWidth)); internalRefreshWidth(true, optionalOriginalWidth); } selectionsManager.onInsertColumn(index); }
@Override public void insertColumn(final int index, final GridColumn<?> column) { double originalWidth = getWidth(); column.setIndex(columns.size()); columns.add(index, column); OptionalDouble optionalOriginalWidth = OptionalDouble.of(originalWidth); if (GridColumn.ColumnWidthMode.isAuto(column)) { column.setWidth(calculateInitWidth(column, optionalOriginalWidth)); internalRefreshWidth(true, optionalOriginalWidth); } selectionsManager.onInsertColumn(index); }
double calculateInitWidth(GridColumn<?> column, OptionalDouble optionalCurrentWidth) { if (!GridColumn.ColumnWidthMode.isAuto(column)) { return column.getWidth(); } GridWidthMetadata gridWidthMetadata = new GridWidthMetadata(optionalCurrentWidth); int visibleWidth = getVisibleWidth(); if (gridWidthMetadata.numberOfAutoColumn < 2) { return visibleWidth - gridWidthMetadata.fixedWidth; } return (visibleWidth - gridWidthMetadata.fixedWidth) / (gridWidthMetadata.numberOfAutoColumn - 1); }
double calculateInitWidth(GridColumn<?> column, OptionalDouble optionalCurrentWidth) { if (!GridColumn.ColumnWidthMode.isAuto(column)) { return column.getWidth(); } GridWidthMetadata gridWidthMetadata = new GridWidthMetadata(optionalCurrentWidth); int visibleWidth = getVisibleWidth(); if (gridWidthMetadata.numberOfAutoColumn < 2) { return visibleWidth - gridWidthMetadata.fixedWidth; } return (visibleWidth - gridWidthMetadata.fixedWidth) / (gridWidthMetadata.numberOfAutoColumn - 1); }
@Override public void appendColumn(final GridColumn<?> column) { double originalWidth = getWidth(); column.setIndex(columns.size()); columns.add(column); OptionalDouble optionalOriginalWidth = OptionalDouble.of(originalWidth); if (GridColumn.ColumnWidthMode.isAuto(column)) { column.setWidth(calculateInitWidth(column, optionalOriginalWidth)); internalRefreshWidth(true, optionalOriginalWidth); } selectionsManager.onInsertColumn(columns.size() - 1); }