1 //------------------------------------------------------------------------------
2 // <copyright file="EntityDataSourceStatementEditorForm.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
7 // @backupOwner Microsoft
9 // Enables a user to edit CommandText, OrderBy, Select, and
10 // Where properties and parameters
11 //------------------------------------------------------------------------------
12 using System.Collections.Generic;
13 using System.Web.UI.Design.WebControls.Util;
15 using System.Globalization;
16 using System.Reflection;
17 using System.Web.UI.Design.WebControls;
18 using System.Web.UI.WebControls;
19 using System.Windows.Forms;
21 namespace System.Web.UI.Design.WebControls
23 internal class EntityDataSourceStatementEditorForm : DesignerForm
25 private System.Windows.Forms.Panel _checkBoxPanel;
26 private System.Windows.Forms.CheckBox _autoGenerateCheckBox;
27 private System.Windows.Forms.Panel _statementPanel;
28 private System.Windows.Forms.Label _statementLabel;
29 private System.Windows.Forms.TextBox _statementTextBox;
30 private ParameterEditorUserControl _parameterEditorUserControl;
31 private System.Windows.Forms.Button _okButton;
32 private System.Windows.Forms.Button _cancelButton;
34 private System.Web.UI.Control _entityDataSource;
35 private ParameterCollection _parameters;
37 private string _cachedStatementText;
38 private readonly string _helpTopic;
40 public EntityDataSourceStatementEditorForm(System.Web.UI.Control entityDataSource, IServiceProvider serviceProvider,
41 bool hasAutoGen, bool isAutoGen, string propertyName, string statementLabelText, string statementAccessibleName,
42 string helpTopic, string statement, ParameterCollection parameters)
43 : base(serviceProvider)
46 _entityDataSource = entityDataSource;
47 InitializeComponent();
48 InitializeUI(propertyName, statementLabelText, statementAccessibleName);
49 InitializeTabIndexes();
52 _helpTopic = helpTopic;
59 _parameters = parameters;
61 _autoGenerateCheckBox.Checked = isAutoGen;
62 _statementPanel.Enabled = !isAutoGen;
64 _statementTextBox.Text = statement;
65 _statementTextBox.Select(0, 0);
67 List<Parameter> paramList = new List<Parameter>();
68 foreach (Parameter p in parameters)
72 _parameterEditorUserControl.AddParameters(paramList.ToArray());
74 _cachedStatementText = null;
81 return _autoGenerateCheckBox.Checked;
85 protected override string HelpTopic
93 public ParameterCollection Parameters
101 public string Statement
105 return _statementTextBox.Text;
109 private void HideCheckBox()
111 _autoGenerateCheckBox.Checked = false;
112 _checkBoxPanel.Visible = false;
114 int moveUp = _statementPanel.Location.Y - _checkBoxPanel.Location.Y;
116 Point loc = _statementPanel.Location;
118 _statementPanel.Location = loc;
120 loc = _parameterEditorUserControl.Location;
122 _parameterEditorUserControl.Location = loc;
124 Size size = _parameterEditorUserControl.Size;
125 size.Height += moveUp;
126 _parameterEditorUserControl.Size = size;
128 size = this.MinimumSize;
129 size.Height -= moveUp;
130 this.MinimumSize = size;
134 private void InitializeAnchors()
136 _checkBoxPanel.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
137 _autoGenerateCheckBox.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
139 _statementPanel.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
140 _statementLabel.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
141 _statementTextBox.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
143 _parameterEditorUserControl.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
145 _okButton.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
146 _cancelButton.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
149 #region Windows Form Designer generated code
151 /// Required method for Designer support - do not modify
152 /// the contents of this method with the code editor.
154 private void InitializeComponent()
156 this._okButton = new System.Windows.Forms.Button();
157 this._cancelButton = new System.Windows.Forms.Button();
158 this._statementLabel = new System.Windows.Forms.Label();
159 this._statementTextBox = new System.Windows.Forms.TextBox();
160 this._autoGenerateCheckBox = new System.Windows.Forms.CheckBox();
161 this._parameterEditorUserControl = (ParameterEditorUserControl)Activator.CreateInstance(typeof(ParameterEditorUserControl), BindingFlags.NonPublic | BindingFlags.Instance, null, new object[] { ServiceProvider, _entityDataSource }, null);
162 this._checkBoxPanel = new System.Windows.Forms.Panel();
163 this._statementPanel = new System.Windows.Forms.Panel();
164 this._checkBoxPanel.SuspendLayout();
165 this._statementPanel.SuspendLayout();
166 this.SuspendLayout();
167 this.InitializeSizes();
171 this._okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
172 this._okButton.Name = "_okButton";
173 this._okButton.Click += new System.EventHandler(this.OnOkButtonClick);
177 this._cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
178 this._cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
179 this._cancelButton.Name = "_cancelButton";
180 this._cancelButton.Click += new System.EventHandler(this.OnCancelButtonClick);
184 this._statementLabel.Name = "_commandLabel";
188 this._statementTextBox.AcceptsReturn = true;
189 this._statementTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
190 | System.Windows.Forms.AnchorStyles.Right)));
191 this._statementTextBox.Multiline = true;
192 this._statementTextBox.Name = "_statementTextBox";
193 this._statementTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
195 // _autoGenerateCheckBox
197 this._autoGenerateCheckBox.CheckAlign = ContentAlignment.TopLeft;
198 this._autoGenerateCheckBox.TextAlign = ContentAlignment.TopLeft;
199 this._autoGenerateCheckBox.Name = "_autoGenerateCheckBox";
200 this._autoGenerateCheckBox.UseVisualStyleBackColor = true;
201 this._autoGenerateCheckBox.CheckedChanged += new EventHandler(OnAutoGenerateCheckBoxCheckedChanged);
205 this._checkBoxPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
206 | System.Windows.Forms.AnchorStyles.Right)));
207 this._checkBoxPanel.Controls.Add(this._autoGenerateCheckBox);
208 this._checkBoxPanel.Name = "_radioPanel";
212 this._statementPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
213 | System.Windows.Forms.AnchorStyles.Right)));
214 this._statementPanel.Controls.Add(this._statementLabel);
215 this._statementPanel.Controls.Add(this._statementTextBox);
216 this._statementPanel.Name = "_statementPanel";
218 // _parameterEditorUserControl
220 this._parameterEditorUserControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
221 | System.Windows.Forms.AnchorStyles.Left)
222 | System.Windows.Forms.AnchorStyles.Right)));
223 this._parameterEditorUserControl.Name = "_parameterEditorUserControl";
225 // EntityDataSourceStatementEditorForm
227 this.AcceptButton = this._okButton;
228 this.CancelButton = this._cancelButton;
229 this.Controls.Add(this._statementPanel);
230 this.Controls.Add(this._checkBoxPanel);
231 this.Controls.Add(this._cancelButton);
232 this.Controls.Add(this._okButton);
233 this.Controls.Add(this._parameterEditorUserControl);
234 this.Name = "EntityDataSourceStatementEditorForm";
235 this._checkBoxPanel.ResumeLayout(false);
236 this._checkBoxPanel.PerformLayout();
237 this._statementPanel.ResumeLayout(false);
238 this._statementPanel.PerformLayout();
239 this.ResumeLayout(false);
246 private void InitializeSizes()
250 _checkBoxPanel.Location = new Point(12, 12);
251 _checkBoxPanel.Size = new Size(456, 32);
252 _autoGenerateCheckBox.Location = new Point(0, 0);
253 _autoGenerateCheckBox.Size = new Size(456, 30);
254 top = _checkBoxPanel.Bottom;
256 _statementPanel.Location = new Point(12, top + 4);
257 _statementPanel.Size = new Size(456, 124);
260 _statementLabel.Location = new Point(0, 0);
261 _statementLabel.Size = new Size(200, 16);
262 top = _statementLabel.Bottom;
264 _statementTextBox.Location = new Point(0, top + 3);
265 _statementTextBox.Size = new Size(456, 78);
266 top = _statementPanel.Bottom;
268 _parameterEditorUserControl.Location = new Point(12, top + 5);
269 _parameterEditorUserControl.Size = new Size(460, 216);
270 top = _parameterEditorUserControl.Bottom;
272 _okButton.Location = new Point(313, top + 6);
273 _okButton.Size = new Size(75, 23);
274 _cancelButton.Location = new Point(393, top + 6);
275 _cancelButton.Size = new Size(75, 23);
276 top = _cancelButton.Bottom;
278 ClientSize = new Size(480, top + 12);
279 MinimumSize = new Size(480 + 8, top + 12 + 27);
282 private void InitializeTabIndexes()
284 _checkBoxPanel.TabStop = false;
285 _autoGenerateCheckBox.TabStop = true;
287 _statementPanel.TabStop = false;
288 _statementLabel.TabStop = false;
289 _statementTextBox.TabStop = true;
291 _parameterEditorUserControl.TabStop = true;
293 _okButton.TabStop = true;
294 _cancelButton.TabStop = true;
298 _checkBoxPanel.TabIndex = tabIndex += 10;
299 _autoGenerateCheckBox.TabIndex = tabIndex += 10;
301 _statementPanel.TabIndex = tabIndex += 10;
302 _statementLabel.TabIndex = tabIndex += 10;
303 _statementTextBox.TabIndex = tabIndex += 10;
305 _parameterEditorUserControl.TabIndex = tabIndex += 10;
307 _okButton.TabIndex = tabIndex += 10;
308 _cancelButton.TabIndex = tabIndex += 10;
311 private void InitializeUI(string propertyName, string labelText, string accessibleName)
313 this.Text = Strings.ExpressionEditor_Caption;
314 this.AccessibleName = Strings.ExpressionEditor_Caption;
315 _okButton.Text = Strings.OKButton;
316 _okButton.AccessibleName = Strings.OKButtonAccessibleName;
317 _cancelButton.Text = Strings.CancelButton;
318 _cancelButton.AccessibleName = Strings.CancelButtonAccessibleName;
319 _statementLabel.Text = labelText;
320 _statementTextBox.AccessibleName = accessibleName;
321 if (String.Equals(propertyName, "Where", StringComparison.OrdinalIgnoreCase))
323 _autoGenerateCheckBox.Text = Strings.ExpressionEditor_AutoGenerateWhereCheckBox;
324 _autoGenerateCheckBox.AccessibleName = Strings.ExpressionEditor_AutoGenerateWhereCheckBoxAccessibleName;
326 else if (String.Equals(propertyName, "OrderBy", StringComparison.OrdinalIgnoreCase))
328 _autoGenerateCheckBox.Text = Strings.ExpressionEditor_AutoGenerateOrderByCheckBox;
329 _autoGenerateCheckBox.AccessibleName = Strings.ExpressionEditor_AutoGenerateOrderByCheckBoxAccessibleName;
333 private void OnAutoGenerateCheckBoxCheckedChanged(object sender, EventArgs e)
335 if (_autoGenerateCheckBox.Checked)
337 _cachedStatementText = _statementTextBox.Text;
338 _statementTextBox.Text = null;
340 else if (!String.IsNullOrEmpty(_cachedStatementText))
342 _statementTextBox.Text = _cachedStatementText;
344 _statementPanel.Enabled = !_autoGenerateCheckBox.Checked;
347 private void OnCancelButtonClick(System.Object sender, System.EventArgs e)
349 DialogResult = DialogResult.Cancel;
353 private void OnOkButtonClick(System.Object sender, System.EventArgs e)
356 Parameter[] paramList = _parameterEditorUserControl.GetParameters();
357 foreach (Parameter p in paramList)
362 DialogResult = DialogResult.OK;