Don't allow an FK index to be created in table creation mode - the design simply...
authordpage <dpage@a7884b65-44f6-0310-8a51-81a127f17b15>
Fri, 20 Feb 2009 11:09:56 +0000 (11:09 +0000)
committerdpage <dpage@a7884b65-44f6-0310-8a51-81a127f17b15>
Fri, 20 Feb 2009 11:09:56 +0000 (11:09 +0000)
git-svn-id: svn://svn.pgadmin.org/trunk/pgadmin3@7599 a7884b65-44f6-0310-8a51-81a127f17b15

pgadmin/dlg/dlgForeignKey.cpp
pgadmin/dlg/dlgTable.cpp

index e17c8a457cdff61160bfbd81bfd45bbb77aefdc6..c4cff56bfa25cb91b131ed84590b489b017d9584 100644 (file)
@@ -137,44 +137,46 @@ void dlgForeignKey::CheckChange()
         chkDeferred->SetValue(false);
     chkDeferred->Enable(canDef);
 
-    txtIndexName->Enable(chkAutoIndex->GetValue());
+    txtIndexName->Enable(table && chkAutoIndex->GetValue());
 
     wxString coveringIndex;
     if (table)
+    {
         coveringIndex = table->GetCoveringIndex(mainForm->GetBrowser(), cols);
 
-    if (coveringIndex.IsEmpty())
-    {
-        if (!chkAutoIndex->IsEnabled())
+        if (coveringIndex.IsEmpty())
         {
-            chkAutoIndex->Enable();
-            chkAutoIndex->SetValue(true);
-            txtIndexName->Enable();
-            txtIndexName->SetValue(savedIndexName);
-        }
+            if (!chkAutoIndex->IsEnabled())
+            {
+                chkAutoIndex->Enable();
+                chkAutoIndex->SetValue(true);
+                txtIndexName->Enable();
+                txtIndexName->SetValue(savedIndexName);
+            }
 
-        wxString idxName = txtIndexName->GetValue().Strip(wxString::both);
+            wxString idxName = txtIndexName->GetValue().Strip(wxString::both);
 
-        if (name != savedFKName || idxName == savedIndexName)
-        {
-            if (idxName.IsEmpty() || idxName == DefaultIndexName(savedFKName))
+            if (name != savedFKName || idxName == savedIndexName)
             {
-                idxName = DefaultIndexName(name);
-                txtIndexName->SetValue(idxName);
+                if (idxName.IsEmpty() || idxName == DefaultIndexName(savedFKName))
+                {
+                    idxName = DefaultIndexName(name);
+                    txtIndexName->SetValue(idxName);
+                }
             }
+            savedIndexName = idxName;
         }
-        savedIndexName = idxName;
-    }
-    else
-    {
-        if (chkAutoIndex->IsEnabled())
-            savedIndexName = txtIndexName->GetValue();
+        else
+        {
+            if (chkAutoIndex->IsEnabled())
+                savedIndexName = txtIndexName->GetValue();
 
-        txtIndexName->SetValue(coveringIndex);
-        chkAutoIndex->SetValue(false);
+            txtIndexName->SetValue(coveringIndex);
+            chkAutoIndex->SetValue(false);
 
-        txtIndexName->Disable();
-        chkAutoIndex->Disable();
+            txtIndexName->Disable();
+            chkAutoIndex->Disable();
+        }
     }
 
     savedFKName = name;
@@ -409,6 +411,9 @@ int dlgForeignKey::Go(bool modal)
         }
         if (!table)
         {
+            chkAutoIndex->Disable();
+            chkAutoIndex->SetValue(false);
+            txtIndexName->Disable();
             cbClusterSet->Disable();
             cbClusterSet = 0;
         }
index f7e66a1400cedeae78c615d54d973f80f3dd7cdc..567a20e74576ce8bf3dde62f5e01025ead004ed7 100644 (file)
@@ -265,10 +265,15 @@ int dlgTable::Go(bool modal)
                     case PGM_FOREIGNKEY:
                     {
                         pgForeignKey *obj=(pgForeignKey*)data;
+                        wxString def = obj->GetDefinition();
 
-                        lstConstraints->AppendItem(data->GetIconId(), obj->GetName(), obj->GetDefinition());
+                        def.Replace(wxT("\n"), wxT(" "));
+                        while (def.Contains(wxT("  ")))
+                            def.Replace(wxT("  "), wxT(" "));
+
+                        lstConstraints->AppendItem(data->GetIconId(), obj->GetName(), def);
                         previousConstraints.Add(obj->GetQuotedIdentifier() 
-                            + wxT(" ") + obj->GetTypeName().Upper() + wxT(" ") + obj->GetDefinition());
+                            + wxT(" ") + obj->GetTypeName().Upper() + wxT(" ") + def);
                         break;
                     }
                     case PGM_CHECK:
@@ -1444,6 +1449,8 @@ void dlgTable::OnAddConstr(wxCommandEvent &ev)
             {
                 wxString tmpDef = fk.GetDefinition();
                 tmpDef.Replace(wxT("\n"), wxT(" "));
+                while (tmpDef.Contains(wxT("  ")))
+                    tmpDef.Replace(wxT("  "), wxT(" "));
 
                 lstConstraints->AppendItem(foreignKeyFactory.GetIconId(), fk.GetName(), tmpDef);
             }