Quantum version 2.4.2
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / wizards / sql / SQLStatementWizard.java
diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/sql/SQLStatementWizard.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/sql/SQLStatementWizard.java
new file mode 100644 (file)
index 0000000..25adccf
--- /dev/null
@@ -0,0 +1,64 @@
+package com.quantum.wizards.sql;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import com.quantum.sql.parser.SQL;
+import com.quantum.wizards.PropertyChangeWizardPage;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+
+/**
+ * @author BC Holmes
+ */
+public class SQLStatementWizard extends Wizard implements PropertyChangeListener {
+       
+       private List wizardPages = Collections.synchronizedList(new ArrayList());
+       private ShowSQLStatementWizardPage finalPage;
+       
+       public SQLStatementWizard(WizardPage[] pages, SQL sql) {
+               setWindowTitle("SQL Statement: " + sql.getCommand());
+               
+               for (int i = 0, length = pages == null ? 0 : pages.length; i < length; i++) {
+                       this.wizardPages.add(pages[i]);
+               }
+               this.finalPage = new ShowSQLStatementWizardPage("finalPage");
+               this.finalPage.setSQLStatement(sql == null ? "" : sql.toString());
+       }
+       
+       public void addPages() {
+               for (Iterator i = this.wizardPages.iterator(); i.hasNext();) {
+                       WizardPage wizardPage = (WizardPage) i.next();
+                       addPage(wizardPage);
+                       if (wizardPage instanceof PropertyChangeWizardPage) {
+                               ((PropertyChangeWizardPage) wizardPage).addPropertyChangeListener(this);
+                       }
+               }
+               addPage(this.finalPage);
+       }
+       
+       public void dispose() {
+               for (Iterator i = this.wizardPages.iterator(); i.hasNext();) {
+                       WizardPage wizardPage = (WizardPage) i.next();
+                       if (wizardPage instanceof PropertyChangeWizardPage) {
+                               ((PropertyChangeWizardPage) wizardPage).removePropertyChangeListener(this);
+                       }
+               }
+               super.dispose();
+       }
+       
+       public boolean performFinish() {
+               return true;
+       }
+
+       public void propertyChange(PropertyChangeEvent event) {
+               if ("sqlStatement".equals(event.getPropertyName())) {
+                       this.finalPage.setSQLStatement((String) event.getNewValue());
+               }
+       }
+}