Datei: NDOPackage/ConfigurationDialog.cs
Last Commit (f3d6626)
| 1 | // |
| 2 | // Copyright (c) 2002-2019 Mirko Matytschak |
| 3 | // (www.netdataobjects.de) |
| 4 | // |
| 5 | // Author: Mirko Matytschak |
| 6 | // |
| 7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated |
| 8 | // documentation files (the "Software"), to deal in the Software without restriction, including without limitation |
| 9 | // the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the |
| 10 | // Software, and to permit persons to whom the Software is furnished to do so, subject to the following |
| 11 | // conditions: |
| 12 | |
| 13 | // The above copyright notice and this permission notice shall be included in all copies or substantial portions |
| 14 | // of the Software. |
| 15 | // |
| 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED |
| 17 | // TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| 18 | // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF |
| 19 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
| 20 | // DEALINGS IN THE SOFTWARE. |
| 21 | |
| 22 | |
| 23 | using System; |
| 24 | using System.Linq; |
| 25 | using System.IO; |
| 26 | using System.Windows.Forms; |
| 27 | using MessageBox = System.Windows.Forms.MessageBox; |
| 28 | using Project = EnvDTE.Project; |
| 29 | using System.Diagnostics; |
| 30 | using Microsoft.VisualStudio.ComponentModelHost; |
| 31 | using NuGet.VisualStudio; |
| 32 | using NDO.UISupport; |
| 33 | |
| 34 | #pragma warning disable VSTHRD010 // Invoke single-threaded types on Main thread |
| 35 | |
| 36 | namespace NDOVsPackage |
| 37 | { |
| 38 | ····/// <summary> |
| 39 | ····/// Summary description for ConfigurationDialog. |
| 40 | ····/// </summary> |
| 41 | ····internal class ConfigurationDialog : System.Windows.Forms.Form |
| 42 | ····{ |
| 43 | ········private System.ComponentModel.IContainer components; |
| 44 | |
| 45 | ········private Project project; |
| 46 | ········private System.Windows.Forms.ToolTip toolTip1; |
| 47 | ········private TabControl tabControl; |
| 48 | ········private TabPage tabPageGeneral; |
| 49 | ········private TextBox txtTargetMappingFileName; |
| 50 | ········private Label label1; |
| 51 | ········private CheckBox chkVerboseMode; |
| 52 | ········private TextBox txtSchemaVersion; |
| 53 | ········private Label label5; |
| 54 | ········private Button btnNewDatabase; |
| 55 | ········private Button btnSaveAs; |
| 56 | ········private Button btnPresetApp; |
| 57 | ········private TextBox txtDbOwner; |
| 58 | ········private TextBox txtConnectionString; |
| 59 | ········private Label label3; |
| 60 | ········private GroupBox groupBox1; |
| 61 | ········private CheckBox chkDropExistingElements; |
| 62 | ········private CheckBox chkGenerateFkConstraints; |
| 63 | ········private CheckBox chkIncludeTypecodes; |
| 64 | ········private RadioButton radioDefaultEncoding; |
| 65 | ········private RadioButton radioUtf8Encoding; |
| 66 | ········private Label label4; |
| 67 | ········private ComboBox cbSqlDialect; |
| 68 | ········private CheckBox chkGenerateSQLScript; |
| 69 | ········private CheckBox chkUseTimeStamps; |
| 70 | ········private CheckBox chkChangeEvents; |
| 71 | ········private Label label2; |
| 72 | ········private Button btnConnString; |
| 73 | ········private Button btnOK; |
| 74 | ········private Button btnPresetLibrary; |
| 75 | ········private Button btnCancel; |
| 76 | ········private CheckBox chkMappingNew; |
| 77 | ········private CheckBox chkActivateEnhancer; |
| 78 | ········private CheckBox chkActivateAddIn; |
| 79 | ········private TabPage tabPageAssemblies; |
| 80 | ········private Label label6; |
| 81 | ········private CheckedListBox chlbAssemblies; |
| 82 | ········private ProjectDescription projectDescription; |
| 83 | ········private Button btnInstallProvider; |
| 84 | ········private NDOReference[] references; |
| 85 | |
| 86 | ········public ConfigurationDialog(Project project, ProjectDescription projectDescription) |
| 87 | ········{ |
| 88 | ············try |
| 89 | ············{ |
| 90 | ················this.project = project; |
| 91 | ················this.projectDescription = projectDescription; |
| 92 | ················this.projectDescription.BuildReferences(); |
| 93 | ················this.projectDescription.FixDllState(); |
| 94 | ················InitializeComponent(); |
| 95 | ················var lbAssemblies = (ListBox)this.chlbAssemblies; |
| 96 | ················this.references = projectDescription.References.Values.ToArray(); |
| 97 | ················lbAssemblies.DataSource = this.references; |
| 98 | ················lbAssemblies.DisplayMember = nameof( NDOReference.Name ); |
| 99 | ················lbAssemblies.ValueMember = nameof( NDOReference.CheckState ); |
| 100 | ················int i = 0; |
| 101 | ················foreach (var item in this.references) |
| 102 | ················{ |
| 103 | ····················this.chlbAssemblies.SetItemCheckState( i++, item.CheckState ); |
| 104 | ················} |
| 105 | ············} |
| 106 | ············catch (Exception ex) |
| 107 | ············{ |
| 108 | ················Debug.WriteLine( ex.ToString() ); |
| 109 | ············} |
| 110 | ········} |
| 111 | |
| 112 | ········void CheckEnabledStateForLoadProviderButton() |
| 113 | ········{ |
| 114 | ············string providerName = this.cbSqlDialect.Text; |
| 115 | |
| 116 | ············if (string.IsNullOrEmpty( providerName )) |
| 117 | ············{ |
| 118 | ················this.btnInstallProvider.Enabled = false; |
| 119 | ················return; |
| 120 | ············} |
| 121 | |
| 122 | ············if (IsProviderInstalled(providerName)) |
| 123 | ············{ |
| 124 | ················this.btnInstallProvider.Enabled = false; |
| 125 | ················return; |
| 126 | ············} |
| 127 | |
| 128 | ············this.btnInstallProvider.Enabled = true; |
| 129 | ········} |
| 130 | |
| 131 | ········bool IsProviderInstalled(string providerName) |
| 132 | ········{ |
| 133 | ············IComponentModel componentModel; |
| 134 | ············var installerService = GetInstallerService( out componentModel ); |
| 135 | |
| 136 | ············string packageName = $"ndo.{providerName.ToLower()}"; |
| 137 | ············return installerService.IsPackageInstalled( this.project, packageName ); |
| 138 | ········} |
| 139 | |
| 140 | ········/// <summary> |
| 141 | ········/// Clean up any resources being used. |
| 142 | ········/// </summary> |
| 143 | ········protected override void Dispose( bool disposing ) |
| 144 | ········{ |
| 145 | ············if( disposing ) |
| 146 | ············{ |
| 147 | ················if(components != null) |
| 148 | ················{ |
| 149 | ····················components.Dispose(); |
| 150 | ················} |
| 151 | ············} |
| 152 | ············base.Dispose( disposing ); |
| 153 | ········} |
| 154 | |
| 155 | ········#region Windows Form Designer generated code |
| 156 | ········/// <summary> |
| 157 | ········/// Required method for Designer support - do not modify |
| 158 | ········/// the contents of this method with the code editor. |
| 159 | ········/// </summary> |
| 160 | ········private void InitializeComponent() |
| 161 | ········{ |
| 162 | ············this.components = new System.ComponentModel.Container(); |
| 163 | ············System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigurationDialog)); |
| 164 | ············this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); |
| 165 | ············this.chkVerboseMode = new System.Windows.Forms.CheckBox(); |
| 166 | ············this.btnNewDatabase = new System.Windows.Forms.Button(); |
| 167 | ············this.btnSaveAs = new System.Windows.Forms.Button(); |
| 168 | ············this.btnPresetApp = new System.Windows.Forms.Button(); |
| 169 | ············this.txtDbOwner = new System.Windows.Forms.TextBox(); |
| 170 | ············this.txtConnectionString = new System.Windows.Forms.TextBox(); |
| 171 | ············this.chkDropExistingElements = new System.Windows.Forms.CheckBox(); |
| 172 | ············this.chkGenerateFkConstraints = new System.Windows.Forms.CheckBox(); |
| 173 | ············this.chkIncludeTypecodes = new System.Windows.Forms.CheckBox(); |
| 174 | ············this.radioDefaultEncoding = new System.Windows.Forms.RadioButton(); |
| 175 | ············this.radioUtf8Encoding = new System.Windows.Forms.RadioButton(); |
| 176 | ············this.cbSqlDialect = new System.Windows.Forms.ComboBox(); |
| 177 | ············this.chkGenerateSQLScript = new System.Windows.Forms.CheckBox(); |
| 178 | ············this.chkUseTimeStamps = new System.Windows.Forms.CheckBox(); |
| 179 | ············this.chkChangeEvents = new System.Windows.Forms.CheckBox(); |
| 180 | ············this.btnConnString = new System.Windows.Forms.Button(); |
| 181 | ············this.btnPresetLibrary = new System.Windows.Forms.Button(); |
| 182 | ············this.chkMappingNew = new System.Windows.Forms.CheckBox(); |
| 183 | ············this.chkActivateEnhancer = new System.Windows.Forms.CheckBox(); |
| 184 | ············this.chkActivateAddIn = new System.Windows.Forms.CheckBox(); |
| 185 | ············this.tabControl = new System.Windows.Forms.TabControl(); |
| 186 | ············this.tabPageGeneral = new System.Windows.Forms.TabPage(); |
| 187 | ············this.txtTargetMappingFileName = new System.Windows.Forms.TextBox(); |
| 188 | ············this.label1 = new System.Windows.Forms.Label(); |
| 189 | ············this.txtSchemaVersion = new System.Windows.Forms.TextBox(); |
| 190 | ············this.label5 = new System.Windows.Forms.Label(); |
| 191 | ············this.label3 = new System.Windows.Forms.Label(); |
| 192 | ············this.groupBox1 = new System.Windows.Forms.GroupBox(); |
| 193 | ············this.btnInstallProvider = new System.Windows.Forms.Button(); |
| 194 | ············this.label4 = new System.Windows.Forms.Label(); |
| 195 | ············this.label2 = new System.Windows.Forms.Label(); |
| 196 | ············this.tabPageAssemblies = new System.Windows.Forms.TabPage(); |
| 197 | ············this.label6 = new System.Windows.Forms.Label(); |
| 198 | ············this.chlbAssemblies = new System.Windows.Forms.CheckedListBox(); |
| 199 | ············this.btnOK = new System.Windows.Forms.Button(); |
| 200 | ············this.btnCancel = new System.Windows.Forms.Button(); |
| 201 | ············this.tabControl.SuspendLayout(); |
| 202 | ············this.tabPageGeneral.SuspendLayout(); |
| 203 | ············this.groupBox1.SuspendLayout(); |
| 204 | ············this.tabPageAssemblies.SuspendLayout(); |
| 205 | ············this.SuspendLayout(); |
| 206 | ············// |
| 207 | ············// chkVerboseMode |
| 208 | ············// |
| 209 | ············this.chkVerboseMode.Location = new System.Drawing.Point(21, 72); |
| 210 | ············this.chkVerboseMode.Name = "chkVerboseMode"; |
| 211 | ············this.chkVerboseMode.Size = new System.Drawing.Size(238, 21); |
| 212 | ············this.chkVerboseMode.TabIndex = 51; |
| 213 | ············this.chkVerboseMode.Text = "Add-in Verbose Mode"; |
| 214 | ············this.toolTip1.SetToolTip(this.chkVerboseMode, "Causes the Add-in and the Enhancer to show more information for debugging purpose" + |
| 215 | ········"s."); |
| 216 | ············// |
| 217 | ············// btnNewDatabase |
| 218 | ············// |
| 219 | ············this.btnNewDatabase.Location = new System.Drawing.Point(583, 313); |
| 220 | ············this.btnNewDatabase.Name = "btnNewDatabase"; |
| 221 | ············this.btnNewDatabase.Size = new System.Drawing.Size(42, 21); |
| 222 | ············this.btnNewDatabase.TabIndex = 48; |
| 223 | ············this.btnNewDatabase.Text = "New"; |
| 224 | ············this.toolTip1.SetToolTip(this.btnNewDatabase, "Create new database"); |
| 225 | ············this.btnNewDatabase.Click += new System.EventHandler(this.btnNewDatabase_Click); |
| 226 | ············// |
| 227 | ············// btnSaveAs |
| 228 | ············// |
| 229 | ············this.btnSaveAs.DialogResult = System.Windows.Forms.DialogResult.OK; |
| 230 | ············this.btnSaveAs.Location = new System.Drawing.Point(249, 385); |
| 231 | ············this.btnSaveAs.Name = "btnSaveAs"; |
| 232 | ············this.btnSaveAs.Size = new System.Drawing.Size(100, 39); |
| 233 | ············this.btnSaveAs.TabIndex = 47; |
| 234 | ············this.btnSaveAs.Text = "Save as..."; |
| 235 | ············this.toolTip1.SetToolTip(this.btnSaveAs, "Save the options to be used in unattended builds with the stand-alone enhancer."); |
| 236 | ············this.btnSaveAs.Click += new System.EventHandler(this.btnSaveAs_Click); |
| 237 | ············// |
| 238 | ············// btnPresetApp |
| 239 | ············// |
| 240 | ············this.btnPresetApp.Location = new System.Drawing.Point(135, 385); |
| 241 | ············this.btnPresetApp.Name = "btnPresetApp"; |
| 242 | ············this.btnPresetApp.Size = new System.Drawing.Size(100, 39); |
| 243 | ············this.btnPresetApp.TabIndex = 46; |
| 244 | ············this.btnPresetApp.Text = "Preset for Application"; |
| 245 | ············this.toolTip1.SetToolTip(this.btnPresetApp, "Selects all settings used for applications which don\'t contain but reference pers" + |
| 246 | ········"istent types."); |
| 247 | ············this.btnPresetApp.Click += new System.EventHandler(this.btnPresetApp_Click); |
| 248 | ············// |
| 249 | ············// txtDbOwner |
| 250 | ············// |
| 251 | ············this.txtDbOwner.Location = new System.Drawing.Point(145, 126); |
| 252 | ············this.txtDbOwner.Name = "txtDbOwner"; |
| 253 | ············this.txtDbOwner.Size = new System.Drawing.Size(160, 20); |
| 254 | ············this.txtDbOwner.TabIndex = 45; |
| 255 | ············this.toolTip1.SetToolTip(this.txtDbOwner, "Enter an owner name, if you like your tables to be written like owner.tablename."); |
| 256 | ············// |
| 257 | ············// txtConnectionString |
| 258 | ············// |
| 259 | ············this.txtConnectionString.Location = new System.Drawing.Point(18, 313); |
| 260 | ············this.txtConnectionString.Name = "txtConnectionString"; |
| 261 | ············this.txtConnectionString.Size = new System.Drawing.Size(514, 20); |
| 262 | ············this.txtConnectionString.TabIndex = 39; |
| 263 | ············this.toolTip1.SetToolTip(this.txtConnectionString, "This string will be copied into the mapping file, if there doesn\'t exist a valid " + |
| 264 | ········"connection string. Otherwise it will be ignored."); |
| 265 | ············// |
| 266 | ············// chkDropExistingElements |
| 267 | ············// |
| 268 | ············this.chkDropExistingElements.Location = new System.Drawing.Point(13, 202); |
| 269 | ············this.chkDropExistingElements.Name = "chkDropExistingElements"; |
| 270 | ············this.chkDropExistingElements.Size = new System.Drawing.Size(235, 21); |
| 271 | ············this.chkDropExistingElements.TabIndex = 24; |
| 272 | ············this.chkDropExistingElements.Text = "Insert Drop Statements in the Script"; |
| 273 | ············this.toolTip1.SetToolTip(this.chkDropExistingElements, "If checked, NDO generates instructions to remove existing tables and constraints." + |
| 274 | ········""); |
| 275 | ············// |
| 276 | ············// chkGenerateFkConstraints |
| 277 | ············// |
| 278 | ············this.chkGenerateFkConstraints.Location = new System.Drawing.Point(13, 152); |
| 279 | ············this.chkGenerateFkConstraints.Name = "chkGenerateFkConstraints"; |
| 280 | ············this.chkGenerateFkConstraints.Size = new System.Drawing.Size(235, 21); |
| 281 | ············this.chkGenerateFkConstraints.TabIndex = 23; |
| 282 | ············this.chkGenerateFkConstraints.Text = "Generate Foreign Key Constraints"; |
| 283 | ············this.toolTip1.SetToolTip(this.chkGenerateFkConstraints, "If checked, NDO generates foreign key constraints for the relations in the databa" + |
| 284 | ········"se."); |
| 285 | ············// |
| 286 | ············// chkIncludeTypecodes |
| 287 | ············// |
| 288 | ············this.chkIncludeTypecodes.Location = new System.Drawing.Point(13, 177); |
| 289 | ············this.chkIncludeTypecodes.Name = "chkIncludeTypecodes"; |
| 290 | ············this.chkIncludeTypecodes.Size = new System.Drawing.Size(235, 21); |
| 291 | ············this.chkIncludeTypecodes.TabIndex = 22; |
| 292 | ············this.chkIncludeTypecodes.Text = "Include Typecodes in the Script"; |
| 293 | ············this.toolTip1.SetToolTip(this.chkIncludeTypecodes, "If checked, NDO generates instructions to build an additional table with the type" + |
| 294 | ········" code information."); |
| 295 | ············// |
| 296 | ············// radioDefaultEncoding |
| 297 | ············// |
| 298 | ············this.radioDefaultEncoding.Location = new System.Drawing.Point(13, 121); |
| 299 | ············this.radioDefaultEncoding.Name = "radioDefaultEncoding"; |
| 300 | ············this.radioDefaultEncoding.Size = new System.Drawing.Size(140, 20); |
| 301 | ············this.radioDefaultEncoding.TabIndex = 21; |
| 302 | ············this.radioDefaultEncoding.Text = "Default Encoding"; |
| 303 | ············this.toolTip1.SetToolTip(this.radioDefaultEncoding, "Check this option, if the script files should use windows encoding."); |
| 304 | ············// |
| 305 | ············// radioUtf8Encoding |
| 306 | ············// |
| 307 | ············this.radioUtf8Encoding.Checked = true; |
| 308 | ············this.radioUtf8Encoding.Location = new System.Drawing.Point(13, 99); |
| 309 | ············this.radioUtf8Encoding.Name = "radioUtf8Encoding"; |
| 310 | ············this.radioUtf8Encoding.Size = new System.Drawing.Size(140, 21); |
| 311 | ············this.radioUtf8Encoding.TabIndex = 20; |
| 312 | ············this.radioUtf8Encoding.TabStop = true; |
| 313 | ············this.radioUtf8Encoding.Text = "UTF-8 Encoding"; |
| 314 | ············this.toolTip1.SetToolTip(this.radioUtf8Encoding, "Check this option, if the script files should be UTF-8 encoded."); |
| 315 | ············// |
| 316 | ············// cbSqlDialect |
| 317 | ············// |
| 318 | ············this.cbSqlDialect.Location = new System.Drawing.Point(13, 70); |
| 319 | ············this.cbSqlDialect.Name = "cbSqlDialect"; |
| 320 | ············this.cbSqlDialect.Size = new System.Drawing.Size(220, 21); |
| 321 | ············this.cbSqlDialect.TabIndex = 18; |
| 322 | ············this.toolTip1.SetToolTip(this.cbSqlDialect, "Choose an available NDO provider."); |
| 323 | ············this.cbSqlDialect.SelectedIndexChanged += new System.EventHandler(this.cbSqlDialect_SelectedIndexChanged); |
| 324 | ············// |
| 325 | ············// chkGenerateSQLScript |
| 326 | ············// |
| 327 | ············this.chkGenerateSQLScript.Location = new System.Drawing.Point(13, 21); |
| 328 | ············this.chkGenerateSQLScript.Name = "chkGenerateSQLScript"; |
| 329 | ············this.chkGenerateSQLScript.Size = new System.Drawing.Size(187, 21); |
| 330 | ············this.chkGenerateSQLScript.TabIndex = 13; |
| 331 | ············this.chkGenerateSQLScript.Text = "Generate SQL Script"; |
| 332 | ············this.toolTip1.SetToolTip(this.chkGenerateSQLScript, "If checked, NDO will create a script with DDL code, which can be used to construc" + |
| 333 | ········"t a database structure."); |
| 334 | ············this.chkGenerateSQLScript.CheckedChanged += new System.EventHandler(this.chkGenerateSQLScript_CheckedChanged); |
| 335 | ············// |
| 336 | ············// chkUseTimeStamps |
| 337 | ············// |
| 338 | ············this.chkUseTimeStamps.Location = new System.Drawing.Point(21, 153); |
| 339 | ············this.chkUseTimeStamps.Name = "chkUseTimeStamps"; |
| 340 | ············this.chkUseTimeStamps.Size = new System.Drawing.Size(302, 20); |
| 341 | ············this.chkUseTimeStamps.TabIndex = 42; |
| 342 | ············this.chkUseTimeStamps.Text = "Generate Time Stamp Columns for each class"; |
| 343 | ············this.toolTip1.SetToolTip(this.chkUseTimeStamps, "Check this option, if all tables should be protected by collistion detection."); |
| 344 | ············// |
| 345 | ············// chkChangeEvents |
| 346 | ············// |
| 347 | ············this.chkChangeEvents.Location = new System.Drawing.Point(21, 179); |
| 348 | ············this.chkChangeEvents.Name = "chkChangeEvents"; |
| 349 | ············this.chkChangeEvents.Size = new System.Drawing.Size(302, 21); |
| 350 | ············this.chkChangeEvents.TabIndex = 41; |
| 351 | ············this.chkChangeEvents.Text = "Generate change events with Add Accessor"; |
| 352 | ············this.toolTip1.SetToolTip(this.chkChangeEvents, "Check this option, if you intend to bind the UI directly to the accessor properti" + |
| 353 | ········"es of your persistent classes."); |
| 354 | ············// |
| 355 | ············// btnConnString |
| 356 | ············// |
| 357 | ············this.btnConnString.Location = new System.Drawing.Point(538, 313); |
| 358 | ············this.btnConnString.Name = "btnConnString"; |
| 359 | ············this.btnConnString.Size = new System.Drawing.Size(42, 21); |
| 360 | ············this.btnConnString.TabIndex = 38; |
| 361 | ············this.btnConnString.Text = "..."; |
| 362 | ············this.toolTip1.SetToolTip(this.btnConnString, "Enter existing database connection"); |
| 363 | ············this.btnConnString.Click += new System.EventHandler(this.btnConnString_Click); |
| 364 | ············// |
| 365 | ············// btnPresetLibrary |
| 366 | ············// |
| 367 | ············this.btnPresetLibrary.Location = new System.Drawing.Point(21, 385); |
| 368 | ············this.btnPresetLibrary.Name = "btnPresetLibrary"; |
| 369 | ············this.btnPresetLibrary.Size = new System.Drawing.Size(100, 39); |
| 370 | ············this.btnPresetLibrary.TabIndex = 36; |
| 371 | ············this.btnPresetLibrary.Text = "Preset for Library"; |
| 372 | ············this.toolTip1.SetToolTip(this.btnPresetLibrary, "Selects all settings necessary for projects containing persistent types."); |
| 373 | ············this.btnPresetLibrary.Click += new System.EventHandler(this.btnPresetLibrary_Click); |
| 374 | ············// |
| 375 | ············// chkMappingNew |
| 376 | ············// |
| 377 | ············this.chkMappingNew.Location = new System.Drawing.Point(21, 99); |
| 378 | ············this.chkMappingNew.Name = "chkMappingNew"; |
| 379 | ············this.chkMappingNew.Size = new System.Drawing.Size(272, 21); |
| 380 | ············this.chkMappingNew.TabIndex = 34; |
| 381 | ············this.chkMappingNew.Text = "Always Generate a new mapping File"; |
| 382 | ············this.toolTip1.SetToolTip(this.chkMappingNew, "Choose this options, if NDO should discard and rebuild all mapping information."); |
| 383 | ············// |
| 384 | ············// chkActivateEnhancer |
| 385 | ············// |
| 386 | ············this.chkActivateEnhancer.Location = new System.Drawing.Point(21, 46); |
| 387 | ············this.chkActivateEnhancer.Name = "chkActivateEnhancer"; |
| 388 | ············this.chkActivateEnhancer.Size = new System.Drawing.Size(188, 20); |
| 389 | ············this.chkActivateEnhancer.TabIndex = 33; |
| 390 | ············this.chkActivateEnhancer.Text = "Activate enhancer"; |
| 391 | ············this.toolTip1.SetToolTip(this.chkActivateEnhancer, "Choose this option, if your project contains persistent types."); |
| 392 | ············// |
| 393 | ············// chkActivateAddIn |
| 394 | ············// |
| 395 | ············this.chkActivateAddIn.Location = new System.Drawing.Point(21, 19); |
| 396 | ············this.chkActivateAddIn.Name = "chkActivateAddIn"; |
| 397 | ············this.chkActivateAddIn.Size = new System.Drawing.Size(188, 21); |
| 398 | ············this.chkActivateAddIn.TabIndex = 32; |
| 399 | ············this.chkActivateAddIn.Text = "Activate NDO AddIn"; |
| 400 | ············this.toolTip1.SetToolTip(this.chkActivateAddIn, "Choose this options, if your project contains or references persistent types."); |
| 401 | ············this.chkActivateAddIn.Click += new System.EventHandler(this.chkActivateAddIn_CheckedChanged); |
| 402 | ············// |
| 403 | ············// tabControl |
| 404 | ············// |
| 405 | ············this.tabControl.Controls.Add(this.tabPageGeneral); |
| 406 | ············this.tabControl.Controls.Add(this.tabPageAssemblies); |
| 407 | ············this.tabControl.Dock = System.Windows.Forms.DockStyle.Top; |
| 408 | ············this.tabControl.Location = new System.Drawing.Point(0, 0); |
| 409 | ············this.tabControl.Name = "tabControl"; |
| 410 | ············this.tabControl.SelectedIndex = 0; |
| 411 | ············this.tabControl.Size = new System.Drawing.Size(661, 374); |
| 412 | ············this.tabControl.TabIndex = 0; |
| 413 | ············// |
| 414 | ············// tabPageGeneral |
| 415 | ············// |
| 416 | ············this.tabPageGeneral.Controls.Add(this.txtTargetMappingFileName); |
| 417 | ············this.tabPageGeneral.Controls.Add(this.label1); |
| 418 | ············this.tabPageGeneral.Controls.Add(this.chkVerboseMode); |
| 419 | ············this.tabPageGeneral.Controls.Add(this.txtSchemaVersion); |
| 420 | ············this.tabPageGeneral.Controls.Add(this.label5); |
| 421 | ············this.tabPageGeneral.Controls.Add(this.btnNewDatabase); |
| 422 | ············this.tabPageGeneral.Controls.Add(this.txtDbOwner); |
| 423 | ············this.tabPageGeneral.Controls.Add(this.txtConnectionString); |
| 424 | ············this.tabPageGeneral.Controls.Add(this.label3); |
| 425 | ············this.tabPageGeneral.Controls.Add(this.groupBox1); |
| 426 | ············this.tabPageGeneral.Controls.Add(this.chkUseTimeStamps); |
| 427 | ············this.tabPageGeneral.Controls.Add(this.chkChangeEvents); |
| 428 | ············this.tabPageGeneral.Controls.Add(this.label2); |
| 429 | ············this.tabPageGeneral.Controls.Add(this.btnConnString); |
| 430 | ············this.tabPageGeneral.Controls.Add(this.chkMappingNew); |
| 431 | ············this.tabPageGeneral.Controls.Add(this.chkActivateEnhancer); |
| 432 | ············this.tabPageGeneral.Controls.Add(this.chkActivateAddIn); |
| 433 | ············this.tabPageGeneral.Location = new System.Drawing.Point(4, 22); |
| 434 | ············this.tabPageGeneral.Name = "tabPageGeneral"; |
| 435 | ············this.tabPageGeneral.Padding = new System.Windows.Forms.Padding(3); |
| 436 | ············this.tabPageGeneral.Size = new System.Drawing.Size(653, 348); |
| 437 | ············this.tabPageGeneral.TabIndex = 0; |
| 438 | ············this.tabPageGeneral.Text = "General"; |
| 439 | ············this.tabPageGeneral.UseVisualStyleBackColor = true; |
| 440 | ············// |
| 441 | ············// txtTargetMappingFileName |
| 442 | ············// |
| 443 | ············this.txtTargetMappingFileName.Location = new System.Drawing.Point(145, 245); |
| 444 | ············this.txtTargetMappingFileName.Name = "txtTargetMappingFileName"; |
| 445 | ············this.txtTargetMappingFileName.Size = new System.Drawing.Size(160, 20); |
| 446 | ············this.txtTargetMappingFileName.TabIndex = 53; |
| 447 | ············// |
| 448 | ············// label1 |
| 449 | ············// |
| 450 | ············this.label1.Location = new System.Drawing.Point(18, 246); |
| 451 | ············this.label1.Name = "label1"; |
| 452 | ············this.label1.Size = new System.Drawing.Size(121, 21); |
| 453 | ············this.label1.TabIndex = 52; |
| 454 | ············this.label1.Text = "Mapping File Name"; |
| 455 | ············// |
| 456 | ············// txtSchemaVersion |
| 457 | ············// |
| 458 | ············this.txtSchemaVersion.Location = new System.Drawing.Point(145, 219); |
| 459 | ············this.txtSchemaVersion.Name = "txtSchemaVersion"; |
| 460 | ············this.txtSchemaVersion.Size = new System.Drawing.Size(160, 20); |
| 461 | ············this.txtSchemaVersion.TabIndex = 50; |
| 462 | ············// |
| 463 | ············// label5 |
| 464 | ············// |
| 465 | ············this.label5.Location = new System.Drawing.Point(18, 220); |
| 466 | ············this.label5.Name = "label5"; |
| 467 | ············this.label5.Size = new System.Drawing.Size(121, 21); |
| 468 | ············this.label5.TabIndex = 49; |
| 469 | ············this.label5.Text = "Schema Version"; |
| 470 | ············// |
| 471 | ············// label3 |
| 472 | ············// |
| 473 | ············this.label3.Location = new System.Drawing.Point(18, 128); |
| 474 | ············this.label3.Name = "label3"; |
| 475 | ············this.label3.Size = new System.Drawing.Size(127, 21); |
| 476 | ············this.label3.TabIndex = 44; |
| 477 | ············this.label3.Text = "Owner / Schema Name"; |
| 478 | ············// |
| 479 | ············// groupBox1 |
| 480 | ············// |
| 481 | ············this.groupBox1.Controls.Add(this.btnInstallProvider); |
| 482 | ············this.groupBox1.Controls.Add(this.chkDropExistingElements); |
| 483 | ············this.groupBox1.Controls.Add(this.chkGenerateFkConstraints); |
| 484 | ············this.groupBox1.Controls.Add(this.chkIncludeTypecodes); |
| 485 | ············this.groupBox1.Controls.Add(this.radioDefaultEncoding); |
| 486 | ············this.groupBox1.Controls.Add(this.radioUtf8Encoding); |
| 487 | ············this.groupBox1.Controls.Add(this.label4); |
| 488 | ············this.groupBox1.Controls.Add(this.cbSqlDialect); |
| 489 | ············this.groupBox1.Controls.Add(this.chkGenerateSQLScript); |
| 490 | ············this.groupBox1.Location = new System.Drawing.Point(343, 21); |
| 491 | ············this.groupBox1.Name = "groupBox1"; |
| 492 | ············this.groupBox1.Size = new System.Drawing.Size(265, 244); |
| 493 | ············this.groupBox1.TabIndex = 43; |
| 494 | ············this.groupBox1.TabStop = false; |
| 495 | ············this.groupBox1.Text = " SQL "; |
| 496 | ············// |
| 497 | ············// btnInstallProvider |
| 498 | ············// |
| 499 | ············this.btnInstallProvider.Location = new System.Drawing.Point(142, 102); |
| 500 | ············this.btnInstallProvider.Name = "btnInstallProvider"; |
| 501 | ············this.btnInstallProvider.Size = new System.Drawing.Size(91, 22); |
| 502 | ············this.btnInstallProvider.TabIndex = 25; |
| 503 | ············this.btnInstallProvider.Text = "Install Provider"; |
| 504 | ············this.btnInstallProvider.UseVisualStyleBackColor = true; |
| 505 | ············this.btnInstallProvider.Click += new System.EventHandler(this.btnInstallProvider_Click); |
| 506 | ············// |
| 507 | ············// label4 |
| 508 | ············// |
| 509 | ············this.label4.Location = new System.Drawing.Point(13, 50); |
| 510 | ············this.label4.Name = "label4"; |
| 511 | ············this.label4.Size = new System.Drawing.Size(200, 17); |
| 512 | ············this.label4.TabIndex = 19; |
| 513 | ············this.label4.Text = "SQL Dialect"; |
| 514 | ············// |
| 515 | ············// label2 |
| 516 | ············// |
| 517 | ············this.label2.Location = new System.Drawing.Point(18, 292); |
| 518 | ············this.label2.Name = "label2"; |
| 519 | ············this.label2.Size = new System.Drawing.Size(360, 21); |
| 520 | ············this.label2.TabIndex = 40; |
| 521 | ············this.label2.Text = "Default Connection String"; |
| 522 | ············// |
| 523 | ············// tabPageAssemblies |
| 524 | ············// |
| 525 | ············this.tabPageAssemblies.Controls.Add(this.label6); |
| 526 | ············this.tabPageAssemblies.Controls.Add(this.chlbAssemblies); |
| 527 | ············this.tabPageAssemblies.Location = new System.Drawing.Point(4, 22); |
| 528 | ············this.tabPageAssemblies.Name = "tabPageAssemblies"; |
| 529 | ············this.tabPageAssemblies.Padding = new System.Windows.Forms.Padding(3); |
| 530 | ············this.tabPageAssemblies.Size = new System.Drawing.Size(653, 348); |
| 531 | ············this.tabPageAssemblies.TabIndex = 1; |
| 532 | ············this.tabPageAssemblies.Text = "Assemblies"; |
| 533 | ············this.tabPageAssemblies.UseVisualStyleBackColor = true; |
| 534 | ············// |
| 535 | ············// label6 |
| 536 | ············// |
| 537 | ············this.label6.AutoSize = true; |
| 538 | ············this.label6.Location = new System.Drawing.Point(10, 12); |
| 539 | ············this.label6.Name = "label6"; |
| 540 | ············this.label6.Size = new System.Drawing.Size(328, 13); |
| 541 | ············this.label6.TabIndex = 1; |
| 542 | ············this.label6.Text = "Choose Assemblies which should be analyzed by the NDOEnhancer"; |
| 543 | ············// |
| 544 | ············// chlbAssemblies |
| 545 | ············// |
| 546 | ············this.chlbAssemblies.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) |
| 547 | ············| System.Windows.Forms.AnchorStyles.Left) |
| 548 | ············| System.Windows.Forms.AnchorStyles.Right))); |
| 549 | ············this.chlbAssemblies.FormattingEnabled = true; |
| 550 | ············this.chlbAssemblies.Location = new System.Drawing.Point(10, 39); |
| 551 | ············this.chlbAssemblies.Name = "chlbAssemblies"; |
| 552 | ············this.chlbAssemblies.Size = new System.Drawing.Size(631, 289); |
| 553 | ············this.chlbAssemblies.TabIndex = 0; |
| 554 | ············this.chlbAssemblies.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.chlbAssemblies_ItemCheck); |
| 555 | ············// |
| 556 | ············// btnOK |
| 557 | ············// |
| 558 | ············this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; |
| 559 | ············this.btnOK.Location = new System.Drawing.Point(363, 385); |
| 560 | ············this.btnOK.Name = "btnOK"; |
| 561 | ············this.btnOK.Size = new System.Drawing.Size(100, 39); |
| 562 | ············this.btnOK.TabIndex = 37; |
| 563 | ············this.btnOK.Text = "OK"; |
| 564 | ············this.btnOK.Click += new System.EventHandler(this.btnOK_Click); |
| 565 | ············// |
| 566 | ············// btnCancel |
| 567 | ············// |
| 568 | ············this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; |
| 569 | ············this.btnCancel.Location = new System.Drawing.Point(477, 385); |
| 570 | ············this.btnCancel.Name = "btnCancel"; |
| 571 | ············this.btnCancel.Size = new System.Drawing.Size(100, 39); |
| 572 | ············this.btnCancel.TabIndex = 35; |
| 573 | ············this.btnCancel.Text = "Cancel"; |
| 574 | ············// |
| 575 | ············// ConfigurationDialog |
| 576 | ············// |
| 577 | ············this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); |
| 578 | ············this.ClientSize = new System.Drawing.Size(661, 439); |
| 579 | ············this.Controls.Add(this.btnSaveAs); |
| 580 | ············this.Controls.Add(this.btnPresetApp); |
| 581 | ············this.Controls.Add(this.btnOK); |
| 582 | ············this.Controls.Add(this.btnPresetLibrary); |
| 583 | ············this.Controls.Add(this.btnCancel); |
| 584 | ············this.Controls.Add(this.tabControl); |
| 585 | ············this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); |
| 586 | ············this.Name = "ConfigurationDialog"; |
| 587 | ············this.Text = "NDO Configuration"; |
| 588 | ············this.Load += new System.EventHandler(this.ConfigurationDialog_Load); |
| 589 | ············this.tabControl.ResumeLayout(false); |
| 590 | ············this.tabPageGeneral.ResumeLayout(false); |
| 591 | ············this.tabPageGeneral.PerformLayout(); |
| 592 | ············this.groupBox1.ResumeLayout(false); |
| 593 | ············this.tabPageAssemblies.ResumeLayout(false); |
| 594 | ············this.tabPageAssemblies.PerformLayout(); |
| 595 | ············this.ResumeLayout(false); |
| 596 | |
| 597 | ········} |
| 598 | ········#endregion |
| 599 | |
| 600 | ········private void chkActivateAddIn_CheckedChanged(object sender, System.EventArgs e) |
| 601 | ········{ |
| 602 | ············EnableAddin(this.chkActivateAddIn.Checked); |
| 603 | ········} |
| 604 | |
| 605 | |
| 606 | ········void EnableAddin(bool enabled) |
| 607 | ········{ |
| 608 | ············if (project.Kind == "{E24C65DC-7377-472b-9ABA-BC803B73C61A}") |
| 609 | ················chkActivateEnhancer.Enabled = false; |
| 610 | ············else |
| 611 | ················chkActivateEnhancer.Enabled = enabled; |
| 612 | ········} |
| 613 | |
| 614 | ········private void ConfigurationDialog_Load(object sender, System.EventArgs e) |
| 615 | ········{ |
| 616 | ············try |
| 617 | ············{ |
| 618 | ················ConfigurationOptions options = new ConfigurationOptions(project); |
| 619 | ················this.Text = "NDO Configuration - " + project.Name; |
| 620 | ················chkIncludeTypecodes.Checked = options.IncludeTypecodes; |
| 621 | ················chkDropExistingElements.Checked = options.DropExistingElements; |
| 622 | ················chkGenerateFkConstraints.Checked = options.GenerateConstraints; |
| 623 | ················chkVerboseMode.Checked = options.VerboseMode; |
| 624 | ················chkChangeEvents.Checked = options.GenerateChangeEvents; |
| 625 | ················chkActivateAddIn.Checked = options.EnableAddIn; |
| 626 | ················chkActivateEnhancer.Checked = options.EnableEnhancer; |
| 627 | ················chkMappingNew.Checked = options.NewMapping; |
| 628 | ················if (chkActivateAddIn.Checked == false) |
| 629 | ····················EnableAddin(false); |
| 630 | ················chkGenerateSQLScript.Checked = options.GenerateSQL; |
| 631 | ················txtSchemaVersion.Text = options.SchemaVersion; |
| 632 | ················if (string.IsNullOrEmpty(txtSchemaVersion.Text)) |
| 633 | ····················txtSchemaVersion.Text = "1.0"; |
| 634 | ················this.chkUseTimeStamps.Checked = options.UseTimeStamps; |
| 635 | ················int i = 0; |
| 636 | ················this.cbSqlDialect.Items.Clear(); |
| 637 | ················int currentDialectIndex = -1; |
| 638 | |
| 639 | ················foreach (string s in NdoUIProviderFactory.Instance.Keys) |
| 640 | ················{ |
| 641 | ····················this.cbSqlDialect.Items.Add(s); |
| 642 | ····················if (options.SQLScriptLanguage == s) |
| 643 | ························currentDialectIndex = i; |
| 644 | ····················i++; |
| 645 | ················} |
| 646 | ················if (currentDialectIndex > -1) |
| 647 | ····················cbSqlDialect.SelectedIndex = currentDialectIndex; |
| 648 | |
| 649 | ················// Must be initialized after changing the cbSqlDialect index |
| 650 | ················txtConnectionString.Text = options.DefaultConnection; |
| 651 | ················txtTargetMappingFileName.Text = options.TargetMappingFileName; |
| 652 | ················txtDbOwner.Text = options.DatabaseOwner; |
| 653 | ················chkActivateAddIn_CheckedChanged(null, EventArgs.Empty); |
| 654 | ················chkGenerateSQLScript_CheckedChanged(null, EventArgs.Empty); |
| 655 | ················if (options.Utf8Encoding) |
| 656 | ····················radioUtf8Encoding.Checked = true; |
| 657 | ················else |
| 658 | ····················radioDefaultEncoding.Checked = true; |
| 659 | ················if (project.Kind == "{E24C65DC-7377-472b-9ABA-BC803B73C61A}") |
| 660 | ····················this.chkActivateEnhancer.Enabled = false; |
| 661 | |
| 662 | ················CheckEnabledStateForLoadProviderButton(); |
| 663 | ············} |
| 664 | ············catch (Exception ex) |
| 665 | ············{ |
| 666 | #if !DEBUG |
| 667 | ················MessageBox.Show(ex.Message, "NDO Configuration"); |
| 668 | #else |
| 669 | ················MessageBox.Show(ex.ToString(), "NDO Configuration"); |
| 670 | #endif |
| 671 | ············} |
| 672 | ········} |
| 673 | |
| 674 | ········private void btnPresetLibrary_Click(object sender, System.EventArgs e) |
| 675 | ········{ |
| 676 | //············ConfigurationOptions options = new ConfigurationOptions( project ); |
| 677 | ············try |
| 678 | ············{ |
| 679 | ················EnableCheckBoxes(); |
| 680 | |
| 681 | ················this.chkVerboseMode.Checked = false; |
| 682 | ················this.chkActivateAddIn.Checked = true; |
| 683 | ················this.chkActivateEnhancer.Checked = true; |
| 684 | ················this.chkMappingNew.Checked = false; |
| 685 | ················this.chkChangeEvents.Checked = false; |
| 686 | ················this.chkIncludeTypecodes.Checked = false; |
| 687 | ················this.chkGenerateFkConstraints.Checked = false; |
| 688 | ················this.chkDropExistingElements.Checked = false; |
| 689 | ················this.chkUseTimeStamps.Checked = false;···· |
| 690 | ················this.txtDbOwner.Text = ""; |
| 691 | ················this.chkGenerateSQLScript.Checked = false; |
| 692 | ················this.txtSchemaVersion.Text = ""; |
| 693 | ············} |
| 694 | ············catch (Exception ex) |
| 695 | ············{ |
| 696 | ················ShowError(ex); |
| 697 | ············} |
| 698 | ········} |
| 699 | |
| 700 | |
| 701 | ········private void btnOK_Click(object sender, System.EventArgs e) |
| 702 | ········{ |
| 703 | ············try |
| 704 | ············{ |
| 705 | ················ConfigurationOptions options = new ConfigurationOptions( project ); |
| 706 | |
| 707 | ················string connType = options.SQLScriptLanguage; |
| 708 | ················string connName = options.DefaultConnection; |
| 709 | ················WriteBack(options); |
| 710 | ················if (options.SQLScriptLanguage != connType || options.DefaultConnection != connName) |
| 711 | ················{ |
| 712 | ····················string mappingFileName = this.project.MappingFilePath(); |
| 713 | ····················if (mappingFileName != null) |
| 714 | ····················{ |
| 715 | ························NDOMapping mapping = new NDOMapping(mappingFileName); |
| 716 | ························bool connectionExists = false; |
| 717 | ························foreach (Connection conn in mapping.Connections) |
| 718 | ························{ |
| 719 | ····························if (conn.Type == options.SQLScriptLanguage && conn.Name == options.DefaultConnection) |
| 720 | ····························{ |
| 721 | ································connectionExists = true; |
| 722 | ································break; |
| 723 | ····························} |
| 724 | ························} |
| 725 | ························if (!connectionExists) |
| 726 | ························{ |
| 727 | ····························if (MessageBox.Show("The database connection settings have been changed. Should NDO change the connection settings in the mapping file " + Path.GetFileName(mappingFileName) + " too?", "NDO Configuration", MessageBoxButtons.YesNo) == DialogResult.Yes) |
| 728 | ····························{ |
| 729 | ································Connection conn = null; |
| 730 | ································if (mapping.Connections.Count() == 1) |
| 731 | ································{ |
| 732 | ····································conn = (Connection)mapping.Connections.FirstOrDefault(); |
| 733 | ································} |
| 734 | ································else |
| 735 | ································{ |
| 736 | ····································conn = mapping.NewConnection(String.Empty, String.Empty); |
| 737 | ····································MessageBox.Show("Added a connection with the ID " + conn.ID, "NDO Configuration"); |
| 738 | ································} |
| 739 | ································conn.Type = options.SQLScriptLanguage; |
| 740 | ································conn.Name = options.DefaultConnection; |
| 741 | ································mapping.Save(); |
| 742 | ····························} |
| 743 | ························} |
| 744 | ····················} |
| 745 | ················} |
| 746 | |
| 747 | ················if ( options.EnableAddIn ) |
| 748 | ················{ |
| 749 | ····················GeneratePackageReference(); |
| 750 | ················} |
| 751 | |
| 752 | options. Save( this. projectDescription ) ; |
| 753 | ············} |
| 754 | ············catch (Exception ex) |
| 755 | ············{ |
| 756 | #if DEBUG |
| 757 | ················MessageBox.Show( "The following error occured while saving your options: " + ex.ToString(), "NDO Add-in" ); |
| 758 | #else |
| 759 | ················MessageBox.Show("The following error occured while saving your options: " + ex.Message, "NDO Add-in"); |
| 760 | #endif |
| 761 | ············} |
| 762 | ········} |
| 763 | |
| 764 | |
| 765 | ········void GeneratePackageReference() |
| 766 | ········{ |
| 767 | ············try |
| 768 | ············{ |
| 769 | ················IComponentModel componentModel; |
| 770 | ················var installerService = GetInstallerService( out componentModel ); |
| 771 | |
| 772 | ················if (!installerService.IsPackageInstalled( this.project, "ndo.dll" )) |
| 773 | ················{ |
| 774 | ····················var installer = componentModel.GetService<IVsPackageInstaller>(); |
| 775 | ····················installer.InstallPackage( null, this.project, "ndo.dll", (string)null, false ); |
| 776 | ················} |
| 777 | ············} |
| 778 | ············catch (Exception ex) |
| 779 | ············{ |
| 780 | ················MessageBox.Show( "Error while installing the ndo.dll package: " + ex.ToString() ); |
| 781 | ············} |
| 782 | ········} |
| 783 | |
| 784 | ········private static IVsPackageInstallerServices GetInstallerService( out IComponentModel componentModel ) |
| 785 | ········{ |
| 786 | ············componentModel = (IComponentModel)Package.GetGlobalService( typeof( SComponentModel ) ); |
| 787 | ············var installerService = componentModel.GetService<IVsPackageInstallerServices>(); |
| 788 | ············return installerService; |
| 789 | ········} |
| 790 | |
| 791 | ········void ShowError(Exception ex) |
| 792 | ········{ |
| 793 | ············MessageBox.Show("The following error occured: " + ex.Message, "NDO Add-in"); |
| 794 | ········} |
| 795 | |
| 796 | ········private void btnConnString_Click(object sender, System.EventArgs e) |
| 797 | ········{ |
| 798 | ············try |
| 799 | ············{ |
| 800 | ················string connType = cbSqlDialect.Text; |
| 801 | ················if (connType == string.Empty) |
| 802 | ····················connType = "SqlServer"; |
| 803 | ················var provider = NdoUIProviderFactory.Instance[connType]; |
| 804 | ················if (provider == null) |
| 805 | ················{ |
| 806 | ····················MessageBox.Show("Can't find a NDO UI provider for the sql dialect " + connType); |
| 807 | ····················return; |
| 808 | ················} |
| 809 | |
| 810 | ················string temp = this.txtConnectionString.Text; |
| 811 | ················NdoDialogResult r = provider.ShowConnectionDialog(ref temp); |
| 812 | ················if (r == NdoDialogResult.Cancel) |
| 813 | ····················return; |
| 814 | ················this.txtConnectionString.Text = temp; |
| 815 | ············} |
| 816 | ············catch (Exception ex) |
| 817 | ············{ |
| 818 | ················ShowError(ex); |
| 819 | ············} |
| 820 | ········} |
| 821 | |
| 822 | |
| 823 | ········private void chkGenerateSQLScript_CheckedChanged(object sender, System.EventArgs e) |
| 824 | ········{ |
| 825 | ············bool genSql = this.chkGenerateSQLScript.Checked; |
| 826 | |
| 827 | ············this.cbSqlDialect.Enabled = genSql; |
| 828 | ············this.chkIncludeTypecodes.Enabled = genSql; |
| 829 | ············this.chkDropExistingElements.Enabled = genSql; |
| 830 | ············this.chkGenerateFkConstraints.Enabled = genSql; |
| 831 | ············this.radioUtf8Encoding.Enabled = genSql; |
| 832 | ············this.radioDefaultEncoding.Enabled = genSql; |
| 833 | ········} |
| 834 | |
| 835 | ········private void EnableCheckBoxes() |
| 836 | ········{ |
| 837 | ············foreach(Control c in this.Controls) |
| 838 | ············{ |
| 839 | ················CheckBox cb = c as CheckBox; |
| 840 | ················if (c == null) |
| 841 | ····················continue; |
| 842 | ················c.Enabled = true; |
| 843 | ············} |
| 844 | ············if (this.project.Kind == "{E24C65DC-7377-472b-9ABA-BC803B73C61A}") |
| 845 | ················this.chkActivateEnhancer.Enabled = false; |
| 846 | ········} |
| 847 | |
| 848 | ········private void btnPresetApp_Click(object sender, System.EventArgs e) |
| 849 | ········{ |
| 850 | ············try |
| 851 | ············{ |
| 852 | ················EnableCheckBoxes(); |
| 853 | ················this.chkVerboseMode.Checked = false; |
| 854 | ················this.chkActivateAddIn.Checked = true; |
| 855 | ················this.chkActivateEnhancer.Checked = false; |
| 856 | ················this.chkMappingNew.Checked = false; |
| 857 | ················this.chkGenerateSQLScript.Checked = true; |
| 858 | ················this.chkChangeEvents.Checked = false; |
| 859 | ················this.chkIncludeTypecodes.Checked = false; |
| 860 | ················this.chkDropExistingElements.Checked = false; |
| 861 | ················this.chkGenerateFkConstraints.Checked = false; |
| 862 | ················this.txtConnectionString.Text = ""; |
| 863 | ················this.chkUseTimeStamps.Checked = false; |
| 864 | ················this.txtDbOwner.Text = ""; |
| 865 | ················this.txtSchemaVersion.Text = "1.0"; |
| 866 | ················if (this.txtConnectionString.Text == string.Empty) |
| 867 | ····················this.btnConnString_Click(null, null); |
| 868 | ············} |
| 869 | ············catch (Exception ex) |
| 870 | ············{ |
| 871 | ················ShowError(ex); |
| 872 | ············} |
| 873 | ········} |
| 874 | |
| 875 | //········private void MakeNode(string name, object value, XmlNode parentNode, XmlDocument doc) |
| 876 | //········{ |
| 877 | //············XmlElement el = doc.CreateElement(name); |
| 878 | //············parentNode.AppendChild(el); |
| 879 | //············if (value != null) |
| 880 | //················el.InnerText = value.ToString(); |
| 881 | //········} |
| 882 | |
| 883 | ········void WriteBack(ConfigurationOptions options) |
| 884 | ········{ |
| 885 | ············options.EnableAddIn = chkActivateAddIn.Checked; |
| 886 | ············options.EnableEnhancer = chkActivateEnhancer.Checked; |
| 887 | ············options.IncludeTypecodes = chkIncludeTypecodes.Checked; |
| 888 | ············options.GenerateConstraints = chkGenerateFkConstraints.Checked; |
| 889 | ············options.DropExistingElements = chkDropExistingElements.Checked; |
| 890 | ············options.VerboseMode = chkVerboseMode.Checked; |
| 891 | ············options.NewMapping = chkMappingNew.Checked; |
| 892 | ············options.GenerateSQL = chkGenerateSQLScript.Checked; |
| 893 | ············options.DefaultConnection = txtConnectionString.Text; |
| 894 | ············options.TargetMappingFileName = txtTargetMappingFileName.Text; |
| 895 | ············options.GenerateChangeEvents = chkChangeEvents.Checked; |
| 896 | ············options.UseTimeStamps = chkUseTimeStamps.Checked; |
| 897 | ············options.SQLScriptLanguage = this.cbSqlDialect.Text; |
| 898 | ············options.DatabaseOwner = this.txtDbOwner.Text; |
| 899 | ············options.Utf8Encoding = this.radioUtf8Encoding.Checked; |
| 900 | ············options.SchemaVersion = this.txtSchemaVersion.Text; |
| 901 | ········} |
| 902 | |
| 903 | ········private void btnSaveAs_Click(object sender, System.EventArgs e) |
| 904 | ········{ |
| 905 | ············try |
| 906 | ············{ |
| 907 | ················string projDir = Path.GetDirectoryName(project.FullName); |
| 908 | ················SaveFileDialog sfd = new SaveFileDialog(); |
| 909 | ················sfd.CheckFileExists = false; |
| 910 | ················sfd.DefaultExt = "xml"; |
| 911 | ················sfd.Filter = "NDO Configuration Files (*.ndoproj)|*.ndoproj"; |
| 912 | ················sfd.FileName = "EnhancerParameters.ndoproj"; |
| 913 | ················sfd.InitialDirectory = projDir; |
| 914 | ················if (sfd.ShowDialog(this) != DialogResult.OK) |
| 915 | ····················return; |
| 916 | |
| 917 | ················ConfigurationOptions options = new ConfigurationOptions(project);················ |
| 918 | ················WriteBack(options); |
| 919 | ················options.SaveAs(sfd.FileName, this.projectDescription); |
| 920 | ············} |
| 921 | ············catch (Exception ex) |
| 922 | ············{ |
| 923 | ················ShowError(ex); |
| 924 | ············}········ |
| 925 | ········} |
| 926 | |
| 927 | ········private void cbSqlDialect_SelectedIndexChanged(object sender, System.EventArgs e) |
| 928 | ········{ |
| 929 | ············this.txtConnectionString.Text = string.Empty; |
| 930 | ············CheckEnabledStateForLoadProviderButton(); |
| 931 | ········} |
| 932 | |
| 933 | ········private void btnNewDatabase_Click(object sender, System.EventArgs e) |
| 934 | ········{ |
| 935 | ············string connType = cbSqlDialect.Text; |
| 936 | ············if (connType == string.Empty) |
| 937 | ················connType = "SqlServer"; |
| 938 | ············IDbUISupport provider = NdoUIProviderFactory.Instance[connType]; |
| 939 | ············if (provider == null) |
| 940 | ············{ |
| 941 | ················MessageBox.Show("Can't find a NDO UI provider for the sql dialect " + connType); |
| 942 | ················return; |
| 943 | ············} |
| 944 | ············object necessaryData = null; |
| 945 | ············try |
| 946 | ············{ |
| 947 | ················if (provider.ShowCreateDbDialog(ref necessaryData) == NdoDialogResult.Cancel) |
| 948 | ····················return; |
| 949 | ················this.txtConnectionString.Text = provider.CreateDatabase(necessaryData); |
| 950 | ············} |
| 951 | ············catch (Exception ex) |
| 952 | ············{ |
| 953 | #if !DEBUG |
| 954 | ················MessageBox.Show("Can't construct the database: " + ex.Message); |
| 955 | #else |
| 956 | ················MessageBox.Show("Can't construct the database: " + ex.ToString()); |
| 957 | #endif |
| 958 | ············} |
| 959 | ········} |
| 960 | |
| 961 | ········private void chlbAssemblies_ItemCheck( object sender, ItemCheckEventArgs e ) |
| 962 | ········{ |
| 963 | ············this.references[e.Index].CheckState = e.NewValue; |
| 964 | ········} |
| 965 | |
| 966 | ········private void btnInstallProvider_Click( object sender, EventArgs e ) |
| 967 | ········{ |
| 968 | ············try |
| 969 | ············{ |
| 970 | ················string providerName = this.cbSqlDialect.Text; |
| 971 | |
| 972 | ················if (string.IsNullOrEmpty( providerName )) |
| 973 | ················{ |
| 974 | ····················MessageBox.Show( "Please choose a provider" ); |
| 975 | ····················return; |
| 976 | ················} |
| 977 | |
| 978 | ················IComponentModel componentModel; |
| 979 | ················var installerService = GetInstallerService( out componentModel ); |
| 980 | |
| 981 | ················string packageName = $"ndo.{providerName.ToLower()}"; |
| 982 | ················if (!installerService.IsPackageInstalled( this.project, packageName )) |
| 983 | ················{ |
| 984 | ····················var installer = componentModel.GetService<IVsPackageInstaller>(); |
| 985 | ····················installer.InstallPackage( null, this.project, packageName, (string)null, false ); |
| 986 | ················} |
| 987 | |
| 988 | ················this.btnInstallProvider.Enabled = false; |
| 989 | ············} |
| 990 | ············catch (Exception ex) |
| 991 | ············{ |
| 992 | ················MessageBox.Show( "Error while installing the ndo.dll package: " + ex.ToString() ); |
| 993 | ············} |
| 994 | ········} |
| 995 | ····} |
| 996 | } |
| 997 | |
| 998 | #pragma warning restore VSTHRD010 // Invoke single-threaded types on Main thread |
| 999 |
New Commit (90ec57c)
| 1 | // |
| 2 | // Copyright (c) 2002-2019 Mirko Matytschak |
| 3 | // (www.netdataobjects.de) |
| 4 | // |
| 5 | // Author: Mirko Matytschak |
| 6 | // |
| 7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated |
| 8 | // documentation files (the "Software"), to deal in the Software without restriction, including without limitation |
| 9 | // the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the |
| 10 | // Software, and to permit persons to whom the Software is furnished to do so, subject to the following |
| 11 | // conditions: |
| 12 | |
| 13 | // The above copyright notice and this permission notice shall be included in all copies or substantial portions |
| 14 | // of the Software. |
| 15 | // |
| 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED |
| 17 | // TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| 18 | // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF |
| 19 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
| 20 | // DEALINGS IN THE SOFTWARE. |
| 21 | |
| 22 | |
| 23 | using System; |
| 24 | using System.Linq; |
| 25 | using System.IO; |
| 26 | using System.Windows.Forms; |
| 27 | using MessageBox = System.Windows.Forms.MessageBox; |
| 28 | using Project = EnvDTE.Project; |
| 29 | using System.Diagnostics; |
| 30 | using Microsoft.VisualStudio.ComponentModelHost; |
| 31 | using NuGet.VisualStudio; |
| 32 | using NDO.UISupport; |
| 33 | |
| 34 | #pragma warning disable VSTHRD010 // Invoke single-threaded types on Main thread |
| 35 | |
| 36 | namespace NDOVsPackage |
| 37 | { |
| 38 | ····/// <summary> |
| 39 | ····/// Summary description for ConfigurationDialog. |
| 40 | ····/// </summary> |
| 41 | ····internal class ConfigurationDialog : System.Windows.Forms.Form |
| 42 | ····{ |
| 43 | ········private System.ComponentModel.IContainer components; |
| 44 | |
| 45 | ········private Project project; |
| 46 | ········private System.Windows.Forms.ToolTip toolTip1; |
| 47 | ········private TabControl tabControl; |
| 48 | ········private TabPage tabPageGeneral; |
| 49 | ········private TextBox txtTargetMappingFileName; |
| 50 | ········private Label label1; |
| 51 | ········private CheckBox chkVerboseMode; |
| 52 | ········private TextBox txtSchemaVersion; |
| 53 | ········private Label label5; |
| 54 | ········private Button btnNewDatabase; |
| 55 | ········private Button btnSaveAs; |
| 56 | ········private Button btnPresetApp; |
| 57 | ········private TextBox txtDbOwner; |
| 58 | ········private TextBox txtConnectionString; |
| 59 | ········private Label label3; |
| 60 | ········private GroupBox groupBox1; |
| 61 | ········private CheckBox chkDropExistingElements; |
| 62 | ········private CheckBox chkGenerateFkConstraints; |
| 63 | ········private CheckBox chkIncludeTypecodes; |
| 64 | ········private RadioButton radioDefaultEncoding; |
| 65 | ········private RadioButton radioUtf8Encoding; |
| 66 | ········private Label label4; |
| 67 | ········private ComboBox cbSqlDialect; |
| 68 | ········private CheckBox chkGenerateSQLScript; |
| 69 | ········private CheckBox chkUseTimeStamps; |
| 70 | ········private CheckBox chkChangeEvents; |
| 71 | ········private Label label2; |
| 72 | ········private Button btnConnString; |
| 73 | ········private Button btnOK; |
| 74 | ········private Button btnPresetLibrary; |
| 75 | ········private Button btnCancel; |
| 76 | ········private CheckBox chkMappingNew; |
| 77 | ········private CheckBox chkActivateEnhancer; |
| 78 | ········private CheckBox chkActivateAddIn; |
| 79 | ········private TabPage tabPageAssemblies; |
| 80 | ········private Label label6; |
| 81 | ········private CheckedListBox chlbAssemblies; |
| 82 | ········private ProjectDescription projectDescription; |
| 83 | ········private Button btnInstallProvider; |
| 84 | ········private NDOReference[] references; |
| 85 | |
| 86 | ········public ConfigurationDialog(Project project, ProjectDescription projectDescription) |
| 87 | ········{ |
| 88 | ············try |
| 89 | ············{ |
| 90 | ················this.project = project; |
| 91 | ················this.projectDescription = projectDescription; |
| 92 | ················this.projectDescription.BuildReferences(); |
| 93 | ················this.projectDescription.FixDllState(); |
| 94 | ················InitializeComponent(); |
| 95 | ················var lbAssemblies = (ListBox)this.chlbAssemblies; |
| 96 | ················this.references = projectDescription.References.Values.ToArray(); |
| 97 | ················lbAssemblies.DataSource = this.references; |
| 98 | ················lbAssemblies.DisplayMember = nameof( NDOReference.Name ); |
| 99 | ················lbAssemblies.ValueMember = nameof( NDOReference.CheckState ); |
| 100 | ················int i = 0; |
| 101 | ················foreach (var item in this.references) |
| 102 | ················{ |
| 103 | ····················this.chlbAssemblies.SetItemCheckState( i++, item.CheckState ); |
| 104 | ················} |
| 105 | ············} |
| 106 | ············catch (Exception ex) |
| 107 | ············{ |
| 108 | ················Debug.WriteLine( ex.ToString() ); |
| 109 | ············} |
| 110 | ········} |
| 111 | |
| 112 | ········void CheckEnabledStateForLoadProviderButton() |
| 113 | ········{ |
| 114 | ············string providerName = this.cbSqlDialect.Text; |
| 115 | |
| 116 | ············if (string.IsNullOrEmpty( providerName )) |
| 117 | ············{ |
| 118 | ················this.btnInstallProvider.Enabled = false; |
| 119 | ················return; |
| 120 | ············} |
| 121 | |
| 122 | ············if (IsProviderInstalled(providerName)) |
| 123 | ············{ |
| 124 | ················this.btnInstallProvider.Enabled = false; |
| 125 | ················return; |
| 126 | ············} |
| 127 | |
| 128 | ············this.btnInstallProvider.Enabled = true; |
| 129 | ········} |
| 130 | |
| 131 | ········bool IsProviderInstalled(string providerName) |
| 132 | ········{ |
| 133 | ············IComponentModel componentModel; |
| 134 | ············var installerService = GetInstallerService( out componentModel ); |
| 135 | |
| 136 | ············string packageName = $"ndo.{providerName.ToLower()}"; |
| 137 | ············return installerService.IsPackageInstalled( this.project, packageName ); |
| 138 | ········} |
| 139 | |
| 140 | ········/// <summary> |
| 141 | ········/// Clean up any resources being used. |
| 142 | ········/// </summary> |
| 143 | ········protected override void Dispose( bool disposing ) |
| 144 | ········{ |
| 145 | ············if( disposing ) |
| 146 | ············{ |
| 147 | ················if(components != null) |
| 148 | ················{ |
| 149 | ····················components.Dispose(); |
| 150 | ················} |
| 151 | ············} |
| 152 | ············base.Dispose( disposing ); |
| 153 | ········} |
| 154 | |
| 155 | ········#region Windows Form Designer generated code |
| 156 | ········/// <summary> |
| 157 | ········/// Required method for Designer support - do not modify |
| 158 | ········/// the contents of this method with the code editor. |
| 159 | ········/// </summary> |
| 160 | ········private void InitializeComponent() |
| 161 | ········{ |
| 162 | ············this.components = new System.ComponentModel.Container(); |
| 163 | ············System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigurationDialog)); |
| 164 | ············this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); |
| 165 | ············this.chkVerboseMode = new System.Windows.Forms.CheckBox(); |
| 166 | ············this.btnNewDatabase = new System.Windows.Forms.Button(); |
| 167 | ············this.btnSaveAs = new System.Windows.Forms.Button(); |
| 168 | ············this.btnPresetApp = new System.Windows.Forms.Button(); |
| 169 | ············this.txtDbOwner = new System.Windows.Forms.TextBox(); |
| 170 | ············this.txtConnectionString = new System.Windows.Forms.TextBox(); |
| 171 | ············this.chkDropExistingElements = new System.Windows.Forms.CheckBox(); |
| 172 | ············this.chkGenerateFkConstraints = new System.Windows.Forms.CheckBox(); |
| 173 | ············this.chkIncludeTypecodes = new System.Windows.Forms.CheckBox(); |
| 174 | ············this.radioDefaultEncoding = new System.Windows.Forms.RadioButton(); |
| 175 | ············this.radioUtf8Encoding = new System.Windows.Forms.RadioButton(); |
| 176 | ············this.cbSqlDialect = new System.Windows.Forms.ComboBox(); |
| 177 | ············this.chkGenerateSQLScript = new System.Windows.Forms.CheckBox(); |
| 178 | ············this.chkUseTimeStamps = new System.Windows.Forms.CheckBox(); |
| 179 | ············this.chkChangeEvents = new System.Windows.Forms.CheckBox(); |
| 180 | ············this.btnConnString = new System.Windows.Forms.Button(); |
| 181 | ············this.btnPresetLibrary = new System.Windows.Forms.Button(); |
| 182 | ············this.chkMappingNew = new System.Windows.Forms.CheckBox(); |
| 183 | ············this.chkActivateEnhancer = new System.Windows.Forms.CheckBox(); |
| 184 | ············this.chkActivateAddIn = new System.Windows.Forms.CheckBox(); |
| 185 | ············this.tabControl = new System.Windows.Forms.TabControl(); |
| 186 | ············this.tabPageGeneral = new System.Windows.Forms.TabPage(); |
| 187 | ············this.txtTargetMappingFileName = new System.Windows.Forms.TextBox(); |
| 188 | ············this.label1 = new System.Windows.Forms.Label(); |
| 189 | ············this.txtSchemaVersion = new System.Windows.Forms.TextBox(); |
| 190 | ············this.label5 = new System.Windows.Forms.Label(); |
| 191 | ············this.label3 = new System.Windows.Forms.Label(); |
| 192 | ············this.groupBox1 = new System.Windows.Forms.GroupBox(); |
| 193 | ············this.btnInstallProvider = new System.Windows.Forms.Button(); |
| 194 | ············this.label4 = new System.Windows.Forms.Label(); |
| 195 | ············this.label2 = new System.Windows.Forms.Label(); |
| 196 | ············this.tabPageAssemblies = new System.Windows.Forms.TabPage(); |
| 197 | ············this.label6 = new System.Windows.Forms.Label(); |
| 198 | ············this.chlbAssemblies = new System.Windows.Forms.CheckedListBox(); |
| 199 | ············this.btnOK = new System.Windows.Forms.Button(); |
| 200 | ············this.btnCancel = new System.Windows.Forms.Button(); |
| 201 | ············this.tabControl.SuspendLayout(); |
| 202 | ············this.tabPageGeneral.SuspendLayout(); |
| 203 | ············this.groupBox1.SuspendLayout(); |
| 204 | ············this.tabPageAssemblies.SuspendLayout(); |
| 205 | ············this.SuspendLayout(); |
| 206 | ············// |
| 207 | ············// chkVerboseMode |
| 208 | ············// |
| 209 | ············this.chkVerboseMode.Location = new System.Drawing.Point(21, 72); |
| 210 | ············this.chkVerboseMode.Name = "chkVerboseMode"; |
| 211 | ············this.chkVerboseMode.Size = new System.Drawing.Size(238, 21); |
| 212 | ············this.chkVerboseMode.TabIndex = 51; |
| 213 | ············this.chkVerboseMode.Text = "Add-in Verbose Mode"; |
| 214 | ············this.toolTip1.SetToolTip(this.chkVerboseMode, "Causes the Add-in and the Enhancer to show more information for debugging purpose" + |
| 215 | ········"s."); |
| 216 | ············// |
| 217 | ············// btnNewDatabase |
| 218 | ············// |
| 219 | ············this.btnNewDatabase.Location = new System.Drawing.Point(583, 313); |
| 220 | ············this.btnNewDatabase.Name = "btnNewDatabase"; |
| 221 | ············this.btnNewDatabase.Size = new System.Drawing.Size(42, 21); |
| 222 | ············this.btnNewDatabase.TabIndex = 48; |
| 223 | ············this.btnNewDatabase.Text = "New"; |
| 224 | ············this.toolTip1.SetToolTip(this.btnNewDatabase, "Create new database"); |
| 225 | ············this.btnNewDatabase.Click += new System.EventHandler(this.btnNewDatabase_Click); |
| 226 | ············// |
| 227 | ············// btnSaveAs |
| 228 | ············// |
| 229 | ············this.btnSaveAs.DialogResult = System.Windows.Forms.DialogResult.OK; |
| 230 | ············this.btnSaveAs.Location = new System.Drawing.Point(249, 385); |
| 231 | ············this.btnSaveAs.Name = "btnSaveAs"; |
| 232 | ············this.btnSaveAs.Size = new System.Drawing.Size(100, 39); |
| 233 | ············this.btnSaveAs.TabIndex = 47; |
| 234 | ············this.btnSaveAs.Text = "Save as..."; |
| 235 | ············this.toolTip1.SetToolTip(this.btnSaveAs, "Save the options to be used in unattended builds with the stand-alone enhancer."); |
| 236 | ············this.btnSaveAs.Click += new System.EventHandler(this.btnSaveAs_Click); |
| 237 | ············// |
| 238 | ············// btnPresetApp |
| 239 | ············// |
| 240 | ············this.btnPresetApp.Location = new System.Drawing.Point(135, 385); |
| 241 | ············this.btnPresetApp.Name = "btnPresetApp"; |
| 242 | ············this.btnPresetApp.Size = new System.Drawing.Size(100, 39); |
| 243 | ············this.btnPresetApp.TabIndex = 46; |
| 244 | ············this.btnPresetApp.Text = "Preset for Application"; |
| 245 | ············this.toolTip1.SetToolTip(this.btnPresetApp, "Selects all settings used for applications which don\'t contain but reference pers" + |
| 246 | ········"istent types."); |
| 247 | ············this.btnPresetApp.Click += new System.EventHandler(this.btnPresetApp_Click); |
| 248 | ············// |
| 249 | ············// txtDbOwner |
| 250 | ············// |
| 251 | ············this.txtDbOwner.Location = new System.Drawing.Point(145, 126); |
| 252 | ············this.txtDbOwner.Name = "txtDbOwner"; |
| 253 | ············this.txtDbOwner.Size = new System.Drawing.Size(160, 20); |
| 254 | ············this.txtDbOwner.TabIndex = 45; |
| 255 | ············this.toolTip1.SetToolTip(this.txtDbOwner, "Enter an owner name, if you like your tables to be written like owner.tablename."); |
| 256 | ············// |
| 257 | ············// txtConnectionString |
| 258 | ············// |
| 259 | ············this.txtConnectionString.Location = new System.Drawing.Point(18, 313); |
| 260 | ············this.txtConnectionString.Name = "txtConnectionString"; |
| 261 | ············this.txtConnectionString.Size = new System.Drawing.Size(514, 20); |
| 262 | ············this.txtConnectionString.TabIndex = 39; |
| 263 | ············this.toolTip1.SetToolTip(this.txtConnectionString, "This string will be copied into the mapping file, if there doesn\'t exist a valid " + |
| 264 | ········"connection string. Otherwise it will be ignored."); |
| 265 | ············// |
| 266 | ············// chkDropExistingElements |
| 267 | ············// |
| 268 | ············this.chkDropExistingElements.Location = new System.Drawing.Point(13, 202); |
| 269 | ············this.chkDropExistingElements.Name = "chkDropExistingElements"; |
| 270 | ············this.chkDropExistingElements.Size = new System.Drawing.Size(235, 21); |
| 271 | ············this.chkDropExistingElements.TabIndex = 24; |
| 272 | ············this.chkDropExistingElements.Text = "Insert Drop Statements in the Script"; |
| 273 | ············this.toolTip1.SetToolTip(this.chkDropExistingElements, "If checked, NDO generates instructions to remove existing tables and constraints." + |
| 274 | ········""); |
| 275 | ············// |
| 276 | ············// chkGenerateFkConstraints |
| 277 | ············// |
| 278 | ············this.chkGenerateFkConstraints.Location = new System.Drawing.Point(13, 152); |
| 279 | ············this.chkGenerateFkConstraints.Name = "chkGenerateFkConstraints"; |
| 280 | ············this.chkGenerateFkConstraints.Size = new System.Drawing.Size(235, 21); |
| 281 | ············this.chkGenerateFkConstraints.TabIndex = 23; |
| 282 | ············this.chkGenerateFkConstraints.Text = "Generate Foreign Key Constraints"; |
| 283 | ············this.toolTip1.SetToolTip(this.chkGenerateFkConstraints, "If checked, NDO generates foreign key constraints for the relations in the databa" + |
| 284 | ········"se."); |
| 285 | ············// |
| 286 | ············// chkIncludeTypecodes |
| 287 | ············// |
| 288 | ············this.chkIncludeTypecodes.Location = new System.Drawing.Point(13, 177); |
| 289 | ············this.chkIncludeTypecodes.Name = "chkIncludeTypecodes"; |
| 290 | ············this.chkIncludeTypecodes.Size = new System.Drawing.Size(235, 21); |
| 291 | ············this.chkIncludeTypecodes.TabIndex = 22; |
| 292 | ············this.chkIncludeTypecodes.Text = "Include Typecodes in the Script"; |
| 293 | ············this.toolTip1.SetToolTip(this.chkIncludeTypecodes, "If checked, NDO generates instructions to build an additional table with the type" + |
| 294 | ········" code information."); |
| 295 | ············// |
| 296 | ············// radioDefaultEncoding |
| 297 | ············// |
| 298 | ············this.radioDefaultEncoding.Location = new System.Drawing.Point(13, 121); |
| 299 | ············this.radioDefaultEncoding.Name = "radioDefaultEncoding"; |
| 300 | ············this.radioDefaultEncoding.Size = new System.Drawing.Size(140, 20); |
| 301 | ············this.radioDefaultEncoding.TabIndex = 21; |
| 302 | ············this.radioDefaultEncoding.Text = "Default Encoding"; |
| 303 | ············this.toolTip1.SetToolTip(this.radioDefaultEncoding, "Check this option, if the script files should use windows encoding."); |
| 304 | ············// |
| 305 | ············// radioUtf8Encoding |
| 306 | ············// |
| 307 | ············this.radioUtf8Encoding.Checked = true; |
| 308 | ············this.radioUtf8Encoding.Location = new System.Drawing.Point(13, 99); |
| 309 | ············this.radioUtf8Encoding.Name = "radioUtf8Encoding"; |
| 310 | ············this.radioUtf8Encoding.Size = new System.Drawing.Size(140, 21); |
| 311 | ············this.radioUtf8Encoding.TabIndex = 20; |
| 312 | ············this.radioUtf8Encoding.TabStop = true; |
| 313 | ············this.radioUtf8Encoding.Text = "UTF-8 Encoding"; |
| 314 | ············this.toolTip1.SetToolTip(this.radioUtf8Encoding, "Check this option, if the script files should be UTF-8 encoded."); |
| 315 | ············// |
| 316 | ············// cbSqlDialect |
| 317 | ············// |
| 318 | ············this.cbSqlDialect.Location = new System.Drawing.Point(13, 70); |
| 319 | ············this.cbSqlDialect.Name = "cbSqlDialect"; |
| 320 | ············this.cbSqlDialect.Size = new System.Drawing.Size(220, 21); |
| 321 | ············this.cbSqlDialect.TabIndex = 18; |
| 322 | ············this.toolTip1.SetToolTip(this.cbSqlDialect, "Choose an available NDO provider."); |
| 323 | ············this.cbSqlDialect.SelectedIndexChanged += new System.EventHandler(this.cbSqlDialect_SelectedIndexChanged); |
| 324 | ············// |
| 325 | ············// chkGenerateSQLScript |
| 326 | ············// |
| 327 | ············this.chkGenerateSQLScript.Location = new System.Drawing.Point(13, 21); |
| 328 | ············this.chkGenerateSQLScript.Name = "chkGenerateSQLScript"; |
| 329 | ············this.chkGenerateSQLScript.Size = new System.Drawing.Size(187, 21); |
| 330 | ············this.chkGenerateSQLScript.TabIndex = 13; |
| 331 | ············this.chkGenerateSQLScript.Text = "Generate SQL Script"; |
| 332 | ············this.toolTip1.SetToolTip(this.chkGenerateSQLScript, "If checked, NDO will create a script with DDL code, which can be used to construc" + |
| 333 | ········"t a database structure."); |
| 334 | ············this.chkGenerateSQLScript.CheckedChanged += new System.EventHandler(this.chkGenerateSQLScript_CheckedChanged); |
| 335 | ············// |
| 336 | ············// chkUseTimeStamps |
| 337 | ············// |
| 338 | ············this.chkUseTimeStamps.Location = new System.Drawing.Point(21, 153); |
| 339 | ············this.chkUseTimeStamps.Name = "chkUseTimeStamps"; |
| 340 | ············this.chkUseTimeStamps.Size = new System.Drawing.Size(302, 20); |
| 341 | ············this.chkUseTimeStamps.TabIndex = 42; |
| 342 | ············this.chkUseTimeStamps.Text = "Generate Time Stamp Columns for each class"; |
| 343 | ············this.toolTip1.SetToolTip(this.chkUseTimeStamps, "Check this option, if all tables should be protected by collistion detection."); |
| 344 | ············// |
| 345 | ············// chkChangeEvents |
| 346 | ············// |
| 347 | ············this.chkChangeEvents.Location = new System.Drawing.Point(21, 179); |
| 348 | ············this.chkChangeEvents.Name = "chkChangeEvents"; |
| 349 | ············this.chkChangeEvents.Size = new System.Drawing.Size(302, 21); |
| 350 | ············this.chkChangeEvents.TabIndex = 41; |
| 351 | ············this.chkChangeEvents.Text = "Generate change events with Add Accessor"; |
| 352 | ············this.toolTip1.SetToolTip(this.chkChangeEvents, "Check this option, if you intend to bind the UI directly to the accessor properti" + |
| 353 | ········"es of your persistent classes."); |
| 354 | ············// |
| 355 | ············// btnConnString |
| 356 | ············// |
| 357 | ············this.btnConnString.Location = new System.Drawing.Point(538, 313); |
| 358 | ············this.btnConnString.Name = "btnConnString"; |
| 359 | ············this.btnConnString.Size = new System.Drawing.Size(42, 21); |
| 360 | ············this.btnConnString.TabIndex = 38; |
| 361 | ············this.btnConnString.Text = "..."; |
| 362 | ············this.toolTip1.SetToolTip(this.btnConnString, "Enter existing database connection"); |
| 363 | ············this.btnConnString.Click += new System.EventHandler(this.btnConnString_Click); |
| 364 | ············// |
| 365 | ············// btnPresetLibrary |
| 366 | ············// |
| 367 | ············this.btnPresetLibrary.Location = new System.Drawing.Point(21, 385); |
| 368 | ············this.btnPresetLibrary.Name = "btnPresetLibrary"; |
| 369 | ············this.btnPresetLibrary.Size = new System.Drawing.Size(100, 39); |
| 370 | ············this.btnPresetLibrary.TabIndex = 36; |
| 371 | ············this.btnPresetLibrary.Text = "Preset for Library"; |
| 372 | ············this.toolTip1.SetToolTip(this.btnPresetLibrary, "Selects all settings necessary for projects containing persistent types."); |
| 373 | ············this.btnPresetLibrary.Click += new System.EventHandler(this.btnPresetLibrary_Click); |
| 374 | ············// |
| 375 | ············// chkMappingNew |
| 376 | ············// |
| 377 | ············this.chkMappingNew.Location = new System.Drawing.Point(21, 99); |
| 378 | ············this.chkMappingNew.Name = "chkMappingNew"; |
| 379 | ············this.chkMappingNew.Size = new System.Drawing.Size(272, 21); |
| 380 | ············this.chkMappingNew.TabIndex = 34; |
| 381 | ············this.chkMappingNew.Text = "Always Generate a new mapping File"; |
| 382 | ············this.toolTip1.SetToolTip(this.chkMappingNew, "Choose this options, if NDO should discard and rebuild all mapping information."); |
| 383 | ············// |
| 384 | ············// chkActivateEnhancer |
| 385 | ············// |
| 386 | ············this.chkActivateEnhancer.Location = new System.Drawing.Point(21, 46); |
| 387 | ············this.chkActivateEnhancer.Name = "chkActivateEnhancer"; |
| 388 | ············this.chkActivateEnhancer.Size = new System.Drawing.Size(188, 20); |
| 389 | ············this.chkActivateEnhancer.TabIndex = 33; |
| 390 | ············this.chkActivateEnhancer.Text = "Activate enhancer"; |
| 391 | ············this.toolTip1.SetToolTip(this.chkActivateEnhancer, "Choose this option, if your project contains persistent types."); |
| 392 | ············// |
| 393 | ············// chkActivateAddIn |
| 394 | ············// |
| 395 | ············this.chkActivateAddIn.Location = new System.Drawing.Point(21, 19); |
| 396 | ············this.chkActivateAddIn.Name = "chkActivateAddIn"; |
| 397 | ············this.chkActivateAddIn.Size = new System.Drawing.Size(188, 21); |
| 398 | ············this.chkActivateAddIn.TabIndex = 32; |
| 399 | ············this.chkActivateAddIn.Text = "Activate NDO AddIn"; |
| 400 | ············this.toolTip1.SetToolTip(this.chkActivateAddIn, "Choose this options, if your project contains or references persistent types."); |
| 401 | ············this.chkActivateAddIn.Click += new System.EventHandler(this.chkActivateAddIn_CheckedChanged); |
| 402 | ············// |
| 403 | ············// tabControl |
| 404 | ············// |
| 405 | ············this.tabControl.Controls.Add(this.tabPageGeneral); |
| 406 | ············this.tabControl.Controls.Add(this.tabPageAssemblies); |
| 407 | ············this.tabControl.Dock = System.Windows.Forms.DockStyle.Top; |
| 408 | ············this.tabControl.Location = new System.Drawing.Point(0, 0); |
| 409 | ············this.tabControl.Name = "tabControl"; |
| 410 | ············this.tabControl.SelectedIndex = 0; |
| 411 | ············this.tabControl.Size = new System.Drawing.Size(661, 374); |
| 412 | ············this.tabControl.TabIndex = 0; |
| 413 | ············// |
| 414 | ············// tabPageGeneral |
| 415 | ············// |
| 416 | ············this.tabPageGeneral.Controls.Add(this.txtTargetMappingFileName); |
| 417 | ············this.tabPageGeneral.Controls.Add(this.label1); |
| 418 | ············this.tabPageGeneral.Controls.Add(this.chkVerboseMode); |
| 419 | ············this.tabPageGeneral.Controls.Add(this.txtSchemaVersion); |
| 420 | ············this.tabPageGeneral.Controls.Add(this.label5); |
| 421 | ············this.tabPageGeneral.Controls.Add(this.btnNewDatabase); |
| 422 | ············this.tabPageGeneral.Controls.Add(this.txtDbOwner); |
| 423 | ············this.tabPageGeneral.Controls.Add(this.txtConnectionString); |
| 424 | ············this.tabPageGeneral.Controls.Add(this.label3); |
| 425 | ············this.tabPageGeneral.Controls.Add(this.groupBox1); |
| 426 | ············this.tabPageGeneral.Controls.Add(this.chkUseTimeStamps); |
| 427 | ············this.tabPageGeneral.Controls.Add(this.chkChangeEvents); |
| 428 | ············this.tabPageGeneral.Controls.Add(this.label2); |
| 429 | ············this.tabPageGeneral.Controls.Add(this.btnConnString); |
| 430 | ············this.tabPageGeneral.Controls.Add(this.chkMappingNew); |
| 431 | ············this.tabPageGeneral.Controls.Add(this.chkActivateEnhancer); |
| 432 | ············this.tabPageGeneral.Controls.Add(this.chkActivateAddIn); |
| 433 | ············this.tabPageGeneral.Location = new System.Drawing.Point(4, 22); |
| 434 | ············this.tabPageGeneral.Name = "tabPageGeneral"; |
| 435 | ············this.tabPageGeneral.Padding = new System.Windows.Forms.Padding(3); |
| 436 | ············this.tabPageGeneral.Size = new System.Drawing.Size(653, 348); |
| 437 | ············this.tabPageGeneral.TabIndex = 0; |
| 438 | ············this.tabPageGeneral.Text = "General"; |
| 439 | ············this.tabPageGeneral.UseVisualStyleBackColor = true; |
| 440 | ············// |
| 441 | ············// txtTargetMappingFileName |
| 442 | ············// |
| 443 | ············this.txtTargetMappingFileName.Location = new System.Drawing.Point(145, 245); |
| 444 | ············this.txtTargetMappingFileName.Name = "txtTargetMappingFileName"; |
| 445 | ············this.txtTargetMappingFileName.Size = new System.Drawing.Size(160, 20); |
| 446 | ············this.txtTargetMappingFileName.TabIndex = 53; |
| 447 | ············// |
| 448 | ············// label1 |
| 449 | ············// |
| 450 | ············this.label1.Location = new System.Drawing.Point(18, 246); |
| 451 | ············this.label1.Name = "label1"; |
| 452 | ············this.label1.Size = new System.Drawing.Size(121, 21); |
| 453 | ············this.label1.TabIndex = 52; |
| 454 | ············this.label1.Text = "Mapping File Name"; |
| 455 | ············// |
| 456 | ············// txtSchemaVersion |
| 457 | ············// |
| 458 | ············this.txtSchemaVersion.Location = new System.Drawing.Point(145, 219); |
| 459 | ············this.txtSchemaVersion.Name = "txtSchemaVersion"; |
| 460 | ············this.txtSchemaVersion.Size = new System.Drawing.Size(160, 20); |
| 461 | ············this.txtSchemaVersion.TabIndex = 50; |
| 462 | ············// |
| 463 | ············// label5 |
| 464 | ············// |
| 465 | ············this.label5.Location = new System.Drawing.Point(18, 220); |
| 466 | ············this.label5.Name = "label5"; |
| 467 | ············this.label5.Size = new System.Drawing.Size(121, 21); |
| 468 | ············this.label5.TabIndex = 49; |
| 469 | ············this.label5.Text = "Schema Version"; |
| 470 | ············// |
| 471 | ············// label3 |
| 472 | ············// |
| 473 | ············this.label3.Location = new System.Drawing.Point(18, 128); |
| 474 | ············this.label3.Name = "label3"; |
| 475 | ············this.label3.Size = new System.Drawing.Size(127, 21); |
| 476 | ············this.label3.TabIndex = 44; |
| 477 | ············this.label3.Text = "Owner / Schema Name"; |
| 478 | ············// |
| 479 | ············// groupBox1 |
| 480 | ············// |
| 481 | ············this.groupBox1.Controls.Add(this.btnInstallProvider); |
| 482 | ············this.groupBox1.Controls.Add(this.chkDropExistingElements); |
| 483 | ············this.groupBox1.Controls.Add(this.chkGenerateFkConstraints); |
| 484 | ············this.groupBox1.Controls.Add(this.chkIncludeTypecodes); |
| 485 | ············this.groupBox1.Controls.Add(this.radioDefaultEncoding); |
| 486 | ············this.groupBox1.Controls.Add(this.radioUtf8Encoding); |
| 487 | ············this.groupBox1.Controls.Add(this.label4); |
| 488 | ············this.groupBox1.Controls.Add(this.cbSqlDialect); |
| 489 | ············this.groupBox1.Controls.Add(this.chkGenerateSQLScript); |
| 490 | ············this.groupBox1.Location = new System.Drawing.Point(343, 21); |
| 491 | ············this.groupBox1.Name = "groupBox1"; |
| 492 | ············this.groupBox1.Size = new System.Drawing.Size(265, 244); |
| 493 | ············this.groupBox1.TabIndex = 43; |
| 494 | ············this.groupBox1.TabStop = false; |
| 495 | ············this.groupBox1.Text = " SQL "; |
| 496 | ············// |
| 497 | ············// btnInstallProvider |
| 498 | ············// |
| 499 | ············this.btnInstallProvider.Location = new System.Drawing.Point(142, 102); |
| 500 | ············this.btnInstallProvider.Name = "btnInstallProvider"; |
| 501 | ············this.btnInstallProvider.Size = new System.Drawing.Size(91, 22); |
| 502 | ············this.btnInstallProvider.TabIndex = 25; |
| 503 | ············this.btnInstallProvider.Text = "Install Provider"; |
| 504 | ············this.btnInstallProvider.UseVisualStyleBackColor = true; |
| 505 | ············this.btnInstallProvider.Click += new System.EventHandler(this.btnInstallProvider_Click); |
| 506 | ············// |
| 507 | ············// label4 |
| 508 | ············// |
| 509 | ············this.label4.Location = new System.Drawing.Point(13, 50); |
| 510 | ············this.label4.Name = "label4"; |
| 511 | ············this.label4.Size = new System.Drawing.Size(200, 17); |
| 512 | ············this.label4.TabIndex = 19; |
| 513 | ············this.label4.Text = "SQL Dialect"; |
| 514 | ············// |
| 515 | ············// label2 |
| 516 | ············// |
| 517 | ············this.label2.Location = new System.Drawing.Point(18, 292); |
| 518 | ············this.label2.Name = "label2"; |
| 519 | ············this.label2.Size = new System.Drawing.Size(360, 21); |
| 520 | ············this.label2.TabIndex = 40; |
| 521 | ············this.label2.Text = "Default Connection String"; |
| 522 | ············// |
| 523 | ············// tabPageAssemblies |
| 524 | ············// |
| 525 | ············this.tabPageAssemblies.Controls.Add(this.label6); |
| 526 | ············this.tabPageAssemblies.Controls.Add(this.chlbAssemblies); |
| 527 | ············this.tabPageAssemblies.Location = new System.Drawing.Point(4, 22); |
| 528 | ············this.tabPageAssemblies.Name = "tabPageAssemblies"; |
| 529 | ············this.tabPageAssemblies.Padding = new System.Windows.Forms.Padding(3); |
| 530 | ············this.tabPageAssemblies.Size = new System.Drawing.Size(653, 348); |
| 531 | ············this.tabPageAssemblies.TabIndex = 1; |
| 532 | ············this.tabPageAssemblies.Text = "Assemblies"; |
| 533 | ············this.tabPageAssemblies.UseVisualStyleBackColor = true; |
| 534 | ············// |
| 535 | ············// label6 |
| 536 | ············// |
| 537 | ············this.label6.AutoSize = true; |
| 538 | ············this.label6.Location = new System.Drawing.Point(10, 12); |
| 539 | ············this.label6.Name = "label6"; |
| 540 | ············this.label6.Size = new System.Drawing.Size(328, 13); |
| 541 | ············this.label6.TabIndex = 1; |
| 542 | ············this.label6.Text = "Choose Assemblies which should be analyzed by the NDOEnhancer"; |
| 543 | ············// |
| 544 | ············// chlbAssemblies |
| 545 | ············// |
| 546 | ············this.chlbAssemblies.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) |
| 547 | ············| System.Windows.Forms.AnchorStyles.Left) |
| 548 | ············| System.Windows.Forms.AnchorStyles.Right))); |
| 549 | ············this.chlbAssemblies.FormattingEnabled = true; |
| 550 | ············this.chlbAssemblies.Location = new System.Drawing.Point(10, 39); |
| 551 | ············this.chlbAssemblies.Name = "chlbAssemblies"; |
| 552 | ············this.chlbAssemblies.Size = new System.Drawing.Size(631, 289); |
| 553 | ············this.chlbAssemblies.TabIndex = 0; |
| 554 | ············this.chlbAssemblies.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.chlbAssemblies_ItemCheck); |
| 555 | ············// |
| 556 | ············// btnOK |
| 557 | ············// |
| 558 | ············this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; |
| 559 | ············this.btnOK.Location = new System.Drawing.Point(363, 385); |
| 560 | ············this.btnOK.Name = "btnOK"; |
| 561 | ············this.btnOK.Size = new System.Drawing.Size(100, 39); |
| 562 | ············this.btnOK.TabIndex = 37; |
| 563 | ············this.btnOK.Text = "OK"; |
| 564 | ············this.btnOK.Click += new System.EventHandler(this.btnOK_Click); |
| 565 | ············// |
| 566 | ············// btnCancel |
| 567 | ············// |
| 568 | ············this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; |
| 569 | ············this.btnCancel.Location = new System.Drawing.Point(477, 385); |
| 570 | ············this.btnCancel.Name = "btnCancel"; |
| 571 | ············this.btnCancel.Size = new System.Drawing.Size(100, 39); |
| 572 | ············this.btnCancel.TabIndex = 35; |
| 573 | ············this.btnCancel.Text = "Cancel"; |
| 574 | ············// |
| 575 | ············// ConfigurationDialog |
| 576 | ············// |
| 577 | ············this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); |
| 578 | ············this.ClientSize = new System.Drawing.Size(661, 439); |
| 579 | ············this.Controls.Add(this.btnSaveAs); |
| 580 | ············this.Controls.Add(this.btnPresetApp); |
| 581 | ············this.Controls.Add(this.btnOK); |
| 582 | ············this.Controls.Add(this.btnPresetLibrary); |
| 583 | ············this.Controls.Add(this.btnCancel); |
| 584 | ············this.Controls.Add(this.tabControl); |
| 585 | ············this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); |
| 586 | ············this.Name = "ConfigurationDialog"; |
| 587 | ············this.Text = "NDO Configuration"; |
| 588 | ············this.Load += new System.EventHandler(this.ConfigurationDialog_Load); |
| 589 | ············this.tabControl.ResumeLayout(false); |
| 590 | ············this.tabPageGeneral.ResumeLayout(false); |
| 591 | ············this.tabPageGeneral.PerformLayout(); |
| 592 | ············this.groupBox1.ResumeLayout(false); |
| 593 | ············this.tabPageAssemblies.ResumeLayout(false); |
| 594 | ············this.tabPageAssemblies.PerformLayout(); |
| 595 | ············this.ResumeLayout(false); |
| 596 | |
| 597 | ········} |
| 598 | ········#endregion |
| 599 | |
| 600 | ········private void chkActivateAddIn_CheckedChanged(object sender, System.EventArgs e) |
| 601 | ········{ |
| 602 | ············EnableAddin(this.chkActivateAddIn.Checked); |
| 603 | ········} |
| 604 | |
| 605 | |
| 606 | ········void EnableAddin(bool enabled) |
| 607 | ········{ |
| 608 | ············if (project.Kind == "{E24C65DC-7377-472b-9ABA-BC803B73C61A}") |
| 609 | ················chkActivateEnhancer.Enabled = false; |
| 610 | ············else |
| 611 | ················chkActivateEnhancer.Enabled = enabled; |
| 612 | ········} |
| 613 | |
| 614 | ········private void ConfigurationDialog_Load(object sender, System.EventArgs e) |
| 615 | ········{ |
| 616 | ············try |
| 617 | ············{ |
| 618 | ················ConfigurationOptions options = new ConfigurationOptions(project); |
| 619 | ················this.Text = "NDO Configuration - " + project.Name; |
| 620 | ················chkIncludeTypecodes.Checked = options.IncludeTypecodes; |
| 621 | ················chkDropExistingElements.Checked = options.DropExistingElements; |
| 622 | ················chkGenerateFkConstraints.Checked = options.GenerateConstraints; |
| 623 | ················chkVerboseMode.Checked = options.VerboseMode; |
| 624 | ················chkChangeEvents.Checked = options.GenerateChangeEvents; |
| 625 | ················chkActivateAddIn.Checked = options.EnableAddIn; |
| 626 | ················chkActivateEnhancer.Checked = options.EnableEnhancer; |
| 627 | ················chkMappingNew.Checked = options.NewMapping; |
| 628 | ················if (chkActivateAddIn.Checked == false) |
| 629 | ····················EnableAddin(false); |
| 630 | ················chkGenerateSQLScript.Checked = options.GenerateSQL; |
| 631 | ················txtSchemaVersion.Text = options.SchemaVersion; |
| 632 | ················if (string.IsNullOrEmpty(txtSchemaVersion.Text)) |
| 633 | ····················txtSchemaVersion.Text = "1.0"; |
| 634 | ················this.chkUseTimeStamps.Checked = options.UseTimeStamps; |
| 635 | ················int i = 0; |
| 636 | ················this.cbSqlDialect.Items.Clear(); |
| 637 | ················int currentDialectIndex = -1; |
| 638 | |
| 639 | ················foreach (string s in NdoUIProviderFactory.Instance.Keys) |
| 640 | ················{ |
| 641 | ····················this.cbSqlDialect.Items.Add(s); |
| 642 | ····················if (options.SQLScriptLanguage == s) |
| 643 | ························currentDialectIndex = i; |
| 644 | ····················i++; |
| 645 | ················} |
| 646 | ················if (currentDialectIndex > -1) |
| 647 | ····················cbSqlDialect.SelectedIndex = currentDialectIndex; |
| 648 | |
| 649 | ················// Must be initialized after changing the cbSqlDialect index |
| 650 | ················txtConnectionString.Text = options.DefaultConnection; |
| 651 | ················txtTargetMappingFileName.Text = options.TargetMappingFileName; |
| 652 | ················txtDbOwner.Text = options.DatabaseOwner; |
| 653 | ················chkActivateAddIn_CheckedChanged(null, EventArgs.Empty); |
| 654 | ················chkGenerateSQLScript_CheckedChanged(null, EventArgs.Empty); |
| 655 | ················if (options.Utf8Encoding) |
| 656 | ····················radioUtf8Encoding.Checked = true; |
| 657 | ················else |
| 658 | ····················radioDefaultEncoding.Checked = true; |
| 659 | ················if (project.Kind == "{E24C65DC-7377-472b-9ABA-BC803B73C61A}") |
| 660 | ····················this.chkActivateEnhancer.Enabled = false; |
| 661 | |
| 662 | ················CheckEnabledStateForLoadProviderButton(); |
| 663 | ············} |
| 664 | ············catch (Exception ex) |
| 665 | ············{ |
| 666 | #if !DEBUG |
| 667 | ················MessageBox.Show(ex.Message, "NDO Configuration"); |
| 668 | #else |
| 669 | ················MessageBox.Show(ex.ToString(), "NDO Configuration"); |
| 670 | #endif |
| 671 | ············} |
| 672 | ········} |
| 673 | |
| 674 | ········private void btnPresetLibrary_Click(object sender, System.EventArgs e) |
| 675 | ········{ |
| 676 | //············ConfigurationOptions options = new ConfigurationOptions( project ); |
| 677 | ············try |
| 678 | ············{ |
| 679 | ················EnableCheckBoxes(); |
| 680 | |
| 681 | ················this.chkVerboseMode.Checked = false; |
| 682 | ················this.chkActivateAddIn.Checked = true; |
| 683 | ················this.chkActivateEnhancer.Checked = true; |
| 684 | ················this.chkMappingNew.Checked = false; |
| 685 | ················this.chkChangeEvents.Checked = false; |
| 686 | ················this.chkIncludeTypecodes.Checked = false; |
| 687 | ················this.chkGenerateFkConstraints.Checked = false; |
| 688 | ················this.chkDropExistingElements.Checked = false; |
| 689 | ················this.chkUseTimeStamps.Checked = false;···· |
| 690 | ················this.txtDbOwner.Text = ""; |
| 691 | ················this.chkGenerateSQLScript.Checked = false; |
| 692 | ················this.txtSchemaVersion.Text = ""; |
| 693 | ············} |
| 694 | ············catch (Exception ex) |
| 695 | ············{ |
| 696 | ················ShowError(ex); |
| 697 | ············} |
| 698 | ········} |
| 699 | |
| 700 | |
| 701 | ········private void btnOK_Click(object sender, System.EventArgs e) |
| 702 | ········{ |
| 703 | ············try |
| 704 | ············{ |
| 705 | ················ConfigurationOptions options = new ConfigurationOptions( project ); |
| 706 | |
| 707 | ················string connType = options.SQLScriptLanguage; |
| 708 | ················string connName = options.DefaultConnection; |
| 709 | ················WriteBack(options); |
| 710 | ················if (options.SQLScriptLanguage != connType || options.DefaultConnection != connName) |
| 711 | ················{ |
| 712 | ····················string mappingFileName = this.project.MappingFilePath(); |
| 713 | ····················if (mappingFileName != null) |
| 714 | ····················{ |
| 715 | ························NDOMapping mapping = new NDOMapping(mappingFileName); |
| 716 | ························bool connectionExists = false; |
| 717 | ························foreach (Connection conn in mapping.Connections) |
| 718 | ························{ |
| 719 | ····························if (conn.Type == options.SQLScriptLanguage && conn.Name == options.DefaultConnection) |
| 720 | ····························{ |
| 721 | ································connectionExists = true; |
| 722 | ································break; |
| 723 | ····························} |
| 724 | ························} |
| 725 | ························if (!connectionExists) |
| 726 | ························{ |
| 727 | ····························if (MessageBox.Show("The database connection settings have been changed. Should NDO change the connection settings in the mapping file " + Path.GetFileName(mappingFileName) + " too?", "NDO Configuration", MessageBoxButtons.YesNo) == DialogResult.Yes) |
| 728 | ····························{ |
| 729 | ································Connection conn = null; |
| 730 | ································if (mapping.Connections.Count() == 1) |
| 731 | ································{ |
| 732 | ····································conn = (Connection)mapping.Connections.FirstOrDefault(); |
| 733 | ································} |
| 734 | ································else |
| 735 | ································{ |
| 736 | ····································conn = mapping.NewConnection(String.Empty, String.Empty); |
| 737 | ····································MessageBox.Show("Added a connection with the ID " + conn.ID, "NDO Configuration"); |
| 738 | ································} |
| 739 | ································conn.Type = options.SQLScriptLanguage; |
| 740 | ································conn.Name = options.DefaultConnection; |
| 741 | ································mapping.Save(); |
| 742 | ····························} |
| 743 | ························} |
| 744 | ····················} |
| 745 | ················} |
| 746 | |
| 747 | ················if ( options.EnableAddIn ) |
| 748 | ················{ |
| 749 | ····················if ( !options.UseMsBuild ) |
| 750 | ····················{ |
| 751 | ························options.UseMsBuild = true; |
| 752 | ····················} |
| 753 | ····················GeneratePackageReference(); |
| 754 | ················} |
| 755 | |
| 756 | ThreadHelper. JoinableTaskFactory. Run( async ( ) => await options. SaveAsync( this. projectDescription ) ) ; |
| 757 | ················ |
| 758 | ············} |
| 759 | ············catch (Exception ex) |
| 760 | ············{ |
| 761 | #if DEBUG |
| 762 | ················MessageBox.Show( "The following error occured while saving your options: " + ex.ToString(), "NDO Add-in" ); |
| 763 | #else |
| 764 | ················MessageBox.Show("The following error occured while saving your options: " + ex.Message, "NDO Add-in"); |
| 765 | #endif |
| 766 | ············} |
| 767 | ········} |
| 768 | |
| 769 | |
| 770 | ········void GeneratePackageReference() |
| 771 | ········{ |
| 772 | ············try |
| 773 | ············{ |
| 774 | ················IComponentModel componentModel; |
| 775 | ················var installerService = GetInstallerService( out componentModel ); |
| 776 | |
| 777 | ················if (!installerService.IsPackageInstalled( this.project, "ndo.dll" )) |
| 778 | ················{ |
| 779 | ····················var installer = componentModel.GetService<IVsPackageInstaller>(); |
| 780 | ····················installer.InstallPackage( null, this.project, "ndo.dll", (string)null, false ); |
| 781 | ················} |
| 782 | ············} |
| 783 | ············catch (Exception ex) |
| 784 | ············{ |
| 785 | ················MessageBox.Show( "Error while installing the ndo.dll package: " + ex.ToString() ); |
| 786 | ············} |
| 787 | ········} |
| 788 | |
| 789 | ········private static IVsPackageInstallerServices GetInstallerService( out IComponentModel componentModel ) |
| 790 | ········{ |
| 791 | ············componentModel = (IComponentModel)Package.GetGlobalService( typeof( SComponentModel ) ); |
| 792 | ············var installerService = componentModel.GetService<IVsPackageInstallerServices>(); |
| 793 | ············return installerService; |
| 794 | ········} |
| 795 | |
| 796 | ········void ShowError(Exception ex) |
| 797 | ········{ |
| 798 | ············MessageBox.Show("The following error occured: " + ex.Message, "NDO Add-in"); |
| 799 | ········} |
| 800 | |
| 801 | ········private void btnConnString_Click(object sender, System.EventArgs e) |
| 802 | ········{ |
| 803 | ············try |
| 804 | ············{ |
| 805 | ················string connType = cbSqlDialect.Text; |
| 806 | ················if (connType == string.Empty) |
| 807 | ····················connType = "SqlServer"; |
| 808 | ················var provider = NdoUIProviderFactory.Instance[connType]; |
| 809 | ················if (provider == null) |
| 810 | ················{ |
| 811 | ····················MessageBox.Show("Can't find a NDO UI provider for the sql dialect " + connType); |
| 812 | ····················return; |
| 813 | ················} |
| 814 | |
| 815 | ················string temp = this.txtConnectionString.Text; |
| 816 | ················NdoDialogResult r = provider.ShowConnectionDialog(ref temp); |
| 817 | ················if (r == NdoDialogResult.Cancel) |
| 818 | ····················return; |
| 819 | ················this.txtConnectionString.Text = temp; |
| 820 | ············} |
| 821 | ············catch (Exception ex) |
| 822 | ············{ |
| 823 | ················ShowError(ex); |
| 824 | ············} |
| 825 | ········} |
| 826 | |
| 827 | |
| 828 | ········private void chkGenerateSQLScript_CheckedChanged(object sender, System.EventArgs e) |
| 829 | ········{ |
| 830 | ············bool genSql = this.chkGenerateSQLScript.Checked; |
| 831 | |
| 832 | ············this.cbSqlDialect.Enabled = genSql; |
| 833 | ············this.chkIncludeTypecodes.Enabled = genSql; |
| 834 | ············this.chkDropExistingElements.Enabled = genSql; |
| 835 | ············this.chkGenerateFkConstraints.Enabled = genSql; |
| 836 | ············this.radioUtf8Encoding.Enabled = genSql; |
| 837 | ············this.radioDefaultEncoding.Enabled = genSql; |
| 838 | ········} |
| 839 | |
| 840 | ········private void EnableCheckBoxes() |
| 841 | ········{ |
| 842 | ············foreach(Control c in this.Controls) |
| 843 | ············{ |
| 844 | ················CheckBox cb = c as CheckBox; |
| 845 | ················if (c == null) |
| 846 | ····················continue; |
| 847 | ················c.Enabled = true; |
| 848 | ············} |
| 849 | ············if (this.project.Kind == "{E24C65DC-7377-472b-9ABA-BC803B73C61A}") |
| 850 | ················this.chkActivateEnhancer.Enabled = false; |
| 851 | ········} |
| 852 | |
| 853 | ········private void btnPresetApp_Click(object sender, System.EventArgs e) |
| 854 | ········{ |
| 855 | ············try |
| 856 | ············{ |
| 857 | ················EnableCheckBoxes(); |
| 858 | ················this.chkVerboseMode.Checked = false; |
| 859 | ················this.chkActivateAddIn.Checked = true; |
| 860 | ················this.chkActivateEnhancer.Checked = false; |
| 861 | ················this.chkMappingNew.Checked = false; |
| 862 | ················this.chkGenerateSQLScript.Checked = true; |
| 863 | ················this.chkChangeEvents.Checked = false; |
| 864 | ················this.chkIncludeTypecodes.Checked = false; |
| 865 | ················this.chkDropExistingElements.Checked = false; |
| 866 | ················this.chkGenerateFkConstraints.Checked = false; |
| 867 | ················this.txtConnectionString.Text = ""; |
| 868 | ················this.chkUseTimeStamps.Checked = false; |
| 869 | ················this.txtDbOwner.Text = ""; |
| 870 | ················this.txtSchemaVersion.Text = "1.0"; |
| 871 | ················if (this.txtConnectionString.Text == string.Empty) |
| 872 | ····················this.btnConnString_Click(null, null); |
| 873 | ············} |
| 874 | ············catch (Exception ex) |
| 875 | ············{ |
| 876 | ················ShowError(ex); |
| 877 | ············} |
| 878 | ········} |
| 879 | |
| 880 | //········private void MakeNode(string name, object value, XmlNode parentNode, XmlDocument doc) |
| 881 | //········{ |
| 882 | //············XmlElement el = doc.CreateElement(name); |
| 883 | //············parentNode.AppendChild(el); |
| 884 | //············if (value != null) |
| 885 | //················el.InnerText = value.ToString(); |
| 886 | //········} |
| 887 | |
| 888 | ········void WriteBack(ConfigurationOptions options) |
| 889 | ········{ |
| 890 | ············options.EnableAddIn = chkActivateAddIn.Checked; |
| 891 | ············options.EnableEnhancer = chkActivateEnhancer.Checked; |
| 892 | ············options.IncludeTypecodes = chkIncludeTypecodes.Checked; |
| 893 | ············options.GenerateConstraints = chkGenerateFkConstraints.Checked; |
| 894 | ············options.DropExistingElements = chkDropExistingElements.Checked; |
| 895 | ············options.VerboseMode = chkVerboseMode.Checked; |
| 896 | ············options.NewMapping = chkMappingNew.Checked; |
| 897 | ············options.GenerateSQL = chkGenerateSQLScript.Checked; |
| 898 | ············options.DefaultConnection = txtConnectionString.Text; |
| 899 | ············options.TargetMappingFileName = txtTargetMappingFileName.Text; |
| 900 | ············options.GenerateChangeEvents = chkChangeEvents.Checked; |
| 901 | ············options.UseTimeStamps = chkUseTimeStamps.Checked; |
| 902 | ············options.SQLScriptLanguage = this.cbSqlDialect.Text; |
| 903 | ············options.DatabaseOwner = this.txtDbOwner.Text; |
| 904 | ············options.Utf8Encoding = this.radioUtf8Encoding.Checked; |
| 905 | ············options.SchemaVersion = this.txtSchemaVersion.Text; |
| 906 | ········} |
| 907 | |
| 908 | ········private void btnSaveAs_Click(object sender, System.EventArgs e) |
| 909 | ········{ |
| 910 | ············try |
| 911 | ············{ |
| 912 | ················string projDir = Path.GetDirectoryName(project.FullName); |
| 913 | ················SaveFileDialog sfd = new SaveFileDialog(); |
| 914 | ················sfd.CheckFileExists = false; |
| 915 | ················sfd.DefaultExt = "xml"; |
| 916 | ················sfd.Filter = "NDO Configuration Files (*.ndoproj)|*.ndoproj"; |
| 917 | ················sfd.FileName = "EnhancerParameters.ndoproj"; |
| 918 | ················sfd.InitialDirectory = projDir; |
| 919 | ················if (sfd.ShowDialog(this) != DialogResult.OK) |
| 920 | ····················return; |
| 921 | |
| 922 | ················ConfigurationOptions options = new ConfigurationOptions(project);················ |
| 923 | ················WriteBack(options); |
| 924 | ················options.SaveAs(sfd.FileName, this.projectDescription); |
| 925 | ············} |
| 926 | ············catch (Exception ex) |
| 927 | ············{ |
| 928 | ················ShowError(ex); |
| 929 | ············}········ |
| 930 | ········} |
| 931 | |
| 932 | ········private void cbSqlDialect_SelectedIndexChanged(object sender, System.EventArgs e) |
| 933 | ········{ |
| 934 | ············this.txtConnectionString.Text = string.Empty; |
| 935 | ············CheckEnabledStateForLoadProviderButton(); |
| 936 | ········} |
| 937 | |
| 938 | ········private void btnNewDatabase_Click(object sender, System.EventArgs e) |
| 939 | ········{ |
| 940 | ············string connType = cbSqlDialect.Text; |
| 941 | ············if (connType == string.Empty) |
| 942 | ················connType = "SqlServer"; |
| 943 | ············IDbUISupport provider = NdoUIProviderFactory.Instance[connType]; |
| 944 | ············if (provider == null) |
| 945 | ············{ |
| 946 | ················MessageBox.Show("Can't find a NDO UI provider for the sql dialect " + connType); |
| 947 | ················return; |
| 948 | ············} |
| 949 | ············object necessaryData = null; |
| 950 | ············try |
| 951 | ············{ |
| 952 | ················if (provider.ShowCreateDbDialog(ref necessaryData) == NdoDialogResult.Cancel) |
| 953 | ····················return; |
| 954 | ················this.txtConnectionString.Text = provider.CreateDatabase(necessaryData); |
| 955 | ············} |
| 956 | ············catch (Exception ex) |
| 957 | ············{ |
| 958 | #if !DEBUG |
| 959 | ················MessageBox.Show("Can't construct the database: " + ex.Message); |
| 960 | #else |
| 961 | ················MessageBox.Show("Can't construct the database: " + ex.ToString()); |
| 962 | #endif |
| 963 | ············} |
| 964 | ········} |
| 965 | |
| 966 | ········private void chlbAssemblies_ItemCheck( object sender, ItemCheckEventArgs e ) |
| 967 | ········{ |
| 968 | ············this.references[e.Index].CheckState = e.NewValue; |
| 969 | ········} |
| 970 | |
| 971 | ········private void btnInstallProvider_Click( object sender, EventArgs e ) |
| 972 | ········{ |
| 973 | ············try |
| 974 | ············{ |
| 975 | ················string providerName = this.cbSqlDialect.Text; |
| 976 | |
| 977 | ················if (string.IsNullOrEmpty( providerName )) |
| 978 | ················{ |
| 979 | ····················MessageBox.Show( "Please choose a provider" ); |
| 980 | ····················return; |
| 981 | ················} |
| 982 | |
| 983 | ················IComponentModel componentModel; |
| 984 | ················var installerService = GetInstallerService( out componentModel ); |
| 985 | |
| 986 | ················string packageName = $"ndo.{providerName.ToLower()}"; |
| 987 | ················if (!installerService.IsPackageInstalled( this.project, packageName )) |
| 988 | ················{ |
| 989 | ····················var installer = componentModel.GetService<IVsPackageInstaller>(); |
| 990 | ····················installer.InstallPackage( null, this.project, packageName, (string)null, false ); |
| 991 | ················} |
| 992 | |
| 993 | ················this.btnInstallProvider.Enabled = false; |
| 994 | ············} |
| 995 | ············catch (Exception ex) |
| 996 | ············{ |
| 997 | ················MessageBox.Show( "Error while installing the ndo.dll package: " + ex.ToString() ); |
| 998 | ············} |
| 999 | ········} |
| 1000 | ····} |
| 1001 | } |
| 1002 | |
| 1003 | #pragma warning restore VSTHRD010 // Invoke single-threaded types on Main thread |
| 1004 |