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.
		
		
		
		
		
			
		
			
				
					
					
						
							94 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
	
	
							94 lines
						
					
					
						
							2.3 KiB
						
					
					
				using System.IO; | 
						|
using ICSharpCode.WpfDesign.Designer.OutlineView; | 
						|
using System; | 
						|
using System.Collections.Generic; | 
						|
using System.Collections.ObjectModel; | 
						|
using System.Collections.Specialized; | 
						|
using System.Linq; | 
						|
using System.Reflection; | 
						|
using System.Text; | 
						|
using System.Windows; | 
						|
using System.Windows.Controls; | 
						|
using System.Windows.Data; | 
						|
using System.Windows.Documents; | 
						|
using System.Windows.Input; | 
						|
using System.Windows.Media; | 
						|
using System.Windows.Media.Imaging; | 
						|
using System.Windows.Navigation; | 
						|
using System.Windows.Shapes; | 
						|
using ICSharpCode.WpfDesign.Designer.Services; | 
						|
using Microsoft.Win32; | 
						|
 | 
						|
namespace ICSharpCode.XamlDesigner | 
						|
{ | 
						|
	public partial class ToolboxView | 
						|
	{ | 
						|
		public ToolboxView() | 
						|
		{ | 
						|
			DataContext = Toolbox.Instance; | 
						|
			InitializeComponent(); | 
						|
 | 
						|
			new DragListener(this).DragStarted += Toolbox_DragStarted; | 
						|
			uxTreeView.SelectedItemChanged += uxTreeView_SelectedItemChanged; | 
						|
			uxTreeView.GotKeyboardFocus += uxTreeView_GotKeyboardFocus; | 
						|
		} | 
						|
 | 
						|
		void uxTreeView_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) | 
						|
		{ | 
						|
			PrepareTool(uxTreeView.SelectedItem as ControlNode, false); | 
						|
		} | 
						|
 | 
						|
		void uxTreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) | 
						|
		{ | 
						|
			PrepareTool(uxTreeView.SelectedItem as ControlNode, false); | 
						|
		} | 
						|
 | 
						|
		void Toolbox_DragStarted(object sender, MouseButtonEventArgs e) | 
						|
		{ | 
						|
			PrepareTool(e.GetDataContext() as ControlNode, true); | 
						|
		} | 
						|
 | 
						|
		void PrepareTool(ControlNode node, bool drag) | 
						|
		{ | 
						|
			if (node != null) { | 
						|
				var tool = new CreateComponentTool(node.Type); | 
						|
				if (Shell.Instance.CurrentDocument != null) { | 
						|
					Shell.Instance.CurrentDocument.DesignContext.Services.Tool.CurrentTool = tool; | 
						|
					if (drag) { | 
						|
						DragDrop.DoDragDrop(this, tool, DragDropEffects.Copy); | 
						|
					} | 
						|
				} | 
						|
			} | 
						|
		} | 
						|
 | 
						|
		protected override void OnKeyDown(KeyEventArgs e) | 
						|
		{ | 
						|
			if (e.Key == Key.Delete) { | 
						|
				Remove(); | 
						|
			} | 
						|
		} | 
						|
 | 
						|
		void Remove() | 
						|
		{ | 
						|
			AssemblyNode node = uxTreeView.SelectedItem as AssemblyNode; | 
						|
			if (node != null) { | 
						|
				Toolbox.Instance.Remove(node); | 
						|
			} | 
						|
		} | 
						|
		 | 
						|
		private void BrowseForAssemblies_OnClick(object sender, RoutedEventArgs e) | 
						|
		{ | 
						|
			var dlg = new OpenFileDialog(); | 
						|
			dlg.Filter = "Assemblies (*.dll)|*.dll"; | 
						|
			dlg.Multiselect = true; | 
						|
			dlg.CheckFileExists = true; | 
						|
			if (dlg.ShowDialog().Value) | 
						|
			{ | 
						|
				foreach (var fileName in dlg.FileNames) | 
						|
				{ | 
						|
					Toolbox.Instance.AddAssembly(fileName); | 
						|
				} | 
						|
			} | 
						|
		} | 
						|
	} | 
						|
}
 | 
						|
 |