Search in sources :

Example 31 with Range

use of org.eclipse.nebula.widgets.nattable.coordinate.Range in project nebula.widgets.nattable by eclipse.

the class HierarchicalTreeLayer method underlyingToLocalColumnPositions.

@Override
public Collection<Range> underlyingToLocalColumnPositions(ILayer sourceUnderlyingLayer, Collection<Range> underlyingColumnPositionRanges) {
    if (isShowTreeLevelHeader()) {
        Collection<Range> localColumnPositionRanges = new ArrayList<Range>();
        for (Range underlyingColumnPositionRange : underlyingColumnPositionRanges) {
            int start = underlyingToLocalColumnPosition(sourceUnderlyingLayer, underlyingColumnPositionRange.start);
            // test end with 1 offset to avoid -1 result from asking out of
            // range
            int end = underlyingToLocalColumnPosition(sourceUnderlyingLayer, underlyingColumnPositionRange.end - 1);
            end++;
            // reduce the end
            for (int pos : this.levelHeaderPositions) {
                if (pos == (end - 1)) {
                    end--;
                }
            }
            localColumnPositionRanges.add(new Range(start, end));
        }
        return localColumnPositionRanges;
    }
    return super.underlyingToLocalColumnPositions(sourceUnderlyingLayer, underlyingColumnPositionRanges);
}
Also used : ArrayList(java.util.ArrayList) Range(org.eclipse.nebula.widgets.nattable.coordinate.Range)

Example 32 with Range

use of org.eclipse.nebula.widgets.nattable.coordinate.Range in project nebula.widgets.nattable by eclipse.

the class AbstractRowHideShowLayer method underlyingToLocalRowPositions.

@Override
public Collection<Range> underlyingToLocalRowPositions(ILayer sourceUnderlyingLayer, Collection<Range> underlyingRowPositionRanges) {
    Collection<Range> localRowPositionRanges = new ArrayList<Range>(underlyingRowPositionRanges.size());
    for (Range underlyingRowPositionRange : underlyingRowPositionRanges) {
        int startRowPosition = getAdjustedUnderlyingToLocalStartPosition(sourceUnderlyingLayer, underlyingRowPositionRange.start, underlyingRowPositionRange.end);
        int endRowPosition = getAdjustedUnderlyingToLocalEndPosition(sourceUnderlyingLayer, underlyingRowPositionRange.end, underlyingRowPositionRange.start);
        // returned.
        if (startRowPosition > -1) {
            localRowPositionRanges.add(new Range(startRowPosition, endRowPosition));
        }
    }
    return localRowPositionRanges;
}
Also used : ArrayList(java.util.ArrayList) Range(org.eclipse.nebula.widgets.nattable.coordinate.Range)

Example 33 with Range

use of org.eclipse.nebula.widgets.nattable.coordinate.Range in project nebula.widgets.nattable by eclipse.

the class ResizeColumnHideShowLayer method showAllColumns.

@Override
public void showAllColumns() {
    // On show we expect that all visible columns share the free
    // space. To avoid that only the adjacent column is decreased, we
    // disable fixColumnPercentageValuesOnResize in any case and restore it
    // afterwards
    boolean fix = this.bodyDataLayer.isFixColumnPercentageValuesOnResize();
    this.bodyDataLayer.setFixColumnPercentageValuesOnResize(false);
    for (Map.Entry<Integer, ColumnSizeInfo> entry : this.hiddenColumns.entrySet()) {
        Integer index = entry.getKey();
        ColumnSizeInfo info = entry.getValue();
        // first make the column resizable
        this.bodyDataLayer.setColumnPositionResizable(index, true);
        // set the previous configured min width
        if (info.configuredMinWidth < 0) {
            this.bodyDataLayer.resetMinColumnWidth(index, false);
        } else {
            this.bodyDataLayer.setMinColumnWidth(index, info.configuredMinWidth);
        }
        // set the previous configured width
        if (info.configuredPercentage && info.configuredPercentageValue >= 0) {
            this.bodyDataLayer.setColumnWidthPercentageByPosition(index, info.configuredPercentageValue);
        } else if (!info.configuredPercentage && info.configuredSize >= 0) {
            this.bodyDataLayer.setColumnWidthByPosition(index, info.configuredSize, false);
        } else {
            this.bodyDataLayer.resetColumnWidth(index, false);
        }
        // set the configured resizable value
        this.bodyDataLayer.setColumnPositionResizable(index, info.configuredResizable);
    }
    List<Range> ranges = PositionUtil.getRanges(this.hiddenColumns.keySet());
    this.hiddenColumns.clear();
    // reset the fixColumnPercentageValuesOnResize flag
    this.bodyDataLayer.setFixColumnPercentageValuesOnResize(fix);
    // fire events
    for (Range range : ranges) {
        this.bodyDataLayer.fireLayerEvent(new ColumnResizeEvent(this.bodyDataLayer, range));
    }
}
Also used : ColumnResizeEvent(org.eclipse.nebula.widgets.nattable.resize.event.ColumnResizeEvent) Range(org.eclipse.nebula.widgets.nattable.coordinate.Range) TreeMap(java.util.TreeMap) Map(java.util.Map)

