diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/App.xaml b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/App.xaml
new file mode 100644
index 0000000000..586df33d81
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/App.xaml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/App.xaml.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/App.xaml.cs
new file mode 100644
index 0000000000..2b6cbb02ec
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/App.xaml.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Windows;
+
+namespace ICSharpCode.TreeView.Demo
+{
+ ///
+ /// Interaction logic for App.xaml
+ ///
+ public partial class App : Application
+ {
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/FileNode.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/FileNode.cs
new file mode 100644
index 0000000000..8e0ea319d9
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/FileNode.cs
@@ -0,0 +1,90 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+using System.Windows;
+
+namespace ICSharpCode.TreeView.Demo
+{
+ public class FileNode : FileSystemNode
+ {
+ public FileNode(string path)
+ {
+ this.name = Path.GetFileName(path);
+ this.info = new FileInfo(path);
+ }
+
+ FileInfo info;
+ string name;
+
+ public override object Text
+ {
+ get
+ {
+ return name;
+ }
+ }
+
+ public override object Icon
+ {
+ get
+ {
+ return Window1.LoadIcon("File.png");
+ }
+ }
+
+ public override object ToolTip
+ {
+ get
+ {
+ return info.FullName;
+ }
+ }
+
+ public override bool IsEditable
+ {
+ get
+ {
+ return true;
+ }
+ }
+
+ public override string LoadEditText()
+ {
+ return name;
+ }
+
+ public override bool SaveEditText(string value)
+ {
+ if (value.Contains("?")) {
+ MessageBox.Show("?");
+ return false;
+ }
+ else {
+ name = value;
+ return true;
+ }
+ }
+
+ public override long? FileSize
+ {
+ get { return info.Length; }
+ }
+
+ public override DateTime? FileModified
+ {
+ get { return info.LastWriteTime; }
+ }
+
+ public override string FullPath
+ {
+ get { return info.FullName; }
+ }
+
+ public override void Paste(IDataObject data)
+ {
+ Parent.Paste(data);
+ }
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/FileSystemNode.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/FileSystemNode.cs
new file mode 100644
index 0000000000..d9598dd09a
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/FileSystemNode.cs
@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+
+namespace ICSharpCode.TreeView.Demo
+{
+ public abstract class FileSystemNode : SharpTreeNode
+ {
+ public abstract string FullPath { get; }
+
+ public virtual long? FileSize
+ {
+ get { return null; }
+ }
+
+ public virtual DateTime? FileModified
+ {
+ get { return null; }
+ }
+
+ public override string ToString()
+ {
+ return FullPath;
+ }
+
+ public override bool CanCopy(SharpTreeNode[] nodes)
+ {
+ return true;
+ }
+
+ public override IDataObject Copy(SharpTreeNode[] nodes)
+ {
+ var data = new DataObject();
+ var paths = SharpTreeNode.ActiveNodes.Cast().Select(n => n.FullPath).ToArray();
+ data.SetData(typeof(string[]), paths);
+ return data;
+ }
+
+ public override bool CanPaste(IDataObject data)
+ {
+ return true;
+ }
+
+ public override bool CanDelete(SharpTreeNode[] nodes)
+ {
+ return nodes.All(n => n.Parent != null);
+ }
+
+ public override void Delete(SharpTreeNode[] nodes)
+ {
+ if (MessageBox.Show("Sure?", "Delete", MessageBoxButton.OKCancel) == MessageBoxResult.OK) {
+ DeleteCore(nodes);
+ }
+ }
+
+ public override void DeleteCore(SharpTreeNode[] nodes)
+ {
+ foreach (var node in nodes.ToArray()) {
+ node.Parent.Children.Remove(node);
+ }
+ }
+
+ public override bool CanDrag(SharpTreeNode[] nodes)
+ {
+ return true;
+ }
+
+ ContextMenu menu;
+
+ public override ContextMenu GetContextMenu()
+ {
+ if (menu == null) {
+ menu = new ContextMenu();
+ menu.Items.Add(new MenuItem() { Command = ApplicationCommands.Cut });
+ menu.Items.Add(new MenuItem() { Command = ApplicationCommands.Copy });
+ menu.Items.Add(new MenuItem() { Command = ApplicationCommands.Paste });
+ menu.Items.Add(new Separator());
+ menu.Items.Add(new MenuItem() { Command = ApplicationCommands.Delete });
+ }
+ return menu;
+ }
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/FolderNode.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/FolderNode.cs
new file mode 100644
index 0000000000..7c0dc5cb03
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/FolderNode.cs
@@ -0,0 +1,100 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+using System.Windows;
+
+namespace ICSharpCode.TreeView.Demo
+{
+ public class FolderNode : FileSystemNode
+ {
+ public FolderNode(string path)
+ {
+ this.path = path;
+ LazyLoading = true;
+ }
+
+ string path;
+
+ public override object Text
+ {
+ get
+ {
+ var name = Path.GetFileName(path);
+ if (name == "") return path;
+ return name;
+ }
+ }
+
+ public override object Icon
+ {
+ get
+ {
+ return Window1.LoadIcon("Folder.png");
+ }
+ }
+
+ public override object ExpandedIcon
+ {
+ get
+ {
+ return Window1.LoadIcon("FolderOpened.png");
+ }
+ }
+
+ public override bool IsCheckable
+ {
+ get
+ {
+ return true;
+ }
+ }
+
+ public override string FullPath
+ {
+ get { return path; }
+ }
+
+ public override void LoadChildren()
+ {
+ try {
+ foreach (var p in Directory.GetDirectories(path)
+ .OrderBy(d => Path.GetDirectoryName(d))) {
+ Children.Add(new FolderNode(p));
+ }
+ foreach (var p in Directory.GetFiles(path)
+ .OrderBy(f => Path.GetFileName(f))) {
+ Children.Add(new FileNode(p));
+ }
+ }
+ catch {
+ }
+ }
+
+ public override DropEffect CanDrop(IDataObject data, DropEffect requestedEffect)
+ {
+ var paths = data.GetData(typeof(string[])) as string[];
+ if (paths != null) {
+ return requestedEffect == DropEffect.Link ? DropEffect.Move : requestedEffect;
+ }
+ return DropEffect.None;
+ }
+
+ public override void Drop(IDataObject data, int index, DropEffect finalEffect)
+ {
+ var paths = data.GetData(typeof(string[])) as string[];
+ if (paths != null) {
+ for (int i = 0; i < paths.Length; i++) {
+ var p = paths[i];
+ if (File.Exists(p)) {
+ Children.Insert(index + i, new FileNode(p));
+ }
+ else {
+ Children.Insert(index + i, new FolderNode(p));
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/ICSharpCode.TreeView.Demo.csproj b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/ICSharpCode.TreeView.Demo.csproj
new file mode 100644
index 0000000000..2032f2470f
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/ICSharpCode.TreeView.Demo.csproj
@@ -0,0 +1,101 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {B521D667-3613-429C-AB58-26A5B5A82004}
+ WinExe
+ Properties
+ ICSharpCode.TreeView.Demo
+ ICSharpCode.TreeView.Demo
+ v3.5
+ 512
+ {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ 4
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+ 3.5
+
+
+ 3.5
+
+
+ 3.5
+
+
+
+
+
+
+
+
+
+ MSBuild:Compile
+ Designer
+
+
+ MSBuild:Compile
+ Designer
+
+
+ App.xaml
+ Code
+
+
+ Window1.xaml
+ Code
+
+
+
+
+ Properties\GlobalAssemblyInfo.cs
+
+
+
+
+
+ Code
+
+
+
+
+
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}
+ ICSharpCode.TreeView
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Images/File.png b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Images/File.png
new file mode 100644
index 0000000000..8b8b1ca000
Binary files /dev/null and b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Images/File.png differ
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Images/Folder.png b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Images/Folder.png
new file mode 100644
index 0000000000..70eda6662a
Binary files /dev/null and b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Images/Folder.png differ
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Images/FolderOpened.png b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Images/FolderOpened.png
new file mode 100644
index 0000000000..ea183048f3
Binary files /dev/null and b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Images/FolderOpened.png differ
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Properties/AssemblyInfo.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..5c236e82e9
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Properties/AssemblyInfo.cs
@@ -0,0 +1,46 @@
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ICSharpCode.TreeView.Demo")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//In order to begin building localizable applications, set
+//CultureYouAreCodingWith in your .csproj file
+//inside a . For example, if you are using US english
+//in your source files, set the to en-US. Then uncomment
+//the NeutralResourceLanguage attribute below. Update the "en-US" in
+//the line below to match the UICulture setting in the project file.
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
+
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Window1.xaml b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Window1.xaml
new file mode 100644
index 0000000000..a7a99f634e
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Window1.xaml
@@ -0,0 +1,67 @@
+
+
+
+
+
+ Features: MVVM (POCO variant), Multiselect, Drag and Drop (with or without order), Cut / Copy / Paste / Delete, Rename (try rename file to '?'),
+ VirtualizationMode.Recycling (by default), Root Lines, Columns (using ListView), Icon, Checkbox, ContextMenu, Lazy Loading.
+
+ Changes does not affect real file system.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Window1.xaml.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Window1.xaml.cs
new file mode 100644
index 0000000000..7ccd7e38f6
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView.Demo/Window1.xaml.cs
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+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;
+
+namespace ICSharpCode.TreeView.Demo
+{
+ public partial class Window1 : Window
+ {
+ public Window1()
+ {
+ InitializeComponent();
+
+ treeView1.Root = new FolderNode("c:\\");
+ //treeView1.SelectionChanged += new SelectionChangedEventHandler(treeView1_SelectionChanged);
+
+ treeView2.Root = new FolderNode("c:\\");
+ }
+
+ //void treeView1_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ //{
+ // //Debug.WriteLine(treeView1.SelectedItems.Count);
+
+ // StringBuilder sb = new StringBuilder();
+ // foreach (var item in SharpTreeNode.ActiveNodes) {
+ // sb.Append(item.ToString() + "; ");
+ // }
+ // Debug.WriteLine(sb.ToString());
+ //}
+
+ public static Image LoadIcon(string name)
+ {
+ var frame = BitmapFrame.Create(new Uri("pack://application:,,,/Images/" + name, UriKind.Absolute));
+ Image result = new Image();
+ result.Source = frame;
+ return result;
+ }
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/Converters.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/Converters.cs
new file mode 100644
index 0000000000..e86b6494ad
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/Converters.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Markup;
+using System.Windows.Data;
+using System.Globalization;
+
+namespace ICSharpCode.TreeView
+{
+ public class CollapsedWhenFalse : MarkupExtension, IValueConverter
+ {
+ public static CollapsedWhenFalse Instance = new CollapsedWhenFalse();
+
+ public override object ProvideValue(IServiceProvider serviceProvider)
+ {
+ return Instance;
+ }
+
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ return (bool)value ? Visibility.Visible : Visibility.Collapsed;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/DropEffect.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/DropEffect.cs
new file mode 100644
index 0000000000..3428911c5e
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/DropEffect.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace ICSharpCode.TreeView
+{
+ public enum DropEffect
+ {
+ None, Move, Copy, Link
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/EditTextBox.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/EditTextBox.cs
new file mode 100644
index 0000000000..517db5bed4
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/EditTextBox.cs
@@ -0,0 +1,81 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Controls;
+using System.Windows.Input;
+using System.Windows.Data;
+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;
+ }
+ }
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/ExtensionMethods.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/ExtensionMethods.cs
new file mode 100644
index 0000000000..f77dd33b44
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/ExtensionMethods.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Media;
+using System.Windows;
+using System.Collections;
+using System.Windows.Input;
+
+namespace ICSharpCode.TreeView
+{
+ public static class ExtensionMethods
+ {
+ public static T FindAncestor(this DependencyObject d) where T : class
+ {
+ return AncestorsAndSelf(d).OfType().FirstOrDefault();
+ }
+
+ public static IEnumerable AncestorsAndSelf(this DependencyObject d)
+ {
+ while (d != null) {
+ yield return d;
+ d = VisualTreeHelper.GetParent(d);
+ }
+ }
+
+ public static void AddOnce(this IList list, object item)
+ {
+ if (!list.Contains(item)) {
+ list.Add(item);
+ }
+ }
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/GeneralAdorner.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/GeneralAdorner.cs
new file mode 100644
index 0000000000..04c05aa732
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/GeneralAdorner.cs
@@ -0,0 +1,67 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Documents;
+using System.Windows;
+using System.Windows.Media;
+
+namespace ICSharpCode.TreeView
+{
+ public class GeneralAdorner : Adorner
+ {
+ public GeneralAdorner(UIElement target)
+ : base(target)
+ {
+ }
+
+ FrameworkElement child;
+
+ public FrameworkElement Child
+ {
+ get
+ {
+ return child;
+ }
+ set
+ {
+ if (child != value) {
+ RemoveVisualChild(child);
+ RemoveLogicalChild(child);
+ child = value;
+ AddLogicalChild(value);
+ AddVisualChild(value);
+ InvalidateMeasure();
+ }
+ }
+ }
+
+ protected override int VisualChildrenCount
+ {
+ get { return child == null ? 0 : 1; }
+ }
+
+ protected override Visual GetVisualChild(int index)
+ {
+ return child;
+ }
+
+ protected override Size MeasureOverride(Size constraint)
+ {
+ if (child != null) {
+ child.Measure(constraint);
+ return child.DesiredSize;
+ }
+ return new Size();
+ }
+
+ protected override Size ArrangeOverride(Size finalSize)
+ {
+ if (child != null) {
+ child.Arrange(new Rect(finalSize));
+ return finalSize;
+ }
+ return new Size();
+ }
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/ICSharpCode.TreeView.csproj b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/ICSharpCode.TreeView.csproj
new file mode 100644
index 0000000000..2df7f7c903
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/ICSharpCode.TreeView.csproj
@@ -0,0 +1,89 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}
+ library
+ Properties
+ ICSharpCode.TreeView
+ ICSharpCode.TreeView
+ v3.5
+ 512
+ {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ 4
+ ..\..\..\..\bin\
+
+
+ true
+ full
+ false
+ ..\..\..\..\bin\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ ..\..\..\..\bin\
+ TRACE
+ prompt
+ 4
+
+
+
+
+ 3.5
+
+
+ 3.5
+
+
+ 3.5
+
+
+
+
+
+
+
+
+
+ MSBuild:Compile
+ Designer
+
+
+
+
+ Properties\GlobalAssemblyInfo.cs
+
+
+
+
+
+
+
+
+
+ Code
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/InsertMarker.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/InsertMarker.cs
new file mode 100644
index 0000000000..b38e1e17bc
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/InsertMarker.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Controls;
+using System.Windows;
+
+namespace ICSharpCode.TreeView
+{
+ public class InsertMarker : Control
+ {
+ static InsertMarker()
+ {
+ DefaultStyleKeyProperty.OverrideMetadata(typeof(InsertMarker),
+ new FrameworkPropertyMetadata(typeof(InsertMarker)));
+ }
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/LinesRenderer.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/LinesRenderer.cs
new file mode 100644
index 0000000000..739e2cccdc
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/LinesRenderer.cs
@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Media;
+
+namespace ICSharpCode.TreeView
+{
+ class LinesRenderer : FrameworkElement
+ {
+ static LinesRenderer()
+ {
+ pen = new Pen(Brushes.LightGray, 1);
+ pen.Freeze();
+ }
+
+ static Pen pen;
+
+ SharpTreeNodeView NodeView
+ {
+ get { return TemplatedParent as SharpTreeNodeView; }
+ }
+
+ protected override void OnRender(DrawingContext dc)
+ {
+ var indent = NodeView.CalculateIndent();
+ if (indent == 0) return;
+
+ var p = new Point(indent + 4.5, 0);
+
+ if (NodeView.Node.IsLast) {
+ dc.DrawLine(pen, p, new Point(p.X, ActualHeight / 2));
+ }
+ else {
+ dc.DrawLine(pen, p, new Point(p.X, ActualHeight));
+ }
+
+ dc.DrawLine(pen, new Point(p.X, ActualHeight / 2), new Point(p.X + 10, ActualHeight / 2));
+
+ var current = NodeView.Node;
+ while (true) {
+ p.X -= 19;
+ current = current.Parent;
+ if (p.X < 0) break;
+ if (!current.IsLast) {
+ dc.DrawLine(pen, p, new Point(p.X, ActualHeight));
+ }
+ }
+ }
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/Properties/AssemblyInfo.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..cab26163ba
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/Properties/AssemblyInfo.cs
@@ -0,0 +1,51 @@
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+using System.Windows.Markup;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ICSharpCode.TreeView")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//In order to begin building localizable applications, set
+//CultureYouAreCodingWith in your .csproj file
+//inside a . For example, if you are using US english
+//in your source files, set the to en-US. Then uncomment
+//the NeutralResourceLanguage attribute below. Update the "en-US" in
+//the line below to match the UICulture setting in the project file.
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
+
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+
+[assembly: XmlnsPrefix("http://sharpdevelop.net", "sd")]
+
+[assembly: XmlnsDefinition("http://sharpdevelop.net", "ICSharpCode.TreeView")]
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeNode.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeNode.cs
new file mode 100644
index 0000000000..179468526e
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeNode.cs
@@ -0,0 +1,593 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.ComponentModel;
+using System.Collections.ObjectModel;
+using System.Windows.Controls;
+using System.Collections.Specialized;
+using System.Windows.Input;
+
+namespace ICSharpCode.TreeView
+{
+ public class SharpTreeNode : INotifyPropertyChanged
+ {
+ #region Main
+
+ static SharpTreeNode()
+ {
+ SelectedNodes = new List();
+ ActiveNodes = new List();
+ StartCuttedDataWatcher();
+ }
+
+ public static List SelectedNodes { get; private set; }
+ public static List ActiveNodes { get; private set; }
+
+ static SharpTreeNode[] ActiveNodesArray
+ {
+ get
+ {
+ return ActiveNodes.ToArray();
+ }
+ }
+
+ public SharpTreeNode()
+ {
+ Children = new SharpTreeNodeCollection(this);
+ }
+
+ public SharpTreeNodeCollection Children { get; private set; }
+ public SharpTreeNode Parent { get; internal set; }
+
+ public virtual object Text
+ {
+ get { return null; }
+ }
+
+ public virtual object Icon
+ {
+ get { return null; }
+ }
+
+ public virtual object ToolTip
+ {
+ get { return null; }
+ }
+
+ public int Level
+ {
+ get { return Parent != null ? Parent.Level + 1 : 0; }
+ }
+
+ //bool isSelected;
+
+ //public bool IsSelected
+ //{
+ // get { return isSelected; }
+ // set
+ // {
+ // isSelected = value;
+ // RaisePropertyChanged("IsSelected");
+ // }
+ //}
+
+ public virtual ContextMenu GetContextMenu()
+ {
+ return null;
+ }
+
+ internal protected void OnChildrenChanged(NotifyCollectionChangedEventArgs e)
+ {
+ RaisePropertyChanged("ShowExpander");
+ RaiseIsLastChangedIfNeeded(e);
+ }
+
+ #endregion
+
+ #region Expanding / LazyLoading
+
+ public event EventHandler Collapsing;
+
+ public virtual object ExpandedIcon
+ {
+ get { return Icon; }
+ }
+
+ public virtual bool ShowExpander
+ {
+ get { return Children.Count > 0 || LazyLoading; }
+ }
+
+ //public virtual bool ShowLoading
+ //{
+ // get { return false; }
+ //}
+
+ bool isExpanded;
+
+ public bool IsExpanded
+ {
+ get { return isExpanded; }
+ set
+ {
+ if (isExpanded != value) {
+ isExpanded = value;
+ if (isExpanded) {
+ EnsureLazyChildren();
+ }
+ else {
+ if (Collapsing != null) {
+ Collapsing(this, EventArgs.Empty);
+ }
+ }
+ RaisePropertyChanged("IsExpanded");
+ }
+ }
+ }
+
+ bool lazyLoading;
+
+ public bool LazyLoading
+ {
+ get { return lazyLoading; }
+ set
+ {
+ lazyLoading = value;
+ if (lazyLoading) {
+ IsExpanded = false;
+ }
+ RaisePropertyChanged("LazyLoading");
+ RaisePropertyChanged("ShowExpander");
+ }
+ }
+
+ public virtual void LoadChildren()
+ {
+ }
+
+ public void EnsureLazyChildren()
+ {
+ if (LazyLoading) {
+ LoadChildren();
+ LazyLoading = false;
+ }
+ }
+
+ #endregion
+
+ #region Ancestors / Descendants
+
+ public IEnumerable Descendants()
+ {
+ foreach (var child in Children) {
+ foreach (var child2 in child.DescendantsAndSelf()) {
+ yield return child2;
+ }
+ }
+ }
+
+ public IEnumerable DescendantsAndSelf()
+ {
+ yield return this;
+ foreach (var child in Descendants()) {
+ yield return child;
+ }
+ }
+
+ public IEnumerable ExpandedDescendants()
+ {
+ foreach (var child in Children) {
+ foreach (var child2 in child.ExpandedDescendantsAndSelf()) {
+ yield return child2;
+ }
+ }
+ }
+
+ public IEnumerable ExpandedDescendantsAndSelf()
+ {
+ yield return this;
+ if (IsExpanded) {
+ foreach (var child in Children) {
+ foreach (var child2 in child.ExpandedDescendantsAndSelf()) {
+ yield return child2;
+ }
+ }
+ }
+ }
+
+ public IEnumerable Ancestors()
+ {
+ var node = this;
+ while (node.Parent != null) {
+ yield return node.Parent;
+ node = node.Parent;
+ }
+ }
+
+ public IEnumerable AncestorsAndSelf()
+ {
+ yield return this;
+ foreach (var node in Ancestors()) {
+ yield return node;
+ }
+ }
+
+ #endregion
+
+ #region Editing
+
+ public virtual bool IsEditable
+ {
+ get { return false; }
+ }
+
+ bool isEditing;
+
+ public bool IsEditing
+ {
+ get { return isEditing; }
+ set
+ {
+ if (isEditing != value) {
+ isEditing = value;
+ RaisePropertyChanged("IsEditing");
+ }
+ }
+ }
+
+ public virtual string LoadEditText()
+ {
+ return null;
+ }
+
+ public virtual bool SaveEditText(string value)
+ {
+ return true;
+ }
+
+ #endregion
+
+ #region Checkboxes
+
+ public virtual bool IsCheckable
+ {
+ get { return false; }
+ }
+
+ bool? isChecked;
+
+ public bool? IsChecked
+ {
+ get { return isChecked; }
+ set
+ {
+ SetIsChecked(value, true);
+ }
+ }
+
+ void SetIsChecked(bool? value, bool update)
+ {
+ if (isChecked != value) {
+ isChecked = value;
+
+ if (update) {
+ if (IsChecked != null) {
+ foreach (var child in Descendants()) {
+ if (child.IsCheckable) {
+ child.SetIsChecked(IsChecked, false);
+ }
+ }
+ }
+
+ foreach (var parent in Ancestors()) {
+ if (parent.IsCheckable) {
+ if (!parent.TryValueForIsChecked(true)) {
+ if (!parent.TryValueForIsChecked(false)) {
+ parent.SetIsChecked(null, false);
+ }
+ }
+ }
+ }
+ }
+
+ RaisePropertyChanged("IsChecked");
+ }
+ }
+
+ bool TryValueForIsChecked(bool? value)
+ {
+ if (Children.Where(n => n.IsCheckable).All(n => n.IsChecked == value)) {
+ SetIsChecked(value, false);
+ return true;
+ }
+ return false;
+ }
+
+ #endregion
+
+ #region Cut / Copy / Paste / Delete
+
+ static List cuttedNodes = new List();
+ static IDataObject cuttedData;
+ static EventHandler requerySuggestedHandler; // for weak event
+
+ static void StartCuttedDataWatcher()
+ {
+ requerySuggestedHandler = new EventHandler(CommandManager_RequerySuggested);
+ CommandManager.RequerySuggested += requerySuggestedHandler;
+ }
+
+ static void CommandManager_RequerySuggested(object sender, EventArgs e)
+ {
+ if (cuttedData != null && !Clipboard.IsCurrent(cuttedData)) {
+ ClearCuttedData();
+ }
+ }
+
+ static void ClearCuttedData()
+ {
+ foreach (var node in cuttedNodes) {
+ node.IsCut = false;
+ }
+ cuttedNodes.Clear();
+ cuttedData = null;
+ }
+
+ //static public IEnumerable PurifyNodes(IEnumerable nodes)
+ //{
+ // var list = nodes.ToList();
+ // var array = list.ToArray();
+ // foreach (var node1 in array) {
+ // foreach (var node2 in array) {
+ // if (node1.Descendants().Contains(node2)) {
+ // list.Remove(node2);
+ // }
+ // }
+ // }
+ // return list;
+ //}
+
+ bool isCut;
+
+ public bool IsCut
+ {
+ get { return isCut; }
+ private set
+ {
+ isCut = value;
+ RaisePropertyChanged("IsCut");
+ }
+ }
+
+ internal bool InternalCanCut()
+ {
+ return InternalCanCopy() && InternalCanDelete();
+ }
+
+ internal void InternalCut()
+ {
+ ClearCuttedData();
+ cuttedData = Copy(ActiveNodesArray);
+ Clipboard.SetDataObject(cuttedData);
+
+ foreach (var node in ActiveNodes) {
+ node.IsCut = true;
+ cuttedNodes.Add(node);
+ }
+ }
+
+ internal bool InternalCanCopy()
+ {
+ return CanCopy(ActiveNodesArray);
+ }
+
+ internal void InternalCopy()
+ {
+ Clipboard.SetDataObject(Copy(ActiveNodesArray));
+ }
+
+ internal bool InternalCanPaste()
+ {
+ return CanPaste(Clipboard.GetDataObject());
+ }
+
+ internal void InternalPaste()
+ {
+ Paste(Clipboard.GetDataObject());
+
+ if (cuttedData != null) {
+ DeleteCore(cuttedNodes.ToArray());
+ ClearCuttedData();
+ }
+ }
+
+ internal bool InternalCanDelete()
+ {
+ return CanDelete(ActiveNodesArray);
+ }
+
+ internal void InternalDelete()
+ {
+ Delete(ActiveNodesArray);
+ }
+
+ public virtual bool CanDelete(SharpTreeNode[] nodes)
+ {
+ return false;
+ }
+
+ public virtual void Delete(SharpTreeNode[] nodes)
+ {
+ }
+
+ public virtual void DeleteCore(SharpTreeNode[] nodes)
+ {
+ }
+
+ public virtual bool CanCopy(SharpTreeNode[] nodes)
+ {
+ return false;
+ }
+
+ public virtual IDataObject Copy(SharpTreeNode[] nodes)
+ {
+ return null;
+ }
+
+ public virtual bool CanPaste(IDataObject data)
+ {
+ return false;
+ }
+
+ public virtual void Paste(IDataObject data)
+ {
+ EnsureLazyChildren();
+ Drop(data, Children.Count, DropEffect.Copy);
+ }
+
+ #endregion
+
+ #region Drag and Drop
+
+ internal bool InternalCanDrag()
+ {
+ return CanDrag(ActiveNodesArray);
+ }
+
+ internal void InternalDrag(DependencyObject dragSource)
+ {
+ DragDrop.DoDragDrop(dragSource, Copy(ActiveNodesArray), DragDropEffects.All);
+ }
+
+ internal bool InternalCanDrop(DragEventArgs e, int index)
+ {
+ var finalEffect = GetFinalEffect(e, index);
+ e.Effects = GetDragDropEffects(finalEffect);
+ return finalEffect != DropEffect.None;
+ }
+
+ internal void InternalDrop(DragEventArgs e, int index)
+ {
+ if (LazyLoading) {
+ EnsureLazyChildren();
+ index = Children.Count;
+ }
+
+ var finalEffect = GetFinalEffect(e, index);
+ Drop(e.Data, index, finalEffect);
+
+ if (finalEffect == DropEffect.Move) {
+ DeleteCore(ActiveNodesArray);
+ }
+ }
+
+ DropEffect GetFinalEffect(DragEventArgs e, int index)
+ {
+ var requestedEffect = GetDropEffect(e);
+ var result = CanDrop(e.Data, requestedEffect);
+ if (result == DropEffect.Move) {
+ if (!CanDelete(ActiveNodesArray)) {
+ return DropEffect.None;
+ }
+ }
+ return result;
+ }
+
+ static DropEffect GetDropEffect(DragEventArgs e)
+ {
+ if (e.Data != null) {
+ var all = DragDropKeyStates.ControlKey | DragDropKeyStates.ShiftKey | DragDropKeyStates.AltKey;
+
+ if ((e.KeyStates & all) == DragDropKeyStates.ControlKey) {
+ return DropEffect.Copy;
+ }
+ if ((e.KeyStates & all) == DragDropKeyStates.AltKey) {
+ return DropEffect.Link;
+ }
+ if ((e.KeyStates & all) == (DragDropKeyStates.ControlKey | DragDropKeyStates.ShiftKey)) {
+ return DropEffect.Link;
+ }
+ return DropEffect.Move;
+ }
+ return DropEffect.None;
+ }
+
+ static DragDropEffects GetDragDropEffects(DropEffect effect)
+ {
+ switch (effect) {
+ case DropEffect.Copy:
+ return DragDropEffects.Copy;
+ case DropEffect.Link:
+ return DragDropEffects.Link;
+ case DropEffect.Move:
+ return DragDropEffects.Move;
+ }
+ return DragDropEffects.None;
+ }
+
+ public virtual bool CanDrag(SharpTreeNode[] nodes)
+ {
+ return false;
+ }
+
+ public virtual DropEffect CanDrop(IDataObject data, DropEffect requestedEffect)
+ {
+ return DropEffect.None;
+ }
+
+ public virtual void Drop(IDataObject data, int index, DropEffect finalEffect)
+ {
+ }
+
+ #endregion
+
+ #region IsLast (for TreeView lines)
+
+ public bool IsLast
+ {
+ get
+ {
+ return Parent == null ||
+ Parent.Children[Parent.Children.Count - 1] == this;
+ }
+ }
+
+ void RaiseIsLastChangedIfNeeded(NotifyCollectionChangedEventArgs e)
+ {
+ switch (e.Action) {
+ case NotifyCollectionChangedAction.Add:
+ if (e.NewStartingIndex == Children.Count - 1) {
+ if (Children.Count > 1) {
+ Children[Children.Count - 2].RaisePropertyChanged("IsLast");
+ }
+ Children[Children.Count - 1].RaisePropertyChanged("IsLast");
+ }
+ break;
+ case NotifyCollectionChangedAction.Remove:
+ if (e.OldStartingIndex == Children.Count) {
+ if (Children.Count > 0) {
+ Children[Children.Count - 1].RaisePropertyChanged("IsLast");
+ }
+ }
+ break;
+ }
+ }
+
+ #endregion
+
+ #region INotifyPropertyChanged Members
+
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ public void RaisePropertyChanged(string name)
+ {
+ if (PropertyChanged != null) {
+ PropertyChanged(this, new PropertyChangedEventArgs(name));
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeNodeCollection.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeNodeCollection.cs
new file mode 100644
index 0000000000..1fab715d7a
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeNodeCollection.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections.ObjectModel;
+using System.Collections.Specialized;
+
+namespace ICSharpCode.TreeView
+{
+ public class SharpTreeNodeCollection : ObservableCollection
+ {
+ public SharpTreeNodeCollection(SharpTreeNode parent)
+ {
+ Parent = parent;
+ }
+
+ public SharpTreeNode Parent { get; private set; }
+
+ protected override void InsertItem(int index, SharpTreeNode node)
+ {
+ node.Parent = Parent;
+ base.InsertItem(index, node);
+ }
+
+ protected override void RemoveItem(int index)
+ {
+ var node = this[index];
+ node.Parent = null;
+ base.RemoveItem(index);
+ }
+
+ protected override void ClearItems()
+ {
+ foreach (var node in this) {
+ node.Parent = null;
+ }
+ base.ClearItems();
+ }
+
+ protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
+ {
+ base.OnCollectionChanged(e);
+ Parent.OnChildrenChanged(e);
+ }
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeNodeView.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeNodeView.cs
new file mode 100644
index 0000000000..6c41dce643
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeNodeView.cs
@@ -0,0 +1,146 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Controls;
+using System.Windows;
+using System.Windows.Controls.Primitives;
+using System.Windows.Media;
+using System.Windows.Input;
+using System.ComponentModel;
+using System.Collections.Specialized;
+
+namespace ICSharpCode.TreeView
+{
+ public class SharpTreeNodeView : Control
+ {
+ static SharpTreeNodeView()
+ {
+ DefaultStyleKeyProperty.OverrideMetadata(typeof(SharpTreeNodeView),
+ new FrameworkPropertyMetadata(typeof(SharpTreeNodeView)));
+ }
+
+ public static readonly DependencyProperty TextBackgroundProperty =
+ DependencyProperty.Register("TextBackground", typeof(Brush), typeof(SharpTreeNodeView));
+
+ public Brush TextBackground
+ {
+ get { return (Brush)GetValue(TextBackgroundProperty); }
+ set { SetValue(TextBackgroundProperty, value); }
+ }
+
+ public SharpTreeNode Node
+ {
+ get { return DataContext as SharpTreeNode; }
+ }
+
+ public SharpTreeViewItem ParentItem { get; private set; }
+
+ public SharpTreeView ParentTreeView
+ {
+ get { return ParentItem.ParentTreeView; }
+ }
+
+ internal LinesRenderer LinesRenderer { get; private set; }
+
+ public override void OnApplyTemplate()
+ {
+ base.OnApplyTemplate();
+ LinesRenderer = Template.FindName("linesRenderer", this) as LinesRenderer;
+ UpdateTemplate();
+ }
+
+ protected override void OnVisualParentChanged(DependencyObject oldParent)
+ {
+ base.OnVisualParentChanged(oldParent);
+ ParentItem = this.FindAncestor();
+ ParentItem.NodeView = this;
+ }
+
+ protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
+ {
+ base.OnPropertyChanged(e);
+ if (e.Property == DataContextProperty) {
+ UpdateDataContext(e.OldValue as SharpTreeNode, e.NewValue as SharpTreeNode);
+ }
+ }
+
+ void UpdateDataContext(SharpTreeNode oldNode, SharpTreeNode newNode)
+ {
+ if (newNode != null) {
+ newNode.Collapsing += Node_Collapsing;
+ newNode.PropertyChanged += Node_PropertyChanged;
+ if (Template != null) {
+ UpdateTemplate();
+ }
+ }
+ if (oldNode != null) {
+ oldNode.Collapsing -= Node_Collapsing;
+ oldNode.PropertyChanged -= Node_PropertyChanged;
+ }
+ }
+
+ void Node_PropertyChanged(object sender, PropertyChangedEventArgs e)
+ {
+ if (e.PropertyName == "IsEditing") {
+ OnIsEditingChanged();
+ }
+ else if (e.PropertyName == "IsLast") {
+ if (ParentTreeView.ShowLines) {
+ foreach (var child in Node.ExpandedDescendantsAndSelf()) {
+ var container = ParentTreeView.ItemContainerGenerator.ContainerFromItem(child) as SharpTreeViewItem;
+ if (container != null) {
+ container.NodeView.LinesRenderer.InvalidateVisual();
+ }
+ }
+ }
+ }
+ }
+
+ void Node_Collapsing(object sender, EventArgs e)
+ {
+ ParentTreeView.HandleCollapsing(Node);
+ }
+
+ void OnIsEditingChanged()
+ {
+ var textEditorContainer = Template.FindName("textEditorContainer", this) as Border;
+ if (Node.IsEditing) {
+ textEditorContainer.Child = new EditTextBox() { Item = ParentItem };
+ }
+ else {
+ textEditorContainer.Child = null;
+ }
+ }
+
+ void UpdateTemplate()
+ {
+ var spacer = Template.FindName("spacer", this) as FrameworkElement;
+ spacer.Width = CalculateIndent();
+
+ var expander = Template.FindName("expander", this) as ToggleButton;
+ if (ParentTreeView.Root == Node && !ParentTreeView.ShowRootExpander) {
+ expander.Visibility = Visibility.Collapsed;
+ }
+ else {
+ expander.ClearValue(VisibilityProperty);
+ }
+ }
+
+ internal double CalculateIndent()
+ {
+ var result = 19 * Node.Level;
+ if (ParentTreeView.ShowRoot) {
+ if (!ParentTreeView.ShowRootExpander) {
+ if (ParentTreeView.Root != Node) {
+ result -= 15;
+ }
+ }
+ }
+ else {
+ result -= 19;
+ }
+ return result;
+ }
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeView.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeView.cs
new file mode 100644
index 0000000000..02c67ae5fa
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeView.cs
@@ -0,0 +1,439 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Controls;
+using System.Windows;
+using System.Windows.Media;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+
+namespace ICSharpCode.TreeView
+{
+ public class SharpTreeView : ListView
+ {
+ static SharpTreeView()
+ {
+ SelectionModeProperty.OverrideMetadata(typeof(SharpTreeView),
+ new FrameworkPropertyMetadata(SelectionMode.Extended));
+
+ AlternationCountProperty.OverrideMetadata(typeof(SharpTreeView),
+ new FrameworkPropertyMetadata(2));
+
+ DefaultItemContainerStyleKey =
+ new ComponentResourceKey(typeof(SharpTreeView), "DefaultItemContainerStyleKey");
+
+ VirtualizingStackPanel.VirtualizationModeProperty.OverrideMetadata(typeof(SharpTreeView),
+ new FrameworkPropertyMetadata(VirtualizationMode.Recycling));
+ }
+
+ public static ResourceKey DefaultItemContainerStyleKey { get; private set; }
+
+ public SharpTreeView()
+ {
+ SetResourceReference(ItemContainerStyleProperty, DefaultItemContainerStyleKey);
+ }
+
+ public static readonly DependencyProperty RootProperty =
+ DependencyProperty.Register("Root", typeof(SharpTreeNode), typeof(SharpTreeView));
+
+ public SharpTreeNode Root
+ {
+ get { return (SharpTreeNode)GetValue(RootProperty); }
+ set { SetValue(RootProperty, value); }
+ }
+
+ public static readonly DependencyProperty ShowRootProperty =
+ DependencyProperty.Register("ShowRoot", typeof(bool), typeof(SharpTreeView),
+ new FrameworkPropertyMetadata(true));
+
+ public bool ShowRoot
+ {
+ get { return (bool)GetValue(ShowRootProperty); }
+ set { SetValue(ShowRootProperty, value); }
+ }
+
+ public static readonly DependencyProperty ShowRootExpanderProperty =
+ DependencyProperty.Register("ShowRootExpander", typeof(bool), typeof(SharpTreeView),
+ new FrameworkPropertyMetadata(false));
+
+ public bool ShowRootExpander
+ {
+ get { return (bool)GetValue(ShowRootExpanderProperty); }
+ set { SetValue(ShowRootExpanderProperty, value); }
+ }
+
+ public static readonly DependencyProperty AllowDropOrderProperty =
+ DependencyProperty.Register("AllowDropOrder", typeof(bool), typeof(SharpTreeView));
+
+ public bool AllowDropOrder
+ {
+ get { return (bool)GetValue(AllowDropOrderProperty); }
+ set { SetValue(AllowDropOrderProperty, value); }
+ }
+
+ public static readonly DependencyProperty ShowLinesProperty =
+ DependencyProperty.Register("ShowLines", typeof(bool), typeof(SharpTreeView),
+ new FrameworkPropertyMetadata(true));
+
+ public bool ShowLines
+ {
+ get { return (bool)GetValue(ShowLinesProperty); }
+ set { SetValue(ShowLinesProperty, value); }
+ }
+
+ public static bool GetShowAlternation(DependencyObject obj)
+ {
+ return (bool)obj.GetValue(ShowAlternationProperty);
+ }
+
+ public static void SetShowAlternation(DependencyObject obj, bool value)
+ {
+ obj.SetValue(ShowAlternationProperty, value);
+ }
+
+ public static readonly DependencyProperty ShowAlternationProperty =
+ DependencyProperty.RegisterAttached("ShowAlternation", typeof(bool), typeof(SharpTreeView),
+ new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.Inherits));
+
+ protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
+ {
+ base.OnPropertyChanged(e);
+ if (e.Property == RootProperty ||
+ e.Property == ShowRootProperty ||
+ e.Property == ShowRootExpanderProperty) {
+ Reload();
+ }
+ }
+
+ TreeFlattener flattener;
+
+ void Reload()
+ {
+ if (flattener != null) {
+ flattener.Stop();
+ }
+ if (Root != null) {
+ if (!(ShowRoot && ShowRootExpander)) {
+ Root.IsExpanded = true;
+ }
+ flattener = new TreeFlattener(Root, ShowRoot);
+ ItemsSource = flattener.List;
+ flattener.Start();
+ }
+ }
+
+ protected override DependencyObject GetContainerForItemOverride()
+ {
+ return new SharpTreeViewItem();
+ }
+
+ protected override bool IsItemItsOwnContainerOverride(object item)
+ {
+ return item is SharpTreeViewItem;
+ }
+
+ protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
+ {
+ base.PrepareContainerForItemOverride(element, item);
+ var container = element as SharpTreeViewItem;
+ container.ParentTreeView = this;
+ }
+
+ internal void HandleCollapsing(SharpTreeNode Node)
+ {
+ var selectedChilds = Node.Descendants().Where(n => SharpTreeNode.SelectedNodes.Contains(n));
+ if (selectedChilds.Any()) {
+ var list = SelectedItems.Cast().Except(selectedChilds).ToList();
+ list.AddOnce(Node);
+ SetSelectedItems(list);
+ }
+ }
+
+ #region Track selection
+
+ protected override void OnSelectionChanged(SelectionChangedEventArgs e)
+ {
+ foreach (SharpTreeNode node in e.RemovedItems) {
+ SharpTreeNode.SelectedNodes.Remove(node);
+ }
+ foreach (SharpTreeNode node in e.AddedItems) {
+ SharpTreeNode.SelectedNodes.AddOnce(node);
+ }
+
+ if (IsKeyboardFocusWithin) {
+ foreach (SharpTreeNode node in e.RemovedItems) {
+ SharpTreeNode.ActiveNodes.Remove(node);
+ }
+ foreach (SharpTreeNode node in e.AddedItems) {
+ SharpTreeNode.ActiveNodes.AddOnce(node);
+ }
+ SortActiveNodes();
+ }
+ base.OnSelectionChanged(e);
+ }
+
+ protected override void OnPreviewGotKeyboardFocus(KeyboardFocusChangedEventArgs e)
+ {
+ foreach (SharpTreeNode node in SelectedItems) {
+ SharpTreeNode.ActiveNodes.AddOnce(node);
+ }
+ SortActiveNodes();
+ }
+
+ protected override void OnPreviewLostKeyboardFocus(KeyboardFocusChangedEventArgs e)
+ {
+ foreach (SharpTreeNode node in SelectedItems) {
+ SharpTreeNode.ActiveNodes.Remove(node);
+ }
+ }
+
+ void SortActiveNodes()
+ {
+ SharpTreeNode.ActiveNodes.Sort(delegate(SharpTreeNode n1, SharpTreeNode n2) {
+ var index1 = Items.IndexOf(n1);
+ var index2 = Items.IndexOf(n2);
+ return index1.CompareTo(index2);
+ });
+ }
+
+ #endregion
+
+ #region Drag and Drop
+
+ protected override void OnDragEnter(DragEventArgs e)
+ {
+ e.Effects = DragDropEffects.None;
+ e.Handled = true;
+ }
+
+ protected override void OnDragOver(DragEventArgs e)
+ {
+ e.Effects = DragDropEffects.None;
+ e.Handled = true;
+ }
+
+ internal void HandleDragEnter(SharpTreeViewItem item, DragEventArgs e)
+ {
+ HandleDragOver(item, e);
+ }
+
+ internal void HandleDragOver(SharpTreeViewItem item, DragEventArgs e)
+ {
+ HidePreview();
+ e.Handled = true;
+
+ var target = GetDropTarget(item, e);
+ if (target != null) {
+ ShowPreview(target.Item, target.Place);
+ }
+ }
+
+ internal void HandleDrop(SharpTreeViewItem item, DragEventArgs e)
+ {
+ HidePreview();
+ e.Handled = true;
+
+ var target = GetDropTarget(item, e);
+ if (target != null) {
+ target.Node.InternalDrop(e, target.Index);
+ }
+ }
+
+ internal void HandleDragLeave(SharpTreeViewItem item, DragEventArgs e)
+ {
+ HidePreview();
+ e.Handled = true;
+ }
+
+ class DropTarget
+ {
+ public SharpTreeViewItem Item;
+ public DropPlace Place;
+ public double Y;
+ public SharpTreeNode Node;
+ public int Index;
+ }
+
+ DropTarget GetDropTarget(SharpTreeViewItem item, DragEventArgs e)
+ {
+ var dropTargets = BuildDropTargets(item, e);
+ var y = e.GetPosition(item).Y;
+ foreach (var target in dropTargets) {
+ if (target.Y >= y) {
+ return target;
+ }
+ }
+ return null;
+ }
+
+ List BuildDropTargets(SharpTreeViewItem item, DragEventArgs e)
+ {
+ var result = new List();
+ var node = item.Node;
+
+ if (AllowDropOrder) {
+ TryAddDropTarget(result, item, DropPlace.Before, e);
+ }
+
+ TryAddDropTarget(result, item, DropPlace.Inside, e);
+
+ if (AllowDropOrder) {
+ if (node.IsExpanded && node.Children.Count > 0) {
+ var firstChildItem = ItemContainerGenerator.ContainerFromItem(node.Children[0]) as SharpTreeViewItem;
+ TryAddDropTarget(result, firstChildItem, DropPlace.Before, e);
+ }
+ else {
+ TryAddDropTarget(result, item, DropPlace.After, e);
+ }
+ }
+
+ var h = item.ActualHeight;
+ var y1 = 0.2 * h;
+ var y2 = h / 2;
+ var y3 = h - y1;
+
+ if (result.Count == 2) {
+ if (result[0].Place == DropPlace.Inside &&
+ result[1].Place != DropPlace.Inside) {
+ result[0].Y = y3;
+ }
+ else if (result[0].Place != DropPlace.Inside &&
+ result[1].Place == DropPlace.Inside) {
+ result[0].Y = y1;
+ }
+ else {
+ result[0].Y = y2;
+ }
+ }
+ else if (result.Count == 3) {
+ result[0].Y = y1;
+ result[1].Y = y3;
+ }
+ if (result.Count > 0) {
+ result[result.Count - 1].Y = h;
+ }
+ return result;
+ }
+
+ void TryAddDropTarget(List targets, SharpTreeViewItem item, DropPlace place, DragEventArgs e)
+ {
+ SharpTreeNode node;
+ int index;
+
+ GetNodeAndIndex(item, place, out node, out index);
+
+ if (node != null) {
+ e.Effects = DragDropEffects.None;
+ if (node.InternalCanDrop(e, index)) {
+ DropTarget target = new DropTarget() {
+ Item = item,
+ Place = place,
+ Node = node,
+ Index = index
+ };
+ targets.Add(target);
+ }
+ }
+ }
+
+ void GetNodeAndIndex(SharpTreeViewItem item, DropPlace place, out SharpTreeNode node, out int index)
+ {
+ node = null;
+ index = 0;
+
+ if (place == DropPlace.Inside) {
+ node = item.Node;
+ index = node.Children.Count;
+ }
+ else if (place == DropPlace.Before) {
+ if (item.Node.Parent != null) {
+ node = item.Node.Parent;
+ index = node.Children.IndexOf(item.Node);
+ }
+ }
+ else {
+ if (item.Node.Parent != null) {
+ node = item.Node.Parent;
+ index = node.Children.IndexOf(item.Node) + 1;
+ }
+ }
+ }
+
+ SharpTreeNodeView previewNodeView;
+ InsertMarker insertMarker;
+ DropPlace previewPlace;
+
+ enum DropPlace
+ {
+ Before, Inside, After
+ }
+
+ void ShowPreview(SharpTreeViewItem item, DropPlace place)
+ {
+ previewNodeView = item.NodeView;
+ previewPlace = place;
+
+ if (place == DropPlace.Inside) {
+ previewNodeView.TextBackground = SystemColors.HighlightBrush;
+ previewNodeView.Foreground = SystemColors.HighlightTextBrush;
+ }
+ else {
+ if (insertMarker == null) {
+ var adornerLayer = AdornerLayer.GetAdornerLayer(this);
+ var adorner = new GeneralAdorner(this);
+ insertMarker = new InsertMarker();
+ adorner.Child = insertMarker;
+ adornerLayer.Add(adorner);
+ }
+
+ insertMarker.Visibility = Visibility.Visible;
+
+ var p1 = previewNodeView.TransformToVisual(this).Transform(new Point());
+ var p = new Point(p1.X + previewNodeView.CalculateIndent() + 4.5, p1.Y - 3);
+
+ if (place == DropPlace.After) {
+ p.Y += previewNodeView.ActualHeight;
+ }
+
+ insertMarker.Margin = new Thickness(p.X, p.Y, 0, 0);
+
+ SharpTreeNodeView secondNodeView = null;
+ var index = flattener.List.IndexOf(item.Node);
+
+ if (place == DropPlace.Before) {
+ if (index > 0) {
+ secondNodeView = (ItemContainerGenerator.ContainerFromIndex(index - 1) as SharpTreeViewItem).NodeView;
+ }
+ }
+ else if (index + 1 < flattener.List.Count) {
+ secondNodeView = (ItemContainerGenerator.ContainerFromIndex(index + 1) as SharpTreeViewItem).NodeView;
+ }
+
+ var w = p1.X + previewNodeView.ActualWidth - p.X;
+
+ if (secondNodeView != null) {
+ var p2 = secondNodeView.TransformToVisual(this).Transform(new Point());
+ w = Math.Max(w, p2.X + secondNodeView.ActualWidth - p.X);
+ }
+
+ insertMarker.Width = w + 10;
+ }
+ }
+
+ void HidePreview()
+ {
+ if (previewNodeView != null) {
+ previewNodeView.ClearValue(SharpTreeNodeView.TextBackgroundProperty);
+ previewNodeView.ClearValue(SharpTreeNodeView.ForegroundProperty);
+ if (insertMarker != null) {
+ insertMarker.Visibility = Visibility.Collapsed;
+ }
+ previewNodeView = null;
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeViewItem.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeViewItem.cs
new file mode 100644
index 0000000000..3016a4b690
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/SharpTreeViewItem.cs
@@ -0,0 +1,190 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Controls;
+using System.Windows;
+using System.Windows.Media;
+using System.Windows.Input;
+using System.Diagnostics;
+
+namespace ICSharpCode.TreeView
+{
+ public class SharpTreeViewItem : ListViewItem
+ {
+ static SharpTreeViewItem()
+ {
+ DefaultStyleKeyProperty.OverrideMetadata(typeof(SharpTreeViewItem),
+ new FrameworkPropertyMetadata(typeof(SharpTreeViewItem)));
+
+ RegisterCommands();
+ }
+
+ public SharpTreeNode Node
+ {
+ get { return DataContext as SharpTreeNode; }
+ }
+
+ public SharpTreeNodeView NodeView { get; internal set; }
+ public SharpTreeView ParentTreeView { get; internal set; }
+
+ protected override void OnKeyDown(KeyEventArgs e)
+ {
+ switch (e.Key) {
+ case Key.F2:
+ if (SharpTreeNode.ActiveNodes.Count == 1 && Node.IsEditable) {
+ Node.IsEditing = true;
+ }
+ break;
+ case Key.Escape:
+ Node.IsEditing = false;
+ break;
+ case Key.Left:
+ Node.IsExpanded = false;
+ break;
+ case Key.Right:
+ Node.IsExpanded = true;
+ break;
+ }
+ }
+
+ protected override void OnContextMenuOpening(ContextMenuEventArgs e)
+ {
+ ContextMenu = Node.GetContextMenu();
+ }
+
+ protected override void OnContextMenuClosing(ContextMenuEventArgs e)
+ {
+ ClearValue(ContextMenuProperty);
+ }
+
+ #region Mouse
+
+ Point startPoint;
+ bool wasSelected;
+
+ protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
+ {
+ wasSelected = IsSelected;
+ if (!IsSelected) {
+ base.OnMouseLeftButtonDown(e);
+ }
+
+ if (Mouse.LeftButton == MouseButtonState.Pressed) {
+ startPoint = e.GetPosition(null);
+ CaptureMouse();
+
+ if (e.ClickCount == 2) {
+ Node.IsExpanded = !Node.IsExpanded;
+ }
+ }
+ }
+
+ protected override void OnMouseMove(MouseEventArgs e)
+ {
+ if (IsMouseCaptured) {
+ var currentPoint = e.GetPosition(null);
+ if (Math.Abs(currentPoint.X - startPoint.X) >= SystemParameters.MinimumHorizontalDragDistance ||
+ Math.Abs(currentPoint.Y - startPoint.Y) >= SystemParameters.MinimumVerticalDragDistance) {
+
+ if (Node.InternalCanDrag()) {
+ Node.InternalDrag(this);
+ }
+ }
+ }
+ }
+
+ protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
+ {
+ ReleaseMouseCapture();
+ if (wasSelected) {
+ base.OnMouseLeftButtonDown(e);
+ }
+ }
+
+ #endregion
+
+ #region Drag and Drop
+
+ protected override void OnDragEnter(DragEventArgs e)
+ {
+ ParentTreeView.HandleDragEnter(this, e);
+ }
+
+ protected override void OnDragOver(DragEventArgs e)
+ {
+ ParentTreeView.HandleDragOver(this, e);
+ }
+
+ protected override void OnDrop(DragEventArgs e)
+ {
+ ParentTreeView.HandleDrop(this, e);
+ }
+
+ protected override void OnDragLeave(DragEventArgs e)
+ {
+ ParentTreeView.HandleDragLeave(this, e);
+ }
+
+ #endregion
+
+ #region Cut / Copy / Paste / Delete Commands
+
+ static void RegisterCommands()
+ {
+ CommandManager.RegisterClassCommandBinding(typeof(SharpTreeViewItem),
+ new CommandBinding(ApplicationCommands.Cut, HandleExecuted_Cut, HandleCanExecute_Cut));
+
+ CommandManager.RegisterClassCommandBinding(typeof(SharpTreeViewItem),
+ new CommandBinding(ApplicationCommands.Copy, HandleExecuted_Copy, HandleCanExecute_Copy));
+
+ CommandManager.RegisterClassCommandBinding(typeof(SharpTreeViewItem),
+ new CommandBinding(ApplicationCommands.Paste, HandleExecuted_Paste, HandleCanExecute_Paste));
+
+ CommandManager.RegisterClassCommandBinding(typeof(SharpTreeViewItem),
+ new CommandBinding(ApplicationCommands.Delete, HandleExecuted_Delete, HandleCanExecute_Delete));
+ }
+
+ static void HandleExecuted_Cut(object sender, ExecutedRoutedEventArgs e)
+ {
+ (sender as SharpTreeViewItem).Node.InternalCut();
+ }
+
+ static void HandleCanExecute_Cut(object sender, CanExecuteRoutedEventArgs e)
+ {
+ e.CanExecute = (sender as SharpTreeViewItem).Node.InternalCanCut();
+ }
+
+ static void HandleExecuted_Copy(object sender, ExecutedRoutedEventArgs e)
+ {
+ (sender as SharpTreeViewItem).Node.InternalCopy();
+ }
+
+ static void HandleCanExecute_Copy(object sender, CanExecuteRoutedEventArgs e)
+ {
+ e.CanExecute = (sender as SharpTreeViewItem).Node.InternalCanCopy();
+ }
+
+ static void HandleExecuted_Paste(object sender, ExecutedRoutedEventArgs e)
+ {
+ (sender as SharpTreeViewItem).Node.InternalPaste();
+ }
+
+ static void HandleCanExecute_Paste(object sender, CanExecuteRoutedEventArgs e)
+ {
+ e.CanExecute = (sender as SharpTreeViewItem).Node.InternalCanPaste();
+ }
+
+ static void HandleExecuted_Delete(object sender, ExecutedRoutedEventArgs e)
+ {
+ (sender as SharpTreeViewItem).Node.InternalDelete();
+ }
+
+ static void HandleCanExecute_Delete(object sender, CanExecuteRoutedEventArgs e)
+ {
+ e.CanExecute = (sender as SharpTreeViewItem).Node.InternalCanDelete();
+ }
+
+ #endregion
+ }
+}
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/Themes/Generic.xaml b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/Themes/Generic.xaml
new file mode 100644
index 0000000000..17a34bcdae
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/Themes/Generic.xaml
@@ -0,0 +1,244 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Libraries/SharpTreeView/ICSharpCode.TreeView/TreeFlattener.cs b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/TreeFlattener.cs
new file mode 100644
index 0000000000..666796c48b
--- /dev/null
+++ b/src/Libraries/SharpTreeView/ICSharpCode.TreeView/TreeFlattener.cs
@@ -0,0 +1,147 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Collections.Specialized;
+
+namespace ICSharpCode.TreeView
+{
+ class TreeFlattener
+ {
+ public TreeFlattener(SharpTreeNode root, bool includeRoot)
+ {
+ this.root = root;
+ this.includeRoot = includeRoot;
+ List = new ObservableCollection();
+ }
+
+ SharpTreeNode root;
+ bool includeRoot;
+
+ public ObservableCollection List { get; private set; }
+
+ public void Start()
+ {
+ if (includeRoot) {
+ Add(root);
+ }
+ else {
+ root.Children.CollectionChanged += node_ChildrenChanged;
+ }
+
+ foreach (var node in root.ExpandedDescendants()) {
+ Add(node);
+ }
+ }
+
+ public void Stop()
+ {
+ while (List.Count > 0) {
+ RemoveAt(0);
+ }
+ }
+
+ void Add(SharpTreeNode node)
+ {
+ Insert(List.Count, node);
+ }
+
+ void Insert(int index, SharpTreeNode node)
+ {
+ List.Insert(index, node);
+ node.PropertyChanged += node_PropertyChanged;
+ if (node.IsExpanded) {
+ node.Children.CollectionChanged += node_ChildrenChanged;
+ }
+ }
+
+ void RemoveAt(int index)
+ {
+ var node = List[index];
+ List.RemoveAt(index);
+ node.PropertyChanged -= node_PropertyChanged;
+ if (node.IsExpanded) {
+ node.Children.CollectionChanged -= node_ChildrenChanged;
+ }
+ }
+
+ void ClearDescendants(SharpTreeNode node)
+ {
+ var index = List.IndexOf(node);
+ while (index + 1 < List.Count && List[index + 1].Level > node.Level) {
+ RemoveAt(index + 1);
+ }
+ }
+
+ void node_PropertyChanged(object sender, PropertyChangedEventArgs e)
+ {
+ if (e.PropertyName == "IsExpanded") {
+ var node = sender as SharpTreeNode;
+
+ if (node.IsExpanded) {
+ var index = List.IndexOf(node);
+ foreach (var childNode in node.ExpandedDescendants()) {
+ Insert(++index, childNode);
+ }
+ node.Children.CollectionChanged += node_ChildrenChanged;
+ }
+ else {
+ ClearDescendants(node);
+ node.Children.CollectionChanged -= node_ChildrenChanged;
+ }
+ }
+ }
+
+ void Insert(SharpTreeNode parent, int index, SharpTreeNode node)
+ {
+ int finalIndex = 0;
+ if (index > 0) {
+ finalIndex = List.IndexOf(parent.Children[index - 1]) + 1;
+ while (finalIndex < List.Count && List[finalIndex].Level > node.Level) {
+ finalIndex++;
+ }
+ }
+ else {
+ finalIndex = List.IndexOf(parent) + 1;
+ }
+ Insert(finalIndex, node);
+ }
+
+ void RemoveAt(SharpTreeNode parent, int index, SharpTreeNode node)
+ {
+ var i = List.IndexOf(node);
+ foreach (var child in node.ExpandedDescendantsAndSelf()) {
+ RemoveAt(i);
+ }
+ }
+
+ void node_ChildrenChanged(object sender, NotifyCollectionChangedEventArgs e)
+ {
+ var collection = sender as SharpTreeNodeCollection;
+ var parent = collection.Parent;
+ var index = List.IndexOf(collection.Parent) + 1;
+
+ switch (e.Action) {
+ case NotifyCollectionChangedAction.Add:
+ Insert(parent, e.NewStartingIndex, e.NewItems[0] as SharpTreeNode);
+ break;
+ case NotifyCollectionChangedAction.Remove:
+ RemoveAt(parent, e.OldStartingIndex, e.OldItems[0] as SharpTreeNode);
+ break;
+ case NotifyCollectionChangedAction.Move:
+ RemoveAt(parent, e.OldStartingIndex, e.OldItems[0] as SharpTreeNode);
+ Insert(parent, e.NewStartingIndex, e.NewItems[0] as SharpTreeNode);
+ break;
+ case NotifyCollectionChangedAction.Replace:
+ RemoveAt(parent, e.OldStartingIndex, e.OldItems[0] as SharpTreeNode);
+ Insert(parent, e.NewStartingIndex, e.NewItems[0] as SharpTreeNode);
+ break;
+ case NotifyCollectionChangedAction.Reset:
+ ClearDescendants(parent);
+ break;
+ }
+ }
+ }
+}
diff --git a/src/Libraries/SharpTreeView/SharpTreeView.sln b/src/Libraries/SharpTreeView/SharpTreeView.sln
new file mode 100644
index 0000000000..9e199477af
--- /dev/null
+++ b/src/Libraries/SharpTreeView/SharpTreeView.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView.Demo", "ICSharpCode.TreeView.Demo\ICSharpCode.TreeView.Demo.csproj", "{B521D667-3613-429C-AB58-26A5B5A82004}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B521D667-3613-429C-AB58-26A5B5A82004}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B521D667-3613-429C-AB58-26A5B5A82004}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B521D667-3613-429C-AB58-26A5B5A82004}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B521D667-3613-429C-AB58-26A5B5A82004}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/src/Setup/Files.wxs b/src/Setup/Files.wxs
index c6ba215a9c..5fc5842607 100644
--- a/src/Setup/Files.wxs
+++ b/src/Setup/Files.wxs
@@ -715,6 +715,9 @@
+
+
+
diff --git a/src/SharpDevelop.Tests.sln b/src/SharpDevelop.Tests.sln
index ca3528b1e4..3935dbbaac 100644
--- a/src/SharpDevelop.Tests.sln
+++ b/src/SharpDevelop.Tests.sln
@@ -1,128 +1,130 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
-# SharpDevelop 3.1.0.3955
+# SharpDevelop 3.0.0.3611
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding.Tests", "AddIns\BackendBindings\XamlBinding\XamlBinding.Tests\XamlBinding.Tests.csproj", "{F390DA70-1FE1-4715-81A0-389AB010C130}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding.Tests", "AddIns\BackendBindings\VBNetBinding\Test\VBNetBinding.Tests.csproj", "{50A89267-A28B-4DF3-8E62-912E005143B8}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{F94FA21D-78E6-410B-895D-E16D3E7240DB}"
+ ProjectSection(SolutionItems) = postProject
+ EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit.Tests", "AddIns\Misc\ResourceToolkit\Test\ResourceToolkit.Tests.csproj", "{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding.Tests", "AddIns\BackendBindings\Python\PythonBinding\Test\PythonBinding.Tests.csproj", "{23B517C9-1ECC-4419-A13F-0B7136D085CB}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks.Tests", "AddIns\BackendBindings\Python\Python.Build.Tasks\Test\Python.Build.Tasks.Tests.csproj", "{833904AB-3CD4-4071-9B48-5770E44685AA}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boo", "Boo", "{5DA95927-5F2D-46D8-9265-D092734B6F0E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter.Tests", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Test\NRefactoryToBooConverter.Tests.csproj", "{C9DE556D-325C-4544-B29F-16A9EB7C9830}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding.Tests", "AddIns\BackendBindings\Boo\BooBinding\Test\BooBinding.Tests.csproj", "{6FA16499-896F-4C02-BB43-1AF5C6C7C713}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Tests", "AddIns\Misc\Debugger\Debugger.Tests\Project\Debugger.Tests.csproj", "{A4C858C8-51B6-4265-A695-A20FCEBA1D19}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace.Tests", "AddIns\Misc\SearchAndReplace\Test\SearchAndReplace.Tests.csproj", "{A569DCC1-C608-45FD-B770-4F79335EF154}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor.Tests", "AddIns\DisplayBindings\XmlEditor\Test\XmlEditor.Tests.csproj", "{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting.Tests", "AddIns\Misc\UnitTesting\Test\UnitTesting.Tests.csproj", "{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding.Tests", "AddIns\BackendBindings\WixBinding\Test\WixBinding.Tests.csproj", "{388E7B64-0393-4EB4-A3E3-5C474F141853}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage.Tests", "AddIns\Misc\CodeCoverage\Test\CodeCoverage.Tests.csproj", "{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage.Tests", "AddIns\Misc\CodeCoverage\Test\CodeCoverage.Tests.csproj", "{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding.Tests", "AddIns\BackendBindings\WixBinding\Test\WixBinding.Tests.csproj", "{388E7B64-0393-4EB4-A3E3-5C474F141853}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting.Tests", "AddIns\Misc\UnitTesting\Test\UnitTesting.Tests.csproj", "{44A8DE09-CAB9-49D8-9CFC-5EB0A552F181}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor.Tests", "AddIns\DisplayBindings\XmlEditor\Test\XmlEditor.Tests.csproj", "{FC0FE702-A87D-4D70-A9B6-1ECCD611125F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace.Tests", "AddIns\Misc\SearchAndReplace\Test\SearchAndReplace.Tests.csproj", "{A569DCC1-C608-45FD-B770-4F79335EF154}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boo", "Boo", "{5DA95927-5F2D-46D8-9265-D092734B6F0E}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Tests", "AddIns\Misc\Debugger\Debugger.Tests\Project\Debugger.Tests.csproj", "{A4C858C8-51B6-4265-A695-A20FCEBA1D19}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding.Tests", "AddIns\BackendBindings\Boo\BooBinding\Test\BooBinding.Tests.csproj", "{6FA16499-896F-4C02-BB43-1AF5C6C7C713}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{F94FA21D-78E6-410B-895D-E16D3E7240DB}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter.Tests", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Test\NRefactoryToBooConverter.Tests.csproj", "{C9DE556D-325C-4544-B29F-16A9EB7C9830}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks.Tests", "AddIns\BackendBindings\Python\Python.Build.Tasks\Test\Python.Build.Tasks.Tests.csproj", "{833904AB-3CD4-4071-9B48-5770E44685AA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit.Tests", "AddIns\Misc\ResourceToolkit\Test\ResourceToolkit.Tests.csproj", "{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding.Tests", "AddIns\BackendBindings\Python\PythonBinding\Test\PythonBinding.Tests.csproj", "{23B517C9-1ECC-4419-A13F-0B7136D085CB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding.Tests", "AddIns\BackendBindings\VBNetBinding\Test\VBNetBinding.Tests.csproj", "{50A89267-A28B-4DF3-8E62-912E005143B8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding.Tests", "AddIns\BackendBindings\XamlBinding\XamlBinding.Tests\XamlBinding.Tests.csproj", "{F390DA70-1FE1-4715-81A0-389AB010C130}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit.Tests", "Libraries\AvalonEdit\ICSharpCode.AvalonEdit.Tests\ICSharpCode.AvalonEdit.Tests.csproj", "{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryTests", "Libraries\NRefactory\Test\NRefactoryTests.csproj", "{870115DD-960A-4406-A6B9-600BCDC36A03}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor.Tests", "Libraries\ICSharpCode.TextEditor\Test\ICSharpCode.TextEditor.Tests.csproj", "{6259D767-BA7C-484D-9472-68F350A20086}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryTests", "Libraries\NRefactory\Test\NRefactoryTests.csproj", "{870115DD-960A-4406-A6B9-600BCDC36A03}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit.Tests", "Libraries\AvalonEdit\ICSharpCode.AvalonEdit.Tests\ICSharpCode.AvalonEdit.Tests.csproj", "{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom.Tests", "Main\ICSharpCode.SharpDevelop.Dom\Tests\ICSharpCode.SharpDevelop.Dom.Tests\ICSharpCode.SharpDevelop.Dom.Tests.csproj", "{7DB80259-24D4-46C3-A024-53FF1987733D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker", "Main\ICSharpCode.SharpDevelop.BuildWorker\ICSharpCode.SharpDevelop.BuildWorker.csproj", "{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Tests", "Main\Base\Test\ICSharpCode.SharpDevelop.Tests.csproj", "{4980B743-B32F-4aba-AABD-45E2CAD3568D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Tests", "Main\Base\Test\ICSharpCode.SharpDevelop.Tests.csproj", "{4980B743-B32F-4aba-AABD-45E2CAD3568D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker", "Main\ICSharpCode.SharpDevelop.BuildWorker\ICSharpCode.SharpDevelop.BuildWorker.csproj", "{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom.Tests", "Main\ICSharpCode.SharpDevelop.Dom\Tests\ICSharpCode.SharpDevelop.Dom.Tests\ICSharpCode.SharpDevelop.Dom.Tests.csproj", "{7DB80259-24D4-46C3-A024-53FF1987733D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
EndProject
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "{970116b0-f96b-4257-8579-986b9cf086f5}"
EndProject
@@ -332,62 +334,67 @@ Global
{F390DA70-1FE1-4715-81A0-389AB010C130}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F390DA70-1FE1-4715-81A0-389AB010C130}.Release|Any CPU.Build.0 = Release|Any CPU
{F390DA70-1FE1-4715-81A0-389AB010C130}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {50A89267-A28B-4DF3-8E62-912E005143B8} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {F94FA21D-78E6-410B-895D-E16D3E7240DB} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {FC0FE702-A87D-4D70-A9B6-1ECCD611125F} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {BF38FB72-B380-4196-AF8C-95749D726C61} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {A5C0E8F8-9D04-46ED-91D6-1DEF1575313B} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {1F261725-6318-4434-A1B1-6C70CE4CD324} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {388E7B64-0393-4EB4-A3E3-5C474F141853} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {44A8DE09-CAB9-49D8-9CFC-5EB0A552F181} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {9196DD8A-B4D4-4780-8742-C5762E547FC2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {A569DCC1-C608-45FD-B770-4F79335EF154} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {5DA95927-5F2D-46D8-9265-D092734B6F0E} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {461606BD-E824-4D0A-8CBA-01810B1F5E02} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {DD9AE6A5-2B9D-443A-BC71-38BE578C36BD} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{F390DA70-1FE1-4715-81A0-389AB010C130} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {5DA95927-5F2D-46D8-9265-D092734B6F0E}
- {6FA16499-896F-4C02-BB43-1AF5C6C7C713} = {5DA95927-5F2D-46D8-9265-D092734B6F0E}
- {DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {5DA95927-5F2D-46D8-9265-D092734B6F0E}
- {C9DE556D-325C-4544-B29F-16A9EB7C9830} = {5DA95927-5F2D-46D8-9265-D092734B6F0E}
- {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
- {EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
- {A4C858C8-51B6-4265-A695-A20FCEBA1D19} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
- {23B517C9-1ECC-4419-A13F-0B7136D085CB} = {F94FA21D-78E6-410B-895D-E16D3E7240DB}
- {833904AB-3CD4-4071-9B48-5770E44685AA} = {F94FA21D-78E6-410B-895D-E16D3E7240DB}
- {8D732610-8FC6-43BA-94C9-7126FD7FE361} = {F94FA21D-78E6-410B-895D-E16D3E7240DB}
+ {7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {DD9AE6A5-2B9D-443A-BC71-38BE578C36BD} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {461606BD-E824-4D0A-8CBA-01810B1F5E02} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {5DA95927-5F2D-46D8-9265-D092734B6F0E} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {A569DCC1-C608-45FD-B770-4F79335EF154} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {9196DD8A-B4D4-4780-8742-C5762E547FC2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {44A8DE09-CAB9-49D8-9CFC-5EB0A552F181} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {388E7B64-0393-4EB4-A3E3-5C474F141853} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {1F261725-6318-4434-A1B1-6C70CE4CD324} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {A5C0E8F8-9D04-46ED-91D6-1DEF1575313B} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {BF38FB72-B380-4196-AF8C-95749D726C61} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {FC0FE702-A87D-4D70-A9B6-1ECCD611125F} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {F94FA21D-78E6-410B-895D-E16D3E7240DB} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {50A89267-A28B-4DF3-8E62-912E005143B8} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {F94FA21D-78E6-410B-895D-E16D3E7240DB}
- {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {870115DD-960A-4406-A6B9-600BCDC36A03} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {6259D767-BA7C-484D-9472-68F350A20086} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {E73BB233-D88B-44A7-A98F-D71EE158381D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {8D732610-8FC6-43BA-94C9-7126FD7FE361} = {F94FA21D-78E6-410B-895D-E16D3E7240DB}
+ {833904AB-3CD4-4071-9B48-5770E44685AA} = {F94FA21D-78E6-410B-895D-E16D3E7240DB}
+ {23B517C9-1ECC-4419-A13F-0B7136D085CB} = {F94FA21D-78E6-410B-895D-E16D3E7240DB}
+ {A4C858C8-51B6-4265-A695-A20FCEBA1D19} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
+ {EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
+ {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
+ {C9DE556D-325C-4544-B29F-16A9EB7C9830} = {5DA95927-5F2D-46D8-9265-D092734B6F0E}
+ {DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {5DA95927-5F2D-46D8-9265-D092734B6F0E}
+ {6FA16499-896F-4C02-BB43-1AF5C6C7C713} = {5DA95927-5F2D-46D8-9265-D092734B6F0E}
+ {4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {5DA95927-5F2D-46D8-9265-D092734B6F0E}
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{6222A3A1-83CE-47A3-A4E4-A018F82D44D8} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {4980B743-B32F-4aba-AABD-45E2CAD3568D} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {7DB80259-24D4-46C3-A024-53FF1987733D} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {E73BB233-D88B-44A7-A98F-D71EE158381D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {6259D767-BA7C-484D-9472-68F350A20086} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {870115DD-960A-4406-A6B9-600BCDC36A03} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {7DB80259-24D4-46C3-A024-53FF1987733D} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {4980B743-B32F-4aba-AABD-45E2CAD3568D} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
EndGlobalSection
EndGlobal
diff --git a/src/SharpDevelop.sln b/src/SharpDevelop.sln
index 29a02024a2..414e10cbba 100644
--- a/src/SharpDevelop.sln
+++ b/src/SharpDevelop.sln
@@ -1,168 +1,170 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
-# SharpDevelop 3.1.0.3946
+# SharpDevelop 3.0.0.3611
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpRefactoring", "AddIns\Misc\SharpRefactoring\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{DB137F0B-9B62-4232-AE92-F7BE0280B8D3}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "86CE7B3F-6273-4215-9E36-6184D98F854E"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}"
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6e59af58-f635-459a-9a35-c9ac41c00339}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReflectorAddIn", "AddIns\Misc\ReflectorAddIn\ReflectorAddIn\Project\ReflectorAddIn.csproj", "{8AA421C8-D7AF-4957-9F43-5135328ACB24}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
EndProject
Project("{982E8BC1-ACD7-4dbf-96AB-B2CE67D6A008}") = "FSharpBinding", "AddIns\BackendBindings\FSharp\FSharpBinding\Project\FSharpBinding.fsproj", "{99BAE3A2-C40D-40D2-A7B4-EBB4798F36E4}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReflectorAddIn", "AddIns\Misc\ReflectorAddIn\ReflectorAddIn\Project\ReflectorAddIn.csproj", "{8AA421C8-D7AF-4957-9F43-5135328ACB24}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}"
- ProjectSection(SolutionItems) = postProject
- EndProjectSection
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6e59af58-f635-459a-9a35-c9ac41c00339}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter", "AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
EndProject
-Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}"
+ ProjectSection(SolutionItems) = postProject
+ EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "AddIns\Misc\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08ce9972-283b-44f4-82fa-966f7dfa6b7a}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PInvokeAddIn", "AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddInManager", "AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XmlEditor", "AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{6B717BD1-CD5E-498C-A42E-9E6A4584DC48}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{6604365C-C702-4C10-9BA8-637F1E3D4D0D}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "AddIns\Misc\Debugger\Debugger.AddIn\Project\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "AddIns\Misc\Debugger\Debugger.Core\Project\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FiletypeRegisterer", "AddIns\Misc\FiletypeRegisterer\Project\FiletypeRegisterer.csproj", "{D022A6CE-7438-41E8-AC64-F2DE18EC54C6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegExpTk", "AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingsEditor", "AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartPage", "AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{DB137F0B-9B62-4232-AE92-F7BE0280B8D3}"
+ ProjectSection(SolutionItems) = postProject
+ EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddinScout", "AddIns\Misc\AddinScout\Project\AddinScout.csproj", "{4B8F0F98-8BE1-402B-AA8B-C8D548577B38}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace", "AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "86CE7B3F-6273-4215-9E36-6184D98F854E"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diagrams", "AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpRefactoring", "AddIns\Misc\SharpRefactoring\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowDesigner", "AddIns\DisplayBindings\WorkflowDesigner\Project\WorkflowDesigner.csproj", "{533F4684-DBA6-4518-B005-C84F22A2DD57}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker", "Main\ICSharpCode.SharpDevelop.BuildWorker\ICSharpCode.SharpDevelop.BuildWorker.csproj", "{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
+Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "B13EFF7F-7EA4-4B68-A375-D112105E9182"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
-Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "Tools\Tools.build", "B13EFF7F-7EA4-4B68-A375-D112105E9182"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sda", "Main\ICSharpCode.SharpDevelop.Sda\ICSharpCode.SharpDevelop.Sda.csproj", "{80318B5F-A25D-45AB-8A95-EF31D2370A4C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker", "Main\ICSharpCode.SharpDevelop.BuildWorker\ICSharpCode.SharpDevelop.BuildWorker.csproj", "{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Dom", "Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -406,74 +408,79 @@ Global
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Release|Any CPU.Build.0 = Release|Any CPU
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
- {0162E499-42D0-409B-AA25-EED21F75336B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {DB137F0B-9B62-4232-AE92-F7BE0280B8D3} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {533F4684-DBA6-4518-B005-C84F22A2DD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
- {08F772A1-F0BE-433E-8B37-F6522953DB05} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
- {5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
- {0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
- {DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
- {DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
- {7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {99BAE3A2-C40D-40D2-A7B4-EBB4798F36E4} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {BF38FB72-B380-4196-AF8C-95749D726C61} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {6e59af58-f635-459a-9a35-c9ac41c00339} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
- {8D732610-8FC6-43BA-94C9-7126FD7FE361} = {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}
- {D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}
- {3CA90546-3B4C-4663-9445-C4E9371750A7} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- 86CE7B3F-6273-4215-9E36-6184D98F854E = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {9196DD8A-B4D4-4780-8742-C5762E547FC2} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {1F261725-6318-4434-A1B1-6C70CE4CD324} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {461606BD-E824-4D0A-8CBA-01810B1F5E02} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
+ {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{8AA421C8-D7AF-4957-9F43-5135328ACB24} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
- {000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
- {869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
- {E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
- {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
+ {461606BD-E824-4D0A-8CBA-01810B1F5E02} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {3EAA45A9-735C-4AC7-A799-947B93EA449D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {E54A5AD2-418D-4A85-BA5E-CD803DE38715} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {1F261725-6318-4434-A1B1-6C70CE4CD324} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {08ce9972-283b-44f4-82fa-966f7dfa6b7a} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {5EEB99CF-EA2B-4733-80A6-CE9192D68170} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {F93E52FD-DA66-4CE5-A0CB-BCD902811122} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {918487B7-2153-4618-BBB3-344DBDDF2A2A} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {6604365C-C702-4C10-9BA8-637F1E3D4D0D} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {D022A6CE-7438-41E8-AC64-F2DE18EC54C6} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {64A3E5E6-90BF-47F6-94DF-68C94B62C817} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {4B8F0F98-8BE1-402B-AA8B-C8D548577B38} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {9196DD8A-B4D4-4780-8742-C5762E547FC2} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ 86CE7B3F-6273-4215-9E36-6184D98F854E = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
+ {3CA90546-3B4C-4663-9445-C4E9371750A7} = {CE5B42B7-6E8C-4385-9E97-F4023FC16BF2}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
- {6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {6604365C-C702-4C10-9BA8-637F1E3D4D0D}
+ {E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
+ {869951D5-A0D6-4DC6-9F1D-E6B9A12AC446} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
+ {000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD} = {BDDDCD01-D2FE-4EAD-9425-4B6B91922C7C}
+ {e1b288a2-08ee-4318-8bbb-8ab72c69e33e} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {6e59af58-f635-459a-9a35-c9ac41c00339} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {BF38FB72-B380-4196-AF8C-95749D726C61} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {99BAE3A2-C40D-40D2-A7B4-EBB4798F36E4} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
+ {D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}
+ {8D732610-8FC6-43BA-94C9-7126FD7FE361} = {8CF9DB5A-A2F6-4A88-BABA-100912EAF6E8}
+ {533F4684-DBA6-4518-B005-C84F22A2DD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {DB137F0B-9B62-4232-AE92-F7BE0280B8D3} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {85226AFB-CE71-4851-9A75-7EEC663A8E8A} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {6B717BD1-CD5E-498C-A42E-9E6A4584DC48} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {0162E499-42D0-409B-AA25-EED21F75336B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
+ {DFB936AD-90EE-4B4F-941E-4F4A636F0D92} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
+ {DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD} = {0D37CE59-B0EF-4F3C-B9EB-8557E53A448B}
+ {0991423A-DBF6-4C89-B365-A1DF1EB32E42} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
+ {5A1354DF-4989-4BB4-BC6B-D627C2E9FA13} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
+ {08F772A1-F0BE-433E-8B37-F6522953DB05} = {DB137F0B-9B62-4232-AE92-F7BE0280B8D3}
+ {DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
- {7E4A7172-7FF5-48D0-B719-7CD959DD1AC9} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- B13EFF7F-7EA4-4B68-A375-D112105E9182 = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
- {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
+ {6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {8035765F-D51F-4A0C-A746-2FD100E19419} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ B13EFF7F-7EA4-4B68-A375-D112105E9182 = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
+ {7E4A7172-7FF5-48D0-B719-7CD959DD1AC9} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
EndGlobalSection
EndGlobal