1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2014, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// pgConstraint.cpp - Constraint collection
//
//////////////////////////////////////////////////////////////////////////
// wxWindows headers
#include <wx/wx.h>
#include "pgAdmin3.h"
#include "schema/pgTable.h"
#include "schema/pgDomain.h"
#include "schema/pgConstraints.h"
#include "schema/pgIndexConstraint.h"
#include "schema/pgCheck.h"
#include "schema/pgForeignKey.h"
pgConstraintCollection::pgConstraintCollection(pgaFactory *factory, pgSchema *schema)
: pgSchemaObjCollection(factory, schema)
{
}
wxMenu *pgConstraintCollection::GetNewMenu()
{
if ((table && !table->CanCreate()) || (domain && !domain->CanCreate()))
return 0;
wxMenu *menu = new wxMenu();
if (table)
{
if (table->GetPrimaryKey().IsEmpty())
primaryKeyFactory.AppendMenu(menu);
foreignKeyFactory.AppendMenu(menu);
excludeFactory.AppendMenu(menu);
uniqueFactory.AppendMenu(menu);
}
checkFactory.AppendMenu(menu);
return menu;
}
void pgConstraintCollection::ShowTreeDetail(ctlTree *browser, frmMain *form, ctlListView *properties, ctlSQLBox *sqlPane)
{
if (browser->GetChildrenCount(GetId(), false) == 0)
{
browser->RemoveDummyChild(this);
wxTreeItemId id = browser->GetItemParent(GetId());
wxASSERT(id);
table = NULL;
domain = NULL;
if (browser->GetObject(id)->IsCreatedBy(tableFactory))
{
table = (pgTable *)browser->GetObject(id);
}
if (browser->GetObject(id)->IsCreatedBy(domainFactory))
{
domain = (pgDomain *)browser->GetObject(id);
}
if (table)
{
primaryKeyFactory.CreateObjects(this, browser);
foreignKeyFactory.CreateObjects(this, browser);
excludeFactory.CreateObjects(this, browser);
uniqueFactory.CreateObjects(this, browser);
}
checkFactory.CreateObjects(this, browser);
}
UpdateChildCount(browser);
if (properties)
ShowList(_("Constraints"), browser, properties);
}
wxString pgConstraintCollection::GetTranslatedMessage(int kindOfMessage) const
{
wxString message = wxEmptyString;
switch (kindOfMessage)
{
case RETRIEVINGDETAILS:
message = _("Retrieving details on constraints");
break;
case REFRESHINGDETAILS:
message = _("Refreshing constraints");
break;
case OBJECTSLISTREPORT:
message = _("Constraints list report");
break;
}
return message;
}
/////////////////////////////
#include "images/constraints.pngc"
pgConstraintFactory::pgConstraintFactory()
: pgSchemaObjFactory(__("Constraint"), 0, 0, 0)
{
metaType = PGM_CONSTRAINT;
}
pgCollection *pgConstraintFactory::CreateCollection(pgObject *obj)
{
return new pgConstraintCollection(GetCollectionFactory(), (pgSchema *)obj);
}
pgConstraintFactory constraintFactory;
pgaCollectionFactory constraintCollectionFactory(&constraintFactory, __("Constraints"), constraints_png_img);
|