111 lines
3.5 KiB
Java
111 lines
3.5 KiB
Java
package com.minres.scviewer.database.ui.swt.internal.slider;
|
|
|
|
import org.eclipse.swt.SWT;
|
|
import org.eclipse.swt.events.SelectionAdapter;
|
|
import org.eclipse.swt.events.SelectionEvent;
|
|
import org.eclipse.swt.events.SelectionListener;
|
|
import org.eclipse.swt.graphics.Image;
|
|
import org.eclipse.swt.layout.GridData;
|
|
import org.eclipse.swt.layout.GridLayout;
|
|
import org.eclipse.swt.widgets.Composite;
|
|
import org.eclipse.wb.swt.SWTResourceManager;
|
|
|
|
import com.minres.scviewer.database.ui.swt.internal.IScrollBar;
|
|
|
|
public class ZoomingScrollbar extends Composite implements IScrollBar {
|
|
RangeSlider timeSlider;
|
|
/**
|
|
* Create the composite.
|
|
* @param parent
|
|
* @param style
|
|
*/
|
|
public ZoomingScrollbar(Composite parent, int style) {
|
|
super(parent, SWT.NO_FOCUS);
|
|
GridLayout gridLayout = new GridLayout(3, false);
|
|
gridLayout.horizontalSpacing = 0;
|
|
gridLayout.verticalSpacing = 0;
|
|
gridLayout.marginWidth = 0;
|
|
gridLayout.marginHeight = 0;
|
|
setLayout(gridLayout);
|
|
//setBackground(SWTResourceManager.getColor(SWT.COLOR_RED));
|
|
|
|
ImageButton b1 = new ImageButton(this, SWT.NONE);
|
|
GridData gd_b1 = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
|
|
gd_b1.widthHint=14;
|
|
gd_b1.heightHint=18;
|
|
b1.setLayoutData(gd_b1);
|
|
b1.setImage(new Image[] {
|
|
SWTResourceManager.getImage(this.getClass(), "arrow_left_hover.png"),
|
|
SWTResourceManager.getImage(this.getClass(), "arrow_left.png"),
|
|
SWTResourceManager.getImage(this.getClass(), "arrow_left_pressed.png")});
|
|
b1.addSelectionListener(new SelectionAdapter() {
|
|
@Override
|
|
public void widgetSelected(SelectionEvent e) {
|
|
int[] value = timeSlider.getSelection();
|
|
int diff = value[1]-value[0];
|
|
int newLow = Math.max(0, value[0]-Math.max(1, diff/10));
|
|
timeSlider.setSelection(newLow, newLow+diff);
|
|
}
|
|
});
|
|
timeSlider = new RangeSlider(this, /*SWT.ON|*/SWT.HIGH|SWT.SMOOTH|SWT.CONTROL);
|
|
GridData gd_timeSlide = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
|
|
timeSlider.setLayoutData(gd_timeSlide);
|
|
|
|
ImageButton b2 = new ImageButton(this, SWT.NONE);
|
|
GridData gd_b2 = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
|
|
gd_b2.widthHint=18;
|
|
gd_b2.heightHint=18;
|
|
b2.setLayoutData(gd_b2);
|
|
b2.setImage(new Image[] {
|
|
SWTResourceManager.getImage(this.getClass(), "arrow_right_hover.png"),
|
|
SWTResourceManager.getImage(this.getClass(), "arrow_right.png"),
|
|
SWTResourceManager.getImage(this.getClass(), "arrow_right_pressed.png")});
|
|
b2.addSelectionListener(new SelectionAdapter() {
|
|
@Override
|
|
public void widgetSelected(SelectionEvent e) {
|
|
int[] value = timeSlider.getSelection();
|
|
int diff = value[1]-value[0];
|
|
int newHigh = Math.min(timeSlider.getMaximum(), value[1] + diff/10);
|
|
timeSlider.setSelection(newHigh-diff, newHigh);
|
|
}
|
|
});
|
|
|
|
}
|
|
@Override
|
|
public void setSelection(int i) {
|
|
timeSlider.setLowerValue(i);
|
|
}
|
|
@Override
|
|
public int getSelection() {
|
|
return timeSlider.getLowerValue();
|
|
}
|
|
@Override
|
|
public void addSelectionListener(SelectionListener selectionListener) {
|
|
timeSlider.addSelectionListener(selectionListener);
|
|
}
|
|
@Override
|
|
public void setIncrement(int value) {
|
|
timeSlider.setIncrement(value);
|
|
}
|
|
@Override
|
|
public void setPageIncrement(int value) {
|
|
timeSlider.setPageIncrement(value);
|
|
}
|
|
@Override
|
|
public void setMinimum(int value) {
|
|
timeSlider.setMinimum(value);
|
|
}
|
|
@Override
|
|
public void setMaximum(int value) {
|
|
timeSlider.setMaximum(value);
|
|
}
|
|
@Override
|
|
public int getMaximum() {
|
|
return timeSlider.getMaximum();
|
|
}
|
|
@Override
|
|
public void setThumb(int w) {
|
|
timeSlider.setUpperValue(timeSlider.getLowerValue()+w);
|
|
}
|
|
}
|