org.eclipse.gef4.zest.core.widgets.zooming

## Class ZoomManager

- java.lang.Object
- - org.eclipse.gef4.zest.core.widgets.zooming.ZoomManager

    public class ZoomManager
    extends java.lang.Object

Manage the primary zoom function in a graphical viewer. This class is used by the zoom contribution items, including:

- `org.eclipse.gef.ui.actions.ZoomInAction`
- `org.eclipse.gef.ui.actions.ZoomOutAction`
- and `org.eclipse.gef.ui.actions.ZoomComboContributionItem`

A ZoomManager controls how zoom in and zoom out are performed. It also determines the list of choices the user sees in the drop-down Combo on the toolbar. The zoom manager controls a `ScalableFigure`, which performs the actual zoom, and also a `Viewport`. The viewport is needed so that the scrolled location is preserved as the zoom level changes.

NOTE: For the settings of `Page`, `Width` and `Height` to work properly, the given `Viewport` should have its scrollbars always visible or never visible. Otherwise, these settings may cause undesired effects.

Since:
  2.0

### Field Summary

Fields
`static int` `ANIMATE_NEVER` Style bit meaning don't animate any zooms
`static int` `ANIMATE_ZOOM_IN_OUT` Style bit meaning animate during `zoomIn()` and `zoomOut()`
`static java.lang.String` `FIT_ALL` String constant for the "Page" zoom level.
`static java.lang.String` `FIT_HEIGHT` String constant for the "Height" zoom level.
`static java.lang.String` `FIT_WIDTH` String constant for the "Width" zoom level.

### Constructor Summary

Constructors
Constructor and Description
`ZoomManager(org.eclipse.draw2d.ScalableFigure pane, org.eclipse.draw2d.Viewport viewport)` Creates a new ZoomManager.
`ZoomManager(org.eclipse.draw2d.ScalableFreeformLayeredPane pane, org.eclipse.draw2d.Viewport viewport)` Deprecated. Use `ZoomManager(ScalableFigure, Viewport)` instead. Creates a new ZoomManager

### Method Summary

Methods
`void` `addZoomListener(ZoomListener listener)` Adds the given ZoomListener to this ZoomManager's list of listeners.
`boolean` `canZoomIn()` returns `true` if the zoommanager can perform `zoomIn()`.
`boolean` `canZoomOut()` returns `true` if the zoommanager can perform `zoomOut()`.
`protected void` `fireZoomChanged()` Notifies listeners that the zoom level has changed.
`protected double` `getFitHeightZoomLevel()` Calculates and returns the zoom percent required so that the entire height of the `scalable figure` is visible on the screen.
`protected double` `getFitPageZoomLevel()` Calculates and returns the zoom percentage required to fit the entire `scalable figure` on the screen.
`protected double` `getFitWidthZoomLevel()` Calculates and returns the zoom percentage required so that the entire width of the `scalable figure` is visible on the screen.
`double` `getMaxZoom()` Returns the maxZoom.
`double` `getMinZoom()` Returns the minZoom.
`double` `getNextZoomLevel()` Returns the zoom level that is one level higher than the current level.
`double` `getPreviousZoomLevel()` Returns the zoom level that is one level higher than the current level.
`org.eclipse.draw2d.ScalableFigure` `getScalableFigure()` Returns the figure which performs the actual zooming.
`double` `getUIMultiplier()` Returns the mutltiplier.
`org.eclipse.draw2d.Viewport` `getViewport()` Returns the viewport.
`double` `getZoom()` Returns the current zoom level.
`java.lang.String` `getZoomAsText()` Returns the current zoom level as a percentage formatted String
`java.util.List<java.lang.String>` `getZoomLevelContributions()` Returns the list of strings that should be appended to the list of numerical zoom levels.
`double[]` `getZoomLevels()` Returns the zoomLevels.
`java.lang.String[]` `getZoomLevelsAsText()` Returns the list of zoom levels as Strings in percent notation, plus any additional zoom levels that were contributed using `setZoomLevelContributions(List)`.
`protected void` `primSetZoom(double zoom)` Sets the zoom level to the given value.
`void` `removeZoomListener(ZoomListener listener)` Removes the given ZoomListener from this ZoomManager's list of listeners.
`void` `setUIMultiplier(double multiplier)` Sets the UI multiplier.
`void` `setViewLocation(org.eclipse.draw2d.geometry.Point p)` Sets the Viewport's view associated with this ZoomManager to the passed Point
`void` `setZoom(double zoom)` Sets the zoom level to the given value.
`void` `setZoomAnimationStyle(int style)` Sets which zoom methods get animated.
`void` `setZoomAsText(java.lang.String zoomString)` Sets zoom to the passed string.
`void` `setZoomLevelContributions(java.util.List<java.lang.String> contributions)` Sets the list of zoom level contributions (as strings).
`void` `setZoomLevels(double[] zoomLevels)` Sets the zoomLevels.
`void` `zoomIn()` Sets the zoom level to be one level higher
`void` `zoomOut()` Sets the zoom level to be one level lower
`void` `zoomTo(org.eclipse.draw2d.geometry.Rectangle rect)` Currently does nothing.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### ANIMATE_NEVER

    public static final int ANIMATE_NEVER

