/******************************************************************************* * Copyright (c) 2013 Red Hat, Inc. * 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: * Red Hat - initial API and implementation *******************************************************************************/ package org.eclipse.linuxtools.internal.systemtap.ui.ide.handlers; import java.io.File; import java.text.MessageFormat; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.linuxtools.systemtap.graphing.ui.views.GraphSelectorEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.handlers.HandlerUtil; /** * This handler exports all data in the currently-active {@link GraphSelectorEditor} * into an external file, which can be imported back in later with {@link ImportDataSetHandler}. */ public class ExportDataSetHandler extends AbstractHandler { private GraphSelectorEditor getActiveGraphEditor(ExecutionEvent event) { IEditorPart editor = HandlerUtil.getActiveEditor(event); return editor instanceof GraphSelectorEditor ? (GraphSelectorEditor) editor : null; } @Override public Object execute(ExecutionEvent event) { GraphSelectorEditor editor = getActiveGraphEditor(event); if (editor == null) { return null; } FileDialog dialog = new FileDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), SWT.SAVE); dialog.setOverwrite(true); dialog.setFilterExtensions(new String[]{Messages.DataSetFileExtension}); dialog.setText(MessageFormat.format(Messages.ExportDataSetAction_DialogTitle, editor.getActiveTitle())); dialog.setFileName(editor.getActiveTitle().replaceAll(" ", "")); //$NON-NLS-1$ //$NON-NLS-2$ String path = dialog.open(); if (path != null) { editor.getActiveDisplaySet().getDataSet().writeToFile(new File(path)); } return null; } }