/******************************************************************************* * Copyright (c) 2012, 2013 Original authors and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Original authors and others - initial API and implementation ******************************************************************************/ package org.eclipse.nebula.widgets.nattable.viewport; import static org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum.LEFT; import static org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum.RIGHT; import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.ScrollBar; /** * Listener for the Horizontal scroll bar events on the Viewport Layer. State is * exposed to this class from the viewport, since it works in close conjnuction * with it. */ public class HorizontalScrollBarHandler extends ScrollBarHandlerTemplate { public HorizontalScrollBarHandler(ViewportLayer viewportLayer, ScrollBar scrollBar) { this(viewportLayer, new ScrollBarScroller(scrollBar)); } public HorizontalScrollBarHandler(ViewportLayer viewportLayer, IScroller<?> scroller) { super(viewportLayer, scroller); } @Override int getViewportOrigin() { return this.viewportLayer.getOrigin().getX(); } @Override int getViewportMinimumOrigin() { return this.viewportLayer.getMinimumOrigin().getX(); } @Override void setViewportOrigin(int x) { this.viewportLayer.setOriginX(x); } @Override MoveDirectionEnum scrollDirectionForEventDetail(int eventDetail) { return (eventDetail == SWT.PAGE_UP || eventDetail == SWT.ARROW_UP) ? LEFT : RIGHT; } @Override boolean keepScrolling() { return !this.viewportLayer.isLastColumnCompletelyDisplayed(); } @Override int getViewportWindowSpan() { return this.viewportLayer.getClientAreaWidth(); } @Override int getScrollableLayerSpan() { if (this.viewportLayer.getMaxWidth() >= 0 && this.viewportLayer.getMaxWidth() < this.scrollableLayer.getWidth()) { return this.viewportLayer.getMaxWidth(); } else { return this.scrollableLayer.getWidth(); } } @Override int getScrollIncrement() { return this.viewportLayer.getColumnCount() > 0 ? this.viewportLayer .getColumnWidthByPosition(0) : 0; } }