package org.bundlemaker.core.ui.editor.dsm.widget.internal.zoom; import org.eclipse.core.runtime.Assert; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.ScrollPane; /** * <p> * Implements a zoomable {@link ScrollPane}. * </p> * * @author Gerd Wütherich (gerd@gerd-wuetherich.de) */ public class ZoomableScrollPane extends ScrollPane { /** the internal zoom container */ private ZoomContainer _zoomContainer; /** * <p> * Creates a new instance of type {@link ZoomableScrollPane}. * </p> * * @param figure * @param horizontalScrollBarVisibility * @param verticalScrollBarVisibility */ public ZoomableScrollPane(IFigure figure, int horizontalScrollBarVisibility, int verticalScrollBarVisibility) { // assert not null Assert.isNotNull(figure); // set the zoom container _zoomContainer = new ZoomContainer(); _zoomContainer.add(figure); _zoomContainer.setZoom(1.0f); setContents(_zoomContainer); // set up the scroll pane getVerticalScrollBar().setExtent(25); getHorizontalScrollBar().setExtent(25); setHorizontalScrollBarVisibility(horizontalScrollBarVisibility); setVerticalScrollBarVisibility(verticalScrollBarVisibility); getViewport().setContentsTracksWidth(true); getViewport().setContentsTracksHeight(true); } /** * {@inheritDoc} */ public void setZoom(float zoom) { _zoomContainer.setZoom(zoom); } /** * {@inheritDoc} */ public float getZoom() { return _zoomContainer.zoom; } }