//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.Web.UI.Design.MobileControls { using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.CodeDom.Compiler; using System.Diagnostics; using System.Drawing; using System.Web.UI.MobileControls; using System.Windows.Forms; using System.Windows.Forms.Design; // using System.Web.UI.Design.Util; using System.Web.UI.Design.MobileControls.Util; using ObjectList = System.Web.UI.MobileControls.ObjectList; using Label = System.Windows.Forms.Label; using TextBox = System.Windows.Forms.TextBox; /// /// The Commands page for the ObjectList control. /// /// [ System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode) ] [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] internal sealed class ObjectListCommandsPage : ListComponentEditorPage { private ComboBox _cmbDefaultCommand; private TextBox _txtText = null; private ObjectList _objectList = null; public ObjectListCommandsPage() { Y = 24; CaseSensitive = false; TreeViewTitle = SR.GetString(SR.ObjectListCommandsPage_CommandNameCaption); AddButtonTitle = SR.GetString(SR.ObjectListCommandsPage_NewCommandBtnCaption); DefaultName = SR.GetString(SR.ObjectListCommandsPage_DefaultCommandName); MessageTitle = SR.GetString(SR.ObjectListCommandsPage_ErrorMessageTitle); EmptyNameMessage = SR.GetString(SR.ObjectListCommandsPage_EmptyNameError); // DuplicateNameMessage = SR.GetString(SR.ObjectListCommandsPage_DuplicateNameError); // InvalidNameMessage = SR.GetString(SR.ObjectListCommandsPage_InvalidName); // DCR 4240 } protected override String HelpKeyword { get { return "net.Mobile.ObjectListProperties.Commands"; } } protected override void InitForm() { base.InitForm(); this._objectList = (ObjectList)Component; this.CommitOnDeactivate = true; this.Icon = new Icon( typeof(System.Web.UI.Design.MobileControls.MobileControlDesigner), "Commands.ico" ); this.Size = new Size(402, 300); this.Text = SR.GetString(SR.ObjectListCommandsPage_Title); GroupLabel grplblCommandList = new GroupLabel(); grplblCommandList.SetBounds(4, 4, 392, LabelHeight); grplblCommandList.Text = SR.GetString(SR.ObjectListCommandsPage_CommandListGroupLabel); grplblCommandList.TabIndex = 0; grplblCommandList.TabStop = false; TreeList.TabIndex = 1; Label lblText = new Label(); lblText.SetBounds(X, Y, ControlWidth, LabelHeight); lblText.Text = SR.GetString(SR.ObjectListCommandsPage_TextCaption); lblText.TabStop = false; lblText.TabIndex = TabIndex; _txtText = new TextBox(); Y += LabelHeight; _txtText.SetBounds(X, Y, ControlWidth, CmbHeight); _txtText.TextChanged += new EventHandler(this.OnPropertyChanged); _txtText.TabIndex = TabIndex + 1; GroupLabel grplblData = new GroupLabel(); grplblData.SetBounds(4, 238, 392, LabelHeight); grplblData.Text = SR.GetString(SR.ObjectListCommandsPage_DataGroupLabel); grplblData.TabIndex = TabIndex + 2; grplblData.TabStop = false; Label lblDefaultCommand = new Label(); lblDefaultCommand.SetBounds(8, 260, 182, LabelHeight); lblDefaultCommand.Text = SR.GetString(SR.ObjectListCommandsPage_DefaultCommandCaption); lblDefaultCommand.TabStop = false; lblDefaultCommand.TabIndex = TabIndex + 3; _cmbDefaultCommand = new ComboBox(); _cmbDefaultCommand.SetBounds(8, 276, 182, 64); _cmbDefaultCommand.DropDownStyle = ComboBoxStyle.DropDown; _cmbDefaultCommand.Sorted = true; _cmbDefaultCommand.TabIndex = TabIndex + 4; _cmbDefaultCommand.SelectedIndexChanged += new EventHandler(this.OnSetPageDirty); _cmbDefaultCommand.TextChanged += new EventHandler(this.OnSetPageDirty); this.Controls.AddRange(new Control[] { grplblCommandList, lblText, _txtText, grplblData, lblDefaultCommand, _cmbDefaultCommand }); } protected override void InitPage() { base.InitPage(); _cmbDefaultCommand.Text = _objectList.DefaultCommand; _txtText.Text = String.Empty; } protected override void LoadItems() { using (new LoadingModeResource(this)) { foreach (ObjectListCommand command in _objectList.Commands) { CommandTreeNode newNode = new CommandTreeNode(command.Name, command); TreeList.TvList.Nodes.Add(newNode); } } LoadDefaultCommands(); } protected override void LoadItemProperties() { using (new LoadingModeResource(this)) { if (CurrentNode != null) { CommandTreeNode currentCommandNode = (CommandTreeNode)CurrentNode; _txtText.Text = currentCommandNode.Text; } else { _txtText.Text = String.Empty; } } } private void LoadDefaultCommands() { _cmbDefaultCommand.Items.Clear(); foreach (CommandTreeNode commandNode in TreeList.TvList.Nodes) { _cmbDefaultCommand.Items.Add(commandNode.Name); } } private void OnSetPageDirty(Object source, EventArgs e) { if (IsLoading()) { return; } SetDirty(); } protected override void OnClickAddButton(Object source, EventArgs e) { if (IsLoading()) { return; } CommandTreeNode newNode = new CommandTreeNode(GetNewName()); TreeList.TvList.Nodes.Add(newNode); TreeList.TvList.SelectedNode = newNode; CurrentNode = newNode; newNode.Dirty = true; newNode.BeginEdit(); LoadItemProperties(); LoadDefaultCommands(); SetDirty(); } protected override void OnClickRemoveButton(Object source, EventArgs e) { base.OnClickRemoveButton(source, e); LoadDefaultCommands(); } protected override void OnNodeRenamed() { LoadDefaultCommands(); } protected override void OnPropertyChanged(Object source, EventArgs e) { if (IsLoading()) { return; } // This means there are no fields yet. Do nothing if (CurrentNode == null) { return; } ((CommandTreeNode)CurrentNode).Text = _txtText.Text; SetDirty(); CurrentNode.Dirty = true; } protected override void SaveComponent() { // Delegate to base implementation first! // This will properly close ListTreeNode editing mode. base.SaveComponent(); _objectList.DefaultCommand = _cmbDefaultCommand.Text; _objectList.Commands.Clear(); foreach (CommandTreeNode commandNode in TreeList.TvList.Nodes) { if (commandNode.Dirty) { commandNode.RuntimeCommand.Text = commandNode.Text; commandNode.RuntimeCommand.Name = commandNode.Name; } _objectList.Commands.AddAt(-1, commandNode.RuntimeCommand); } TypeDescriptor.Refresh(_objectList); } protected override void UpdateControlsEnabling() { TreeList.TvList.Enabled = _txtText.Enabled = (TreeList.TvList.SelectedNode != null); } /// /// Internal object used to store all command properties /// [ System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode) ] private class CommandTreeNode : ListTreeNode { private ObjectListCommand _runtimeCommand; private String _text; /// /// internal CommandTreeNode(String name) : this(name, new ObjectListCommand()) { } /// /// internal CommandTreeNode(String name, ObjectListCommand runtimeCommand) : base(name) { Debug.Assert(name != null, "invalid name for ObjectListCommand"); Debug.Assert(runtimeCommand != null, "null ObjectListCommand"); this._runtimeCommand = runtimeCommand; LoadAttributes(); } internal void LoadAttributes() { this._text = _runtimeCommand.Text; } internal ObjectListCommand RuntimeCommand { get { return _runtimeCommand; } } internal new String Text { get { return _text; } set { _text = value; } } } } }