Style bit meaning don't animate any zooms

See Also:
  Constant Field Values

#### ANIMATE_ZOOM_IN_OUT

    public static final int ANIMATE_ZOOM_IN_OUT

Style bit meaning animate during `zoomIn()` and `zoomOut()`

See Also:
  Constant Field Values

#### FIT_HEIGHT

    public static final java.lang.String FIT_HEIGHT

String constant for the "Height" zoom level. At this zoom level, the zoom manager will adopt a zoom setting such that the entire height of the diagram will be visible on the screen.

#### FIT_WIDTH

    public static final java.lang.String FIT_WIDTH

String constant for the "Width" zoom level. At this zoom level, the zoom manager will adopt a zoom setting such that the entire width of the diagram will be visible on the screen.

#### FIT_ALL

    public static final java.lang.String FIT_ALL

String constant for the "Page" zoom level. At this zoom level, the zoom manager will adopt a zoom setting such that the entire diagram will be visible on the screen.

### Constructor Detail

#### ZoomManager

    public ZoomManager(org.eclipse.draw2d.ScalableFigure pane,
               org.eclipse.draw2d.Viewport viewport)

Creates a new ZoomManager.

Parameters:
  `pane` - The ScalableFigure associated with this ZoomManager
  `viewport` - The Viewport assoicated with this ZoomManager

#### ZoomManager

    public ZoomManager(org.eclipse.draw2d.ScalableFreeformLayeredPane pane,
               org.eclipse.draw2d.Viewport viewport)

Deprecated. Use `ZoomManager(ScalableFigure, Viewport)` instead. Creates a new ZoomManager

Parameters:
  `pane` - The ScalableFreeformLayeredPane associated with this ZoomManager
  `viewport` - The Viewport assoicated with this viewport

### Method Detail

#### addZoomListener

    public void addZoomListener(ZoomListener listener)

Adds the given ZoomListener to this ZoomManager's list of listeners.

Parameters:
  `listener` - the ZoomListener to be added

#### canZoomIn

    public boolean canZoomIn()

returns `true` if the zoommanager can perform `zoomIn()`.

Returns:
  boolean true if zoomIn can be called

#### canZoomOut

    public boolean canZoomOut()

returns `true` if the zoommanager can perform `zoomOut()`.

Returns:
  boolean true if zoomOut can be called

#### fireZoomChanged

    protected void fireZoomChanged()

Notifies listeners that the zoom level has changed.

#### getFitHeightZoomLevel

    protected double getFitHeightZoomLevel()

Calculates and returns the zoom percent required so that the entire height of the `scalable figure` is visible on the screen. This is the zoom level associated with `FIT_HEIGHT`.

Returns:
  zoom setting required to fit the scalable figure vertically on the screen

#### getFitPageZoomLevel

    protected double getFitPageZoomLevel()

Calculates and returns the zoom percentage required to fit the entire `scalable figure` on the screen. This is the zoom setting associated with `FIT_ALL`. It is the minimum of `getFitHeightZoomLevel()` and `getFitWidthZoomLevel()`.

Returns:
  zoom setting required to fit the entire scalable figure on the screen

#### getFitWidthZoomLevel

    protected double getFitWidthZoomLevel()

Calculates and returns the zoom percentage required so that the entire width of the `scalable figure` is visible on the screen. This is the zoom setting associated with `FIT_WIDTH`.

Returns:
  zoom setting required to fit the scalable figure horizontally on the screen

#### getMaxZoom

    public double getMaxZoom()

Returns the maxZoom.

Returns:
  double

#### getMinZoom

    public double getMinZoom()

Returns the minZoom.

Returns:
  double

#### getUIMultiplier

    public double getUIMultiplier()

Returns the mutltiplier. This value is used to use zoom levels internally that are proportionally different than those displayed to the user. e.g. with a multiplier value of 2.0, the zoom level 1.0 will be displayed as "200%".

