package org.projectusus.ui.dependencygraph.handlers;
import static org.eclipse.ui.handlers.HandlerUtil.getActivePart;
import static org.eclipse.ui.handlers.HandlerUtil.getActiveShell;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.ImageLoader;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
import org.projectusus.ui.dependencygraph.common.DependencyGraphView;
public class SaveScreenshot extends AbstractHandler {
public Object execute( ExecutionEvent event ) throws ExecutionException {
execute( getActiveShell( event ), (DependencyGraphView)getActivePart( event ) );
return null;
}
protected void execute( Shell shell, DependencyGraphView view ) {
Image image = view.takeScreenshot();
saveImage( shell, image, view.getFilenameForScreenshot() );
}
private void saveImage( Shell shell, final Image image, String prefix ) {
FileDialog dialog = new FileDialog( shell, SWT.SAVE );
dialog.setFilterNames( new String[] { "Image Files", "All Files (*.*)" } );
dialog.setFilterExtensions( new String[] { "*.png", "*.*" } ); // Windows wild cards
dialog.setFileName( prefix + ".png" );
String fileName = dialog.open();
if( fileName != null ) {
ImageLoader loader = new ImageLoader();
loader.data = new ImageData[] { image.getImageData() };
loader.save( fileName, SWT.IMAGE_PNG );
}
}
}