blob: 4628d5eb6898d459995a3b717021b7db8c40623f [file] [log] [blame]
package org.eclipse.nebula.widgets.nattable.renderer.swt.layer.viewport
import org.eclipse.nebula.widgets.nattable.core.layer.impl.viewport.ViewportAxis
import org.eclipse.swt.widgets.Event
import org.eclipse.swt.widgets.Listener
import org.eclipse.swt.widgets.ScrollBar
import static extension org.eclipse.nebula.widgets.nattable.core.layer.axis.AxisInvariants.*
class ScrollBarHandler implements Listener {
val ScrollBar scrollBar
val ViewportAxis viewportAxis
new(ScrollBar scrollBar, ViewportAxis viewportAxis) {
this.scrollBar = scrollBar
this.viewportAxis = viewportAxis
}
override handleEvent(Event event) {
viewportAxis.pixelOrigin = /*viewportAxis.minimumOrigin +*/ scrollBar.selection
scrollBar.increment = scrollIncrement
adjustScrollBar
}
def void adjustScrollBar() {
scrollBar.selection = viewportAxis.pixelOrigin /*- viewportAxis.minimumOrigin*/
}
def void recalculateScrollBarSize() {
val max = viewportAxis.underlyingAxis.pixelSize /*- viewportAxis.minimumOrigin*/
scrollBar.maximum = max
val visiblePixelSize = viewportAxis.visiblePixelRange.pixelSize
var thumbSize = 0
if (visiblePixelSize < max && visiblePixelSize != 0) {
thumbSize = visiblePixelSize
scrollBar.enabled = true
scrollBar.visible = true
scrollBar.increment = scrollIncrement
scrollBar.pageIncrement = visiblePixelSize
} else {
thumbSize = max
scrollBar.enabled = false
scrollBar.visible = false
}
scrollBar.thumb = thumbSize
adjustScrollBar
}
def int getScrollIncrement() {
Math::min(viewportAxis.getPixelSizeOfSegmentPosition(0), viewportAxis.visiblePixelRange.pixelSize / 4)
}
}