Author: thomasobrien95
Date: Tue Feb 10 15:41:03 2009
New Revision: 2941

Added:
   trunk/src/ca/sqlpower/architect/swingui/SwingUIUserPrompterFactory.java
Removed:
   trunk/src/ca/sqlpower/architect/AlwaysOKUserPrompter.java
   trunk/src/ca/sqlpower/architect/AlwaysOKUserPrompterFactory.java
   trunk/src/ca/sqlpower/architect/UserPrompter.java
   trunk/src/ca/sqlpower/architect/UserPrompterFactory.java
   trunk/src/ca/sqlpower/architect/swingui/ModalDialogUserPrompter.java
Modified:
   trunk/regress/ca/sqlpower/architect/ArchitectValueMaker.java
   trunk/regress/ca/sqlpower/architect/TestingArchitectSession.java
   trunk/regress/ca/sqlpower/architect/etl/kettle/CreateKettleJobTest.java
trunk/regress/ca/sqlpower/architect/swingui/TestingArchitectSwingSession.java
   trunk/src/ca/sqlpower/architect/ArchitectSession.java
   trunk/src/ca/sqlpower/architect/ArchitectSessionImpl.java
   trunk/src/ca/sqlpower/architect/SourceObjectIntegrityWatcher.java
   trunk/src/ca/sqlpower/architect/etl/kettle/KettleJob.java
   trunk/src/ca/sqlpower/architect/profile/ProfileManagerImpl.java
   trunk/src/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java
   trunk/src/ca/sqlpower/architect/swingui/messages.properties
   trunk/src/ca/sqlpower/architect/swingui/messages_ko.properties
   trunk/src/ca/sqlpower/architect/swingui/messages_ru.properties

Log:
Moved the UserPrompter and UserPrompterFactory into the library for
use with Wabit. The prompter has also been extended to allow defaults
to be specified for each prompter created.

Modified: trunk/regress/ca/sqlpower/architect/ArchitectValueMaker.java
==============================================================================
--- trunk/regress/ca/sqlpower/architect/ArchitectValueMaker.java        
(original)
+++ trunk/regress/ca/sqlpower/architect/ArchitectValueMaker.java Tue Feb 10 15:41:03 2009
@@ -21,9 +21,9 @@

 import ca.sqlpower.architect.etl.kettle.KettleRepositoryDirectoryChooser;
 import ca.sqlpower.architect.etl.kettle.RootRepositoryDirectoryChooser;
-import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLColumn;
 import ca.sqlpower.sqlobject.SQLIndex;
+import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.testutil.GenericNewValueMaker;

 public class ArchitectValueMaker extends GenericNewValueMaker {
@@ -37,8 +37,6 @@
         } else if (valueType == SQLIndex.class) {
             newVal = new SQLIndex();
             ((SQLIndex) newVal).setName("a new index");
-        } else if (valueType == UserPrompter.class) {
-            newVal = new AlwaysOKUserPrompter();
         } else if (valueType == KettleRepositoryDirectoryChooser.class) {
             newVal = new RootRepositoryDirectoryChooser();
         } else if (valueType.isAssignableFrom(Throwable.class)) {

Modified: trunk/regress/ca/sqlpower/architect/TestingArchitectSession.java
==============================================================================
--- trunk/regress/ca/sqlpower/architect/TestingArchitectSession.java (original) +++ trunk/regress/ca/sqlpower/architect/TestingArchitectSession.java Tue Feb 10 15:41:03 2009
@@ -37,9 +37,12 @@
 import ca.sqlpower.architect.ddl.DDLGenerator;
 import ca.sqlpower.architect.olap.OLAPRootObject;
 import ca.sqlpower.architect.profile.ProfileManager;
-import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLDatabase;
+import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLObjectRoot;
+import ca.sqlpower.util.DefaultUserPrompterFactory;
+import ca.sqlpower.util.UserPrompter;
+import ca.sqlpower.util.UserPrompter.UserPromptResponse;

 /**
  * Basic implementation of ArchitectSession, for testing
@@ -47,6 +50,8 @@
 public class TestingArchitectSession implements ArchitectSession {

     private final ArchitectSessionContext context;
+
+ private final DefaultUserPrompterFactory defaultUPF = new DefaultUserPrompterFactory();

     /**
      * Creates a new testing session within the given context.
@@ -55,13 +60,6 @@
         this.context = context;
     }

-    /**
-     * Returns an "always ok" prompter
-     */
- public UserPrompter createUserPrompter(String question, String okText, String notOkText, String cancelText) {
-        return new AlwaysOKUserPrompter();
-    }
-
     public ArchitectSessionContext getContext() {
         return context;
     }
@@ -118,5 +116,15 @@

     public OLAPRootObject getOLAPRootObject() {
         return null;
+    }
+
+    /**
+     * Returns a default prompter
+     */
+ public UserPrompter createUserPrompter(String question, String okText, String newText, String notOkText, + String cancelText, UserPromptType responseType, UserPromptResponse defaultResponseType,
+            Object defaultResponse) {
+ return defaultUPF.createUserPrompter(question, okText, newText, notOkText, cancelText, responseType,
+                defaultResponseType, defaultResponse);
     }
 }

