Initial commit: Contact Details Tab half-way set up and not yet working - but I want to do a merge from trunk to get an up-to-date code base to continue so I commit things as-they-are...
merge from trunk
Commit before doing 'a merge from trunk' in order to obtain recent bugfixes:

* NEW: Control 'txtLinkTextBox.cs' - a combination of TextBox and LinkLabel.
* NEW: 'Maintain Partner Contact Categories and Types' screen - layout mostly OK, but not much else done.
* WinForms Generator / ControlGeneratorTextboxes.cs, FormWriter.cs: NEW support for new Control 'txtLinkTextBox.cs'.
* Added support for two new Cacheable DataTables (PPartnerAttributeCategory, PPartnerAttributeType) and support for them in cmbAutoPopulatedComboBox (PartnerAttributeCategoryList, PartnerAttributeTypeList).
* UC_ContactDetails.yaml, UC_ContactDetails.ManualCode.cs: further work, still much in progress.
* UINavigation.yml: Added screen 'Maintain Partner Contact Categories and Types'.
* Partner.PartnerEdit.cs: initial commit of new Methods 'GetDataPartnerAttributes' and 'GetDataPartnerAttributesInternal'. Not yet tested!
* PartnerTypedDataSets.xml: added DB Tables 'p_partner_attribute_category' and 'p_partner_attribute_type' to PartnerEditTDS. Added new Typed DataSet 'PartnerContactSetupTDS'.

FIX: ExceptionHandling.cs: Show Exception.Message if a NotImplementedException has got a Message and not the generic 'This functionality is not yet implemented in OpenPetra.' Message.

Status: 
* Code compiles.
* 'Maintain Partner Contact Categories and Types' screen can be opened and Contact Categories and Contact Types can be added with 'Add' Button. 
* Contact Details Tab on Partner Edit throws an Exception when it is switched to (Npgsql.NpgsqlException: relation "public.p_partner_attribute_category" does not exist)...
merge from trunk
Somehow I missed out the changes to petra.xml in my last commit before the merge from trunk (Rev. 2129)
Maintain Contact Categories and Types screen: Improvements to screen layout.
Taking over 'intermediate' code and Templates from AlanP (by copy & paste) to get access to the newest state of the enhanced 'auto-deletion'. Those files have so far only been commited to his branch, 'lp:~alan-paterson/openpetraorg/dev_0001328_Delete_Buttons_Extn'...
More code taken over from AlanP.
Adapt DeleteRowManual Methods (across the board) so they compile with AlanP's Template modifications: 'out string ACompletionMessage' needs to become 'ref string ACompletionMessage'.
TDataCache Class and its internal Classes: Added overloads to various Methods that make it possible for the caller of those Methods to specify a different TableName for the DataTable that is returned from the Cache.
WinForms Generator - Dynamic TabPage code generation: introduce new Partial Method 'PostInitUserControl'.
Further the implementation of the Contact Details Tab:
* Merge Cacheable DataTables that are needed for the Relations in the DataSet that have to do with Contact Details into FMainDS;
* Show custom-calculated Columns in Grid that use the Relations;
* Adding and removing of Rows works basically;
* Saving and re-loading of data works basically;
* 'Business' CheckBox works and has an effect on the text that is displayed in the Column 'Contact Type' (through an Expression that uses the Relations);


UC_FinanceDetails.ManualCode.cs: rename Method 'SpecialInitUserControl' to 'PreInitUserControl' as this is clearer and goes well with the other possible Partial Method call 'PostInitUserControl'.
Further the implementation of the Contact Details Tab:
* Layout changes:
** introduced 'Within The Organisation' GroupBox that groups 'Office Phone' and 'Office E-Mail'. That GroupBox is now only shown for Partners of Partner Class 'PERSON'.
** Show 'Valid' CheckBox, 'No Longer Valid From' dtp Control and 'Confidential' CheckBox.
* Set up proper Status Bar help texts for all the Controls.

petra.xml: renamed 'p_sensitive_l' to 'p_confidential_l'.
Further the implementation of the Contact Details Tab:
* Update the 'Contact Category' ComboBox whenever the 'Contact Type' changes, and vice versa.
* Allow 'launching' of Values if they are of a Contact Attribute Type that is not 'Plain Text'.
* Allow language-specific selection of the 'Phone' Contact Attribute Type
* Deal with situations where the Cacheable DataTables for Categories and/or Types are empty and where we are working with a new Partner.
* Display records in the Grid in the desired sort order.
* Correctly handle Sequence values after new records have been saved (by implementing 'CleanupRecordsBeforeMerge' Method).
* Allow creation of multiple new records in a row (Method 'NewRowManual').
* Cacheable DataTables: turn the Cacheable DataTables for Categories and Types into CalculatedLists and load them with certain filter criteria in Partner.Cacheable.ManualCode.cs

* DB Structure changes:
** introduced Sequences for p_partner_attribute_category, p_partner_attribute_type and p_partner_attribute tables' sequence fields.
** basedata: added base data for p_partner_attribute_category and p_partner_attribute_type DB tables

Changes to Controls:
* txtLinkTextBox.cs: implement launching of HTTP(s) links where the Value is only a part of a longer URL.
* cmbAutoPopulatedComboBox.cs: 
** New 'Text' Property.
** New Method 'GetSelectedItemsDataRow'.
merge from trunk
ContactCategoriesAndTypesSetup.yaml: rename Add and Delete button so they follow the standard scheme (and benefit from auto-code generation).
Application Server Menu: Add menu item that marks all Cacheable DataTables as 'needing to be refreshed'.
merge from trunk
Contact Details Tab: 
* correctly supply values for the cmbPrimaryWayOfContacting control.
* fix #regions in ManualCode.cs
UC_ContactDetails.ManualCode.cs: correct wrongly labelled #regions