/******************************************************************************* * Copyright (c) 2004, 2010 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.project; import java.io.File; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jubula.client.core.persistence.GeneralStorage; import org.eclipse.jubula.client.core.progress.IProgressConsole; import org.eclipse.jubula.client.ui.handlers.project.AbstractProjectHandler; import org.eclipse.jubula.client.ui.rcp.Plugin; import org.eclipse.jubula.client.ui.rcp.i18n.Messages; import org.eclipse.jubula.client.ui.rcp.utils.Utils; import org.eclipse.jubula.tools.internal.constants.StringConstants; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.ui.PlatformUI; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author BREDEX GmbH * @created 08.11.2004 */ public class ExportProjectHandler extends AbstractProjectHandler { /** Extension of XML */ public static final String XML = ".xml"; //$NON-NLS-1$ /** Extension of JUB. It is an zip file which contain a project and a test result json file*/ public static final String JUB = ".jub"; //$NON-NLS-1$ /** the logger */ private static Logger log = LoggerFactory.getLogger(ExportProjectHandler.class); /** * */ @SuppressWarnings("synthetic-access") public void showExportDialog() { final FileDialog fileDialog = new FileDialog(getActiveShell(), SWT.SAVE | SWT.APPLICATION_MODAL); fileDialog.setText(Messages.ActionBuilderSaveAs); String[] filters = new String[]{StringConstants.STAR + JUB}; fileDialog.setFilterExtensions(filters); fileDialog.setFilterPath(Utils.getLastDirPath()); StringBuilder sb = new StringBuilder( GeneralStorage.getInstance().getProject().getDisplayName()); fileDialog.setFileName(sb.toString()); String fileNameTemp = fileDialog.open(); if (fileNameTemp == null) { // Cancel pressed return; } String extension = filters[fileDialog.getFilterIndex()] .replace(StringConstants.STAR, StringConstants.EMPTY); fileNameTemp = fileNameTemp.endsWith(extension) ? fileNameTemp : fileNameTemp + extension; File file = new File(fileNameTemp); if (file.exists()) { MessageBox mb = new MessageBox(fileDialog.getParent(), SWT.ICON_WARNING | SWT.YES | SWT.NO); mb.setText(Messages.ExportFileActionConfirmOverwriteTitle); mb.setMessage(NLS.bind(Messages.ExportFileActionConfirmOverwrite, fileNameTemp)); if (mb.open() == SWT.NO) { return; } } Plugin.startLongRunning(Messages.ExportFileActionWaitWhileExporting); final String fileName = fileNameTemp; Utils.storeLastDirPath(fileDialog.getFilterPath()); IProgressConsole console = Plugin.getDefault(); IRunnableWithProgress op = new ExportFileOperation(fileName, console); try { PlatformUI.getWorkbench().getProgressService().busyCursorWhile(op); } catch (InvocationTargetException ite) { // Exception occurred during operation log.error(ite.getLocalizedMessage(), ite.getCause()); } catch (InterruptedException ie) { // Operation canceled. // Do nothing. } } /** * {@inheritDoc} */ public Object executeImpl(ExecutionEvent event) { if (Plugin.getDefault().showSaveEditorDialog(getActiveShell())) { ExportDialog.showExportDialog(getActiveShell()); } Plugin.stopLongRunning(); return null; } }