package pipe.actions.gui;

import java.beans.PropertyChangeListener;

/**
 * PIPE overall application zoom manager
 */
public interface ZoomManager {
    /**
     *
     * @return true if can zoom in any further
     */
    boolean canZoomIn();

    /**
     *
     * @return true if can zoom out any more
     */
    boolean canZoomOut();

    /**
     * Performs the zooming in on the current canvas
     */
    void zoomIn();

    /**
     * Performs the zooming out of the current canvas
     */
    void zoomOut();

    /**
     *
     * @return current zoom percentage
     */
    int getPercentageZoom();

    /**
     *
     * @return current percentage scale
     */
    double getScale();

    /**
     * Add a lister for zooming actions
     * @param listener for zoom actions 
     */
    void addPropertyChangeListener(PropertyChangeListener listener);
}
