refactored wizard dialog and pages to allow for easy in place editing and cloning...
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / datasource / wizard / CdmDataSourcePostgreSQLServerWizardPage.java
index 16f1387fbb7ebf554cf7893329121be1651181fd..72c98ac58a147288a9d3a4a8f2f0ed5ab1b62bbd 100644 (file)
@@ -28,10 +28,10 @@ public class CdmDataSourcePostgreSQLServerWizardPage extends
        private int port;
        
        protected CdmDataSourcePostgreSQLServerWizardPage(ICdmDataSource dataSource) {
-               super("PostgreSQL Server");
+               super("PostgreSQL Server", dataSource);
                setTitle("PostgreSQL Server");
                setDescription("Enter credentials for PostgreSQL Server database");
-               this.setDataSource(dataSource);
+
        }
 
        /* (non-Javadoc)
@@ -54,7 +54,7 @@ public class CdmDataSourcePostgreSQLServerWizardPage extends
                // Create host input
                text_server = new Text(locationGroup, SWT.BORDER);
                text_server.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-               text_server.addModifyListener(this);
+               
 
                // Create port label
                Label portLabel = new Label(locationGroup, SWT.NONE);
@@ -64,7 +64,7 @@ public class CdmDataSourcePostgreSQLServerWizardPage extends
                text_port = new Text(locationGroup, SWT.BORDER);
                text_port.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
                
-               text_port.addModifyListener(this);
+               
        }
 
        /* (non-Javadoc)
@@ -88,21 +88,54 @@ public class CdmDataSourcePostgreSQLServerWizardPage extends
         */
        @Override
        public void updateDataSource() {
-               setDataSource(CdmDataSource.NewPostgreSQLInstance(server,
-                               database,
-                               port,
-                               username,
-                               password, 
-                               nomenclaturalCode));
+
+               
+               ICdmDataSource dataSource = getDataSource();
+
+               if(dataSource == null) {
+                       setDataSource(CdmDataSource.NewPostgreSQLInstance(server,
+                                       database,
+                                       port,
+                                       username,
+                                       password, 
+                                       nomenclaturalCode));
+               } else {
+                       dataSource.setName(name);
+                       dataSource.setServer(server);
+                       dataSource.setDatabase(database);
+                       dataSource.setPort(port);
+                       dataSource.setUsername(username);
+                       dataSource.setPassword(password);
+                       dataSource.setNomenclaturalCode(nomenclaturalCode);
+               }
        }
        
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.datasource.wizard.CdmDataSourceCredentialsWizardPage#init()
+        */
+       /** {@inheritDoc} */
        @Override
        public void init() {
+               super.init();
                if(getDataSource() != null){
-                       modifyTextWithoutTriggeringListeners(text_server, this, getDataSource().getServer());
-                       modifyTextWithoutTriggeringListeners(text_port, this, getDataSource().getPort()+"");                    
-                       super.init();
+                       removeListeners();
+                       text_server.setText(getDataSource().getServer());
+                       text_port.setText(String.valueOf(getDataSource().getPort()));   
+                       // add listeners after setting text to avoid the modify event being called
+                       // for the initial value
+                       addListeners();                 
                }
+
+       }
+       
+       private void addListeners() {
+               text_server.addModifyListener(this);
+               text_port.addModifyListener(this);
+       }
+       
+       private void removeListeners() {
+               text_server.removeModifyListener(this);
+               text_port.removeModifyListener(this);
        }
 
 }