Returns:
  double The multiplier

#### getNextZoomLevel

    public double getNextZoomLevel()

Returns the zoom level that is one level higher than the current level. If zoom level is at maximum, returns the maximum.

Returns:
  double The next zoom level

#### getPreviousZoomLevel

    public double getPreviousZoomLevel()

Returns the zoom level that is one level higher than the current level. If zoom level is at maximum, returns the maximum.

Returns:
  double The previous zoom level

#### getScalableFigure

    public org.eclipse.draw2d.ScalableFigure getScalableFigure()

Returns the figure which performs the actual zooming.

Returns:
  the scalable figure

#### getViewport

    public org.eclipse.draw2d.Viewport getViewport()

Returns the viewport.

Returns:
  Viewport

#### getZoom

    public double getZoom()

Returns the current zoom level.

Returns:
  double the zoom level

#### getZoomAsText

    public java.lang.String getZoomAsText()

Returns the current zoom level as a percentage formatted String

Returns:
  String The current zoom level as a String

#### getZoomLevelContributions

    public java.util.List<java.lang.String> getZoomLevelContributions()

Returns the list of strings that should be appended to the list of numerical zoom levels. These could be things such as Fit Width, Fit Page, etc. May return `null`.

Returns:
  the list of contributed zoom levels

#### getZoomLevels

    public double[] getZoomLevels()

Returns the zoomLevels.

Returns:
  double[]

#### getZoomLevelsAsText

    public java.lang.String[] getZoomLevelsAsText()

Returns the list of zoom levels as Strings in percent notation, plus any additional zoom levels that were contributed using `setZoomLevelContributions(List)`.

Returns:
  List The list of zoom levels

#### primSetZoom

    protected void primSetZoom(double zoom)

Sets the zoom level to the given value. Min-max range check is not done.

Parameters:
  `zoom` - the new zoom level

#### removeZoomListener

    public void removeZoomListener(ZoomListener listener)

Removes the given ZoomListener from this ZoomManager's list of listeners.

Parameters:
  `listener` - the ZoomListener to be removed

#### setUIMultiplier

    public void setUIMultiplier(double multiplier)

Sets the UI multiplier. The UI multiplier is applied to all zoom settings when they are presented to the user (`getZoomAsText()`). Similarly, the multiplier is inversely applied when the user specifies a zoom level (`setZoomAsText(String)`).

When the UI multiplier is `1.0`, the User will see the exact zoom level that is being applied. If the value is `2.0`, then a scale of `0.5` will be labeled "100%" to the User.

Parameters:
  `multiplier` - The mutltiplier to set

#### setViewLocation

    public void setViewLocation(org.eclipse.draw2d.geometry.Point p)

Sets the Viewport's view associated with this ZoomManager to the passed Point

Parameters:
  `p` - The new location for the Viewport's view.

#### setZoom

    public void setZoom(double zoom)

Sets the zoom level to the given value. If the zoom is out of the min-max range, it will be ignored.

Parameters:
  `zoom` - the new zoom level

#### setZoomAnimationStyle

    public void setZoomAnimationStyle(int style)

Sets which zoom methods get animated.

Parameters:
  `style` - the style bits determining the zoom methods to be animated.

#### setZoomAsText

    public void setZoomAsText(java.lang.String zoomString)

Sets zoom to the passed string. The string must be composed of numeric characters only with the exception of a decimal point and a '%' as the last character. If the zoom level contribution list has been set, this method should be overridden to provide the appropriate zoom implementation for the new zoom levels.

Parameters:
  `zoomString` - The new zoom level

#### setZoomLevelContributions

    public void setZoomLevelContributions(java.util.List<java.lang.String> contributions)

Sets the list of zoom level contributions (as strings). If you contribute something other than `FIT_HEIGHT`, `FIT_WIDTH` and `FIT_ALL` you must subclass this class and override this method to implement your contributed zoom function.

Parameters:
  `contributions` - the list of contributed zoom levels

#### setZoomLevels

    public void setZoomLevels(double[] zoomLevels)

Sets the zoomLevels.

Parameters:
  `zoomLevels` - The zoomLevels to set

#### zoomIn

    public void zoomIn()

Sets the zoom level to be one level higher

#### zoomTo

    public void zoomTo(org.eclipse.draw2d.geometry.Rectangle rect)

Currently does nothing.

Parameters:
  `rect` - a rectangle

#### zoomOut

    public void zoomOut()

Sets the zoom level to be one level lower