package oraloganalyzer.actions; import java.io.File; import java.io.IOException; import java.text.MessageFormat; import oraloganalyzer.IComponentIdentities; import oraloganalyzer.OlaPlugin; import oraloganalyzer.model.CsvExporter; import oraloganalyzer.model.ParsingResult; import oraloganalyzer.views.ErrorListView; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction; public class ExportErrorListAction extends Action implements IWorkbenchWindowActionDelegate, ActionFactory.IWorkbenchAction { private IWorkbenchWindow window; public ExportErrorListAction() { setEnabled(true); } /* * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose() */ public void dispose() { window = null; } /* * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(org.eclipse.ui.IWorkbenchWindow) */ public void init(IWorkbenchWindow window) { this.window = window; } /* * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) */ public void run(IAction action) { run(); } /* * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, * org.eclipse.jface.viewers.ISelection) */ public void selectionChanged(IAction action, ISelection selection) { } private File queryFile() { FileDialog dialog = new FileDialog(window.getShell(), SWT.SAVE); dialog.setText("Speicherort f�r Exportdatei"); dialog.setFilterExtensions(new String[] { "*.csv" }); String path = dialog.open(); if (path != null && path.length() > 0) { if (! path.endsWith(".csv")) { path += ".csv"; } return new File(path); } return null; } /* * @see org.eclipse.jface.action.Action#run() */ public void run() { File file = queryFile(); if (file != null) { IWorkbenchPage page = this.window.getActivePage(); ErrorListView view = (ErrorListView) page.findView(IComponentIdentities.ERRORLIST_VIEW); ParsingResult data = view.getData(); CsvExporter exp = new CsvExporter(data, file); try { exp.export(); MessageDialog.openInformation(this.window.getShell(), "Export erfolgreich", "Daten in " + file.getPath() + " exportiert."); } catch (IOException e) { MessageDialog.openWarning(this.window.getShell(), "Export fehlgeschlagen", e.getMessage()); } } else { String msg = MessageFormat.format("File is null: {0}", new String[] { file.getName() }); MessageDialog.openWarning(this.window.getShell(), "Problem", msg); } } public static IWorkbenchAction create(IWorkbenchWindow window) { if (window == null) { throw new IllegalArgumentException(); } ExportErrorListAction action = new ExportErrorListAction(); action.init(window); action.setId(IComponentIdentities.EXPORT_ERRORLIST_ACTION); action.setText("Export"); action.setImageDescriptor(OlaPlugin.getImageDescriptor("icons/export.gif")); return action; } }