--- /dev/null
+/*
+ * Created on 22-jul-2003
+ *
+ */
+package com.quantum.view;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import com.quantum.Messages;
+import com.quantum.QuantumPlugin;
+import com.quantum.sql.MultiSQLServer;
+import com.quantum.sql.SQLResults;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IViewPart;
+
+/**
+ * @author panic
+ *
+ */
+public class ViewHelper {
+
+ public static SQLResults tryGetResults(IViewPart view, Connection con, String query) {
+ return tryGetResults(view.getSite().getShell(), con, query);
+ }
+
+ public static SQLResults tryGetResults(Shell shell, Connection con, String query) {
+ SQLResults results = null;
+ MultiSQLServer server = MultiSQLServer.getInstance();
+ try {
+ results = server.execute(con, query);
+ } catch (SQLException e) {
+ LogProxy log = LogProxy.getInstance();
+ log.addText(LogProxy.ERROR, e.getLocalizedMessage(), e); //$NON-NLS-1$ //$NON-NLS-2$
+ results = new SQLResults();
+ results.setIsError(true);
+ MessageDialog.openConfirm(shell, "Database returned error", e.getLocalizedMessage()); //$NON-NLS-1$
+ }
+ return results;
+ }
+
+ public static FileOutputStream askSaveFile(String key, Shell shell) {
+ return askSaveFile(key, shell, null, null);
+ }
+ /**
+ * Asks the user for a file to be saved. Uses a key to get the preferences and save the path.
+ * The preferences should be defined in the Messages file.
+ * @param key
+ * @param shell
+ * @param filterExt
+ * @param filterNames
+ * @return - An already opened FileOutputStream, or NULL if nothing selected, dialog canceled or some error.
+ */
+ public static FileOutputStream askSaveFile(String key, Shell shell, String[] filterExt, String[] filterNames) {
+
+ FileDialog dialog = new FileDialog(shell, SWT.SAVE);
+
+ if (filterExt == null) {
+ dialog.setFilterExtensions(new String[]{Messages.getString("filedialog."+key+".filter"),
+ Messages.getString("filedialog.allfiles.filter")}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ dialog.setFilterNames(new String[]{ Messages.getString("filedialog."+key+".name"),
+ Messages.getString("filedialog.allfiles.name")}); //$NON-NLS-1$ //$NON-NLS-2$
+ } else {
+ dialog.setFilterExtensions(filterExt);
+ dialog.setFilterNames(filterNames);
+ }
+
+ dialog.setFilterPath(QuantumPlugin.getDefault().getPreferenceStore().getString("quantum.dialogs."+ key + ".path"));
+ String filename = dialog.open();
+ if (filename == null) return null;
+ // We save the used path
+ QuantumPlugin.getDefault().getPreferenceStore().setValue("quantum.dialogs."+ key + ".path", filename);
+
+ FileOutputStream out = null;
+ File target = new File(filename);
+ if (target.exists() && Messages.getString("filedialog.options.ConfirmOverwrite").equals("y")) {
+ boolean confirmOverwrite =
+ MessageDialog.openConfirm(shell, Messages.getString("filedialog.message.ConfirmOverwriteTitle"), //$NON-NLS-1$
+ Messages.getString("filedialog.message.ConfirmOverwriteMessage") + target.getName() + //$NON-NLS-1$
+ Messages.getString("filedialog.message.ConfirmOverwriteQuestion")); //$NON-NLS-1$
+ if (!confirmOverwrite) return null;
+ }
+
+ try {
+ out = new FileOutputStream(target);
+ } catch (FileNotFoundException e) {
+ MessageDialog.openConfirm(shell, Messages.getString("filedialog.message.CannotOpenFileTitle"), //$NON-NLS-1$
+ Messages.getString("filedialog.message.CannotOpenFileMessage") + filename+ //$NON-NLS-1$
+ Messages.getString("filedialog.message.CannotOpenFileExplain")); //$NON-NLS-1$
+
+ }
+ return out;
+ }
+}