mirror of https://github.com/icsharpcode/ILSpy.git
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							77 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							77 lines
						
					
					
						
							1.4 KiB
						
					
					
				// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) | 
						|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) | 
						|
 | 
						|
using System.Windows.Controls; | 
						|
using System.Windows.Input; | 
						|
using System.Windows; | 
						|
 | 
						|
namespace ICSharpCode.TreeView | 
						|
{ | 
						|
	class EditTextBox : TextBox | 
						|
	{ | 
						|
		static EditTextBox() | 
						|
		{ | 
						|
			DefaultStyleKeyProperty.OverrideMetadata(typeof(EditTextBox), | 
						|
				new FrameworkPropertyMetadata(typeof(EditTextBox))); | 
						|
		} | 
						|
 | 
						|
		public EditTextBox() | 
						|
		{ | 
						|
			Loaded += delegate { Init(); }; | 
						|
		} | 
						|
 | 
						|
		public SharpTreeViewItem Item { get; set; } | 
						|
 | 
						|
		public SharpTreeNode Node { | 
						|
			get { return Item.Node; } | 
						|
		} | 
						|
 | 
						|
		void Init() | 
						|
		{ | 
						|
			Text = Node.LoadEditText(); | 
						|
			Focus(); | 
						|
			SelectAll(); | 
						|
		} | 
						|
 | 
						|
		protected override void OnKeyDown(KeyEventArgs e) | 
						|
		{ | 
						|
			if (e.Key == Key.Enter) { | 
						|
				Commit(); | 
						|
			} else if (e.Key == Key.Escape) { | 
						|
				Node.IsEditing = false; | 
						|
			} | 
						|
		} | 
						|
 | 
						|
		protected override void OnLostKeyboardFocus(KeyboardFocusChangedEventArgs e) | 
						|
		{ | 
						|
			if (Node.IsEditing) { | 
						|
				Commit(); | 
						|
			} | 
						|
		} | 
						|
 | 
						|
		bool commiting; | 
						|
 | 
						|
		void Commit() | 
						|
		{ | 
						|
			if (!commiting) { | 
						|
				commiting = true; | 
						|
 | 
						|
				Node.IsEditing = false; | 
						|
				if (!Node.SaveEditText(Text)) { | 
						|
					Item.Focus(); | 
						|
				} | 
						|
				Node.RaisePropertyChanged("Text"); | 
						|
 | 
						|
				//if (Node.SaveEditText(Text)) { | 
						|
				//    Node.IsEditing = false; | 
						|
				//    Node.RaisePropertyChanged("Text"); | 
						|
				//} | 
						|
				//else { | 
						|
				//    Init(); | 
						|
				//} | 
						|
 | 
						|
				commiting = false; | 
						|
			} | 
						|
		} | 
						|
	} | 
						|
}
 | 
						|
 |