/*
* Copyright 2005 Pi4 Technologies Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*
* Change History:
* Jul 5, 2005 : Initial version created by gary
*/
package org.savara.tools.scenario.designer.editor;
import org.eclipse.draw2d.ScalableFigure;
import org.eclipse.draw2d.Viewport;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.editparts.ZoomListener;
import org.eclipse.gef.editparts.ZoomManager;
import org.eclipse.jface.util.ListenerList;
/**
* The zoom manager.
*/
public class DelegatingZoomManager extends ZoomManager implements ZoomListener {
/**
* Creates a new DelegatingZoomManager instance.
*/
public DelegatingZoomManager()
{
super((ScalableFigure) null, (Viewport) null);
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomListener#zoomChanged(double)
*/
public void zoomChanged(double zoom)
{
Object[] listeners = m_zoomListeners.getListeners();
for (int i = 0; i < listeners.length; ++i)
{
((ZoomListener) listeners[i]).zoomChanged(zoom);
}
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#addZoomListener(org.eclipse.gef.editparts.ZoomListener)
*/
public void addZoomListener(ZoomListener listener)
{
m_zoomListeners.add(listener);
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#removeZoomListener(org.eclipse.gef.editparts.ZoomListener)
*/
public void removeZoomListener(ZoomListener listener)
{
m_zoomListeners.remove(listener);
}
/**
* Sets the ZoomManager all work should be delegated to.
* @param zoomManager
*/
public void setCurrentZoomManager(ZoomManager zoomManager)
{
if (null != m_currentZoomManager)
m_currentZoomManager.removeZoomListener(this);
m_currentZoomManager = zoomManager;
if(null != m_currentZoomManager)
{
m_currentZoomManager.addZoomListener(this);
zoomChanged(m_currentZoomManager.getZoom());
}
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#canZoomIn()
*/
public boolean canZoomIn()
{
if(null == m_currentZoomManager)
return false;
return m_currentZoomManager.canZoomIn();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#canZoomOut()
*/
public boolean canZoomOut()
{
if(null == m_currentZoomManager)
return false;
return m_currentZoomManager.canZoomOut();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#getMaxZoom()
*/
public double getMaxZoom()
{
if(null == m_currentZoomManager)
return 1;
return m_currentZoomManager.getMaxZoom();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#getMinZoom()
*/
public double getMinZoom()
{
if(null == m_currentZoomManager)
return 1;
return m_currentZoomManager.getMinZoom();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#getNextZoomLevel()
*/
public double getNextZoomLevel()
{
if(null == m_currentZoomManager)
return 1;
return m_currentZoomManager.getNextZoomLevel();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#getPreviousZoomLevel()
*/
public double getPreviousZoomLevel()
{
if(null == m_currentZoomManager)
return 1;
return m_currentZoomManager.getPreviousZoomLevel();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#getScalableFigure()
*/
public ScalableFigure getScalableFigure()
{
if(null == m_currentZoomManager)
return null;
return m_currentZoomManager.getScalableFigure();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#getUIMultiplier()
*/
public double getUIMultiplier()
{
if(null == m_currentZoomManager)
return 1;
return m_currentZoomManager.getUIMultiplier();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#getViewport()
*/
public Viewport getViewport()
{
if(null == m_currentZoomManager)
return null;
return m_currentZoomManager.getViewport();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#getZoom()
*/
public double getZoom()
{
if(null == m_currentZoomManager)
return 1;
return m_currentZoomManager.getZoom();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#getZoomAsText()
*/
public String getZoomAsText()
{
if(null == m_currentZoomManager)
return " 100%";
return m_currentZoomManager.getZoomAsText();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#getZoomLevels()
*/
public double[] getZoomLevels()
{
if(null == m_currentZoomManager)
return new double[] {1};
return m_currentZoomManager.getZoomLevels();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#getZoomLevelsAsText()
*/
public String[] getZoomLevelsAsText()
{
if(null == m_currentZoomManager)
return new String[] {" 100%"};
return m_currentZoomManager.getZoomLevelsAsText();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#setUIMultiplier(double)
*/
public void setUIMultiplier(double multiplier)
{
if(null == m_currentZoomManager)
return ;
m_currentZoomManager.setUIMultiplier(multiplier);
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#setViewLocation(org.eclipse.draw2d.geometry.Point)
*/
public void setViewLocation(Point p)
{
if(null == m_currentZoomManager)
return ;
m_currentZoomManager.setViewLocation(p);
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#setZoom(double)
*/
public void setZoom(double zoom)
{
if(null == m_currentZoomManager)
return ;
m_currentZoomManager.setZoom(zoom);
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#setZoomAnimationStyle(int)
*/
public void setZoomAnimationStyle(int style)
{
if(null == m_currentZoomManager)
return ;
m_currentZoomManager.setZoomAnimationStyle(style);
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#setZoomAsText(java.lang.String)
*/
public void setZoomAsText(String zoomString)
{
if(null == m_currentZoomManager)
return ;
m_currentZoomManager.setZoomAsText(zoomString);
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#setZoomLevels(double[])
*/
public void setZoomLevels(double[] zoomLevels)
{
if(null == m_currentZoomManager)
return ;
m_currentZoomManager.setZoomLevels(zoomLevels);
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#zoomIn()
*/
public void zoomIn()
{
if(null == m_currentZoomManager)
return ;
m_currentZoomManager.zoomIn();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#zoomOut()
*/
public void zoomOut()
{
if(null == m_currentZoomManager)
return ;
m_currentZoomManager.zoomOut();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.ZoomManager#zoomTo(org.eclipse.draw2d.geometry.Rectangle)
*/
public void zoomTo(Rectangle rect)
{
if(null == m_currentZoomManager)
return ;
m_currentZoomManager.zoomTo(rect);
}
private ZoomManager m_currentZoomManager;
private ListenerList m_zoomListeners = new ListenerList(3);
}