├── ExampleDockManagerViews ├── ExampleDockManagerViews.csproj ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── View │ ├── DocumentOneView.xaml │ ├── DocumentOneView.xaml.cs │ ├── DocumentThreeView.xaml │ ├── DocumentThreeView.xaml.cs │ ├── DocumentTwoView.xaml │ ├── DocumentTwoView.xaml.cs │ ├── ToolFiveView.xaml │ ├── ToolFiveView.xaml.cs │ ├── ToolFourView.xaml │ ├── ToolFourView.xaml.cs │ ├── ToolOneView.xaml │ ├── ToolOneView.xaml.cs │ ├── ToolThreeView.xaml │ ├── ToolThreeView.xaml.cs │ ├── ToolTwoView.xaml │ └── ToolTwoView.xaml.cs ├── ViewModel │ ├── DocumentOneViewModel.cs │ ├── DocumentThreeViewModel.cs │ ├── DocumentTwoViewModel.cs │ ├── DummyViewModel.cs │ ├── MainViewModel.cs │ ├── ToolFiveViewModel.cs │ ├── ToolFourViewModel.cs │ ├── ToolOneViewModel.cs │ ├── ToolThreeViewModel.cs │ └── ToolTwoViewModel.cs └── obj │ └── Debug │ └── .NETFramework,Version=v4.7.2.AssemblyAttributes.cs ├── OpenControls.Wpf.DockManager.Themes.Modern ├── Dictionary.xaml ├── ModernTheme.cs ├── OpenControls.Wpf.DockManager.Themes.Modern.csproj └── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── OpenControls.Wpf.DockManager.Themes.VS2019 ├── Dictionary.xaml ├── OpenControls.Wpf.DockManager.Themes.VS2019.csproj ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── VS2019Theme.cs └── obj │ └── Debug │ └── .NETFramework,Version=v4.7.2.AssemblyAttributes.cs ├── OpenControls.Wpf.DockManager ├── Command.cs ├── Controls │ ├── IToolListBox.cs │ ├── IToolListBoxItem.cs │ ├── TabHeader.cs │ ├── TabHeaderControl.xaml │ ├── TabHeaderControl.xaml.cs │ ├── ToolListBox.xaml │ └── ToolListBox.xaml.cs ├── Converters │ ├── BrushToColourConverter.cs │ ├── CornerRadiusToStringConverter.cs │ └── ThicknessToStringConverter.cs ├── Dictionary.xaml ├── DockManager │ ├── Command.cs │ ├── Controls │ │ ├── IToolListBox.cs │ │ ├── IToolListBoxItem.cs │ │ ├── TabHeader.cs │ │ ├── TabHeaderControl.xaml │ │ ├── TabHeaderControl.xaml.cs │ │ ├── ToolListBox.xaml │ │ └── ToolListBox.xaml.cs │ ├── Converters │ │ ├── BrushToColourConverter.cs │ │ ├── CornerRadiusToStringConverter.cs │ │ └── ThicknessToStringConverter.cs │ ├── Dictionary.xaml │ ├── DockPane.cs │ ├── DockPaneManager.cs │ ├── DocumentContainer.cs │ ├── DocumentPaneGroup.cs │ ├── DocumentPanel.cs │ ├── Events │ │ ├── FloatEventArgs.cs │ │ ├── FloatEventHandler.cs │ │ ├── ItemClickEventArgs.cs │ │ ├── ItemClickEventHandler.cs │ │ ├── TabClosedEventArgs.cs │ │ └── TabClosedEventHandler.cs │ ├── ExtensionMethods.cs │ ├── FloatingDocumentPaneGroup.cs │ ├── FloatingPane.xaml │ ├── FloatingPane.xaml.cs │ ├── FloatingPaneManager.cs │ ├── FloatingToolPaneGroup.cs │ ├── FloatingViewModel.cs │ ├── Helpers.cs │ ├── IDockPaneHost.cs │ ├── IDockPaneManager.cs │ ├── IFloatingPane.cs │ ├── IFloatingPaneHost.cs │ ├── IFloatingPaneManager.cs │ ├── ILayoutFactory.cs │ ├── ISelectablePane.cs │ ├── IUnpinnedToolHost.cs │ ├── IUnpinnedToolManager.cs │ ├── IViewContainer.cs │ ├── IViewModel.cs │ ├── InsertionIndicatorManager.cs │ ├── LayoutManager.cs │ ├── Resources │ │ ├── ConfigMenu.bmp │ │ └── ConfigMenu.png │ ├── SelectablePane.cs │ ├── Serialisation │ │ ├── LayoutReader.cs │ │ └── LayoutWriter.cs │ ├── SideLocationPane.xaml │ ├── SideLocationPane.xaml.cs │ ├── SplitterPane.cs │ ├── Theme.cs │ ├── ToolContainer.cs │ ├── ToolListBoxItem.cs │ ├── ToolPaneGroup.cs │ ├── UnpinnedToolData.cs │ ├── UnpinnedToolManager.cs │ ├── UnpinnedToolPane.xaml │ ├── UnpinnedToolPane.xaml.cs │ ├── User32.cs │ ├── Utilities.cs │ ├── ViewContainer.cs │ ├── WindowLocation.cs │ ├── WindowLocationPane.xaml │ └── WindowLocationPane.xaml.cs ├── DockPane.cs ├── DockPaneManager.cs ├── DocumentContainer.cs ├── DocumentPaneGroup.cs ├── DocumentPanel.cs ├── Events │ ├── FloatEventArgs.cs │ ├── FloatEventHandler.cs │ ├── ItemClickEventArgs.cs │ ├── ItemClickEventHandler.cs │ ├── TabClosedEventArgs.cs │ └── TabClosedEventHandler.cs ├── ExtensionMethods.cs ├── FloatEventArgs.cs ├── FloatEventHandler.cs ├── FloatingDocumentPaneGroup.cs ├── FloatingPane.xaml ├── FloatingPane.xaml.cs ├── FloatingPaneManager.cs ├── FloatingToolPaneGroup.cs ├── FloatingViewModel.cs ├── Helpers.cs ├── IActiveDocument.cs ├── IDockPaneHost.cs ├── IDockPaneManager.cs ├── IFloatingPane.cs ├── IFloatingPaneHost.cs ├── IFloatingPaneManager.cs ├── ILayoutFactory.cs ├── ISelectablePane.cs ├── IUnpinnedToolHost.cs ├── IUnpinnedToolManager.cs ├── IViewContainer.cs ├── IViewModel.cs ├── InsertionIndicatorManager.cs ├── LayoutManager.cs ├── OpenControls.Wpf.DockManager.csproj ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resources │ ├── ConfigMenu.bmp │ └── ConfigMenu.png ├── SelectablePane.cs ├── Serialisation │ ├── LayoutReader.cs │ └── LayoutWriter.cs ├── SideLocationPane.xaml ├── SideLocationPane.xaml.cs ├── SplitterPane.cs ├── Theme.cs ├── ToolContainer.cs ├── ToolListBoxItem.cs ├── ToolPaneGroup.cs ├── UnpinnedToolData.cs ├── UnpinnedToolManager.cs ├── UnpinnedToolPane.xaml ├── UnpinnedToolPane.xaml.cs ├── User32.cs ├── Utilities.cs ├── ViewContainer.cs ├── WindowLocation.cs ├── WindowLocationPane.xaml ├── WindowLocationPane.xaml.cs ├── bin │ └── Release │ │ └── OpenControls.Wpf.DockManager.nuspec └── obj │ └── Release │ ├── .NETFramework,Version=v4.7.2.AssemblyAttributes.cs │ └── WpfOpenControls.Properties.Resources.resources ├── README.md ├── WpfDockManagerDemo.sln ├── WpfDockManagerDemo ├── App.config ├── App.xaml ├── App.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── WpfDockManagerDemo.csproj └── obj │ └── Release │ └── .NETFramework,Version=v4.7.2.AssemblyAttributes.cs └── WpfDockManagerDemo_2 ├── App.config ├── App.xaml ├── App.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs ├── Resources.resx ├── Settings.Designer.cs └── Settings.settings ├── WpfDockManagerDemo_2.csproj └── obj ├── Debug ├── .NETFramework,Version=v4.7.2.AssemblyAttributes.cs └── WpfDockManagerDemo_2_MarkupCompile.i.cache └── Release ├── .NETFramework,Version=v4.7.2.AssemblyAttributes.cs └── WpfDockManagerDemo_2.csproj.FileListAbsolute.txt /ExampleDockManagerViews/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System.Windows; 6 | 7 | // General Information about an assembly is controlled through the following 8 | // set of attributes. Change these attribute values to modify the information 9 | // associated with an assembly. 10 | [assembly: AssemblyTitle("ExampleDockManagerViews")] 11 | [assembly: AssemblyDescription("")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("")] 14 | [assembly: AssemblyProduct("ExampleDockManagerViews")] 15 | [assembly: AssemblyCopyright("Copyright © 2020")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | 19 | // Setting ComVisible to false makes the types in this assembly not visible 20 | // to COM components. If you need to access a type in this assembly from 21 | // COM, set the ComVisible attribute to true on that type. 22 | [assembly: ComVisible(false)] 23 | 24 | //In order to begin building localizable applications, set 25 | //CultureYouAreCodingWith in your .csproj file 26 | //inside a . For example, if you are using US english 27 | //in your source files, set the to en-US. Then uncomment 28 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 29 | //the line below to match the UICulture setting in the project file. 30 | 31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 32 | 33 | 34 | [assembly:ThemeInfo( 35 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 36 | //(used if a resource is not found in the page, 37 | // or application resource dictionaries) 38 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 39 | //(used if a resource is not found in the page, 40 | // app, or any theme specific resource dictionaries) 41 | )] 42 | 43 | 44 | // Version information for an assembly consists of the following four values: 45 | // 46 | // Major Version 47 | // Minor Version 48 | // Build Number 49 | // Revision 50 | // 51 | // You can specify all the values or you can default the Build and Revision Numbers 52 | // by using the '*' as shown below: 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("1.0.0.0")] 55 | [assembly: AssemblyFileVersion("1.0.0.0")] 56 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ExampleDockManagerViews.Properties { 12 | 13 | 14 | /// 15 | /// A strongly-typed resource class, for looking up localized strings, etc. 16 | /// 17 | // This class was auto-generated by the StronglyTypedResourceBuilder 18 | // class via a tool like ResGen or Visual Studio. 19 | // To add or remove a member, edit your .ResX file then rerun ResGen 20 | // with the /str option, or rebuild your VS project. 21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 24 | internal class Resources { 25 | 26 | private static global::System.Resources.ResourceManager resourceMan; 27 | 28 | private static global::System.Globalization.CultureInfo resourceCulture; 29 | 30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 31 | internal Resources() { 32 | } 33 | 34 | /// 35 | /// Returns the cached ResourceManager instance used by this class. 36 | /// 37 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 38 | internal static global::System.Resources.ResourceManager ResourceManager { 39 | get { 40 | if ((resourceMan == null)) { 41 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ExampleDockManagerViews.Properties.Resources", typeof(Resources).Assembly); 42 | resourceMan = temp; 43 | } 44 | return resourceMan; 45 | } 46 | } 47 | 48 | /// 49 | /// Overrides the current thread's CurrentUICulture property for all 50 | /// resource lookups using this strongly typed resource class. 51 | /// 52 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 53 | internal static global::System.Globalization.CultureInfo Culture { 54 | get { 55 | return resourceCulture; 56 | } 57 | set { 58 | resourceCulture = value; 59 | } 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ExampleDockManagerViews.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/DocumentOneView.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/DocumentOneView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace ExampleDockManagerViews.View 4 | { 5 | /// 6 | /// Interaction logic for DemoOneView.xaml 7 | /// 8 | public partial class DocumentOneView : UserControl 9 | { 10 | public DocumentOneView() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | public OpenControls.Wpf.DockManager.IViewModel IViewModel { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/DocumentThreeView.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 20 | 21 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/DocumentThreeView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace ExampleDockManagerViews.View 4 | { 5 | /// 6 | /// Interaction logic for DemoOneView.xaml 7 | /// 8 | public partial class DocumentThreeView : UserControl 9 | { 10 | public DocumentThreeView() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | public OpenControls.Wpf.DockManager.IViewModel IViewModel { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/DocumentTwoView.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/DocumentTwoView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace ExampleDockManagerViews.View 4 | { 5 | /// 6 | /// Interaction logic for DemoOneView.xaml 7 | /// 8 | public partial class DocumentTwoView : UserControl 9 | { 10 | public DocumentTwoView() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | public OpenControls.Wpf.DockManager.IViewModel IViewModel { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/ToolFiveView.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/ToolFiveView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace ExampleDockManagerViews.View 4 | { 5 | /// 6 | /// Interaction logic for DemoFiveView.xaml 7 | /// 8 | public partial class ToolFiveView : UserControl 9 | { 10 | public ToolFiveView() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | public OpenControls.Wpf.DockManager.IViewModel IViewModel { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/ToolFourView.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/ToolFourView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace ExampleDockManagerViews.View 4 | { 5 | /// 6 | /// Interaction logic for DemoThreeView.xaml 7 | /// 8 | public partial class ToolFourView : UserControl 9 | { 10 | public ToolFourView() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | public OpenControls.Wpf.DockManager.IViewModel IViewModel { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/ToolOneView.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/ToolOneView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace ExampleDockManagerViews.View 4 | { 5 | /// 6 | /// Interaction logic for DemoOneView.xaml 7 | /// 8 | public partial class ToolOneView : UserControl 9 | { 10 | public ToolOneView() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | public OpenControls.Wpf.DockManager.IViewModel IViewModel { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/ToolThreeView.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/ToolThreeView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace ExampleDockManagerViews.View 4 | { 5 | /// 6 | /// Interaction logic for DemoThreeView.xaml 7 | /// 8 | public partial class ToolThreeView : UserControl 9 | { 10 | public ToolThreeView() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | public OpenControls.Wpf.DockManager.IViewModel IViewModel { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/ToolTwoView.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/View/ToolTwoView.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace ExampleDockManagerViews.View 4 | { 5 | /// 6 | /// Interaction logic for DemoTwoView.xaml 7 | /// 8 | public partial class ToolTwoView : UserControl 9 | { 10 | public ToolTwoView() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | public OpenControls.Wpf.DockManager.IViewModel IViewModel { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/ViewModel/DocumentOneViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace ExampleDockManagerViews.ViewModel 2 | { 3 | public class DocumentOneViewModel : DummyViewModel 4 | { 5 | public DocumentOneViewModel() 6 | { 7 | Title = "Document One View Model"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/ViewModel/DocumentThreeViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace ExampleDockManagerViews.ViewModel 2 | { 3 | public class DocumentThreeViewModel : DummyViewModel 4 | { 5 | public DocumentThreeViewModel() 6 | { 7 | Title = "Document Three View Model"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/ViewModel/DocumentTwoViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace ExampleDockManagerViews.ViewModel 2 | { 3 | public class DocumentTwoViewModel : DummyViewModel 4 | { 5 | public DocumentTwoViewModel() 6 | { 7 | Title = "Document Two View Model"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/ViewModel/DummyViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace ExampleDockManagerViews.ViewModel 2 | { 3 | public class DummyViewModel : OpenControls.Wpf.DockManager.IViewModel 4 | { 5 | public string URL { get; set; } 6 | public string Title { get; set; } 7 | public string Tooltip 8 | { 9 | get 10 | { 11 | return URL; 12 | } 13 | } 14 | 15 | public bool CanClose 16 | { 17 | get 18 | { 19 | return true; 20 | } 21 | } 22 | 23 | public bool HasChanged 24 | { 25 | get 26 | { 27 | return true; 28 | } 29 | } 30 | 31 | public void Save() 32 | { 33 | // Do nowt! 34 | } 35 | 36 | public void Close() 37 | { 38 | // Do nowt! 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/ViewModel/ToolFiveViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace ExampleDockManagerViews.ViewModel 2 | { 3 | public class ToolFiveViewModel : DummyViewModel 4 | { 5 | public ToolFiveViewModel() 6 | { 7 | Title = "Tool Five View Model"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/ViewModel/ToolFourViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace ExampleDockManagerViews.ViewModel 2 | { 3 | public class ToolFourViewModel : DummyViewModel 4 | { 5 | public ToolFourViewModel() 6 | { 7 | Title = "Tool Four View Model"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/ViewModel/ToolOneViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace ExampleDockManagerViews.ViewModel 2 | { 3 | public class ToolOneViewModel : DummyViewModel 4 | { 5 | public ToolOneViewModel() 6 | { 7 | Title = "Tool One View Model"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/ViewModel/ToolThreeViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace ExampleDockManagerViews.ViewModel 2 | { 3 | public class ToolThreeViewModel : DummyViewModel 4 | { 5 | public ToolThreeViewModel() 6 | { 7 | Title = "Tool Three View Model"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/ViewModel/ToolTwoViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace ExampleDockManagerViews.ViewModel 2 | { 3 | public class ToolTwoViewModel : DummyViewModel 4 | { 5 | public ToolTwoViewModel() 6 | { 7 | Title = "Tool Two View Model"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /ExampleDockManagerViews/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] 5 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager.Themes.Modern/ModernTheme.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace OpenControls.Wpf.DockManager.Themes 4 | { 5 | public class ModernTheme : Theme 6 | { 7 | public override Uri Uri 8 | { 9 | get 10 | { 11 | return new Uri("/OpenControls.Wpf.DockManager.Themes.Modern;component/Dictionary.xaml", UriKind.Relative); 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager.Themes.Modern/OpenControls.Wpf.DockManager.Themes.Modern.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {E2FCBC58-6CA9-4EA6-852E-EBB43E596F19} 8 | library 9 | OpenControls.Wpf.DockManager.Themes.Modern 10 | OpenControls.Wpf.DockManager.Themes.Modern 11 | v4.7.2 12 | 512 13 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 14 | 4 15 | true 16 | 17 | 18 | true 19 | full 20 | false 21 | ..\OpenControls.Wpf.DockManager\bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | pdbonly 28 | true 29 | ..\OpenControls.Wpf.DockManager\bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | true 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 4.0 42 | 43 | 44 | 45 | 46 | 47 | 48 | MSBuild:Compile 49 | Designer 50 | 51 | 52 | 53 | 54 | 55 | Code 56 | 57 | 58 | True 59 | True 60 | Resources.resx 61 | 62 | 63 | True 64 | Settings.settings 65 | True 66 | 67 | 68 | ResXFileCodeGenerator 69 | Resources.Designer.cs 70 | 71 | 72 | SettingsSingleFileGenerator 73 | Settings.Designer.cs 74 | 75 | 76 | 77 | 78 | {c4d43e50-84b0-47ff-888e-7c8351368bd6} 79 | OpenControls.Wpf.DockManager 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager.Themes.Modern/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | using System.Windows; 4 | using System.Windows.Markup; 5 | 6 | // General Information about an assembly is controlled through the following 7 | // set of attributes. Change these attribute values to modify the information 8 | // associated with an assembly. 9 | [assembly: AssemblyTitle("OpenControls.Wpf.DockManager.Themes.Modern")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("OpenControls.Wpf.DockManager.Themes.Modern")] 14 | [assembly: AssemblyCopyright("Copyright © 2020")] 15 | [assembly: AssemblyTrademark("")] 16 | [assembly: AssemblyCulture("")] 17 | 18 | // Setting ComVisible to false makes the types in this assembly not visible 19 | // to COM components. If you need to access a type in this assembly from 20 | // COM, set the ComVisible attribute to true on that type. 21 | [assembly: ComVisible(false)] 22 | 23 | //In order to begin building localizable applications, set 24 | //CultureYouAreCodingWith in your .csproj file 25 | //inside a . For example, if you are using US english 26 | //in your source files, set the to en-US. Then uncomment 27 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 28 | //the line below to match the UICulture setting in the project file. 29 | 30 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 31 | 32 | 33 | [assembly:ThemeInfo( 34 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 35 | //(used if a resource is not found in the page, 36 | // or application resource dictionaries) 37 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 38 | //(used if a resource is not found in the page, 39 | // app, or any theme specific resource dictionaries) 40 | )] 41 | 42 | [assembly: XmlnsDefinition("http://schemas.opencontrols.com/wpf/xaml/OpenControls.Wpf.DockManager.Themes.Modern", "OpenControls.Wpf.DockManager.Themes.Modern")] 43 | 44 | // Version information for an assembly consists of the following four values: 45 | // 46 | // Major Version 47 | // Minor Version 48 | // Build Number 49 | // Revision 50 | // 51 | // You can specify all the values or you can default the Build and Revision Numbers 52 | // by using the '*' as shown below: 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("1.0.0.0")] 55 | [assembly: AssemblyFileVersion("1.0.0.0")] 56 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager.Themes.Modern/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace OpenControls.Wpf.DockManager.Themes.Modern.Properties { 12 | 13 | 14 | /// 15 | /// A strongly-typed resource class, for looking up localized strings, etc. 16 | /// 17 | // This class was auto-generated by the StronglyTypedResourceBuilder 18 | // class via a tool like ResGen or Visual Studio. 19 | // To add or remove a member, edit your .ResX file then rerun ResGen 20 | // with the /str option, or rebuild your VS project. 21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 24 | internal class Resources { 25 | 26 | private static global::System.Resources.ResourceManager resourceMan; 27 | 28 | private static global::System.Globalization.CultureInfo resourceCulture; 29 | 30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 31 | internal Resources() { 32 | } 33 | 34 | /// 35 | /// Returns the cached ResourceManager instance used by this class. 36 | /// 37 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 38 | internal static global::System.Resources.ResourceManager ResourceManager { 39 | get { 40 | if ((resourceMan == null)) { 41 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OpenControls.Wpf.DockManager.Themes.Modern.Properties.Resources", typeof(Resources).Assembly); 42 | resourceMan = temp; 43 | } 44 | return resourceMan; 45 | } 46 | } 47 | 48 | /// 49 | /// Overrides the current thread's CurrentUICulture property for all 50 | /// resource lookups using this strongly typed resource class. 51 | /// 52 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 53 | internal static global::System.Globalization.CultureInfo Culture { 54 | get { 55 | return resourceCulture; 56 | } 57 | set { 58 | resourceCulture = value; 59 | } 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager.Themes.Modern/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace OpenControls.Wpf.DockManager.Themes.Modern.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager.Themes.Modern/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager.Themes.VS2019/OpenControls.Wpf.DockManager.Themes.VS2019.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {968C6AFE-1E13-4F9D-B8FC-28B2A2168C9D} 8 | library 9 | OpenControls.Wpf.DockManager.Themes.VS2019 10 | OpenControls.Wpf.DockManager.Themes.VS2019 11 | v4.7.2 12 | 512 13 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 14 | 4 15 | true 16 | 17 | 18 | true 19 | full 20 | false 21 | ..\OpenControls.Wpf.DockManager\bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | pdbonly 28 | true 29 | ..\OpenControls.Wpf.DockManager\bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | 36 | 37 | 38 | 39 | 4.0 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | Designer 48 | MSBuild:Compile 49 | 50 | 51 | 52 | 53 | Code 54 | 55 | 56 | True 57 | True 58 | Resources.resx 59 | 60 | 61 | True 62 | Settings.settings 63 | True 64 | 65 | 66 | 67 | ResXFileCodeGenerator 68 | Resources.Designer.cs 69 | 70 | 71 | SettingsSingleFileGenerator 72 | Settings.Designer.cs 73 | 74 | 75 | 76 | 77 | {c4d43e50-84b0-47ff-888e-7c8351368bd6} 78 | OpenControls.Wpf.DockManager 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager.Themes.VS2019/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | using System.Windows; 4 | using System.Windows.Markup; 5 | 6 | // General Information about an assembly is controlled through the following 7 | // set of attributes. Change these attribute values to modify the information 8 | // associated with an assembly. 9 | [assembly: AssemblyTitle("OpenControls.Wpf.DockManager.Themes.VS2019")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("OpenControls.Wpf.DockManager.Themes.VS2019")] 14 | [assembly: AssemblyCopyright("Copyright © 2020")] 15 | [assembly: AssemblyTrademark("")] 16 | [assembly: AssemblyCulture("")] 17 | 18 | // Setting ComVisible to false makes the types in this assembly not visible 19 | // to COM components. If you need to access a type in this assembly from 20 | // COM, set the ComVisible attribute to true on that type. 21 | [assembly: ComVisible(false)] 22 | 23 | //In order to begin building localizable applications, set 24 | //CultureYouAreCodingWith in your .csproj file 25 | //inside a . For example, if you are using US english 26 | //in your source files, set the to en-US. Then uncomment 27 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 28 | //the line below to match the UICulture setting in the project file. 29 | 30 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 31 | 32 | 33 | [assembly:ThemeInfo( 34 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 35 | //(used if a resource is not found in the page, 36 | // or application resource dictionaries) 37 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 38 | //(used if a resource is not found in the page, 39 | // app, or any theme specific resource dictionaries) 40 | )] 41 | 42 | 43 | [assembly: XmlnsDefinition("http://schemas.opencontrols.com/wpf/xaml/OpenControls.Wpf.DockManager.Themes.VS2019", "OpenControls.Wpf.DockManager.Themes.VS2019")] 44 | 45 | // Version information for an assembly consists of the following four values: 46 | // 47 | // Major Version 48 | // Minor Version 49 | // Build Number 50 | // Revision 51 | // 52 | // You can specify all the values or you can default the Build and Revision Numbers 53 | // by using the '*' as shown below: 54 | // [assembly: AssemblyVersion("1.0.*")] 55 | [assembly: AssemblyVersion("1.0.0.0")] 56 | [assembly: AssemblyFileVersion("1.0.0.0")] 57 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager.Themes.VS2019/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace OpenControls.Wpf.DockManager.Themes.VS2019.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OpenControls.Wpf.DockManager.Themes.VS2019.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager.Themes.VS2019/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace OpenControls.Wpf.DockManager.Themes.VS2019.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.6.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager.Themes.VS2019/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager.Themes.VS2019/VS2019Theme.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace OpenControls.Wpf.DockManager.Themes 4 | { 5 | public class VS2019Theme : Theme 6 | { 7 | public override Uri Uri 8 | { 9 | get 10 | { 11 | return new Uri("/OpenControls.Wpf.DockManager.Themes.VS2019;component/Dictionary.xaml", UriKind.Relative); 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager.Themes.VS2019/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] 5 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/Command.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace OpenControls.Wpf.DockManager 4 | { 5 | public class Command : System.Windows.Input.ICommand 6 | { 7 | #region Properties 8 | 9 | private readonly Action ExecuteAction; 10 | private readonly Predicate CanExecuteAction; 11 | 12 | #endregion 13 | 14 | public Command(Action execute) : this(execute, _ => true) 15 | { 16 | } 17 | 18 | public Command(Action action, Predicate canExecute) 19 | { 20 | ExecuteAction = action; 21 | CanExecuteAction = canExecute; 22 | } 23 | 24 | #region Methods 25 | 26 | public bool CanExecute(object parameter) 27 | { 28 | return CanExecuteAction(parameter); 29 | } 30 | 31 | public event EventHandler CanExecuteChanged 32 | { 33 | add { System.Windows.Input.CommandManager.RequerySuggested += value; } 34 | remove { System.Windows.Input.CommandManager.RequerySuggested -= value; } 35 | } 36 | 37 | public void Execute(object parameter) 38 | { 39 | ExecuteAction(parameter); 40 | } 41 | 42 | #endregion 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/Controls/IToolListBox.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace OpenControls.Wpf.DockManager.Controls 8 | { 9 | internal interface IToolListBox 10 | { 11 | WindowLocation WindowLocation { get; set; } 12 | System.Collections.ObjectModel.ObservableCollection ItemsSource { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/Controls/IToolListBoxItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace OpenControls.Wpf.DockManager.Controls 8 | { 9 | public interface IToolListBoxItem 10 | { 11 | string Title { get; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/Controls/ToolListBox.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/Converters/BrushToColourConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Media; 3 | using System.Windows.Data; 4 | 5 | namespace OpenControls.Wpf.DockManager.Converters 6 | { 7 | internal class BrushToColourConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 10 | { 11 | return (value as SolidColorBrush).Color; 12 | } 13 | 14 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 15 | { 16 | if (targetType != typeof(System.Windows.Media.Brush)) 17 | { 18 | throw new InvalidOperationException("The target must be a Brush"); 19 | } 20 | 21 | return new SolidColorBrush((Color)value); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/Converters/CornerRadiusToStringConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Data; 4 | 5 | namespace OpenControls.Wpf.DockManager.Converters 6 | { 7 | internal class CornerRadiusToStringConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 10 | { 11 | return ((CornerRadius)value).ToString(); 12 | } 13 | 14 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 15 | { 16 | if (targetType != typeof(System.Windows.CornerRadius)) 17 | { 18 | throw new InvalidOperationException("The target must be a CornerRadius"); 19 | } 20 | 21 | OpenControls.Wpf.DockManager.Controls.Utilities.Parse(value as string, out CornerRadius cornerRadius); 22 | 23 | return cornerRadius; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/Converters/ThicknessToStringConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Data; 4 | 5 | namespace OpenControls.Wpf.DockManager.Converters 6 | { 7 | class ThicknessToStringConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 10 | { 11 | return ((Thickness)value).ToString(); 12 | } 13 | 14 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 15 | { 16 | if (targetType != typeof(System.Windows.Thickness)) 17 | { 18 | throw new InvalidOperationException("The target must be a Thickness"); 19 | } 20 | 21 | OpenControls.Wpf.DockManager.Controls.Utilities.Parse(value as string, out Thickness thickness); 22 | 23 | return thickness; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/Dictionary.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 16 | 21 | 26 | 30 | 34 | 35 | 36 | 55 | 56 | 59 | 62 | 65 | 68 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/Command.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace OpenControls.Wpf.DockManager 4 | { 5 | public class Command : System.Windows.Input.ICommand 6 | { 7 | #region Properties 8 | 9 | private readonly Action ExecuteAction; 10 | private readonly Predicate CanExecuteAction; 11 | 12 | #endregion 13 | 14 | public Command(Action execute) : this(execute, _ => true) 15 | { 16 | } 17 | 18 | public Command(Action action, Predicate canExecute) 19 | { 20 | ExecuteAction = action; 21 | CanExecuteAction = canExecute; 22 | } 23 | 24 | #region Methods 25 | 26 | public bool CanExecute(object parameter) 27 | { 28 | return CanExecuteAction(parameter); 29 | } 30 | 31 | public event EventHandler CanExecuteChanged 32 | { 33 | add { System.Windows.Input.CommandManager.RequerySuggested += value; } 34 | remove { System.Windows.Input.CommandManager.RequerySuggested -= value; } 35 | } 36 | 37 | public void Execute(object parameter) 38 | { 39 | ExecuteAction(parameter); 40 | } 41 | 42 | #endregion 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/Controls/IToolListBox.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace OpenControls.Wpf.DockManager.Controls 8 | { 9 | internal interface IToolListBox 10 | { 11 | WindowLocation WindowLocation { get; set; } 12 | System.Collections.ObjectModel.ObservableCollection ItemsSource { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/Controls/IToolListBoxItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace OpenControls.Wpf.DockManager.Controls 8 | { 9 | public interface IToolListBoxItem 10 | { 11 | string Title { get; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/Controls/ToolListBox.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/Converters/BrushToColourConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Media; 3 | using System.Windows.Data; 4 | 5 | namespace OpenControls.Wpf.DockManager.Converters 6 | { 7 | internal class BrushToColourConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 10 | { 11 | return (value as SolidColorBrush).Color; 12 | } 13 | 14 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 15 | { 16 | if (targetType != typeof(System.Windows.Media.Brush)) 17 | { 18 | throw new InvalidOperationException("The target must be a Brush"); 19 | } 20 | 21 | return new SolidColorBrush((Color)value); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/Converters/CornerRadiusToStringConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Data; 4 | 5 | namespace OpenControls.Wpf.DockManager.Converters 6 | { 7 | internal class CornerRadiusToStringConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 10 | { 11 | return ((CornerRadius)value).ToString(); 12 | } 13 | 14 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 15 | { 16 | if (targetType != typeof(System.Windows.CornerRadius)) 17 | { 18 | throw new InvalidOperationException("The target must be a CornerRadius"); 19 | } 20 | 21 | OpenControls.Wpf.DockManager.Controls.Utilities.Parse(value as string, out CornerRadius cornerRadius); 22 | 23 | return cornerRadius; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/Converters/ThicknessToStringConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Data; 4 | 5 | namespace OpenControls.Wpf.DockManager.Converters 6 | { 7 | class ThicknessToStringConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 10 | { 11 | return ((Thickness)value).ToString(); 12 | } 13 | 14 | public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 15 | { 16 | if (targetType != typeof(System.Windows.Thickness)) 17 | { 18 | throw new InvalidOperationException("The target must be a Thickness"); 19 | } 20 | 21 | OpenControls.Wpf.DockManager.Controls.Utilities.Parse(value as string, out Thickness thickness); 22 | 23 | return thickness; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/DockPane.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Controls; 4 | using System.Windows.Media; 5 | 6 | namespace OpenControls.Wpf.DockManager 7 | { 8 | internal abstract class DockPane : SelectablePane 9 | { 10 | public DockPane(IViewContainer iViewContainer) 11 | { 12 | IViewContainer = iViewContainer; 13 | IViewContainer.TabClosed += IViewContainer_TabClosed; 14 | IViewContainer.FloatTabRequest += IViewContainer_FloatTabRequest; 15 | Children.Add(iViewContainer as UIElement); 16 | Border = new Border(); 17 | Border.Background = Brushes.Transparent; 18 | Border.IsHitTestVisible = false; 19 | Grid.SetRow(Border, 0); 20 | Grid.SetRowSpan(Border, 99); 21 | Grid.SetColumn(Border, 0); 22 | Grid.SetColumnSpan(Border, 99); 23 | Grid.SetZIndex(Border, -1); 24 | Children.Add(Border); 25 | } 26 | 27 | private void IViewContainer_FloatTabRequest(object sender, EventArgs e) 28 | { 29 | FloatTabRequest?.Invoke(this, e); 30 | } 31 | 32 | private void IViewContainer_TabClosed(object sender, Events.TabClosedEventArgs e) 33 | { 34 | TabClosed?.Invoke(this, e); 35 | } 36 | 37 | public event EventHandler CloseRequest; 38 | public event Events.FloatEventHandler Float; 39 | public event Events.TabClosedEventHandler TabClosed; 40 | public event EventHandler FloatTabRequest; 41 | public event EventHandler UngroupCurrent; 42 | public event EventHandler Ungroup; 43 | 44 | public Border Border; 45 | 46 | protected void FireCloseRequest() 47 | { 48 | CloseRequest?.Invoke(this, null); 49 | } 50 | 51 | protected void FireFloat(bool drag) 52 | { 53 | Events.FloatEventArgs floatEventArgs = new Events.FloatEventArgs(); 54 | floatEventArgs.Drag = drag; 55 | Float?.Invoke(this, floatEventArgs); 56 | } 57 | 58 | public readonly IViewContainer IViewContainer; 59 | 60 | protected void DisplayGeneralMenu() 61 | { 62 | ContextMenu contextMenu = new ContextMenu(); 63 | MenuItem menuItem = new MenuItem(); 64 | menuItem.Header = "Float"; 65 | menuItem.IsChecked = false; 66 | menuItem.Command = new Command(delegate { FireFloat(false); }, delegate { return true; }); 67 | contextMenu.Items.Add(menuItem); 68 | 69 | int viewCount = IViewContainer.GetUserControlCount(); 70 | if (viewCount > 2) 71 | { 72 | menuItem = new MenuItem(); 73 | menuItem.Header = "Ungroup Current"; 74 | menuItem.IsChecked = false; 75 | menuItem.Command = new Command(delegate { UngroupCurrent?.Invoke(this, null); }, delegate { return true; }); 76 | contextMenu.Items.Add(menuItem); 77 | } 78 | 79 | if (viewCount > 1) 80 | { 81 | menuItem = new MenuItem(); 82 | menuItem.Header = "Ungroup"; 83 | menuItem.IsChecked = false; 84 | menuItem.Command = new Command(delegate { Ungroup?.Invoke(this, null); }, delegate { return true; }); 85 | contextMenu.Items.Add(menuItem); 86 | } 87 | 88 | contextMenu.IsOpen = true; 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/DocumentPaneGroup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Controls; 4 | 5 | namespace OpenControls.Wpf.DockManager 6 | { 7 | internal class DocumentPaneGroup : DockPane 8 | { 9 | public DocumentPaneGroup() : base(new DocumentContainer()) 10 | { 11 | IsHighlighted = false; 12 | Border.SetResourceReference(Border.CornerRadiusProperty, "DocumentPaneCornerRadius"); 13 | Border.SetResourceReference(Border.BorderBrushProperty, "DocumentPaneBorderBrush"); 14 | Border.SetResourceReference(Border.BorderThicknessProperty, "DocumentPaneBorderThickness"); 15 | 16 | (IViewContainer as DocumentContainer).DisplayGeneralMenu = DisplayGeneralMenu; 17 | 18 | VerticalAlignment = System.Windows.VerticalAlignment.Stretch; 19 | HorizontalAlignment = HorizontalAlignment.Stretch; 20 | 21 | ColumnDefinition columnDefinition = new ColumnDefinition(); 22 | columnDefinition.Width = new GridLength(Border.BorderThickness.Left, GridUnitType.Pixel); 23 | ColumnDefinitions.Add(columnDefinition); 24 | 25 | columnDefinition = new ColumnDefinition(); 26 | columnDefinition.Width = new GridLength(1, GridUnitType.Star); 27 | ColumnDefinitions.Add(columnDefinition); 28 | 29 | columnDefinition = new ColumnDefinition(); 30 | columnDefinition.Width = new GridLength(Border.BorderThickness.Right, GridUnitType.Pixel); 31 | ColumnDefinitions.Add(columnDefinition); 32 | 33 | RowDefinitions.Add(new RowDefinition()); 34 | RowDefinitions[0].Height = new GridLength(Border.BorderThickness.Top, GridUnitType.Pixel); 35 | RowDefinitions.Add(new RowDefinition()); 36 | RowDefinitions[1].Height = new GridLength(1, GridUnitType.Star); 37 | RowDefinitions.Add(new RowDefinition()); 38 | RowDefinitions[2].Height = new GridLength(Border.BorderThickness.Bottom, GridUnitType.Pixel); 39 | 40 | IViewContainer.SelectionChanged += DocumentContainer_SelectionChanged; 41 | Grid.SetRow(IViewContainer as System.Windows.UIElement, 1); 42 | Grid.SetColumn(IViewContainer as System.Windows.UIElement, 1); 43 | Grid.SetColumnSpan(IViewContainer as System.Windows.UIElement, ColumnDefinitions.Count - 2); 44 | 45 | IsHighlighted = false; 46 | } 47 | 48 | private bool _isHighlighted; 49 | public override bool IsHighlighted 50 | { 51 | get 52 | { 53 | return _isHighlighted; 54 | } 55 | set 56 | { 57 | _isHighlighted = value; 58 | if (value) 59 | { 60 | Border.SetResourceReference(Border.BackgroundProperty, "SelectedPaneBrush"); 61 | } 62 | else 63 | { 64 | Border.SetResourceReference(Border.BackgroundProperty, "DocumentPaneBackground"); 65 | } 66 | } 67 | } 68 | 69 | private void DocumentContainer_SelectionChanged(object sender, EventArgs e) 70 | { 71 | // Nothing to do! 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/DocumentPanel.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace OpenControls.Wpf.DockManager 4 | { 5 | internal class DocumentPanel : SelectablePane 6 | { 7 | public DocumentPanel() 8 | { 9 | IsHighlighted = false; 10 | } 11 | 12 | private bool _isHighlighted; 13 | public override bool IsHighlighted 14 | { 15 | get 16 | { 17 | return _isHighlighted; 18 | } 19 | set 20 | { 21 | _isHighlighted = value; 22 | if (value) 23 | { 24 | Background = HighlightBrush; 25 | } 26 | else 27 | { 28 | Background = System.Windows.Media.Brushes.Transparent; 29 | } 30 | } 31 | } 32 | 33 | private bool ContainsDocuments(Grid grid) 34 | { 35 | if (grid == null) 36 | { 37 | return false; 38 | } 39 | 40 | foreach (var child in grid.Children) 41 | { 42 | if (child is DockPane) 43 | { 44 | return true; 45 | } 46 | if (child is Grid) 47 | { 48 | if (ContainsDocuments(child as Grid)) 49 | { 50 | return true; 51 | } 52 | } 53 | } 54 | 55 | return false; 56 | } 57 | 58 | public bool ContainsDocuments() 59 | { 60 | return ContainsDocuments(this); 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/Events/FloatEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace OpenControls.Wpf.DockManager.Events 2 | { 3 | internal class FloatEventArgs : System.EventArgs 4 | { 5 | public bool Drag { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/Events/FloatEventHandler.cs: -------------------------------------------------------------------------------- 1 | namespace OpenControls.Wpf.DockManager.Events 2 | { 3 | [System.Runtime.InteropServices.ComVisible(true)] 4 | internal delegate void FloatEventHandler(object sender, FloatEventArgs e); 5 | } 6 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/Events/ItemClickEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace OpenControls.Wpf.DockManager.Events 2 | { 3 | internal class ItemClickEventArgs : System.EventArgs 4 | { 5 | public Controls.ToolListBox ToolListBox { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/Events/ItemClickEventHandler.cs: -------------------------------------------------------------------------------- 1 | namespace OpenControls.Wpf.DockManager.Events 2 | { 3 | [System.Runtime.InteropServices.ComVisible(true)] 4 | internal delegate void ItemClickEventHandler(object sender, ItemClickEventArgs e); 5 | } 6 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/Events/TabClosedEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace OpenControls.Wpf.DockManager.Events 4 | { 5 | internal class TabClosedEventArgs : System.EventArgs 6 | { 7 | public UserControl UserControl { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/Events/TabClosedEventHandler.cs: -------------------------------------------------------------------------------- 1 | namespace OpenControls.Wpf.DockManager.Events 2 | { 3 | [System.Runtime.InteropServices.ComVisible(true)] 4 | internal delegate void TabClosedEventHandler(object sender, TabClosedEventArgs e); 5 | } 6 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/ExtensionMethods.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace OpenControls.Wpf.DockManager 8 | { 9 | public static class ExtensionMethods 10 | { 11 | private static System.Windows.Forms.Screen[] Screens = System.Windows.Forms.Screen.AllScreens; 12 | 13 | public static System.Windows.Forms.Screen GetCurrentScreen(this System.Windows.Media.Visual visual) 14 | { 15 | System.Windows.Forms.Screen currentScreen = Screens[0]; 16 | 17 | System.Windows.Point ptOnScreen = visual.PointToScreen(new System.Windows.Point(1, 1)); 18 | foreach (var screen in Screens) 19 | { 20 | if ( 21 | (ptOnScreen.X >= screen.Bounds.X) && 22 | (ptOnScreen.X <= screen.Bounds.Right) && 23 | (ptOnScreen.Y >= screen.Bounds.Y) && 24 | (ptOnScreen.Y <= screen.Bounds.Bottom) 25 | ) 26 | { 27 | return screen; 28 | } 29 | } 30 | 31 | // This should not happen 32 | return currentScreen; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/FloatingDocumentPaneGroup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Media; 4 | 5 | namespace OpenControls.Wpf.DockManager 6 | { 7 | internal class FloatingDocumentPaneGroup : FloatingPane 8 | { 9 | internal FloatingDocumentPaneGroup() : base(new DocumentContainer()) 10 | { 11 | IViewContainer.SelectionChanged += IViewContainer_SelectionChanged; 12 | (IViewContainer as DocumentContainer).HideCommandsButton(); 13 | } 14 | 15 | private void IViewContainer_SelectionChanged(object sender, EventArgs e) 16 | { 17 | FloatingViewModel floatingViewModel = DataContext as FloatingViewModel; 18 | System.Diagnostics.Trace.Assert(floatingViewModel != null); 19 | 20 | floatingViewModel.Title = Application.Current.MainWindow.Title + " - " + IViewContainer.URL; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /OpenControls.Wpf.DockManager/DockManager/FloatingPane.xaml: -------------------------------------------------------------------------------- 1 |  10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 |