initial quantum version
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / view / ViewHelper.java
diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/ViewHelper.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/ViewHelper.java
new file mode 100644 (file)
index 0000000..e460e44
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * 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;             
+       }       
+}