package net.sourceforge.phpdt.sql.actions; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.StringTokenizer; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.ui.IViewActionDelegate; import org.eclipse.ui.IViewPart; import net.sourceforge.phpdt.sql.Messages; import net.sourceforge.phpdt.sql.view.LogProxy; import net.sourceforge.phpdt.sql.view.SQLLogView; import net.sourceforge.phpdt.sql.view.SQLQueryView; public class ExportQueryAction extends Action implements IViewActionDelegate { SQLQueryView view; FileDialog dialog; /** * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) */ public void init(IViewPart view) { this.view = (SQLQueryView) view; dialog = new FileDialog(view.getSite().getShell(), SWT.SAVE); dialog.setFilterExtensions(new String[]{"*.sql", "*.ddl", "*.*"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ dialog.setFilterNames(new String[]{Messages.getString("filedialog.sqlFiles"), //$NON-NLS-1$ Messages.getString("filedialog.ddlFiles"), Messages.getString("filedialog.allfiles")}); //$NON-NLS-1$ //$NON-NLS-2$ } /** * @see org.eclipse.ui.IActionDelegate#run(IAction) */ public void run(IAction action) { run(); } public void run() { String filename = dialog.open(); if (filename != null) { try { /*Check for the presence of a "." - either indicates an * extension has been provided or that a filename with a '.' * has been specified - if the latter, it is assumed the user * knows what they're doing - could be dangerous! :-) */ if (filename.indexOf(".") >0) filename += ".sql"; File exportFile = new File(filename); FileWriter fileWriter = new FileWriter(exportFile); PrintWriter writer = new PrintWriter(fileWriter); String output = view.getQuery(); StringTokenizer tokenizer = new StringTokenizer(output, "\n"); //$NON-NLS-1$ while (tokenizer.hasMoreElements()) { String line = (String) tokenizer.nextElement(); writer.println(line); } writer.close(); } catch (IOException e) { LogProxy.getInstance().addText(SQLLogView.ERROR, e.toString()); e.printStackTrace(); } } } /** * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) */ public void selectionChanged(IAction action, ISelection selection) { } }