Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / Design / Util / EditableTreeList.cs / 1305376 / EditableTreeList.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.Design.MobileControls.Util { using System; using System.Diagnostics; using System.Drawing; using System.ComponentModel; using System.Globalization; using System.Windows.Forms; using System.Web.UI.Design.MobileControls; [ ToolboxItem(false), 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 class EditableTreeList : Panel { private const String _assertMsgNullNodeSelected = "Caller is responsible for ensuring a TreeNode is selected. " + "Modified TreeViewNode without calling UpdateButtonsEnabling()?"; private const String _assertMsgOutOfBounds = "Caller is responsible for ensuring this action does not move the " + "selected TreeViewNode out of bounds. " + "Modified TvList without calling UpdateButtonsEnabling()?"; internal TreeNode LastNodeChanged = null; internal TreeNode EditCandidateNode = null; internal EventHandler RemoveHandler; private bool _caseSensitive; internal System.Windows.Forms.Button BtnAdd; internal System.Windows.Forms.Button BtnRemove; internal System.Windows.Forms.Button BtnDown; internal System.Windows.Forms.Button BtnUp; internal System.Windows.Forms.TreeView TvList; internal System.Windows.Forms.Label LblTitle; internal System.Windows.Forms.ContextMenu CntxtMenu; internal System.Windows.Forms.MenuItem CntxtMenuItem; internal EditableTreeList() : this(true, true, 16) { } internal EditableTreeList(bool showAddButton, bool caseSensitive, int Y) { this.TvList = new System.Windows.Forms.TreeView(); this.BtnAdd = new System.Windows.Forms.Button(); this.BtnDown = new System.Windows.Forms.Button(); this.LblTitle = new System.Windows.Forms.Label(); this.BtnUp = new System.Windows.Forms.Button(); this.BtnRemove = new System.Windows.Forms.Button(); this.CntxtMenuItem = new System.Windows.Forms.MenuItem(); this.CntxtMenu = new System.Windows.Forms.ContextMenu(); LblTitle.Size = new System.Drawing.Size(210, 16); LblTitle.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;; TvList.Location = new System.Drawing.Point(0, 16); TvList.Size = new System.Drawing.Size(178, 148); TvList.ForeColor = System.Drawing.SystemColors.WindowText; TvList.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; TvList.LabelEdit = true; TvList.ShowPlusMinus = false; TvList.HideSelection = false; TvList.Indent = 15; TvList.ShowRootLines = false; TvList.ShowLines = false; TvList.ContextMenu = CntxtMenu; BtnUp.AccessibleName = SR.GetString(SR.EditableTreeList_MoveUpName); BtnUp.AccessibleDescription = SR.GetString(SR.EditableTreeList_MoveUpDescription); BtnUp.Name = SR.GetString(SR.EditableTreeList_MoveUpName); BtnUp.Location = new System.Drawing.Point(182, 16); BtnUp.Size = new System.Drawing.Size(28, 27); BtnUp.Anchor = AnchorStyles.Top | AnchorStyles.Right;; BtnDown.AccessibleName = SR.GetString(SR.EditableTreeList_MoveDownName); BtnDown.AccessibleDescription = SR.GetString(SR.EditableTreeList_MoveDownDescription); BtnDown.Name = SR.GetString(SR.EditableTreeList_MoveDownName); BtnDown.Location = new System.Drawing.Point(182, 48); BtnDown.Size = new System.Drawing.Size(28, 27); BtnDown.Anchor = AnchorStyles.Top | AnchorStyles.Right; BtnRemove.AccessibleName = SR.GetString(SR.EditableTreeList_DeleteName); BtnRemove.AccessibleDescription = SR.GetString(SR.EditableTreeList_DeleteDescription); BtnRemove.Name = SR.GetString(SR.EditableTreeList_DeleteName); BtnRemove.Location = new System.Drawing.Point(182, 136); BtnRemove.Size = new System.Drawing.Size(28, 27); BtnRemove.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; BtnAdd.AccessibleName = SR.GetString(SR.EditableTreeList_AddName); BtnAdd.AccessibleDescription = SR.GetString(SR.EditableTreeList_AddDescription); BtnAdd.Name = SR.GetString(SR.EditableTreeList_AddName); BtnAdd.Location = new System.Drawing.Point(0, 168); BtnAdd.Size = new System.Drawing.Size(178, 25); BtnAdd.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; CntxtMenuItem.Text = SR.GetString(SR.EditableTreeList_Rename); CntxtMenu.MenuItems.Add(CntxtMenuItem); this.Location = new System.Drawing.Point(8, Y); this.Size = new System.Drawing.Size(210, 196); this.Controls.Add(LblTitle); this.Controls.Add(TvList); this.Controls.Add(BtnUp); this.Controls.Add(BtnDown); this.Controls.Add(BtnRemove); this.Controls.Add(BtnAdd); BtnDown.Image = GenericUI.SortDownIcon; BtnUp.Image = GenericUI.SortUpIcon; BtnRemove.Image = GenericUI.DeleteIcon; BtnUp.Click += new EventHandler(MoveSelectedItemUp); BtnDown.Click += new EventHandler(MoveSelectedItemDown); RemoveHandler = new EventHandler(OnRemove); BtnRemove.Click += RemoveHandler; TvList.AfterSelect += new TreeViewEventHandler(OnListSelect); TvList.KeyDown += new KeyEventHandler(OnKeyDown); TvList.MouseUp += new MouseEventHandler(OnListMouseUp); TvList.MouseDown += new MouseEventHandler(OnListMouseDown); CntxtMenu.Popup += new EventHandler(OnPopup); CntxtMenuItem.Click += new EventHandler(OnContextMenuItemClick); UpdateButtonsEnabling(); if(!showAddButton) { // stretch UI to occupy space where add button was. BtnAdd.Visible = false; int offset = 4 + BtnAdd.Height; TvList.Height += offset; BtnRemove.Top += offset; } _caseSensitive = caseSensitive; } //////////////////////////////////////////////////////////////////////// // End Windes Generated //////////////////////////////////////////////////////////////////////// internal int SelectedIndex { get { TreeNode selectedNode = TvList.SelectedNode; if(selectedNode != null) { return selectedNode.Index; } else { return -1; } } } internal TreeNode SelectedNode { get { return TvList.SelectedNode; } } private TreeNode SelectedNodeChecked { get { TreeNode node = TvList.SelectedNode; Debug.Assert( node != null, _assertMsgNullNodeSelected ); return node; } } private void MoveSelectedNode(int direction) { Debug.Assert(direction == 1 || direction == -1); LastNodeChanged = TvList.SelectedNode; Debug.Assert( LastNodeChanged != null, _assertMsgNullNodeSelected ); int index = LastNodeChanged.Index; Debug.Assert( (index + direction >= 0) && ((index + direction) < TvList.Nodes.Count), _assertMsgOutOfBounds ); TvList.Nodes.RemoveAt(index); TvList.Nodes.Insert(index + direction, LastNodeChanged); TvList.SelectedNode = LastNodeChanged; } internal void MoveSelectedItemUp(Object sender, EventArgs e) { MoveSelectedNode(-1); UpdateButtonsEnabling(); } internal void MoveSelectedItemDown(Object sender, EventArgs e) { MoveSelectedNode(1); UpdateButtonsEnabling(); } internal void RemoveSelectedItem() { LastNodeChanged = SelectedNodeChecked; TvList.Nodes.Remove(LastNodeChanged); UpdateButtonsEnabling(); } private void OnKeyDown(Object sender, KeyEventArgs e) { switch(e.KeyData) { case Keys.F2: { TreeNode selectedNode = TvList.SelectedNode; if(selectedNode != null) { selectedNode.BeginEdit(); } break; } case (Keys.Control | Keys.Home): { if(TvList.Nodes.Count > 0) { TvList.SelectedNode = TvList.Nodes[0]; } break; } case (Keys.Control | Keys.End): { int numNodes = TvList.Nodes.Count; if(numNodes > 0) { TvList.SelectedNode = TvList.Nodes[numNodes - 1]; } break; } } } private void OnRemove(Object sender, EventArgs e) { RemoveSelectedItem(); } private void OnListSelect(Object sender, TreeViewEventArgs e) { UpdateButtonsEnabling(); } private void OnListMouseUp(Object sender, MouseEventArgs e) { EditCandidateNode= null; if (e.Button == MouseButtons.Right) { EditCandidateNode = (TreeNode)TvList.GetNodeAt (e.X, e.Y); } } private void OnListMouseDown(Object sender, MouseEventArgs e) { EditCandidateNode = null; if (e.Button == MouseButtons.Right) { EditCandidateNode = (TreeNode)TvList.GetNodeAt (e.X, e.Y); } } private void OnPopup(Object sender, EventArgs e) { CntxtMenuItem.Enabled = (EditCandidateNode != null || TvList.SelectedNode != null); } private void OnContextMenuItemClick(Object sender, EventArgs e) { if(EditCandidateNode == null) { // context menu key pressed if (TvList.SelectedNode!=null) { TvList.SelectedNode.BeginEdit(); } } else { // right mouse-click EditCandidateNode.BeginEdit(); } EditCandidateNode = null; } internal String GetUniqueLabel(String label) { int index = 1; String uniqueLabel = label + index; while(LabelExists(uniqueLabel)) { uniqueLabel = label + (++index); } return uniqueLabel; } internal bool LabelExists(String label) { foreach(TreeNode node in TvList.Nodes) { if(String.Compare(node.Text, label, ((!_caseSensitive) ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal)) == 0) { return true; } } return false; } internal void UpdateButtonsEnabling() { int selectedIndex = SelectedIndex; bool anItemIsSelected = (selectedIndex >= 0); BtnRemove.Enabled = anItemIsSelected; if (anItemIsSelected) { BtnUp.Enabled = (selectedIndex > 0); BtnDown.Enabled = (selectedIndex < TvList.Nodes.Count - 1); } else { BtnUp.Enabled = false; BtnDown.Enabled = false; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GeometryModel3D.cs
- NTAccount.cs
- Serializer.cs
- ExtendedPropertyCollection.cs
- mactripleDES.cs
- LogExtentCollection.cs
- CursorConverter.cs
- PeerObject.cs
- AccessibilityHelperForVista.cs
- BitmapEffect.cs
- path.cs
- InheritablePropertyChangeInfo.cs
- HttpApplicationFactory.cs
- TextSearch.cs
- ToolStripItem.cs
- KeyTimeConverter.cs
- iisPickupDirectory.cs
- DataSourceView.cs
- OSEnvironmentHelper.cs
- InstanceKey.cs
- AdornedElementPlaceholder.cs
- LOSFormatter.cs
- RegistryKey.cs
- IPipelineRuntime.cs
- IDQuery.cs
- XmlSchemaDatatype.cs
- ComplexType.cs
- Variant.cs
- CodeTypeReferenceCollection.cs
- SafeNativeMethodsCLR.cs
- CheckoutException.cs
- ScriptReference.cs
- XmlImplementation.cs
- ObjectCacheHost.cs
- TypeConstant.cs
- GuidelineSet.cs
- KeyEventArgs.cs
- JsonDeserializer.cs
- GuidelineSet.cs
- DataGridViewCellParsingEventArgs.cs
- Splitter.cs
- URLIdentityPermission.cs
- DataControlImageButton.cs
- CoordinationService.cs
- ExternalCalls.cs
- NodeFunctions.cs
- QueryLifecycle.cs
- WSDualHttpSecurityElement.cs
- TextViewBase.cs
- DragStartedEventArgs.cs
- RangeExpression.cs
- XmlParserContext.cs
- FileDialogCustomPlaces.cs
- SpellerInterop.cs
- DBSchemaTable.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- HMAC.cs
- ComplexLine.cs
- DoubleLinkListEnumerator.cs
- AddingNewEventArgs.cs
- SmtpTransport.cs
- MobileControlsSectionHandler.cs
- HttpProfileGroupBase.cs
- ConfigurationSectionGroupCollection.cs
- Base64Decoder.cs
- UndoUnit.cs
- WebPartMovingEventArgs.cs
- BitmapEffectCollection.cs
- CounterCreationData.cs
- XmlNullResolver.cs
- NestedContainer.cs
- SimpleFileLog.cs
- PropertyInfoSet.cs
- ControlBindingsCollection.cs
- Point3DValueSerializer.cs
- ColorMatrix.cs
- SingleConverter.cs
- UnsafeNativeMethodsPenimc.cs
- QilFunction.cs
- UriTemplateDispatchFormatter.cs
- DictionarySurrogate.cs
- RuleSettings.cs
- ResourceExpressionBuilder.cs
- HttpCacheParams.cs
- ComponentGlyph.cs
- ErrorProvider.cs
- oledbconnectionstring.cs
- ContextMenu.cs
- TextElement.cs
- SqlDataSourceCustomCommandPanel.cs
- DesignConnectionCollection.cs
- EventsTab.cs
- MasterPageCodeDomTreeGenerator.cs
- TextDecoration.cs
- WebPartTransformerAttribute.cs
- ButtonChrome.cs
- CachedResourceDictionaryExtension.cs
- DocumentAutomationPeer.cs
- BooleanKeyFrameCollection.cs
- DataGridViewMethods.cs