| /******************************************************************************* |
| * Copyright 2005-2006, CHISEL Group, University of Victoria, Victoria, BC, |
| * Canada. 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: The Chisel Group, University of Victoria |
| *******************************************************************************/ |
| package org.eclipse.zest.core.viewers; |
| |
| import org.eclipse.draw2d.geometry.Rectangle; |
| import org.eclipse.jface.viewers.StructuredViewer; |
| import org.eclipse.zest.core.viewers.internal.ZoomManager; |
| |
| /** |
| * A simple interface that provides zooming capabilites. Not intended to be subclassed by clients. |
| * @author Del Myers |
| * |
| */ |
| //@tag bug.156286-Zooming.fix |
| public abstract class AbstractZoomableViewer extends StructuredViewer { |
| /** |
| * Returns a ZoomManager that zooming can be done on. May return null if none |
| * is available. |
| * @return a ZoomManager that zooming can be done on. |
| */ |
| protected abstract ZoomManager getZoomManager(); |
| |
| public void zoomTo(int x, int y, int width, int height) { |
| Rectangle r = new Rectangle(x, y, width, height); |
| if (r.isEmpty()) { |
| getZoomManager().setZoomAsText("100%"); |
| } else { |
| getZoomManager().zoomTo(r); |
| } |
| } |
| } |