Example 34 with Range

use of org.eclipse.nebula.widgets.nattable.coordinate.Range in project nebula.widgets.nattable by eclipse.

the class HideRowPositionsEvent method getRowDiffs.

@Override
public Collection<StructuralDiff> getRowDiffs() {
    Collection<StructuralDiff> rowDiffs = new ArrayList<StructuralDiff>(getRowPositionRanges().size());
    for (Range range : getRowPositionRanges()) {
        StructuralDiff diff = new StructuralDiff(DiffTypeEnum.DELETE, range, new Range(range.start, range.start));
        rowDiffs.add(diff);
    }
    return rowDiffs;
}
Also used : StructuralDiff(org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff) ArrayList(java.util.ArrayList) Range(org.eclipse.nebula.widgets.nattable.coordinate.Range)

Example 35 with Range

use of org.eclipse.nebula.widgets.nattable.coordinate.Range in project nebula.widgets.nattable by eclipse.

the class ShowColumnPositionsEvent method getColumnDiffs.

@Override
public Collection<StructuralDiff> getColumnDiffs() {
    Collection<StructuralDiff> columnDiffs = new ArrayList<StructuralDiff>(getColumnPositionRanges().size());
    int offset = 0;
    for (Range range : getColumnPositionRanges()) {
        columnDiffs.add(new StructuralDiff(DiffTypeEnum.ADD, new Range(range.start - offset, range.start - offset), range));
        offset += range.size();
    }
    return columnDiffs;
}
Also used : StructuralDiff(org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff) ArrayList(java.util.ArrayList) Range(org.eclipse.nebula.widgets.nattable.coordinate.Range)

Aggregations

Range (org.eclipse.nebula.widgets.nattable.coordinate.Range)115 Test (org.junit.Test)54 ArrayList (java.util.ArrayList)40 StructuralDiff (org.eclipse.nebula.widgets.nattable.layer.event.StructuralDiff)23 HashSet (java.util.HashSet)12 Rectangle (org.eclipse.swt.graphics.Rectangle)12 RowDeleteEvent (org.eclipse.nebula.widgets.nattable.layer.event.RowDeleteEvent)9 RowSelectionEvent (org.eclipse.nebula.widgets.nattable.selection.event.RowSelectionEvent)9 NatTableFixture (org.eclipse.nebula.widgets.nattable.test.fixture.NatTableFixture)7 HashMap (java.util.HashMap)6 Map (java.util.Map)6 NatTable (org.eclipse.nebula.widgets.nattable.NatTable)6 RenameColumnHeaderCommand (org.eclipse.nebula.widgets.nattable.columnRename.RenameColumnHeaderCommand)6 HideRowPositionsEvent (org.eclipse.nebula.widgets.nattable.hideshow.event.HideRowPositionsEvent)6 ColumnResizeEvent (org.eclipse.nebula.widgets.nattable.resize.event.ColumnResizeEvent)6 ShowRowPositionsEvent (org.eclipse.nebula.widgets.nattable.hideshow.event.ShowRowPositionsEvent)5 ColumnReorderEvent (org.eclipse.nebula.widgets.nattable.reorder.event.ColumnReorderEvent)5 SelectRowsCommand (org.eclipse.nebula.widgets.nattable.selection.command.SelectRowsCommand)5 Point (org.eclipse.swt.graphics.Point)5 ListDataProvider (org.eclipse.nebula.widgets.nattable.data.ListDataProvider)4