Modified: trunk/regress/ca/sqlpower/architect/etl/kettle/CreateKettleJobTest.java
==============================================================================
--- trunk/regress/ca/sqlpower/architect/etl/kettle/CreateKettleJobTest.java (original) +++ trunk/regress/ca/sqlpower/architect/etl/kettle/CreateKettleJobTest.java Tue Feb 10 15:41:03 2009
@@ -50,10 +50,9 @@
 import org.pentaho.di.trans.step.StepMeta;

 import ca.sqlpower.architect.ArchitectSession;
+import ca.sqlpower.architect.ArchitectSessionContext;
 import ca.sqlpower.architect.TestingArchitectSession;
 import ca.sqlpower.architect.TestingArchitectSessionContext;
-import ca.sqlpower.architect.UserPrompter;
-import ca.sqlpower.architect.UserPrompter.UserPromptResponse;
 import ca.sqlpower.sql.PlDotIni;
 import ca.sqlpower.sql.SPDataSource;
 import ca.sqlpower.sql.SPDataSourceType;
@@ -61,8 +60,45 @@
 import ca.sqlpower.sqlobject.SQLColumn;
 import ca.sqlpower.sqlobject.SQLDatabase;
 import ca.sqlpower.sqlobject.SQLTable;
+import ca.sqlpower.util.UserPrompter;
+import ca.sqlpower.util.UserPrompter.UserPromptResponse;

 public class CreateKettleJobTest extends TestCase {
+
+    /**
+ * This implementation of the {...@link TestingArchitectSessionContext} is used to allow the file + * validator return type to be specified by the test. This is for testing how the saving of + * Kettle jobs reacts if the a file is canceled or selected to not be saved.
+     */
+ private class ArchitectSessionContextWithFileValidator extends TestingArchitectSession {
+
+        private final UserPromptResponse fvr;
+
+ public ArchitectSessionContextWithFileValidator(ArchitectSessionContext context, UserPromptResponse fvr) {
+            super(context);
+            this.fvr = fvr;
+        }
+
+        @Override
+ public UserPrompter createUserPrompter(String question, String okText, String newText, String notOkText, + String cancelText, UserPromptType responseType, UserPromptResponse defaultResponseType,
+                Object defaultResponse) {
+            return new UserPrompter() {
+
+                public Object getUserSelectedResponse() {
+                    if (fvr == UserPromptResponse.OK) {
+                        return true;
+                    } else {
+                        return false;
+                    }
+                }
+
+ public UserPromptResponse promptUser(Object... formatArgs) {
+                    return fvr;
+                }
+            };
+        }
+    }

     private SQLDatabase target;
     private SQLTable targetTableNoSource;
@@ -324,16 +360,8 @@
         List<TransMeta> transList = new ArrayList<TransMeta>();
         transList.add(transMeta);

- KettleJob kettleJob = new KettleJob(new TestingArchitectSession(new TestingArchitectSessionContext()) {
-            @Override
- public UserPrompter createUserPrompter(String question, String okText, String notOkText, String cancelText) {
-                return new UserPrompter() {
- public UserPromptResponse promptUser(Object... formatArgs) {
-                        return fvr;
-                    }
-                };
-            }
-        }, new KettleRepositoryDirectoryChooser(){
+ KettleJob kettleJob = new KettleJob(new ArchitectSessionContextWithFileValidator(new TestingArchitectSessionContext(), fvr),
+                new KettleRepositoryDirectoryChooser(){
             public RepositoryDirectory selectDirectory(Repository repo) {
                 return new RepositoryDirectory();
             }
@@ -387,16 +415,8 @@
         newJob.setName("jobName");
         newJob.addNote(new NotePadMeta("new job note", 0, 150, 125, 125));

- KettleJob kettleJob = new KettleJob(new TestingArchitectSession(new TestingArchitectSessionContext()) {
-            @Override
- public UserPrompter createUserPrompter(String question, String okText, String notOkText, String cancelText) {
-                return new UserPrompter() {
- public UserPromptResponse promptUser(Object... formatArgs) {
-                        return fvr;
-                    }
-                };
-            }
-        }, new RootRepositoryDirectoryChooser());
+ KettleJob kettleJob = new KettleJob(new ArchitectSessionContextWithFileValidator(new TestingArchitectSessionContext(), fvr),
+                new RootRepositoryDirectoryChooser());
         kettleJob.setFilePath(jobOutputFile.getPath());
         kettleJob.setSavingToFile(true);
         kettleJob.setJobName("jobName");

Modified: trunk/regress/ca/sqlpower/architect/swingui/TestingArchitectSwingSession.java
==============================================================================
--- trunk/regress/ca/sqlpower/architect/swingui/TestingArchitectSwingSession.java (original) +++ trunk/regress/ca/sqlpower/architect/swingui/TestingArchitectSwingSession.java Tue Feb 10 15:41:03 2009
@@ -27,12 +27,10 @@
 import javax.swing.JDialog;
 import javax.swing.JMenu;

-import ca.sqlpower.architect.AlwaysOKUserPrompter;
 import ca.sqlpower.architect.ArchitectSession;
 import ca.sqlpower.architect.ArchitectSessionImpl;
 import ca.sqlpower.architect.CoreProject;
 import ca.sqlpower.architect.CoreUserSettings;
-import ca.sqlpower.architect.UserPrompter;
 import ca.sqlpower.architect.ddl.DDLGenerator;
 import ca.sqlpower.architect.ddl.GenericDDLGenerator;
 import ca.sqlpower.architect.etl.kettle.KettleJob;
@@ -43,11 +41,14 @@
import ca.sqlpower.architect.swingui.ArchitectSwingSessionImpl.ColumnVisibility;
 import ca.sqlpower.architect.swingui.olap.OLAPEditSession;
 import ca.sqlpower.architect.undo.ArchitectUndoManager;
-import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLDatabase;
+import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLObjectRoot;
 import ca.sqlpower.swingui.SPSwingWorker;
 import ca.sqlpower.swingui.event.SessionLifecycleListener;
+import ca.sqlpower.util.DefaultUserPrompterFactory;
+import ca.sqlpower.util.UserPrompter;
+import ca.sqlpower.util.UserPrompter.UserPromptResponse;

 /**
  * Minimally functional session implementation that creates but does
@@ -263,10 +264,6 @@
         return rootObject;
     }

- public UserPrompter createUserPrompter(String question, String okText, String notOkText, String cancelText) {
-        return new AlwaysOKUserPrompter();
-    }
-
     public boolean isShowPkTag() {
         return showPkTag;
     }
@@ -337,6 +334,12 @@

     public PrintSettings getPrintSettings() {
         return printSettings;
+    }
+
+ public UserPrompter createUserPrompter(String question, String okText, String newText, String notOkText, + String cancelText, UserPromptType responseType, UserPromptResponse defaultResponseType,
+            Object defaultResponse) {
+ return new DefaultUserPrompterFactory().createUserPrompter(question, okText, newText, notOkText, cancelText, responseType, defaultResponseType, defaultResponse);
     }

 }

Modified: trunk/src/ca/sqlpower/architect/ArchitectSession.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/ArchitectSession.java       (original)
+++ trunk/src/ca/sqlpower/architect/ArchitectSession.java Tue Feb 10 15:41:03 2009
@@ -22,9 +22,10 @@

 import ca.sqlpower.architect.ddl.DDLGenerator;
 import ca.sqlpower.architect.profile.ProfileManager;
-import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLDatabase;
+import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLObjectRoot;
+import ca.sqlpower.util.UserPrompterFactory;

 public interface ArchitectSession extends UserPrompterFactory {

@@ -98,7 +99,4 @@
      */
     public void setDDLGenerator(DDLGenerator generator);

-    /* docs inherit from interface */
- public UserPrompter createUserPrompter(String question, String okText, String notOkText, String cancelText);
-
 }

Modified: trunk/src/ca/sqlpower/architect/ArchitectSessionImpl.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/ArchitectSessionImpl.java   (original)
+++ trunk/src/ca/sqlpower/architect/ArchitectSessionImpl.java Tue Feb 10 15:41:03 2009
@@ -29,6 +29,10 @@
 import ca.sqlpower.sqlobject.SQLDatabase;
 import ca.sqlpower.sqlobject.SQLObject;
 import ca.sqlpower.sqlobject.SQLObjectRoot;
+import ca.sqlpower.util.DefaultUserPrompterFactory;
+import ca.sqlpower.util.UserPrompter;
+import ca.sqlpower.util.UserPrompterFactory;
+import ca.sqlpower.util.UserPrompter.UserPromptResponse;

 /**
  * The ArchitectSession class represents a single user's session with
@@ -54,7 +58,7 @@
      * for the GUI will replace the default factory with one that actually
      * prompts the user.
      */
- private UserPrompterFactory userPrompterFactory = new AlwaysOKUserPrompterFactory(); + private UserPrompterFactory userPrompterFactory = new DefaultUserPrompterFactory();

     private DDLGenerator ddlGenerator;

@@ -147,8 +151,11 @@
         profileManager = manager;
     }

- public UserPrompter createUserPrompter(String question, String okText, String notOkText, String cancelText) { - return userPrompterFactory.createUserPrompter(question, okText, notOkText, cancelText); + public UserPrompter createUserPrompter(String question, String okText, String newText, String notOkText, + String cancelText, UserPromptType responseType, UserPromptResponse defaultResponseType,
+            Object defaultResponse) {
+ return userPrompterFactory.createUserPrompter(question, okText, newText, notOkText, cancelText,
+                responseType, defaultResponseType, defaultResponse);
     }

     /**

Modified: trunk/src/ca/sqlpower/architect/SourceObjectIntegrityWatcher.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/SourceObjectIntegrityWatcher.java (original) +++ trunk/src/ca/sqlpower/architect/SourceObjectIntegrityWatcher.java Tue Feb 10 15:41:03 2009
@@ -2,7 +2,6 @@

 import java.util.List;

-import ca.sqlpower.architect.UserPrompter.UserPromptResponse;
 import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLObjectRuntimeException;
 import ca.sqlpower.sqlobject.SQLColumn;
@@ -10,6 +9,9 @@
 import ca.sqlpower.sqlobject.SQLObject;
 import ca.sqlpower.sqlobject.SQLObjectPreEvent;
 import ca.sqlpower.sqlobject.SQLObjectPreEventListener;
+import ca.sqlpower.util.UserPrompter;
+import ca.sqlpower.util.UserPrompter.UserPromptResponse;
+import ca.sqlpower.util.UserPrompterFactory.UserPromptType;

 /**
  * Watches the session's root object, and reacts when SQLDatabase items
@@ -29,7 +31,8 @@
     public void dbChildrenPreRemove(SQLObjectPreEvent e) {
         UserPrompter up = session.createUserPrompter(
Messages.getString("SourceObjectIntegrityWatcher.removingETLLineageWarning"), //$NON-NLS-1$ - Messages.getString("SourceObjectIntegrityWatcher.forgetLineageOption"), Messages.getString("SourceObjectIntegrityWatcher.keepSourceConnectionOption"), Messages.getString("cancel")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + Messages.getString("SourceObjectIntegrityWatcher.forgetLineageOption"), null, Messages.getString("SourceObjectIntegrityWatcher.keepSourceConnectionOption"), Messages.getString("cancel"), + UserPromptType.BOOLEAN, UserPromptResponse.OK, Boolean.TRUE); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
         for (SQLObject so : e.getChildren()) {
             SQLDatabase db = (SQLDatabase) so;
             try {

Modified: trunk/src/ca/sqlpower/architect/etl/kettle/KettleJob.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/etl/kettle/KettleJob.java   (original)
+++ trunk/src/ca/sqlpower/architect/etl/kettle/KettleJob.java Tue Feb 10 15:41:03 2009
@@ -54,11 +54,12 @@

 import ca.sqlpower.architect.ArchitectSession;
 import ca.sqlpower.architect.DepthFirstSearch;
-import ca.sqlpower.architect.UserPrompter;
-import ca.sqlpower.architect.UserPrompter.UserPromptResponse;
 import ca.sqlpower.architect.ddl.DDLUtils;
 import ca.sqlpower.util.Monitorable;
 import ca.sqlpower.util.MonitorableImpl;
+import ca.sqlpower.util.UserPrompter;
+import ca.sqlpower.util.UserPrompter.UserPromptResponse;
+import ca.sqlpower.util.UserPrompterFactory.UserPromptType;
 import ca.sqlpower.sql.SPDataSource;
 import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLColumn;
@@ -418,7 +419,7 @@

         UserPrompter up = session.createUserPrompter(
                 "The file {0} already exists. Overwrite?",
-                "Overwrite", "Don't Overwrite", "Cancel");
+ "Overwrite", null, "Don't Overwrite", "Cancel", UserPromptType.BOOLEAN, UserPromptResponse.NOT_OK, false);
         for (File f : outputs.keySet()) {
             try {
                 logger.debug("The file to output is " + f.getPath());
@@ -500,7 +501,7 @@
             try {
                 UserPrompter up = session.createUserPrompter(
"{0} {1} already exists in the repository. Replace?",
-                        "Replace", "Don't Replace", "Cancel");
+ "Replace", null, "Don't Replace", "Cancel", UserPromptType.BOOLEAN, UserPromptResponse.NOT_OK, false);
                 for (TransMeta tm: transformations) {
                     if (monitor.isCancelled()) {
                         cancel();

Modified: trunk/src/ca/sqlpower/architect/profile/ProfileManagerImpl.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/profile/ProfileManagerImpl.java (original) +++ trunk/src/ca/sqlpower/architect/profile/ProfileManagerImpl.java Tue Feb 10 15:41:03 2009
@@ -32,8 +32,6 @@
 import org.apache.log4j.Logger;

 import ca.sqlpower.architect.ArchitectSession;
-import ca.sqlpower.architect.UserPrompter;
-import ca.sqlpower.architect.UserPrompter.UserPromptResponse;
 import ca.sqlpower.architect.profile.event.ProfileChangeEvent;
 import ca.sqlpower.architect.profile.event.ProfileChangeListener;
 import ca.sqlpower.sqlobject.SQLObjectException;
@@ -42,6 +40,9 @@
 import ca.sqlpower.sqlobject.SQLObjectPreEvent;
 import ca.sqlpower.sqlobject.SQLObjectPreEventListener;
 import ca.sqlpower.sqlobject.SQLTable;
+import ca.sqlpower.util.UserPrompter;
+import ca.sqlpower.util.UserPrompter.UserPromptResponse;
+import ca.sqlpower.util.UserPrompterFactory.UserPromptType;

 /**
  * The default ProfileManager implementation. Creates profiles of tables,
@@ -67,7 +68,7 @@
                     "\n" +
"If you proceed, the profiling information from the database" +
                     " will be removed.",
-                    "Remove Profiles", "Keep Profiles", "Cancel");
+ "Remove Profiles", null, "Keep Profiles", "Cancel", UserPromptType.BOOLEAN, UserPromptResponse.OK, Boolean.TRUE);
             for (SQLObject so : e.getChildren()) {
                 SQLDatabase db = (SQLDatabase) so;
List<TableProfileResult> refs = new ArrayList<TableProfileResult>();

Modified: trunk/src/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java (original) +++ trunk/src/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java Tue Feb 10 15:41:03 2009
@@ -46,7 +46,6 @@
 import ca.sqlpower.architect.ArchitectSessionImpl;
 import ca.sqlpower.architect.CoreProject;
 import ca.sqlpower.architect.CoreUserSettings;
-import ca.sqlpower.architect.UserPrompter;
 import ca.sqlpower.architect.UserSettings;
 import ca.sqlpower.architect.ddl.DDLGenerator;
 import ca.sqlpower.architect.etl.kettle.KettleJob;
@@ -63,18 +62,21 @@
 import ca.sqlpower.architect.swingui.olap.OLAPSchemaManager;
 import ca.sqlpower.architect.undo.ArchitectUndoManager;
 import ca.sqlpower.sql.SPDataSource;
-import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLDatabase;
 import ca.sqlpower.sqlobject.SQLObject;
 import ca.sqlpower.sqlobject.SQLObjectEvent;
+import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLObjectHierarchyListener;
 import ca.sqlpower.sqlobject.SQLObjectListener;
 import ca.sqlpower.sqlobject.SQLObjectRoot;
 import ca.sqlpower.sqlobject.SQLObjectUtils;
+import ca.sqlpower.swingui.ModalDialogUserPrompter;
 import ca.sqlpower.swingui.SPSUtils;
 import ca.sqlpower.swingui.SPSwingWorker;
 import ca.sqlpower.swingui.event.SessionLifecycleEvent;
 import ca.sqlpower.swingui.event.SessionLifecycleListener;
+import ca.sqlpower.util.UserPrompter;
+import ca.sqlpower.util.UserPrompter.UserPromptResponse;

 public class ArchitectSwingSessionImpl implements ArchitectSwingSession {

@@ -166,6 +168,12 @@
     private final PrintSettings printSettings;

     /**
+ * This user prompter factory will create all the necessary GUI user prompts
+     * for Architect.
+     */
+    private final SwingUIUserPrompterFactory swinguiUserPrompterFactory;
+
+    /**
* This listener will listen to the SQLObject hierarchy and display exception windows when
      * an object's children are not accessible.
      */
@@ -190,6 +198,7 @@
      */
ArchitectSwingSessionImpl(final ArchitectSwingSessionContext context, String name)
     throws SQLObjectException {
+ swinguiUserPrompterFactory = new SwingUIUserPrompterFactory(null, context.getPlDotIni());
         this.isNew = true;
         this.context = context;
         this.delegateSession = new ArchitectSessionImpl(context, name);
@@ -283,6 +292,8 @@
             frame = new ArchitectFrame(this, null);
         }

+        swinguiUserPrompterFactory.setParentFrame(frame);
+
         // MUST be called after constructed to set up the actions
         frame.init();
         frame.setVisible(true);
@@ -838,10 +849,14 @@
      *
      * @see ModalDialogUserPrompter
      */
- public UserPrompter createUserPrompter(String question, String okText, String notOkText, String cancelText) { - return new ModalDialogUserPrompter(frame, question, okText, notOkText, cancelText); + public UserPrompter createUserPrompter(String question, String okText, String newText, String notOkText, + String cancelText, UserPromptType responseType, UserPromptResponse defaultResponseType,
+            Object defaultResponse) {
+ return swinguiUserPrompterFactory.createUserPrompter(question, okText, newText, notOkText, cancelText,
+                responseType, defaultResponseType, defaultResponse);
+
     }
-
+
     public boolean isShowPkTag() {
         return showPkTag;
     }
@@ -928,6 +943,5 @@
     public PrintSettings getPrintSettings() {
         return printSettings;
     }
-

 }

Added: trunk/src/ca/sqlpower/architect/swingui/SwingUIUserPrompterFactory.java
==============================================================================
--- (empty file)
+++ trunk/src/ca/sqlpower/architect/swingui/SwingUIUserPrompterFactory.java Tue Feb 10 15:41:03 2009
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2009, SQL Power Group Inc.
+ *
+ * This file is part of Power*Architect.
+ *
+ * Power*Architect is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Power*Architect is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package ca.sqlpower.architect.swingui;
+
+import javax.swing.JFrame;
+
+import ca.sqlpower.sql.DataSourceCollection;
+import ca.sqlpower.sql.SPDataSource;
+import ca.sqlpower.swingui.DataSourceUserPrompter;
+import ca.sqlpower.swingui.ModalDialogUserPrompter;
+import ca.sqlpower.util.UserPrompter;
+import ca.sqlpower.util.UserPrompterFactory;
+import ca.sqlpower.util.UserPrompter.UserPromptResponse;
+
+public class SwingUIUserPrompterFactory implements UserPrompterFactory {
+
+    private JFrame owner;
+    private final DataSourceCollection dsCollection;
+
+ public SwingUIUserPrompterFactory(JFrame owner, DataSourceCollection dsCollection) {
+        this.owner = owner;
+        this.dsCollection = dsCollection;
+    }
+
+ public UserPrompter createUserPrompter(String question, String okText, String newText, String notOkText, + String cancelText, UserPromptType responseType, UserPromptResponse defaultResponseType,
+            Object defaultResponse) {
+        switch (responseType) {
+            case BOOLEAN :
+ return new ModalDialogUserPrompter(defaultResponseType, owner, question, okText, notOkText, cancelText);
+            case DATA_SOURCE:
+ return new DataSourceUserPrompter(defaultResponseType, (SPDataSource) defaultResponse, owner, question, okText, newText, notOkText, cancelText,
+                        dsCollection);
+            default :
+ throw new UnsupportedOperationException("User prompt type " + responseType + " is unknown.");
+        }
+    }
+
+    public void setParentFrame(JFrame frame) {
+        owner = frame;
+    }
+
+}

Modified: trunk/src/ca/sqlpower/architect/swingui/messages.properties
==============================================================================
--- trunk/src/ca/sqlpower/architect/swingui/messages.properties (original)
+++ trunk/src/ca/sqlpower/architect/swingui/messages.properties Tue Feb 10 15:41:03 2009
@@ -199,9 +199,6 @@
 KettleJobPanel.schemaNameLabel=Schema Name:
 KettleJobPanel.targetDatabaseLabel=Target Database:
KettleJobPanel.transfomationsPathLabel=The transformations will be stored in:
-ModalDialogUserPrompter.applyToAllOption=Apply to all
-ModalDialogUserPrompter.promptDialogTitle=Overwrite
-ModalDialogUserPrompter.showPromptDialogFailed=Failed to show prompting dialog
 Navigator.name=Playpen Navigator
 ObjectPropertyModificationDDLComponent.UpdateProperty=Update Property
 ObjectPropertyModificationDDLComponent.Change=Change {0}:

Modified: trunk/src/ca/sqlpower/architect/swingui/messages_ko.properties
==============================================================================
--- trunk/src/ca/sqlpower/architect/swingui/messages_ko.properties (original) +++ trunk/src/ca/sqlpower/architect/swingui/messages_ko.properties Tue Feb 10 15:41:03 2009
@@ -206,9 +206,6 @@
 KettleJobPanel.schemaNameLabel=\uc2a4\ud0a4\ub9c8 \uc774\ub984:
KettleJobPanel.targetDatabaseLabel=\ub300\uc0c1 \ub370\uc774\ud130\ubca0\uc774\uc2a4: KettleJobPanel.transfomationsPathLabel=Transformation \uc800\uc7a5 \ub300\uc0c1:
-ModalDialogUserPrompter.applyToAllOption=\ubaa8\ub450 \uc801\uc6a9
-ModalDialogUserPrompter.promptDialogTitle=\uacb9\uccd0\uc4f0\uae30
-ModalDialogUserPrompter.showPromptDialogFailed=\ucc3d\uc744 \ud45c\uc2dc\ud558\ub294\ub370 \uc2e4\ud328\ud558\uc600\uc2b5\ub2c8\ub2e4
 Navigator.name=Playpen \ud0d0\uc0c9\uae30
 ObjectPropertyModificationDDLComponent.Change=\ubcc0\uacbd {0}:
ObjectPropertyModificationDDLComponent.UpdateProperty=\uc18d\uc131 \uac31\uc2e0

Modified: trunk/src/ca/sqlpower/architect/swingui/messages_ru.properties
==============================================================================
--- trunk/src/ca/sqlpower/architect/swingui/messages_ru.properties (original) +++ trunk/src/ca/sqlpower/architect/swingui/messages_ru.properties Tue Feb 10 15:41:03 2009
@@ -199,9 +199,6 @@
KettleJobPanel.schemaNameLabel=\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0421\u0445\u0435\u043c\u044b: KettleJobPanel.targetDatabaseLabel=\u0426\u0435\u043b\u0435\u0432\u0430\u044f \u0411\u0430\u0437\u0430 \u0414\u0430\u043d\u043d\u044b\u0445: KettleJobPanel.transfomationsPathLabel=\u0422\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 \u0432: -ModalDialogUserPrompter.applyToAllOption=\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043e \u0432\u0441\u0435\u043c\u0443
-ModalDialogUserPrompter.promptDialogTitle=\u041f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c
-ModalDialogUserPrompter.showPromptDialogFailed=\u041d\u0435 \u0441\u043c\u043e\u0433 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0434\u0438\u0430\u043b\u043e\u0433 PlayPen.addTableFailed=\u041d\u0435 \u0441\u043c\u043e\u0433 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0422\u0430\u0431\u043b\u0438\u0446\u0443. PlayPen.bringToFrontActionName=\u0412\u044b\u0432\u0435\u0441\u0442\u0438 \u0432\u043f\u0435\u0440\u0435\u0434
 PlayPen.cancelOption=\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c

Reply via email to