/******************************************************************************* * Copyright (c) 2013 BREDEX GmbH. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * BREDEX GmbH - initial API and implementation and/or initial documentation *******************************************************************************/ package org.eclipse.jubula.client.ui.rcp.handlers; import org.apache.commons.lang.StringUtils; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.jubula.client.ui.constants.Constants; import org.eclipse.jubula.client.ui.handlers.AbstractSelectionBasedHandler; import org.eclipse.jubula.client.ui.views.imageview.ImageView; import org.eclipse.jubula.client.ui.views.imageview.ImageViewData; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.ImageLoader; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.ui.IViewPart; import org.eclipse.ui.handlers.HandlerUtil; /** * @author BREDEX GmbH * @created 11.09.2013 */ public class SaveImageAsHandler extends AbstractSelectionBasedHandler { /** * {@inheritDoc} */ protected Object executeImpl(ExecutionEvent event) { IViewPart view = HandlerUtil.getActiveSite(event). getPage().findView(Constants.IMAGEVIEW_ID); if (view != null && view instanceof ImageView) { ImageView imageView = (ImageView)view; int maxFileNameLength = 255; ImageViewData imageViewData = imageView.getImageViewData(); String imageName = imageViewData.getImageName(); String imageDate = imageViewData.getImageDate(); FileDialog saveDialog = new FileDialog(getActiveShell(), SWT.SAVE); String fileEnding = "_" + imageDate + ".png"; //$NON-NLS-1$ //$NON-NLS-2$ String fileName = StringUtils.substring(imageName, 0, maxFileNameLength - fileEnding.length() - saveDialog.getFilterPath().length()); fileName = fileName + fileEnding; saveDialog.setFileName(fileName); saveDialog.setFilterExtensions(new String[] { "*.png" }); //$NON-NLS-1$ saveDialog.setOverwrite(true); String path = saveDialog.open(); ImageData imageData = imageViewData.getImage().getImageData(); if (path != null) { if (imageData != null) { ImageLoader loader = new ImageLoader(); loader.data = new ImageData[] { imageData }; loader.save(path, SWT.IMAGE_PNG); } } } return null; } }