package org.projectusus.ui.dependencygraph.common;
import static org.projectusus.ui.dependencygraph.DependencyGraphPlugin.plugin;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuCreator;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.zest.core.viewers.IZoomableWorkbenchPart;
import org.eclipse.zest.core.viewers.ZoomContributionViewItem;
public class ChangeZoom extends Action implements IMenuCreator {
private static final String LABEL = "Zoom";
private static final String ICON_PATH = "icons/zoom.gif";
private final IZoomableWorkbenchPart view;
private Menu menu;
public ChangeZoom( IZoomableWorkbenchPart view ) {
super( LABEL, IAction.AS_DROP_DOWN_MENU );
this.view = view;
setImageDescriptor( plugin().imageForPath( ICON_PATH ) );
setMenuCreator( this );
}
@Override
public void run() {
resetZoom();
}
protected void resetZoom() {
view.getZoomableViewer().zoomTo( 0, 0, 0, 0 );
}
public Menu getMenu( Menu parent ) {
if( menu == null ) {
menu = new Menu( parent );
fill();
}
return menu;
}
public Menu getMenu( Control parent ) {
if( menu == null ) {
menu = new Menu( parent );
fill();
}
return menu;
}
private void fill() {
new ZoomContributionViewItem( view ).fill( menu, 0 );
}
public void dispose() {
if( menu != null ) {
menu.dispose();
}
}
}