package org.jactr.eclipse.runtime.ui.visicon; import org.eclipse.jface.action.ControlContribution; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Slider; public class ZoomSliderContribution extends ControlContribution { private final CTabFolder tabs; private Slider slider; private Listener zoomListener; private int magnification; protected ZoomSliderContribution(CTabFolder tabs, float magnification) { super("zoom-slider"); this.tabs = tabs; this.magnification = (int)(magnification*100); this.zoomListener = new ZoomListener(); tabs.addListener(SWT.Selection, zoomListener); } protected void zoomCurrentTab() { if(tabs.getSelection() != null) { ((VisiconComponent)tabs.getSelection().getControl()).setMagnification((float)slider.getSelection()/100.0f); } } float getMagnification() { if(slider == null) return (float)magnification/100.0f; else return (float)slider.getSelection()/100.0f; } @Override protected Control createControl(Composite parent) { slider = new Slider(parent, SWT.NONE); slider.setValues(magnification, 20, 200, slider.getThumb(), slider.getIncrement(), slider.getPageIncrement()); slider.addListener(SWT.Selection, zoomListener); return slider; } private class ZoomListener implements Listener { @Override public void handleEvent(Event event) { zoomCurrentTab(); } } }