resize functionality
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/SimpleAxis.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/SimpleAxis.xtend
index 14a1d82..49a5b14 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/SimpleAxis.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/SimpleAxis.xtend
@@ -1,6 +1,7 @@
package org.eclipse.nebula.widgets.nattable.core.layer.axis.impl
import java.io.Serializable
+import java.util.TreeMap
import org.eclipse.nebula.widgets.nattable.core.layer.axis.Axis
/**
@@ -10,6 +11,7 @@
int segmentCount
int defaultSegmentSize
+ val sizeMap = new TreeMap<Integer, Integer> // segment position -> pixel size
new(int segmentCount, int defaultSegmentSize) {
this.segmentCount = segmentCount
@@ -23,7 +25,20 @@
}
override getStartPixelOfSegmentPosition(int segmentPosition) {
- segmentPosition * defaultSegmentSize
+ if (segmentPosition < 0) return -1
+ else if (segmentPosition == 0) return 0
+ else if (sizeMap.empty) return segmentPosition * defaultSegmentSize
+ else {
+ var numResizedSegments = 0
+ var resizeAggregate = 0
+
+ for (resizedPosition : sizeMap.subMap(0, segmentPosition).keySet) {
+ numResizedSegments = numResizedSegments + 1
+ resizeAggregate = resizeAggregate + sizeMap.get(resizedPosition)
+ }
+
+ return ((segmentPosition - numResizedSegments) * defaultSegmentSize) + resizeAggregate
+ }
}
override getSegmentPositionOfPixelLocation(int pixelLocation) {
@@ -41,4 +56,12 @@
return -1
}
+ //
+
+ def void setSegmentPixelSize(int segmentPosition, int size) {
+ if (size < 0) throw new IllegalArgumentException("size must be >= 0")
+
+ sizeMap.put(segmentPosition, size)
+ }
+
}
\ No newline at end of file
diff --git a/NatTable/test/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTExample.xtend b/NatTable/test/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTExample.xtend
index dcb0d84..d669077 100644
--- a/NatTable/test/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTExample.xtend
+++ b/NatTable/test/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTExample.xtend
@@ -49,10 +49,14 @@
static def getSWTNatTable(Shell shell) {
val natTable = new SWTNatTable(shell)
- val bodyHorizontalAxis = new ReorderAxis(new SimpleAxis(4, 200))
- bodyHorizontalAxis.reorderSegmentPosition(1, 2)
- val bodyVerticalAxis = new HideShowAxis(new SimpleAxis(4, 100))
- bodyVerticalAxis.hideSegmentId(0)
+ val bodyHorizontalAxis = new ReorderAxis(
+ new SimpleAxis(4, 200) => [ setSegmentPixelSize(0, 100) ]
+ ) => [ reorderSegmentPosition(1, 2) ]
+
+ val bodyVerticalAxis = new HideShowAxis(
+ new SimpleAxis(4, 100) => [ setSegmentPixelSize(2, 200) ]
+ ) => [ hideSegmentId(0) ]
+
val bodyLayer = new DummyLayer(
bodyHorizontalAxis,
bodyVerticalAxis