Browse Source

Merged from 'master' - upgrade from version 2.0 to 3.4.0.

pull/1645/head
Johannes Brittain 7 years ago
parent
commit
5c239acff9
  1. 89
      .gitignore
  2. 2
      ExtendedWPFToolkitSolution/Libs/READ_ME.txt
  3. 142
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/BusyIndicator/BusyIndicator.xaml
  4. 17
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/CheckListBox/Implementation/CheckListBoxCheckedChangedEventArgs.cs
  5. 81
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/CheckListBox/Implementation/CheckListBoxItem.cs
  6. 196
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/ChildWindow.xaml
  7. 22
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/Implementation/VisualStates.ChildWindow.cs
  8. 367
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorPicker.xaml
  9. 85
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorSpectrumSlider.cs
  10. 18
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/HsvColor.cs
  11. 55
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MaskedTextBox/Themes/Generic.xaml
  12. 286
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/MessageBox.xaml
  13. 63
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Resources.Designer.cs
  14. 117
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Resources.resx
  15. 26
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Settings.Designer.cs
  16. 7
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Settings.settings
  17. 18
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Attributes/TypeEditorAttribute.cs
  18. 45
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/EditorProviders/CheckBoxEditorProvider.cs
  19. 67
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/EditorProviders/EnumComboBoxEditorProvider.cs
  20. 110
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/EditorProviders/FontComboBoxEditorProvider.cs
  21. 11
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/EditorProviders/ITypeEditorProvider.cs
  22. 41
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/EditorProviders/NumericUpDownEditorProvider.cs
  23. 42
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/EditorProviders/TextBoxEditorProvider.cs
  24. 33
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/DateTimeUpDownEditor.cs
  25. 34
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/DecimalUpDownEditor.cs
  26. 34
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/DoubleUpDownEditor.cs
  27. 33
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/IntegerUpDownEditor.cs
  28. 12
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/NumericUpDownEditor.cs
  29. 12
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/IEditorDefinition.cs
  30. 72
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyCategoryItem.cs
  31. 186
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/FormatToolbar.xaml
  32. 148
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/FormatToolbar.xaml.cs
  33. 107
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/FormatToolbarManager.cs
  34. BIN
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/Bold16.png
  35. BIN
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/CenterAlign16.png
  36. BIN
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/Italic16.png
  37. BIN
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/JustifyAlign16.png
  38. BIN
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/LeftAlign16.png
  39. BIN
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/RightAlign16.png
  40. BIN
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/Underline16.png
  41. 60
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Aero/Buttons.xaml
  42. 135
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Common/Generic_Common.xaml
  43. BIN
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/TokenizedTextBox/Images/delete8.png
  44. 55
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/TokenizedTextBox/Implementation/Token.cs
  45. 45
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/TokenizedTextBox/Implementation/TokenItem.cs
  46. 394
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/TokenizedTextBox/Implementation/TokenizedTextBox.cs
  47. 36
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/TokenizedTextBox/Implementation/TokenizedTextBoxCommands.cs
  48. 78
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/TokenizedTextBox/Themes/Generic.xaml
  49. 10
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj.vspscc
  50. BIN
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/sn.pfx
  51. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AssemblyVersionInfo.cs
  52. 68
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Brushes.xaml
  53. 6
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Properties/AssemblyInfo.cs
  54. 3337
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Theme.xaml
  55. 62
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Debug/GeneratedInternalTypeHelper.g.i.cs
  56. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/Brushes.baml
  57. 2
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/GeneratedInternalTypeHelper.g.cs
  58. 62
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/GeneratedInternalTypeHelper.g.i.cs
  59. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/Theme.baml
  60. 23
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/Xceed.Wpf.AvalonDock.Themes.Aero.csproj.FileListAbsolute.txt
  61. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/Xceed.Wpf.AvalonDock.Themes.Aero.g.resources
  62. 5
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/Xceed.Wpf.AvalonDock.Themes.Aero_MarkupCompile.lref
  63. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/AssemblyVersionInfo.cs
  64. 6
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Properties/AssemblyInfo.cs
  65. 3458
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml
  66. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/obj/Release/Brushes.baml
  67. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/obj/Release/Theme.baml
  68. 22
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/obj/Release/Xceed.Wpf.AvalonDock.Themes.Metro.csproj.FileListAbsolute.txt
  69. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/obj/Release/Xceed.Wpf.AvalonDock.Themes.Metro.g.resources
  70. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/obj/Release/Xceed.Wpf.AvalonDock.Themes.Metro_MarkupCompile.lref
  71. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/AssemblyVersionInfo.cs
  72. 6
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Properties/AssemblyInfo.cs
  73. 3648
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Theme.xaml
  74. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/obj/Release/Brushes.baml
  75. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/obj/Release/Theme.baml
  76. 22
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/obj/Release/Xceed.Wpf.AvalonDock.Themes.VS2010.csproj.FileListAbsolute.txt
  77. BIN
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/obj/Release/Xceed.Wpf.AvalonDock.Themes.VS2010.g.resources
  78. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/obj/Release/Xceed.Wpf.AvalonDock.Themes.VS2010_MarkupCompile.lref
  79. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/AssemblyVersionInfo.cs
  80. 79
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Commands/RelayCommand.cs
  81. 39
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneControlOverlayArea.cs
  82. 593
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneDropTarget.cs
  83. 143
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneTabPanel.cs
  84. 281
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneTitle.cs
  85. 136
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AutoHideWindowManager.cs
  86. 49
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/BindingHelper.cs
  87. 44
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/ContextMenuEx.cs
  88. 427
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DockingManagerDropTarget.cs
  89. 33
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DockingManagerOverlayArea.cs
  90. 34
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneControlOverlayArea.cs
  91. 460
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneDropAsAnchorableTarget.cs
  92. 893
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneDropTarget.cs
  93. 145
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneGroupDropTarget.cs
  94. 137
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneTabPanel.cs
  95. 349
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DragService.cs
  96. 100
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropArea.cs
  97. 223
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropDownButton.cs
  98. 161
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropDownControlArea.cs
  99. 161
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropTarget.cs
  100. 65
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropTargetBase.cs

89
.gitignore

@ -1,14 +1,8 @@
## Ignore Visual Studio temporary files, build results, and
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# Delphi and C# transformer
/Src/Delphi/Common/IPC/Generated Pascal/
/Src/Net/Generated Xipc Classes/
/Src/Net/Apps/Gui/Gui/App.config
# User-specific files
*.suo
*.user
@ -48,6 +42,9 @@ TestResult.xml
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
@ -154,7 +151,7 @@ publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
@ -189,6 +186,7 @@ AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
@ -284,6 +282,9 @@ __pycache__/
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
@ -292,75 +293,3 @@ __pycache__/
*.btm.cs
*.odx.cs
*.xsd.cs
.vs/
# Uncomment these types if you want even more clean repository. But be careful.
# It can make harm to an existing project source. Read explanations below.
#
# Resource files are binaries containing manifest, project icon and version info.
# They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files.
*.res
#
# Type library file (binary). In old Delphi versions it should be stored.
# Since Delphi 2009 it is produced from .ridl file and can safely be ignored.
*.tlb
#
# Diagram Portfolio file. Used by the diagram editor up to Delphi 7.
# Uncomment this if you are not using diagrams or use newer Delphi version.
#*.ddp
#
# Visual LiveBindings file. Added in Delphi XE2.
# Uncomment this if you are not using LiveBindings Designer.
#*.vlb
#
# Deployment Manager configuration file for your project. Added in Delphi XE2.
# Uncomment this if it is not mobile development and you do not use remote debug feature.
#*.deployproj
#
# C++ object files produced when C/C++ Output file generation is configured.
# Uncomment this if you are not using external objects (zlib library for example).
#*.obj
#
# Delphi compiler-generated binaries (safe to delete)
*.exe
*.dll
*.bpl
*.bpi
*.dcp
*.so
*.apk
*.drc
*.map
*.dres
*.rsm
*.tds
*.dcu
*.lib
*.a
*.o
*.ocx
# Delphi autogenerated files (duplicated info)
*.cfg
*.hpp
*Resource.rc
# Delphi local files (user-specific info)
*.local
*.identcache
*.projdata
*.tvsconfig
*.dsk
# Delphi history and backups
__history/
__recovery/
*.~*
# Castalia statistics file (since XE7 Castalia is distributed with Delphi)
*.stat
# Boss dependency manager vendor folder https://github.com/HashLoad/boss
modules/

2
ExtendedWPFToolkitSolution/Libs/READ_ME.txt

@ -0,0 +1,2 @@
The file Xceed.Wpf.Samples.SampleData.dll has been created from Xceed.Silverlight.Samples.SampleData.dll of the Silverlight ListBox.
Only the Silverlight has been changed to Wpf.

142
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/BusyIndicator/BusyIndicator.xaml

@ -1,142 +0,0 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:Microsoft.Windows.Controls">
<!-- =============================================================================== -->
<!-- BusyIndicator -->
<!-- =============================================================================== -->
<Style TargetType="{x:Type local:BusyIndicator}">
<Setter Property="BusyContent" Value="Please wait..."/>
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="OverlayStyle">
<Setter.Value>
<Style TargetType="Rectangle">
<Setter Property="Fill" Value="White"/>
<Setter Property="Opacity" Value="0.5"/>
</Style>
</Setter.Value>
</Setter>
<Setter Property="ProgressBarStyle">
<Setter.Value>
<Style TargetType="ProgressBar">
<Setter Property="IsIndeterminate" Value="True"/>
<Setter Property="Height" Value="15"/>
<Setter Property="Margin" Value="8,0,8,8"/>
</Style>
</Setter.Value>
</Setter>
<Setter Property="DisplayAfter" Value="00:00:00.1"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="VerticalAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:BusyIndicator}">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisibilityStates">
<VisualState x:Name="Hidden">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.001" Storyboard.TargetName="busycontent" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00">
<DiscreteObjectKeyFrame.Value>
<Visibility>Collapsed</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.001" Storyboard.TargetName="overlay" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00">
<DiscreteObjectKeyFrame.Value>
<Visibility>Collapsed</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Visible">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.001" Storyboard.TargetName="busycontent" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.001" Storyboard.TargetName="overlay" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="BusyStatusStates">
<VisualState x:Name="Idle">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.001" Storyboard.TargetName="content" Storyboard.TargetProperty="(Control.IsEnabled)">
<DiscreteObjectKeyFrame KeyTime="00:00:00">
<DiscreteObjectKeyFrame.Value>
<sys:Boolean>True</sys:Boolean>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Busy">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.001" Storyboard.TargetName="content" Storyboard.TargetProperty="(Control.IsEnabled)">
<DiscreteObjectKeyFrame KeyTime="00:00:00">
<DiscreteObjectKeyFrame.Value>
<sys:Boolean>False</sys:Boolean>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentControl x:Name="content" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
<Rectangle x:Name="overlay" Style="{TemplateBinding OverlayStyle}"/>
<ContentPresenter x:Name="busycontent">
<ContentPresenter.Content>
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
<Border Background="White" BorderThickness="1" CornerRadius="2">
<Border.BorderBrush>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#FFA3AEB9" Offset="0"/>
<GradientStop Color="#FF8399A9" Offset="0.375"/>
<GradientStop Color="#FF718597" Offset="0.375"/>
<GradientStop Color="#FF617584" Offset="1"/>
</LinearGradientBrush>
</Border.BorderBrush>
<Border CornerRadius="1.5" Margin="1">
<Border.Background>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#FFF6F8F9" Offset="0.02"/>
<GradientStop Color="#FFB8B8B8" Offset="0.996"/>
</LinearGradientBrush>
</Border.Background>
<Grid MinWidth="150">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ContentPresenter Content="{TemplateBinding BusyContent}" ContentTemplate="{TemplateBinding BusyContentTemplate}" Margin="8"/>
<ProgressBar Grid.Row="1" Style="{TemplateBinding ProgressBarStyle}"/>
</Grid>
</Border>
</Border>
</Grid>
</ContentPresenter.Content>
</ContentPresenter>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

17
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/CheckListBox/Implementation/CheckListBoxCheckedChangedEventArgs.cs

@ -1,17 +0,0 @@
using System;
using System.Windows;
namespace Microsoft.Windows.Controls
{
public delegate void CheckListBoxCheckedChangedEventHandler(object sender, CheckListBoxCheckedChangedEventArgs e);
public class CheckListBoxCheckedChangedEventArgs : RoutedEventArgs
{
public object Item { get; private set; }
public CheckListBoxCheckedChangedEventArgs(RoutedEvent routedEvent, object source, object item)
: base(routedEvent, source)
{
Item = item;
}
}
}

81
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/CheckListBox/Implementation/CheckListBoxItem.cs

@ -1,81 +0,0 @@
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;
using System.Windows.Controls.Primitives;
namespace Microsoft.Windows.Controls
{
public class CheckListBoxItem : ContentControl
{
static CheckListBoxItem()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CheckListBoxItem), new FrameworkPropertyMetadata(typeof(CheckListBoxItem)));
}
public CheckListBoxItem()
{
AddHandler(Mouse.MouseDownEvent, new MouseButtonEventHandler(CheckListBoxItem_MouseDown));
}
#region Properties
public static readonly DependencyProperty IsCheckedProperty = DependencyProperty.Register("IsChecked", typeof(bool), typeof(CheckListBoxItem), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnIsSelectedChanged));
public bool IsChecked
{
get { return (bool)GetValue(IsCheckedProperty); }
set { SetValue(IsCheckedProperty, value); }
}
private static void OnIsSelectedChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
CheckListBoxItem checkListBoxItem = o as CheckListBoxItem;
if (checkListBoxItem != null)
checkListBoxItem.OnIsSelectedChanged((bool)e.OldValue, (bool)e.NewValue);
}
protected virtual void OnIsSelectedChanged(bool oldValue, bool newValue)
{
if (newValue)
RaiseSelectionChangedEvent(new RoutedEventArgs(CheckListBox.CheckedEvent, this));
else
RaiseSelectionChangedEvent(new RoutedEventArgs(CheckListBox.UncheckedEvent, this));
}
#endregion //Properties
#region Events
public static readonly RoutedEvent SelectedEvent = CheckListBox.CheckedEvent.AddOwner(typeof(CheckListBoxItem));
public static readonly RoutedEvent UnselectedEvent = CheckListBox.UncheckedEvent.AddOwner(typeof(CheckListBoxItem));
#endregion
#region Event Hanlders
void CheckListBoxItem_MouseDown(object sender, MouseButtonEventArgs e)
{
IsChecked = !IsChecked;
}
#endregion //Event Hanlders
#region Methods
private void RaiseSelectionChangedEvent(RoutedEventArgs e)
{
base.RaiseEvent(e);
}
#endregion //Methods
}
}

196
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/ChildWindow.xaml

@ -1,196 +0,0 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Microsoft.Windows.Controls">
<!-- =============================================================================== -->
<!-- ChildWindow -->
<!-- =============================================================================== -->
<SolidColorBrush x:Key="ChildWindowMainBrushColor" Color="#FF3C688D"/>
<LinearGradientBrush x:Key="BorderBrush" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#7FFFFFFF" Offset="0.05"/>
<GradientStop Color="#B2FFFFFF" Offset="0.07"/>
<GradientStop Color="#00FFFFFF" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ChildWindowDarkBrush" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFA3AEB9" Offset="0"/>
<GradientStop Color="#FF8399A9" Offset="0.375"/>
<GradientStop Color="#FF718597" Offset="0.375"/>
<GradientStop Color="#FF617584" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ChildWindowBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Offset="0" Color="#FFffffff"/>
<GradientStop Offset="0.479" Color="#FFf4f5f6"/>
<GradientStop Offset="1" Color="#FFd0d6db"/>
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ChildWindowButtonHoverBrush" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Offset="0" Color="#FFb5bdc8"/>
<GradientStop Offset="0.370" Color="#FF8399a9"/>
<GradientStop Offset="0.370" Color="#FF718597"/>
<GradientStop Offset="0.906" Color="#FFb9c1ca"/>
<GradientStop Offset="1" Color="#FFb9c1ca"/>
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="ChildWindowButtonPressedBrush" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Offset="0" Color="#FF6b7c8d"/>
<GradientStop Offset="0.370" Color="#FF4d606f"/>
<GradientStop Offset="0.370" Color="#FF465460"/>
<GradientStop Offset="0.906" Color="#FF262d33"/>
<GradientStop Offset="1" Color="#FF262d33"/>
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<Style x:Key="ChildWindowCloseButtonStyle" TargetType="Button">
<Setter Property="Foreground" Value="#FF000000"/>
<Setter Property="Padding" Value="3"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="Background" Storyboard.TargetProperty="(Border.Background)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{StaticResource ChildWindowButtonHoverBrush}"></DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="Background" Storyboard.TargetProperty="(Border.Background)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{StaticResource ChildWindowButtonPressedBrush}"></DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="Background" CornerRadius="0,0,2,0" Background="{StaticResource ChildWindowDarkBrush}">
<Border Margin="1,0,1,1" BorderBrush="#59FFFFFF" BorderThickness="1" CornerRadius="0,0,1,0"/>
</Border>
<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
<Path x:Name="path"
Height="6"
Width="7"
Stretch="Fill"
Opacity="1"
Data="M 2,6 C2,6 3,6 3,6 3,6 3,5 3,5 3,5 4,5 4,5 4,5 4,6 4,6 4,6 5,6 5,6 5,6 7,6 7,6 7,6 7,5 7,5 7,5 6,5 6,5 6,5 6,4 6,4 6,4 5,4 5,4 5,4 5,2 5,2 5,2 6,2 6,2 6,2 6,1 6,1 6,1 7,1 7,1 7,1 7,0 7,0 7,0 5,0 5,0 5,0 4,0 4,0 4,0 4,1 4,1 4,1 3,1 3,1 3,1 3,0 3,0 3,0 2,0 2,0 2,0 0,0 0,0 0,0 0,1 0,1 0,1 1,1 1,1 1,1 1,2 1,2 1,2 2,2 2,2 2,2 2,4 2,4 2,4 1,4 1,4 1,4 1,5 1,5 1,5 0,5 0,5 0,5 0,6 0,6 0,6 2,6 2,6 z"
Fill="White" Margin="0,0,0,1" Visibility="Collapsed" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type local:ChildWindow}">
<Setter Property="Background" Value="#FFFFFFFF"/>
<Setter Property="BorderBrush" Value="{StaticResource ChildWindowDarkBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="CaptionForeground" Value="#FF000000" />
<Setter Property="CloseButtonStyle" Value="{StaticResource ChildWindowCloseButtonStyle}" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="IsEnabled" Value="true" />
<Setter Property="OverlayBrush" Value="#7F000000" />
<Setter Property="OverlayOpacity" Value="1" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="VerticalContentAlignment" Value="Top" />
<Setter Property="WindowBorderBrush" Value="{StaticResource ChildWindowDarkBrush}" />
<Setter Property="WindowBackground" Value="{StaticResource ChildWindowBackgroundBrush}" />
<Setter Property="WindowOpacity" Value="1.0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ChildWindow}">
<Grid x:Name="Root">
<Grid.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</Grid.Resources>
<Grid x:Name="PART_Overlay" HorizontalAlignment="Stretch" VerticalAlignment="Top" Margin="0" RenderTransformOrigin="0.5,0.5"
Background="{TemplateBinding OverlayBrush}"
Opacity="{TemplateBinding OverlayOpacity}"
Visibility="{TemplateBinding IsModal, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<Grid x:Name="PART_WindowRoot" HorizontalAlignment="Left" VerticalAlignment="Top">
<Grid.RenderTransform>
<TransformGroup>
<ScaleTransform />
<SkewTransform />
<RotateTransform />
<TranslateTransform />
</TransformGroup>
</Grid.RenderTransform>
<!-- Borders -->
<Grid x:Name="WindowGrid">
<Border BorderBrush="{TemplateBinding WindowBorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="5,5,0,0" Opacity="{TemplateBinding WindowOpacity}"/>
<Grid Margin="0" Background="{x:Null}">
<Border x:Name="WindowBorder" Margin="1,1,1,1" Background="{TemplateBinding WindowBackground}" CornerRadius="4,4,0,0" Opacity="{TemplateBinding WindowOpacity}"/>
<Border BorderBrush="White" BorderThickness="1" CornerRadius="4,4,0,0" Margin="1" Opacity="0.7"/>
</Grid>
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="26"/>
<RowDefinition />
</Grid.RowDefinitions>
<!-- Content Border -->
<Grid Margin="6,0,6,6" x:Name="ContentGrid" Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="1"/>
<Border Margin="1" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="0.1" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}">
<ContentPresenter x:Name="Content" Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}" />
</Border>
</Grid>
<!-- Header -->
<Border x:Name="PART_DragWidget" Background="Transparent" Grid.Column="1" CornerRadius="5,5,0,0" Margin="1,1,1,0">
<Grid>
<Grid x:Name="CaptionHeader" Margin="1,1,105,0" VerticalAlignment="Center">
<!-- Caption -->
<ContentControl x:Name="Caption" Margin="5,0,0,0" IsTabStop="False" HorizontalAlignment="Stretch"
Content="{TemplateBinding Caption}"
Foreground="{TemplateBinding CaptionForeground}"/>
</Grid>
</Grid>
</Border>
</Grid>
<!-- Buttons -->
<Border BorderBrush="#A5FFFFFF" BorderThickness="1,0,1,1" CornerRadius="0,0,3,3" VerticalAlignment="Top" Margin="0,1,7,0" HorizontalAlignment="Right">
<Button x:Name="PART_CloseButton" Style="{TemplateBinding CloseButtonStyle}" Visibility="{TemplateBinding CloseButtonVisibility}" Height="17" Width="43" IsTabStop="False">
<Path Height="10" HorizontalAlignment="Center" VerticalAlignment="Center" Width="12" Fill="#E4FFFFFF" Stretch="Fill" Stroke="#FF535666"
Data="M0.5,0.5 L4.5178828,0.5 L6.0620003,3.125 L7.4936447,0.5 L11.5,0.5 L11.5,1.5476431 L8.7425003,6.1201854 L11.5,10.359666 L11.5,11.5 L7.4941902,11.5 L6.0620003,8.8740005 L4.5172949,11.5 L0.5,11.5 L0.5,10.43379 L3.3059995,6.1201582 L0.5,1.4676378 L0.5,0.5 z"/>
</Button>
</Border>
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

22
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ChildWindow/Implementation/VisualStates.ChildWindow.cs

@ -1,22 +0,0 @@
using System;
namespace Microsoft.Windows.Controls
{
internal static partial class VisualStates
{
/// <summary>
/// Window State group name.
/// </summary>
public const string WindowStatesGroup = "WindowStatesGroup";
/// <summary>
/// Open state name for ChildWindow.
/// </summary>
public const string Open = "Open";
/// <summary>
/// Closed state name for ChildWindow.
/// </summary>
public const string Closed = "Closed";
}
}

367
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorPicker.xaml

@ -1,367 +0,0 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Microsoft.Windows.Controls">
<!-- =============================================================================== -->
<!-- ColorPicker -->
<!-- =============================================================================== -->
<LinearGradientBrush x:Key="ColorPickerDarkBorderBrush" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFA3AEB9" Offset="0"/>
<GradientStop Color="#FF8399A9" Offset="0.375"/>
<GradientStop Color="#FF718597" Offset="0.375"/>
<GradientStop Color="#FF617584" Offset="1"/>
</LinearGradientBrush>
<DrawingBrush x:Key="CheckerBrush" Viewport="0,0,10,10" ViewportUnits="Absolute" TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="White">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0 100,100" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="LightGray">
<GeometryDrawing.Geometry>
<GeometryGroup>
<RectangleGeometry Rect="0,0 50,50" />
<RectangleGeometry Rect="50,50 50,50" />
</GeometryGroup>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
<Style x:Key="SliderRepeatButtonStyle"
TargetType="{x:Type RepeatButton}">
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="IsTabStop" Value="false"/>
<Setter Property="Focusable" Value="false"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RepeatButton}">
<Border Background="{TemplateBinding Background}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="VerticalSlideThumbStyle" TargetType="{x:Type Thumb}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Canvas x:Name="selector" Height="8" Background="Transparent" IsHitTestVisible="True" >
<Path Width="5" Height="8" Stretch="Fill" StrokeLineJoin="Round" Stroke="#FF000000" Fill="#FF000000" Data="F1 M 276.761,316L 262.619,307.835L 262.619,324.165L 276.761,316 Z " />
<Path Width="5" Height="8" Canvas.Top="8" Canvas.Left="20" Stretch="Fill" StrokeLineJoin="Round" Stroke="#FF000000" Fill="#FF000000" Data="F1 M 276.761,316L 262.619,307.835L 262.619,324.165L 276.761,316 Z ">
<Path.RenderTransform>
<RotateTransform Angle="180"/>
</Path.RenderTransform>
</Path>
</Canvas>
<ControlTemplate.Triggers>
<Trigger Property="IsDragging" Value="True">
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.ControlLightLightBrushKey}}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.ControlLightLightBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="OpacitySliderStyle" TargetType="{x:Type Slider}">
<Setter Property="Orientation" Value="Vertical"/>
<Setter Property="Minimum" Value="0" />
<Setter Property="Maximum" Value="1" />
<Setter Property="TickFrequency" Value="0.01" />
<Setter Property="SmallChange" Value="0.01" />
<Setter Property="LargeChange" Value="0.02" />
<Setter Property="IsDirectionReversed" Value="False" />
<Setter Property="IsMoveToPointEnabled" Value="True" />
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
<LinearGradientBrush.RelativeTransform>
<TransformGroup>
<ScaleTransform CenterY="0.5" CenterX="0.5"/>
<SkewTransform CenterY="0.5" CenterX="0.5"/>
<RotateTransform Angle="90" CenterY="0.5" CenterX="0.5"/>
<TranslateTransform/>
</TransformGroup>
</LinearGradientBrush.RelativeTransform>
<GradientStop Color="White" />
<GradientStop Color="Transparent" Offset="1" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Slider}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border x:Name="PART_TrackBackground" Background="{TemplateBinding Background}" Grid.Column="1" Width="20" />
<Track Grid.Column="1" Name="PART_Track">
<Track.DecreaseRepeatButton>
<RepeatButton Style="{StaticResource SliderRepeatButtonStyle}" Command="Slider.DecreaseLarge"/>
</Track.DecreaseRepeatButton>
<Track.IncreaseRepeatButton>
<RepeatButton Style="{StaticResource SliderRepeatButtonStyle}" Command="Slider.IncreaseLarge"/>
</Track.IncreaseRepeatButton>
<Track.Thumb>
<Thumb Style="{StaticResource VerticalSlideThumbStyle}" />
</Track.Thumb>
</Track>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ColorPickerToggleButton" TargetType="ToggleButton">
<Setter Property="Foreground" Value="#FF000000"/>
<Setter Property="Padding" Value="5"/>
<Setter Property="BorderThickness" Value="1,0,0,0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="_backgroundHighlight" Storyboard.TargetProperty="Opacity">
<SplineDoubleKeyFrame KeyTime="0" Value="1"/>
</DoubleAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetName="_backgroundGradient" Storyboard.TargetProperty="(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
<SplineColorKeyFrame KeyTime="0" Value="#F2FFFFFF"/>
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetName="_backgroundGradient" Storyboard.TargetProperty="(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)">
<SplineColorKeyFrame KeyTime="0" Value="#CCFFFFFF"/>
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetName="_backgroundGradient" Storyboard.TargetProperty="(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)">
<SplineColorKeyFrame KeyTime="0" Value="#7FFFFFFF"/>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="1"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Border x:Name="Background" Background="White" BorderThickness="0" Grid.ColumnSpan="3" Cursor="Hand">
<Grid Margin="1" Background="#FF1F3B53">
<Border x:Name="_backgroundHighlight" Opacity="0" Background="#FF448DCA"/>
<Rectangle x:Name="_backgroundGradient">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#F3F3F3" Offset="0"/>
<GradientStop Color="#EBEBEB" Offset="0.5"/>
<GradientStop Color="#DDDDDD" Offset="0.5"/>
<GradientStop Color="#CDCDCD" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Grid>
</Border>
<Border Margin="5" BorderBrush="{StaticResource ColorPickerDarkBorderBrush}" BorderThickness="1" CornerRadius="3">
<Rectangle Fill="{TemplateBinding Background}" />
</Border>
<Border Grid.Column="1" Background="#FFC9CACA" BorderBrush="White" BorderThickness="1,0,0,0" Margin="0,2"/>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" Grid.Column="2"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type local:ColorPicker}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ColorPicker}">
<Grid>
<Border BorderBrush="{StaticResource ColorPickerDarkBorderBrush}" BorderThickness="1" CornerRadius="1">
<Grid>
<ToggleButton x:Name="PART_ColorPickerToggleButton" Style="{StaticResource ColorPickerToggleButton}" Height="25">
<ToggleButton.Background>
<SolidColorBrush Color="{Binding SelectedColor, RelativeSource={RelativeSource TemplatedParent}}"/>
</ToggleButton.Background>
<ToggleButton.Content>
<Grid x:Name="arrowGlyph" IsHitTestVisible="False">
<Path Height="3" Width="5" Stretch="Fill" Fill="#FFFFFFFF" Margin="0,1,0,0"
Data="M 0,0 C0,0 0,1 0,1 0,1 1,1 1,1 1,1 1,2 1,2 1,2 2,2 2,2 2,2 2,3 2,3 2,3 3,3 3,3 3,3 3,2 3,2 3,2 4,2 4,2 4,2 4,1 4,1 4,1 5,1 5,1 5,1 5,0 5,0 5,0 0,0 0,0 z" />
<Path Height="3" Width="5" Stretch="Fill" Fill="{StaticResource ColorPickerDarkBorderBrush}"
Data="M 0,0 C0,0 0,1 0,1 0,1 1,1 1,1 1,1 1,2 1,2 1,2 2,2 2,2 2,2 2,3 2,3 2,3 3,3 3,3 3,3 3,2 3,2 3,2 4,2 4,2 4,2 4,1 4,1 4,1 5,1 5,1 5,1 5,0 5,0 5,0 0,0 0,0 z" />
</Grid>
</ToggleButton.Content>
</ToggleButton>
</Grid>
</Border>
<Popup x:Name="PART_ColorPickerCanvasPopup" VerticalAlignment="Bottom" IsOpen="False" >
<Border BorderThickness="1" Background="White" BorderBrush="{StaticResource ColorPickerDarkBorderBrush}" Padding="3">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Margin="2">
<Grid>
<Grid.ColumnDefinitions >
<ColumnDefinition Width="200"></ColumnDefinition>
<ColumnDefinition Width="5"></ColumnDefinition>
<ColumnDefinition Width="22"></ColumnDefinition>
<ColumnDefinition Width="5"></ColumnDefinition>
<ColumnDefinition Width="22"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
<Border BorderThickness="1" BorderBrush="DarkGray" ClipToBounds="True" Background="{StaticResource CheckerBrush}">
<Canvas x:Name="PART_ColorShadingCanvas" Width="200" Height="100" HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle x:Name="ColorShadingRectangle" Height="{Binding ElementName=PART_ColorShadingCanvas,Path=Height}" Width="{Binding ElementName=PART_ColorShadingCanvas,Path=Width}" >
<Rectangle.Fill>
<SolidColorBrush Color="{Binding ElementName=PART_SpectrumSlider, Path=SelectedColor}" />
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="WhiteGradient" Width="{Binding ElementName=PART_ColorShadingCanvas,Path=Width}" Height="{Binding ElementName=PART_ColorShadingCanvas,Path=Height}" >
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Offset="0" Color="#ffffffff"/>
<GradientStop Offset="1" Color="Transparent"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="BlackGradient" Width="{Binding ElementName=PART_ColorShadingCanvas,Path=Width}" Height="{Binding ElementName=PART_ColorShadingCanvas,Path=Height}" >
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,1" EndPoint="0, 0">
<GradientStop Offset="0" Color="#ff000000"/>
<GradientStop Offset="1" Color="#00000000"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Canvas x:Name="PART_ColorShadeSelector" Width="10" Height="10" IsHitTestVisible="False">
<Ellipse Width="10" Height="10" StrokeThickness="3" Stroke="#FFFFFFFF" IsHitTestVisible="False" />
<Ellipse Width="10" Height="10" StrokeThickness="1" Stroke="#FF000000" IsHitTestVisible="False" />
</Canvas>
</Canvas>
</Border>
<Border BorderThickness="0,1,0,0" Grid.Row="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Background="{StaticResource CheckerBrush}">
<Rectangle x:Name="SelectedColor">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding SelectedColor, RelativeSource={RelativeSource TemplatedParent}}"/>
</Rectangle.Fill>
</Rectangle>
</Grid>
<Grid Grid.Column="1" Background="{StaticResource CheckerBrush}">
<Rectangle x:Name="CurrentColor">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding CurrentColor, RelativeSource={RelativeSource TemplatedParent}}"/>
</Rectangle.Fill>
</Rectangle>
</Grid>
</Grid>
</Border>
<Border BorderThickness="1" BorderBrush="DarkGray" Grid.Column="2" Grid.RowSpan="2" ClipToBounds="True">
<local:ColorSpectrumSlider x:Name="PART_SpectrumSlider" Width="20" />
</Border>
<Border Grid.Column="4" Grid.RowSpan="2" BorderThickness="1" BorderBrush="DarkGray" Background="{StaticResource CheckerBrush}" ClipToBounds="True">
<Slider x:Name="PART_OpacitySlider"
Style="{StaticResource OpacitySliderStyle}"
Value="{Binding Path=ScA, RelativeSource={RelativeSource TemplatedParent}}"/>
</Border>
</Grid>
</Grid>
<Button x:Name="PART_OkButton" Grid.Row="1" HorizontalAlignment="Right" MinWidth="50" Cursor="Hand" Content="OK" />
</Grid>
</Border>
</Popup>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type local:ColorSpectrumSlider}">
<Setter Property="Orientation" Value="Vertical"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="Minimum" Value="1"/>
<Setter Property="Maximum" Value="360"/>
<Setter Property="TickFrequency" Value="0.001" />
<Setter Property="IsSnapToTickEnabled" Value="True" />
<Setter Property="IsDirectionReversed" Value="False" />
<Setter Property="IsMoveToPointEnabled" Value="True" />
<Setter Property="Value" Value="1" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ColorSpectrumSlider}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border x:Name="PART_TrackBackground" Grid.Column="1" Width="20">
<Rectangle x:Name="PART_SpectrumDisplay" Stretch="Fill" VerticalAlignment="Stretch" />
</Border>
<Track Grid.Column="1" Name="PART_Track">
<Track.DecreaseRepeatButton>
<RepeatButton Style="{StaticResource SliderRepeatButtonStyle}" Command="Slider.DecreaseLarge"/>
</Track.DecreaseRepeatButton>
<Track.IncreaseRepeatButton>
<RepeatButton Style="{StaticResource SliderRepeatButtonStyle}" Command="Slider.IncreaseLarge"/>
</Track.IncreaseRepeatButton>
<Track.Thumb>
<Thumb Style="{StaticResource VerticalSlideThumbStyle}" />
</Track.Thumb>
</Track>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

85
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorSpectrumSlider.cs

@ -1,85 +0,0 @@
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Shapes;
namespace Microsoft.Windows.Controls
{
internal class ColorSpectrumSlider : Slider
{
#region Private Members
private Rectangle _spectrumDisplay;
private LinearGradientBrush _pickerBrush;
#endregion //Private Members
#region Constructors
static ColorSpectrumSlider()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(ColorSpectrumSlider), new FrameworkPropertyMetadata(typeof(ColorSpectrumSlider)));
}
#endregion //Constructors
#region Dependency Properties
public static readonly DependencyProperty SelectedColorProperty = DependencyProperty.Register("SelectedColor", typeof(Color), typeof(ColorSpectrumSlider), new PropertyMetadata(System.Windows.Media.Colors.Transparent));
public Color SelectedColor
{
get { return (Color)GetValue(SelectedColorProperty); }
set { SetValue(SelectedColorProperty, value); }
}
#endregion //Dependency Properties
#region Base Class Overrides
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
_spectrumDisplay = (Rectangle)GetTemplateChild("PART_SpectrumDisplay");
CreateSpectrum();
OnValueChanged(Double.NaN, Value);
}
protected override void OnValueChanged(double oldValue, double newValue)
{
base.OnValueChanged(oldValue, newValue);
Color color = ColorUtilities.ConvertHsvToRgb(360 - newValue, 1, 1);
SelectedColor = color;
}
#endregion //Base Class Overrides
#region Methods
private void CreateSpectrum()
{
_pickerBrush = new LinearGradientBrush();
_pickerBrush.StartPoint = new Point(0.5, 0);
_pickerBrush.EndPoint = new Point(0.5, 1);
_pickerBrush.ColorInterpolationMode = ColorInterpolationMode.SRgbLinearInterpolation;
List<Color> colorsList = ColorUtilities.GenerateHsvSpectrum();
double stopIncrement = (double)1 / colorsList.Count;
int i;
for (i = 0; i < colorsList.Count; i++)
{
_pickerBrush.GradientStops.Add(new GradientStop(colorsList[i], i * stopIncrement));
}
_pickerBrush.GradientStops[i - 1].Offset = 1.0;
_spectrumDisplay.Fill = _pickerBrush;
}
#endregion //Methods
}
}

18
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/HsvColor.cs

@ -1,18 +0,0 @@
using System;
namespace Microsoft.Windows.Controls
{
internal struct HsvColor
{
public double H;
public double S;
public double V;
public HsvColor(double h, double s, double v)
{
H = h;
S = s;
V = v;
}
}
}

55
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MaskedTextBox/Themes/Generic.xaml

@ -1,55 +0,0 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:chrome="clr-namespace:Microsoft.Windows.Controls.Chromes"
xmlns:local="clr-namespace:Microsoft.Windows.Controls"
xmlns:coreConverters="clr-namespace:Microsoft.Windows.Controls.Core.Converters">
<coreConverters:InverseBoolConverter x:Key="InverseBoolConverter" />
<DataTemplate x:Key="DefaultWatermarkTemplate">
<ContentControl Content="{Binding}" Foreground="Gray" Focusable="False" />
</DataTemplate>
<LinearGradientBrush x:Key="TextBoxBorder" EndPoint="0,20" MappingMode="Absolute" StartPoint="0,0">
<GradientStop Color="#ABADB3" Offset="0.05"/>
<GradientStop Color="#E2E3EA" Offset="0.07"/>
<GradientStop Color="#E3E9EF" Offset="1"/>
</LinearGradientBrush>
<!-- =============================================================================== -->
<!-- MaskedTextBox -->
<!-- =============================================================================== -->
<Style TargetType="{x:Type local:MaskedTextBox}">
<Setter Property="Background" Value="White"/>
<Setter Property="BorderBrush" Value="{StaticResource TextBoxBorder}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/>
<Setter Property="Focusable" Value="False" />
<Setter Property="WatermarkTemplate" Value="{StaticResource DefaultWatermarkTemplate}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MaskedTextBox}">
<local:WatermarkTextBox x:Name="TextBox"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
FontFamily="{TemplateBinding FontFamily}"
FontSize="{TemplateBinding FontSize}"
FontStretch="{TemplateBinding FontStretch}"
FontStyle="{TemplateBinding FontStyle}"
FontWeight="{TemplateBinding FontWeight}"
Foreground="{TemplateBinding Foreground}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
IsReadOnly="{Binding IsEditable, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolConverter}}"
MinWidth="20" AcceptsReturn="False" TextWrapping="NoWrap"
TabIndex="{TemplateBinding TabIndex}"
Text="{Binding Text, RelativeSource={RelativeSource TemplatedParent}}"
Watermark="{TemplateBinding Watermark}"
WatermarkTemplate="{TemplateBinding WatermarkTemplate}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

286
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/MessageBox/MessageBox.xaml

@ -1,286 +0,0 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Microsoft.Windows.Controls">
<!-- =============================================================================== -->
<!-- MessageBox -->
<!-- =============================================================================== -->
<LinearGradientBrush x:Key="MessageBoxDarkBrush" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFA3AEB9" Offset="0"/>
<GradientStop Color="#FF8399A9" Offset="0.375"/>
<GradientStop Color="#FF718597" Offset="0.375"/>
<GradientStop Color="#FF617584" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="MessageBoxWindowBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Offset="0" Color="#FFffffff"/>
<GradientStop Offset="0.479" Color="#FFf4f5f6"/>
<GradientStop Offset="1" Color="#FFd0d6db"/>
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="MessageBoxWindowButtonHoverBrush" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Offset="0" Color="#FFb5bdc8"/>
<GradientStop Offset="0.370" Color="#FF8399a9"/>
<GradientStop Offset="0.370" Color="#FF718597"/>
<GradientStop Offset="0.906" Color="#FFb9c1ca"/>
<GradientStop Offset="1" Color="#FFb9c1ca"/>
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="MessageBoxWindowButtonPressedBrush" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Offset="0" Color="#FF6b7c8d"/>
<GradientStop Offset="0.370" Color="#FF4d606f"/>
<GradientStop Offset="0.370" Color="#FF465460"/>
<GradientStop Offset="0.906" Color="#FF262d33"/>
<GradientStop Offset="1" Color="#FF262d33"/>
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<Style x:Key="MessageBoxCloseButtonStyle" TargetType="Button">
<Setter Property="Foreground" Value="#FF000000"/>
<Setter Property="Padding" Value="3"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="Background" Storyboard.TargetProperty="(Border.Background)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{StaticResource MessageBoxWindowButtonHoverBrush}"></DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="Background" Storyboard.TargetProperty="(Border.Background)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{StaticResource MessageBoxWindowButtonPressedBrush}"></DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="Background" CornerRadius="0,0,2,0" Background="{StaticResource MessageBoxDarkBrush}">
<Border Margin="1,0,1,1" BorderBrush="#59FFFFFF" BorderThickness="1" CornerRadius="0,0,1,0"/>
</Border>
<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
<Path x:Name="path"
Height="6"
Width="7"
Stretch="Fill"
Opacity="1"
Data="M 2,6 C2,6 3,6 3,6 3,6 3,5 3,5 3,5 4,5 4,5 4,5 4,6 4,6 4,6 5,6 5,6 5,6 7,6 7,6 7,6 7,5 7,5 7,5 6,5 6,5 6,5 6,4 6,4 6,4 5,4 5,4 5,4 5,2 5,2 5,2 6,2 6,2 6,2 6,1 6,1 6,1 7,1 7,1 7,1 7,0 7,0 7,0 5,0 5,0 5,0 4,0 4,0 4,0 4,1 4,1 4,1 3,1 3,1 3,1 3,0 3,0 3,0 2,0 2,0 2,0 0,0 0,0 0,0 0,1 0,1 0,1 1,1 1,1 1,1 1,2 1,2 1,2 2,2 2,2 2,2 2,4 2,4 2,4 1,4 1,4 1,4 1,5 1,5 1,5 0,5 0,5 0,5 0,6 0,6 0,6 2,6 2,6 z"
Fill="White" Margin="0,0,0,1" Visibility="Collapsed" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<ControlTemplate x:Key="MessageBoxDragWidgetTemplate" TargetType="{x:Type Thumb}">
<Border Background="Transparent">
</Border>
</ControlTemplate>
<Style TargetType="{x:Type local:MessageBox}">
<Setter Property="Background" Value="#FFFFFFFF"/>
<Setter Property="BorderBrush" Value="{StaticResource MessageBoxDarkBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="CaptionForeground" Value="#FF000000" />
<Setter Property="CloseButtonStyle" Value="{StaticResource MessageBoxCloseButtonStyle}" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="IsEnabled" Value="true" />
<Setter Property="MinWidth" Value="350" />
<Setter Property="MinHeight" Value="50" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="VerticalContentAlignment" Value="Top" />
<Setter Property="WindowBorderBrush" Value="{StaticResource MessageBoxDarkBrush}" />
<Setter Property="WindowBackground" Value="{StaticResource MessageBoxWindowBackgroundBrush}" />
<Setter Property="WindowOpacity" Value="1.0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MessageBox}">
<Grid x:Name="Root">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="group1">
<VisualState x:Name="OK">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="OkGrid" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="OKCancel">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="OkCancelGrid" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="YesNo">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="YesNoGrid" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="YesNoCancel">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="YesNoCancelGrid" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<!-- Borders -->
<Grid x:Name="MessageBoxWindowGrid">
<Border BorderBrush="{TemplateBinding WindowBorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="5,5,0,0" Opacity="{TemplateBinding WindowOpacity}"/>
<Grid Margin="0" Background="{x:Null}">
<Border x:Name="MessageBoxWindow" Margin="1,1,1,1" Background="{TemplateBinding WindowBackground}" CornerRadius="4,4,0,0" Opacity="{TemplateBinding WindowOpacity}"/>
<Border BorderBrush="White" BorderThickness="1" CornerRadius="4,4,0,0" Margin="1" Opacity="0.7"/>
</Grid>
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="26"/>
<RowDefinition />
</Grid.RowDefinitions>
<!-- Content Border -->
<Grid Margin="6,0,6,6" x:Name="ContentGrid" Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border BorderBrush="#FFFFFFFF" BorderThickness="1" CornerRadius="1"/>
<Border Margin="1" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="0.1" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}">
<Grid MinWidth="350">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Margin="24,16,24,22">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- Message Image -->
<Image x:Name="MessageBoxImage" VerticalAlignment="Top" SnapsToDevicePixels="True" Stretch="None" Margin="-6,-1,10,-4" Source="{TemplateBinding ImageSource}"></Image>
<!-- Message Text -->
<TextBlock x:Name="MessageText" Grid.Column="1" TextWrapping="Wrap" VerticalAlignment="Center" MaxWidth="450"
Text="{TemplateBinding Text}"
FontFamily="{TemplateBinding FontFamily}"
FontSize="{TemplateBinding FontSize}"
FontStyle="{TemplateBinding FontStyle}"
FontWeight="{TemplateBinding FontWeight}"
Foreground="{TemplateBinding Foreground}"/>
</Grid>
<!-- Buttons -->
<Grid Grid.Row="1" HorizontalAlignment="Right" Margin="12,0,12,12">
<Grid x:Name="OkGrid" Visibility="Collapsed">
<Button x:Name="PART_OkButton" MinWidth="65" Margin="6,0,0,0">OK</Button>
</Grid>
<Grid x:Name="OkCancelGrid" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button x:Name="PART_OkButton1" MinWidth="65" Margin="6,0,0,0">OK</Button>
<Button Grid.Column="1" x:Name="PART_CancelButton" MinWidth="65" Margin="6,0,0,0">Cancel</Button>
</Grid>
<Grid x:Name="YesNoGrid" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button x:Name="PART_YesButton" MinWidth="65" Margin="6,0,0,0">Yes</Button>
<Button Grid.Column="1" x:Name="PART_NoButton" MinWidth="65" Margin="6,0,0,0">No</Button>
</Grid>
<Grid x:Name="YesNoCancelGrid" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button x:Name="PART_YesButton1" MinWidth="65" Margin="6,0,0,0">Yes</Button>
<Button Grid.Column="1" x:Name="PART_NoButton1" MinWidth="65" Margin="6,0,0,0">No</Button>
<Button Grid.Column="2" x:Name="PART_CancelButton1" MinWidth="65" Margin="6,0,0,0">Cancel</Button>
</Grid>
</Grid>
</Grid>
</Border>
</Grid>
<!-- Header -->
<Border x:Name="HeaderArea" Background="Transparent" Grid.Column="1" CornerRadius="5,5,0,0" Margin="1,1,1,0">
<Grid>
<Grid x:Name="CaptionHeader" Margin="1,1,105,0" VerticalAlignment="Center">
<!-- Caption -->
<ContentControl x:Name="Caption" Margin="5,0,0,0" IsTabStop="False" HorizontalAlignment="Stretch"
Content="{TemplateBinding Caption}"
Foreground="{TemplateBinding CaptionForeground}"/>
</Grid>
<Thumb x:Name="PART_DragWidget" Template="{StaticResource MessageBoxDragWidgetTemplate}"/>
</Grid>
</Border>
</Grid>
<Border x:Name="Resize" BorderThickness="7" BorderBrush="Transparent" />
<!-- Close Button -->
<Border BorderBrush="#A5FFFFFF" BorderThickness="1,0,1,1" CornerRadius="0,0,3,3" VerticalAlignment="Top" Margin="0,1,7,0" HorizontalAlignment="Right">
<Button x:Name="PART_CloseButton" Style="{TemplateBinding CloseButtonStyle}" Height="17" Width="43" IsTabStop="False">
<Path Height="10" HorizontalAlignment="Center" VerticalAlignment="Center" Width="12" Fill="#E4FFFFFF" Stretch="Fill" Stroke="#FF535666"
Data="M0.5,0.5 L4.5178828,0.5 L6.0620003,3.125 L7.4936447,0.5 L11.5,0.5 L11.5,1.5476431 L8.7425003,6.1201854 L11.5,10.359666 L11.5,11.5 L7.4941902,11.5 L6.0620003,8.8740005 L4.5172949,11.5 L0.5,11.5 L0.5,10.43379 L3.3059995,6.1201582 L0.5,1.4676378 L0.5,0.5 z"/>
</Button>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

63
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Resources.Designer.cs

@ -1,63 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.261
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Xceed.Wpf.Toolkit.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Xceed.Wpf.Toolkit.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

117
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Resources.resx

@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

26
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Settings.Designer.cs

@ -1,26 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.261
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Xceed.Wpf.Toolkit.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

7
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Properties/Settings.settings

@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

18
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Attributes/TypeEditorAttribute.cs

@ -1,18 +0,0 @@
using System;
namespace Microsoft.Windows.Controls.PropertyGrid.Attributes
{
public class TypeEditorAttribute : Attribute
{
public Type Type { get; set; }
public TypeEditorAttribute(Type type)
{
var valueSourceInterface = type.GetInterface("Microsoft.Windows.Controls.PropertyGrid.Editors.ITypeEditor");
if (valueSourceInterface == null)
throw new ArgumentException("Type must implement the ITypeEditor interface.", "type");
Type = type;
}
}
}

45
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/EditorProviders/CheckBoxEditorProvider.cs

@ -1,45 +0,0 @@
using System;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows;
namespace Microsoft.Windows.Controls.PropertyGrid.Implementation.EditorProviders
{
public class CheckBoxEditorProvider : ITypeEditorProvider
{
CheckBox _checkbox;
public CheckBoxEditorProvider()
{
_checkbox = new CheckBox();
_checkbox.Margin = new Thickness(2, 0, 0, 0);
}
public void Initialize(PropertyItem propertyItem)
{
ResolveBinding(propertyItem);
}
public FrameworkElement ResolveEditor()
{
return _checkbox;
}
private void ResolveBinding(PropertyItem property)
{
var binding = new Binding(property.Name);
binding.Source = property.Instance;
binding.ValidatesOnExceptions = true;
binding.ValidatesOnDataErrors = true;
if (property.IsWriteable)
binding.Mode = BindingMode.TwoWay;
else
binding.Mode = BindingMode.OneWay;
BindingOperations.SetBinding(_checkbox, CheckBox.IsCheckedProperty, binding);
}
}
}

67
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/EditorProviders/EnumComboBoxEditorProvider.cs

@ -1,67 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Controls;
using System.Windows;
using System.Windows.Data;
using System.Reflection;
namespace Microsoft.Windows.Controls.PropertyGrid.Implementation.EditorProviders
{
public class EnumComboBoxEditorProvider : ITypeEditorProvider
{
ComboBox _comboBox;
public EnumComboBoxEditorProvider()
{
_comboBox = new ComboBox();
}
public void Initialize(PropertyItem propertyItem)
{
ResolveBinding(propertyItem);
SetItemsSource(propertyItem);
}
public FrameworkElement ResolveEditor()
{
return _comboBox;
}
private void ResolveBinding(PropertyItem property)
{
var binding = new Binding(property.Name);
binding.Source = property.Instance;
binding.ValidatesOnExceptions = true;
binding.ValidatesOnDataErrors = true;
if (property.IsWriteable)
binding.Mode = BindingMode.TwoWay;
else
binding.Mode = BindingMode.OneWay;
BindingOperations.SetBinding(_comboBox, ComboBox.SelectedItemProperty, binding);
}
private void SetItemsSource(PropertyItem property)
{
_comboBox.ItemsSource = GetValues(property.PropertyType);
}
public static object[] GetValues(Type enumType)
{
List<object> values = new List<object>();
var fields = from field in enumType.GetFields()
where field.IsLiteral
select field;
foreach (FieldInfo field in fields)
{
values.Add(field.GetValue(enumType));
}
return values.ToArray();
}
}
}

110
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/EditorProviders/FontComboBoxEditorProvider.cs

@ -1,110 +0,0 @@
using System;
using System.Collections.Generic;
using System.Windows.Controls;
using System.Windows;
using System.Windows.Data;
using System.Windows.Media;
namespace Microsoft.Windows.Controls.PropertyGrid.Implementation.EditorProviders
{
public class FontComboBoxEditorProvider : ITypeEditorProvider
{
ComboBox _comboBox;
public FontComboBoxEditorProvider()
{
_comboBox = new ComboBox();
}
public void Initialize(PropertyItem propertyItem)
{
ResolveBinding(propertyItem);
SetItemsSource(propertyItem);
}
public FrameworkElement ResolveEditor()
{
return _comboBox;
}
private void ResolveBinding(PropertyItem property)
{
var binding = new Binding(property.Name);
binding.Source = property.Instance;
binding.ValidatesOnExceptions = true;
binding.ValidatesOnDataErrors = true;
if (property.IsWriteable)
binding.Mode = BindingMode.TwoWay;
else
binding.Mode = BindingMode.OneWay;
BindingOperations.SetBinding(_comboBox, ComboBox.SelectedItemProperty, binding);
}
private void SetItemsSource(PropertyItem property)
{
if (property.PropertyType == typeof(FontFamily))
{
List<FontFamily> fonts = new List<FontFamily>();
fonts.Add(new FontFamily("Arial"));
fonts.Add(new FontFamily("Courier New"));
fonts.Add(new FontFamily("Times New Roman"));
fonts.Add(new FontFamily("Batang"));
fonts.Add(new FontFamily("BatangChe"));
fonts.Add(new FontFamily("DFKai-SB"));
fonts.Add(new FontFamily("Dotum"));
fonts.Add(new FontFamily("DutumChe"));
fonts.Add(new FontFamily("FangSong"));
fonts.Add(new FontFamily("GulimChe"));
fonts.Add(new FontFamily("Gungsuh"));
fonts.Add(new FontFamily("GungsuhChe"));
fonts.Add(new FontFamily("KaiTi"));
fonts.Add(new FontFamily("Malgun Gothic"));
fonts.Add(new FontFamily("Meiryo"));
fonts.Add(new FontFamily("Microsoft JhengHei"));
fonts.Add(new FontFamily("Microsoft YaHei"));
fonts.Add(new FontFamily("MingLiU"));
fonts.Add(new FontFamily("MingLiu_HKSCS"));
fonts.Add(new FontFamily("MingLiu_HKSCS-ExtB"));
fonts.Add(new FontFamily("MingLiu-ExtB"));
_comboBox.ItemsSource = fonts;
}
else if (property.PropertyType == typeof(FontWeight))
{
List<FontWeight> list = new List<FontWeight>()
{
FontWeights.Black, FontWeights.Bold, FontWeights.ExtraBlack, FontWeights.ExtraBold,
FontWeights.ExtraLight, FontWeights.Light, FontWeights.Medium, FontWeights.Normal, FontWeights.SemiBold,
FontWeights.Thin
};
_comboBox.ItemsSource = list;
}
else if (property.PropertyType == typeof(FontStyle))
{
List<FontStyle> list = new List<FontStyle>()
{
FontStyles.Italic,
FontStyles.Normal
};
_comboBox.ItemsSource = list;
}
else if (property.PropertyType == typeof(FontStretch))
{
List<FontStretch> list = new List<FontStretch>()
{
FontStretches.Condensed,
FontStretches.Expanded,
FontStretches.ExtraCondensed,
FontStretches.ExtraExpanded,
FontStretches.Normal,
FontStretches.SemiCondensed,
FontStretches.SemiExpanded,
FontStretches.UltraCondensed,
FontStretches.UltraExpanded
};
_comboBox.ItemsSource = list;
}
}
}
}

11
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/EditorProviders/ITypeEditorProvider.cs

@ -1,11 +0,0 @@
using System;
using System.Windows;
namespace Microsoft.Windows.Controls.PropertyGrid.Implementation.EditorProviders
{
interface ITypeEditorProvider
{
void Initialize(PropertyItem propertyItem);
FrameworkElement ResolveEditor();
}
}

41
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/EditorProviders/NumericUpDownEditorProvider.cs

@ -1,41 +0,0 @@
using System;
using System.Windows.Data;
using System.Windows;
namespace Microsoft.Windows.Controls.PropertyGrid.Implementation.EditorProviders
{
public class NumericUpDownEditorProvider : ITypeEditorProvider
{
NumericUpDown _numericUpDown;
public NumericUpDownEditorProvider()
{
_numericUpDown = new NumericUpDown();
}
public void Initialize(PropertyItem propertyItem)
{
ResolveBinding(propertyItem);
}
public FrameworkElement ResolveEditor()
{
return _numericUpDown;
}
private void ResolveBinding(PropertyItem property)
{
var binding = new Binding(property.Name);
binding.Source = property.Instance;
binding.ValidatesOnExceptions = true;
binding.ValidatesOnDataErrors = true;
if (property.IsWriteable)
binding.Mode = BindingMode.TwoWay;
else
binding.Mode = BindingMode.OneWay;
BindingOperations.SetBinding(_numericUpDown, NumericUpDown.ValueProperty, binding);
}
}
}

42
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/EditorProviders/TextBoxEditorProvider.cs

@ -1,42 +0,0 @@
using System;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows;
namespace Microsoft.Windows.Controls.PropertyGrid.Implementation.EditorProviders
{
public class TextBoxEditorProvider : ITypeEditorProvider
{
FrameworkElement _editor;
public TextBoxEditorProvider()
{
_editor = new TextBox();
}
public void Initialize(PropertyItem propertyItem)
{
ResolveBinding(propertyItem);
}
public FrameworkElement ResolveEditor()
{
return _editor;
}
private void ResolveBinding(PropertyItem property)
{
var binding = new Binding(property.Name);
binding.Source = property.Instance;
binding.ValidatesOnExceptions = true;
binding.ValidatesOnDataErrors = true;
if (property.IsWriteable)
binding.Mode = BindingMode.TwoWay;
else
binding.Mode = BindingMode.OneWay;
BindingOperations.SetBinding(_editor, TextBox.TextProperty, binding);
}
}
}

33
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/DateTimeUpDownEditor.cs

@ -1,33 +0,0 @@
/************************************************************************
Extended WPF Toolkit
Copyright (C) 2010-2012 Xceed Software Inc.
This program is provided to you under the terms of the Microsoft Public
License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
This program can be provided to you by Xceed Software Inc. under a
proprietary commercial license agreement for use in non-Open Source
projects. The commercial version of Extended WPF Toolkit also includes
priority technical support, commercial updates, and many additional
useful WPF controls if you license Xceed Business Suite for WPF.
Visit http://xceed.com and follow @datagrid on Twitter.
**********************************************************************/
namespace Xceed.Wpf.Toolkit.PropertyGrid.Editors
{
public class DateTimeUpDownEditor : TypeEditor<DateTimeUpDown>
{
protected override void SetControlProperties()
{
Editor.BorderThickness = new System.Windows.Thickness( 0 );
}
protected override void SetValueDependencyProperty()
{
ValueProperty = DateTimeUpDown.ValueProperty;
}
}
}

34
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/DecimalUpDownEditor.cs

@ -1,34 +0,0 @@
/************************************************************************
Extended WPF Toolkit
Copyright (C) 2010-2012 Xceed Software Inc.
This program is provided to you under the terms of the Microsoft Public
License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
This program can be provided to you by Xceed Software Inc. under a
proprietary commercial license agreement for use in non-Open Source
projects. The commercial version of Extended WPF Toolkit also includes
priority technical support, commercial updates, and many additional
useful WPF controls if you license Xceed Business Suite for WPF.
Visit http://xceed.com and follow @datagrid on Twitter.
**********************************************************************/
namespace Xceed.Wpf.Toolkit.PropertyGrid.Editors
{
public class DecimalUpDownEditor : TypeEditor<DecimalUpDown>
{
protected override void SetControlProperties()
{
Editor.BorderThickness = new System.Windows.Thickness( 0 );
}
protected override void SetValueDependencyProperty()
{
ValueProperty = DecimalUpDown.ValueProperty;
}
}
}

34
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/DoubleUpDownEditor.cs

@ -1,34 +0,0 @@
/************************************************************************
Extended WPF Toolkit
Copyright (C) 2010-2012 Xceed Software Inc.
This program is provided to you under the terms of the Microsoft Public
License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
This program can be provided to you by Xceed Software Inc. under a
proprietary commercial license agreement for use in non-Open Source
projects. The commercial version of Extended WPF Toolkit also includes
priority technical support, commercial updates, and many additional
useful WPF controls if you license Xceed Business Suite for WPF.
Visit http://xceed.com and follow @datagrid on Twitter.
**********************************************************************/
namespace Xceed.Wpf.Toolkit.PropertyGrid.Editors
{
public class DoubleUpDownEditor : TypeEditor<DoubleUpDown>
{
protected override void SetControlProperties()
{
Editor.BorderThickness = new System.Windows.Thickness( 0 );
}
protected override void SetValueDependencyProperty()
{
ValueProperty = DoubleUpDown.ValueProperty;
}
}
}

33
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/IntegerUpDownEditor.cs

@ -1,33 +0,0 @@
/************************************************************************
Extended WPF Toolkit
Copyright (C) 2010-2012 Xceed Software Inc.
This program is provided to you under the terms of the Microsoft Public
License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
This program can be provided to you by Xceed Software Inc. under a
proprietary commercial license agreement for use in non-Open Source
projects. The commercial version of Extended WPF Toolkit also includes
priority technical support, commercial updates, and many additional
useful WPF controls if you license Xceed Business Suite for WPF.
Visit http://xceed.com and follow @datagrid on Twitter.
**********************************************************************/
namespace Xceed.Wpf.Toolkit.PropertyGrid.Editors
{
public class IntegerUpDownEditor : TypeEditor<IntegerUpDown>
{
protected override void SetControlProperties()
{
Editor.BorderThickness = new System.Windows.Thickness( 0 );
}
protected override void SetValueDependencyProperty()
{
ValueProperty = IntegerUpDown.ValueProperty;
}
}
}

12
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/Editors/NumericUpDownEditor.cs

@ -1,12 +0,0 @@
using System;
namespace Microsoft.Windows.Controls.PropertyGrid.Editors
{
public class NumericUpDownEditor : TypeEditor<NumericUpDown>
{
protected override void SetValueDependencyProperty()
{
ValueProperty = NumericUpDown.ValueProperty;
}
}
}

12
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/IEditorDefinition.cs

@ -1,12 +0,0 @@
using System;
using System.Windows;
namespace Microsoft.Windows.Controls.PropertyGrid
{
public interface IEditorDefinition
{
DataTemplate EditorTemplate { get; set; }
PropertyDefinitionCollection PropertiesDefinitions { get; set; }
Type TargetType { get; set; }
}
}

72
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/PropertyGrid/Implementation/PropertyCategoryItem.cs

@ -1,72 +0,0 @@
using System;
using System.Collections.Generic;
using System.Windows.Controls;
using System.Windows;
namespace Microsoft.Windows.Controls.PropertyGrid
{
public class PropertyCategoryItem : Control
{
public static readonly DependencyProperty CategoryProperty = DependencyProperty.Register("Category", typeof(string), typeof(PropertyCategoryItem), new UIPropertyMetadata(String.Empty, new PropertyChangedCallback(OnCategoryChanged), new CoerceValueCallback(OnCoerceCategory)));
private static object OnCoerceCategory(DependencyObject o, object value)
{
PropertyCategoryItem propertyCategoryItem = o as PropertyCategoryItem;
if (propertyCategoryItem != null)
return propertyCategoryItem.OnCoerceCategory((string)value);
else
return value;
}
private static void OnCategoryChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
PropertyCategoryItem propertyCategoryItem = o as PropertyCategoryItem;
if (propertyCategoryItem != null)
propertyCategoryItem.OnCategoryChanged((string)e.OldValue, (string)e.NewValue);
}
protected virtual string OnCoerceCategory(string value)
{
// TODO: Keep the proposed value within the desired range.
return value;
}
protected virtual void OnCategoryChanged(string oldValue, string newValue)
{
// TODO: Add your property changed side-effects. Descendants can override as well.
}
public string Category
{
// IMPORTANT: To maintain parity between setting a property in XAML and procedural code, do not touch the getter and setter inside this dependency property!
get
{
return (string)GetValue(CategoryProperty);
}
set
{
SetValue(CategoryProperty, value);
}
}
private List<PropertyItem> _Properties = new List<PropertyItem>();
public List<PropertyItem> Properties
{
get
{
return _Properties;
}
set
{
_Properties = value;
}
}
static PropertyCategoryItem()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(PropertyCategoryItem), new FrameworkPropertyMetadata(typeof(PropertyCategoryItem)));
}
}
}

186
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/FormatToolbar.xaml

@ -1,186 +0,0 @@
<UserControl x:Class="Microsoft.Windows.Controls.Formatting.FormatToolbar"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="Transparent"
IsTabStop="False"
x:Name="_window">
<UserControl.Effect>
<DropShadowEffect BlurRadius="5" Opacity=".25" />
</UserControl.Effect>
<UserControl.Resources>
<ControlTemplate x:Key="ThumbControlTemplate" TargetType="{x:Type Thumb}">
<Border Background="Transparent" Cursor="Hand" ToolTip="Click to Drag">
</Border>
</ControlTemplate>
<Style TargetType="{x:Type Separator}" BasedOn="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}"/>
<SolidColorBrush x:Key="MouseOverBorderBrush" Color="#FFFFB700" />
<LinearGradientBrush x:Key="MouseOverBackgroundBrush" StartPoint="0,0" EndPoint="0,1" >
<GradientStop Offset="0" Color="#FFFEFBF4" />
<GradientStop Offset="0.19" Color="#FFFDE7CE" />
<GradientStop Offset="0.39" Color="#FFFDDEB8" />
<GradientStop Offset="0.39" Color="#FFFFCE6B" />
<GradientStop Offset="0.79" Color="#FFFFDE9A" />
<GradientStop Offset="1" Color="#FFFFEBAA" />
</LinearGradientBrush>
<SolidColorBrush x:Key="CheckedBorderBrush" Color="#FFC29B29" />
<LinearGradientBrush x:Key="CheckedBackgroundBrush" StartPoint="0,0" EndPoint="0,1" >
<GradientStop Offset="0" Color="#FFFFDCA0" />
<GradientStop Offset="0.18" Color="#FFFFD692" />
<GradientStop Offset="0.39" Color="#FFFFC45D" />
<GradientStop Offset="1" Color="#FFFFD178" />
</LinearGradientBrush>
<SolidColorBrush x:Key="PressedBorderBrush" Color="#FFC29B29" />
<LinearGradientBrush x:Key="PressedBackgroundBrush" StartPoint="0,0" EndPoint="0,1" >
<GradientStop Offset="0" Color="#FFE3C085" />
<GradientStop Offset="0.19" Color="#FFF4CC89" />
<GradientStop Offset="0.36" Color="#FFF5C777" />
<GradientStop Offset="0.36" Color="#FFF5BB56" />
<GradientStop Offset="0.79" Color="#FFF4CE9A" />
<GradientStop Offset="1" Color="#FFF3E28D" />
</LinearGradientBrush>
<Style x:Key="FormatBarToggleButtonStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Height" Value="22" />
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="ToolTipService.InitialShowDelay" Value="900"/>
<Setter Property="ToolTipService.ShowDuration" Value="20000"/>
<Setter Property="ToolTipService.BetweenShowDelay" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid SnapsToDevicePixels="True">
<Border x:Name="OuterBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="2"/>
<Border x:Name="MiddleBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2">
<Border x:Name="InnerBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2" Padding="{TemplateBinding Padding}">
<StackPanel x:Name="StackPanel" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}">
<ContentPresenter x:Name="Content" Content="{TemplateBinding Content}" Margin="1"
RenderOptions.BitmapScalingMode="NearestNeighbor"
VerticalAlignment="Center"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" />
</StackPanel>
</Border>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="OuterBorder" Value="{StaticResource MouseOverBackgroundBrush}"/>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="{StaticResource MouseOverBorderBrush}"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="#80FFFFFF"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" TargetName="Content" Value="0.5"/>
<Setter Property="TextElement.Foreground" TargetName="OuterBorder" Value="#FF9E9E9E"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" TargetName="OuterBorder" Value="{StaticResource CheckedBackgroundBrush}"/>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="{StaticResource CheckedBorderBrush}"/>
<Setter Property="BorderBrush" TargetName="InnerBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFE7CBAD" Offset="0"/>
<GradientStop Color="#FFF7D7B5" Offset="0.1"/>
<GradientStop Color="#FFFFD38C" Offset="0.36"/>
<GradientStop Color="#FFFFC75A" Offset="0.36"/>
<GradientStop Color="#FFFFEFA5" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="OuterBorder" Value="{StaticResource PressedBackgroundBrush}"/>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="{StaticResource PressedBorderBrush}"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="Transparent"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True"/>
<Condition Property="IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="MiddleBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#40FFFEFE" Offset="0"/>
<GradientStop Color="#40FFFEFE" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.69"/>
<GradientStop Color="#10FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Border CornerRadius="3" BorderThickness="1" BorderBrush="Gray" Background="WhiteSmoke">
<Grid Margin="5,0,5,5">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Thumb x:Name="_dragWidget" Height="10"
Template="{StaticResource ThumbControlTemplate}"
DragDelta="DragWidget_DragDelta"/>
<StackPanel Grid.Row="1">
<StackPanel Orientation="Horizontal">
<ComboBox x:Name="_cmbFontFamilies" IsEditable="True" Width="110"
SelectionChanged="FontFamily_SelectionChanged"/>
<ComboBox x:Name="_cmbFontSizes" IsEditable="True" Width="45"
SelectionChanged="FontSize_SelectionChanged"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,3,0,0">
<ToggleButton x:Name="_btnBold" Style="{StaticResource FormatBarToggleButtonStyle}"
Command="EditingCommands.ToggleBold" CommandTarget="{Binding ElementName=_window, Path=RichTextBox}">
<Image Source="/WPFToolkit.Extended;component/RichTextBox/FormatToolbar/Images/Bold16.png" />
</ToggleButton>
<ToggleButton x:Name="_btnItalic" Style="{StaticResource FormatBarToggleButtonStyle}"
Command="{x:Static EditingCommands.ToggleItalic}" CommandTarget="{Binding ElementName=_window, Path=RichTextBox}">
<Image Source="/WPFToolkit.Extended;component/RichTextBox/FormatToolbar/Images/Italic16.png" />
</ToggleButton>
<ToggleButton x:Name="_btnUnderline" Style="{StaticResource FormatBarToggleButtonStyle}"
Command="{x:Static EditingCommands.ToggleUnderline}" CommandTarget="{Binding ElementName=_window, Path=RichTextBox}">
<Image Source="/WPFToolkit.Extended;component/RichTextBox/FormatToolbar/Images/Underline16.png" />
</ToggleButton>
<Separator />
<RadioButton x:Name="_btnAlignLeft" Style="{StaticResource FormatBarToggleButtonStyle}"
Command="{x:Static EditingCommands.AlignLeft}" CommandTarget="{Binding ElementName=_window, Path=RichTextBox}" >
<Image Source="/WPFToolkit.Extended;component/RichTextBox/FormatToolbar/Images/LeftAlign16.png" />
</RadioButton>
<RadioButton x:Name="_btnAlignCenter" Style="{StaticResource FormatBarToggleButtonStyle}"
Command="{x:Static EditingCommands.AlignCenter}" CommandTarget="{Binding ElementName=_window, Path=RichTextBox}" >
<Image Source="/WPFToolkit.Extended;component/RichTextBox/FormatToolbar/Images/CenterAlign16.png" />
</RadioButton>
<RadioButton x:Name="_btnAlignRight" Style="{StaticResource FormatBarToggleButtonStyle}"
Command="{x:Static EditingCommands.AlignRight}" CommandTarget="{Binding ElementName=_window, Path=RichTextBox}" >
<Image Source="/WPFToolkit.Extended;component/RichTextBox/FormatToolbar/Images/RightAlign16.png" />
</RadioButton>
</StackPanel>
</StackPanel>
</Grid>
</Border>
</UserControl>

148
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/FormatToolbar.xaml.cs

@ -1,148 +0,0 @@
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Media;
using System.Windows.Controls.Primitives;
namespace Microsoft.Windows.Controls.Formatting
{
/// <summary>
/// Interaction logic for FormatToolbar.xaml
/// </summary>
public partial class FormatToolbar : UserControl
{
#region Properties
public static readonly DependencyProperty RichTextBoxProperty = DependencyProperty.Register("RichTextBox", typeof(RichTextBox), typeof(FormatToolbar));
public RichTextBox RichTextBox
{
get { return (RichTextBox)GetValue(RichTextBoxProperty); }
set { SetValue(RichTextBoxProperty, value); }
}
public double[] FontSizes
{
get
{
return new double[] {
3.0, 4.0, 5.0, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5,
10.0, 10.5, 11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 15.0,
16.0, 17.0, 18.0, 19.0, 20.0, 22.0, 24.0, 26.0, 28.0, 30.0,
32.0, 34.0, 36.0, 38.0, 40.0, 44.0, 48.0, 52.0, 56.0, 60.0, 64.0, 68.0, 72.0, 76.0,
80.0, 88.0, 96.0, 104.0, 112.0, 120.0, 128.0, 136.0, 144.0
};
}
}
#endregion
#region Constructors
public FormatToolbar(RichTextBox richTextBox)
{
InitializeComponent();
Loaded += FormatToolbar_Loaded;
RichTextBox = richTextBox;
RichTextBox.SelectionChanged += RichTextBox_SelectionChanged;
}
#endregion //Constructors
#region Event Hanlders
void FormatToolbar_Loaded(object sender, RoutedEventArgs e)
{
_cmbFontFamilies.ItemsSource = System.Windows.Media.Fonts.SystemFontFamilies;
_cmbFontSizes.ItemsSource = FontSizes;
}
private void FontFamily_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count == 0)
return;
FontFamily editValue = (FontFamily)e.AddedItems[0];
ApplyPropertyValueToSelectedText(TextElement.FontFamilyProperty, editValue);
}
private void FontSize_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count == 0)
return;
ApplyPropertyValueToSelectedText(TextElement.FontSizeProperty, e.AddedItems[0]);
}
void RichTextBox_SelectionChanged(object sender, RoutedEventArgs e)
{
UpdateVisualState();
}
private void DragWidget_DragDelta(object sender, DragDeltaEventArgs e)
{
ProcessMove(e);
}
#endregion //Event Hanlders
#region Methods
private void UpdateVisualState()
{
UpdateToggleButtonState();
UpdateSelectedFontFamily();
UpdateSelectedFontSize();
}
private void UpdateToggleButtonState()
{
UpdateItemCheckedState(_btnBold, TextElement.FontWeightProperty, FontWeights.Bold);
UpdateItemCheckedState(_btnItalic, TextElement.FontStyleProperty, FontStyles.Italic);
UpdateItemCheckedState(_btnUnderline, Inline.TextDecorationsProperty, TextDecorations.Underline);
UpdateItemCheckedState(_btnAlignLeft, Paragraph.TextAlignmentProperty, TextAlignment.Left);
UpdateItemCheckedState(_btnAlignCenter, Paragraph.TextAlignmentProperty, TextAlignment.Center);
UpdateItemCheckedState(_btnAlignRight, Paragraph.TextAlignmentProperty, TextAlignment.Right);
}
void UpdateItemCheckedState(ToggleButton button, DependencyProperty formattingProperty, object expectedValue)
{
object currentValue = RichTextBox.Selection.GetPropertyValue(formattingProperty);
button.IsChecked = (currentValue == DependencyProperty.UnsetValue) ? false : currentValue != null && currentValue.Equals(expectedValue);
}
private void UpdateSelectedFontFamily()
{
object value = RichTextBox.Selection.GetPropertyValue(TextElement.FontFamilyProperty);
FontFamily currentFontFamily = (FontFamily)((value == DependencyProperty.UnsetValue) ? null : value);
if (currentFontFamily != null)
{
_cmbFontFamilies.SelectedItem = currentFontFamily;
}
}
private void UpdateSelectedFontSize()
{
object value = RichTextBox.Selection.GetPropertyValue(TextElement.FontSizeProperty);
_cmbFontSizes.SelectedValue = (value == DependencyProperty.UnsetValue) ? null : value;
}
void ApplyPropertyValueToSelectedText(DependencyProperty formattingProperty, object value)
{
if (value == null)
return;
RichTextBox.Selection.ApplyPropertyValue(formattingProperty, value);
}
private void ProcessMove(DragDeltaEventArgs e)
{
AdornerLayer layer = AdornerLayer.GetAdornerLayer(RichTextBox);
UIElementAdorner<Control> adorner = layer.GetAdorners(RichTextBox)[0] as UIElementAdorner<Control>;
adorner.SetOffsets(adorner.OffsetLeft + e.HorizontalChange, adorner.OffsetTop + e.VerticalChange);
}
#endregion //Methods
}
}

107
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/FormatToolbarManager.cs

@ -1,107 +0,0 @@
using System;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows;
namespace Microsoft.Windows.Controls.Formatting
{
internal class FormatToolbarManager
{
RichTextBox _richTextBox;
readonly UIElementAdorner<Control> _adorner;
FormatToolbar toolbar;
bool AdornerIsVisible
{
get { return _adorner.Visibility == Visibility.Visible; }
}
public FormatToolbarManager(RichTextBox richTextBox)
{
_richTextBox = richTextBox;
_adorner = new UIElementAdorner<Control>(richTextBox);
toolbar = new FormatToolbar(richTextBox);
AttachToRichtextBox();
}
private void AttachToRichtextBox()
{
_richTextBox.Selection.Changed += Selection_Changed;
}
void Selection_Changed(object sender, EventArgs e)
{
TextRange selectedText = new TextRange(_richTextBox.Selection.Start, _richTextBox.Selection.End);
if (selectedText.Text.Length > 0)
{
VerifyAdorner();
}
else
{
HideAdorner();
}
}
//TODO: refactor
void VerifyAdorner()
{
VerifyAdornerLayer();
Control adorningEditor = toolbar;
_adorner.Child = adorningEditor;
_adorner.Visibility = Visibility.Visible;
Rect wordBoundary = _richTextBox.Selection.End.GetPositionAtOffset(0, LogicalDirection.Backward).GetCharacterRect(LogicalDirection.Backward);
double left = wordBoundary.X;
double top = (wordBoundary.Y + wordBoundary.Height) - toolbar.ActualHeight;
//top boundary
if (top < 0)
{
top = wordBoundary.Y + wordBoundary.Height;
}
//right boundary
if (left + toolbar.ActualWidth > _richTextBox.ActualWidth - 20)
{
left = left - toolbar.ActualWidth;
top = wordBoundary.Y + wordBoundary.Height + 5;
}
//bottom boundary
if (top + toolbar.ActualHeight > _richTextBox.ActualHeight - 20)
{
top = wordBoundary.Y - (toolbar.ActualHeight + wordBoundary.Height);
}
_adorner.SetOffsets(left, top);
}
/// <summary>
/// Ensures that the adorner is in the adorner layer.
/// </summary>
/// <returns>True if the adorner is in the adorner layer, else false.</returns>
bool VerifyAdornerLayer()
{
if (_adorner.Parent != null)
return true;
AdornerLayer layer = AdornerLayer.GetAdornerLayer(_richTextBox);
if (layer == null)
return false;
layer.Add(_adorner);
return true;
}
void HideAdorner()
{
if (this.AdornerIsVisible)
{
_adorner.Visibility = Visibility.Collapsed;
_adorner.Child = null;
}
}
}
}

BIN
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/Bold16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 B

BIN
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/CenterAlign16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 B

BIN
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/Italic16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 B

BIN
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/JustifyAlign16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 B

BIN
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/LeftAlign16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

BIN
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/RightAlign16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 B

BIN
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/RichTextBox/FormatToolbar/Images/Underline16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 B

60
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Aero/Buttons.xaml

@ -1,60 +0,0 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Brushes.xaml" />
</ResourceDictionary.MergedDictionaries>
<DataTemplate x:Key="IncreaseGlyphKey">
<Path
Width="7"
Height="4"
Data="M 0,3 C0,3 0,4 0,4 0,4 3,4 3,4 3,4 3,3 3,3 3,3 4,3 4,3 4,3 4,4 4,4 4,4 7,4 7,4 7,4 7,3 7,3 7,3 6,3 6,3 6,3 6,2 6,2 6,2 5,2 5,2 5,2 5,1 5,1 5,1 4,1 4,1 4,1 4,0 4,0 4,0 3,0 3,0 3,0 3,1 3,1 3,1 2,1 2,1 2,1 2,2 2,2 2,2 1,2 1,2 1,2 1,3 1,3 1,3 0,3 0,3 z"
Fill="{StaticResource DropdownBtnGlyphNormalForegroundFillKey}"
SnapsToDevicePixels="True"
HorizontalAlignment="Center" VerticalAlignment="Center" Focusable="False" />
</DataTemplate>
<DataTemplate x:Key="DecreaseGlyphKey">
<Path
Width="7"
Height="4"
Data="M 0,1 C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1 z"
Fill="{StaticResource DropdownBtnGlyphNormalForegroundFillKey}"
SnapsToDevicePixels="True"
HorizontalAlignment="Center" VerticalAlignment="Center" Focusable="False" />
</DataTemplate>
<Style x:Key="SpinnerButtonStyle" TargetType="RepeatButton">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Foreground" Value="{StaticResource DropdownBtnGlyphNormalForegroundFillKey}"/>
<Setter Property="Padding" Value="4,2"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="RepeatButton">
<Border x:Name="Bd" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" CornerRadius="{StaticResource SpinButtonCornerRadiusKey}" >
<Grid>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="Bd" Value="{StaticResource DropdownBtnHottrackCenterFillKey}"/>
<Setter Property="BorderBrush" TargetName="Bd" Value="{StaticResource DropdownBtnHottrackOuterBorderFillKey}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="BorderBrush" TargetName="Bd" Value="{StaticResource DropdownBtnPressedOuterBorderFillKey}"/>
<Setter Property="Background" TargetName="Bd" Value="{StaticResource DropdownBtnPressedCenterFillKey}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" TargetName="Bd" Value="{StaticResource ControlDisabledBackgroundKey}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

135
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Common/Generic_Common.xaml

@ -1,135 +0,0 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:Microsoft.Windows.Controls"
xmlns:primitives="clr-namespace:Microsoft.Windows.Controls.Primitives"
xmlns:coreConverters="clr-namespace:Microsoft.Windows.Controls.Core.Converters"
xmlns:magConverters="clr-namespace:Microsoft.Windows.Controls.Mag.Converters"
xmlns:chrome="clr-namespace:Microsoft.Windows.Controls.Chromes">
<!-- =============================================================================== -->
<!-- Common Styles -->
<!-- Need to find a way to share these for ChildWIndow and MessageBox -->
<!-- =============================================================================== -->
<LinearGradientBrush x:Key="WindowDarkBrush" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFA3AEB9" Offset="0"/>
<GradientStop Color="#FF8399A9" Offset="0.375"/>
<GradientStop Color="#FF718597" Offset="0.375"/>
<GradientStop Color="#FF617584" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Offset="0" Color="#FFffffff"/>
<GradientStop Offset="0.479" Color="#FFf4f5f6"/>
<GradientStop Offset="1" Color="#FFd0d6db"/>
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowButtonHoverBrush" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Offset="0" Color="#FFb5bdc8"/>
<GradientStop Offset="0.370" Color="#FF8399a9"/>
<GradientStop Offset="0.370" Color="#FF718597"/>
<GradientStop Offset="0.906" Color="#FFb9c1ca"/>
<GradientStop Offset="1" Color="#FFb9c1ca"/>
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="WindowButtonPressedBrush" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Offset="0" Color="#FF6b7c8d"/>
<GradientStop Offset="0.370" Color="#FF4d606f"/>
<GradientStop Offset="0.370" Color="#FF465460"/>
<GradientStop Offset="0.906" Color="#FF262d33"/>
<GradientStop Offset="1" Color="#FF262d33"/>
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<Style x:Key="WindowCloseButtonStyle" TargetType="Button">
<Setter Property="Foreground" Value="#FF000000"/>
<Setter Property="Padding" Value="3"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="Background" Storyboard.TargetProperty="(Border.Background)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{StaticResource WindowButtonHoverBrush}"></DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="Background" Storyboard.TargetProperty="(Border.Background)">
<DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{StaticResource WindowButtonPressedBrush}"></DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="Background" CornerRadius="0,0,2,0" Background="{StaticResource WindowDarkBrush}">
<Border Margin="1,0,1,1" BorderBrush="#59FFFFFF" BorderThickness="1" CornerRadius="0,0,1,0"/>
</Border>
<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
<Path x:Name="path"
Height="6"
Width="7"
Stretch="Fill"
Opacity="1"
Data="M 2,6 C2,6 3,6 3,6 3,6 3,5 3,5 3,5 4,5 4,5 4,5 4,6 4,6 4,6 5,6 5,6 5,6 7,6 7,6 7,6 7,5 7,5 7,5 6,5 6,5 6,5 6,4 6,4 6,4 5,4 5,4 5,4 5,2 5,2 5,2 6,2 6,2 6,2 6,1 6,1 6,1 7,1 7,1 7,1 7,0 7,0 7,0 5,0 5,0 5,0 4,0 4,0 4,0 4,1 4,1 4,1 3,1 3,1 3,1 3,0 3,0 3,0 2,0 2,0 2,0 0,0 0,0 0,0 0,1 0,1 0,1 1,1 1,1 1,1 1,2 1,2 1,2 2,2 2,2 2,2 2,4 2,4 2,4 1,4 1,4 1,4 1,5 1,5 1,5 0,5 0,5 0,5 0,6 0,6 0,6 2,6 2,6 z"
Fill="White" Margin="0,0,0,1" Visibility="Collapsed" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- =============================================================================== -->
<!-- SelectorItem -->
<!-- =============================================================================== -->
<Style TargetType="{x:Type primitives:SelectorItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type primitives:SelectorItem}">
<Border x:Name="_background"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<CheckBox Name="PART_CheckBox" IsChecked="{Binding IsSelected, RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="Center" Focusable="False" Margin="3,1,5,1"/>
<Border Grid.Column="1">
<ContentPresenter Margin="2" ContentSource="Content" />
</Border>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="_background" Property="Background" Value="Blue"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

BIN
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/TokenizedTextBox/Images/delete8.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 B

55
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/TokenizedTextBox/Implementation/Token.cs

@ -1,55 +0,0 @@
/************************************************************************
Extended WPF Toolkit
Copyright (C) 2010-2012 Xceed Software Inc.
This program is provided to you under the terms of the Microsoft Public
License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
This program can be provided to you by Xceed Software Inc. under a
proprietary commercial license agreement for use in non-Open Source
projects. The commercial version of Extended WPF Toolkit also includes
priority technical support, commercial updates, and many additional
useful WPF controls if you license Xceed Business Suite for WPF.
Visit http://xceed.com and follow @datagrid on Twitter.
**********************************************************************/
using System;
namespace Xceed.Wpf.Toolkit
{
internal class Token
{
public string Delimiter
{
get;
private set;
}
public object Item
{
get;
set;
}
private string _tokenKey;
public string TokenKey
{
get
{
return _tokenKey;
}
set
{
_tokenKey = String.Format( "{0}{1}", value, Delimiter );
}
}
public Token( string delimiter )
{
Delimiter = delimiter;
}
}
}

45
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/TokenizedTextBox/Implementation/TokenItem.cs

@ -1,45 +0,0 @@
/************************************************************************
Extended WPF Toolkit
Copyright (C) 2010-2012 Xceed Software Inc.
This program is provided to you under the terms of the Microsoft Public
License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
This program can be provided to you by Xceed Software Inc. under a
proprietary commercial license agreement for use in non-Open Source
projects. The commercial version of Extended WPF Toolkit also includes
priority technical support, commercial updates, and many additional
useful WPF controls if you license Xceed Business Suite for WPF.
Visit http://xceed.com and follow @datagrid on Twitter.
**********************************************************************/
using System.Windows;
using System.Windows.Controls;
namespace Xceed.Wpf.Toolkit
{
public class TokenItem : ContentControl
{
static TokenItem()
{
DefaultStyleKeyProperty.OverrideMetadata( typeof( TokenItem ), new FrameworkPropertyMetadata( typeof( TokenItem ) ) );
}
public static readonly DependencyProperty TokenKeyProperty = DependencyProperty.Register( "TokenKey", typeof( string ), typeof( TokenItem ), new UIPropertyMetadata( null ) );
public string TokenKey
{
get
{
return ( string )GetValue( TokenKeyProperty );
}
set
{
SetValue( TokenKeyProperty, value );
}
}
}
}

394
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/TokenizedTextBox/Implementation/TokenizedTextBox.cs

@ -1,394 +0,0 @@
/************************************************************************
Extended WPF Toolkit
Copyright (C) 2010-2012 Xceed Software Inc.
This program is provided to you under the terms of the Microsoft Public
License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
This program can be provided to you by Xceed Software Inc. under a
proprietary commercial license agreement for use in non-Open Source
projects. The commercial version of Extended WPF Toolkit also includes
priority technical support, commercial updates, and many additional
useful WPF controls if you license Xceed Business Suite for WPF.
Visit http://xceed.com and follow @datagrid on Twitter.
**********************************************************************/
//Based of the code written by Pavan Podila
//http://blog.pixelingene.com/2010/10/tokenizing-control-convert-text-to-tokens/
using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
namespace Xceed.Wpf.Toolkit
{
public class TokenizedTextBox : ItemsControl
{
#region Members
private System.Windows.Controls.RichTextBox _rtb = null;
private bool _surpressTextChanged = false;
private bool _surpressTextChangedEvent = false;
#endregion //Members
#region Properties
public static readonly DependencyProperty SearchMemberPathProperty = DependencyProperty.Register( "SearchMemberPath", typeof( string ), typeof( TokenizedTextBox ), new UIPropertyMetadata( String.Empty ) );
public string SearchMemberPath
{
get
{
return ( string )GetValue( SearchMemberPathProperty );
}
set
{
SetValue( SearchMemberPathProperty, value );
}
}
public static readonly DependencyProperty TokenDelimiterProperty = DependencyProperty.Register( "TokenDelimiter", typeof( string ), typeof( TokenizedTextBox ), new UIPropertyMetadata( ";" ) );
public string TokenDelimiter
{
get
{
return ( string )GetValue( TokenDelimiterProperty );
}
set
{
SetValue( TokenDelimiterProperty, value );
}
}
public static readonly DependencyProperty TokenTemplateProperty = DependencyProperty.Register( "TokenTemplate", typeof( DataTemplate ), typeof( TokenizedTextBox ), new UIPropertyMetadata( null ) );
public DataTemplate TokenTemplate
{
get
{
return ( DataTemplate )GetValue( TokenTemplateProperty );
}
set
{
SetValue( TokenTemplateProperty, value );
}
}
#region Text
public static readonly DependencyProperty TextProperty = DependencyProperty.Register( "Text", typeof( string ), typeof( TokenizedTextBox ), new UIPropertyMetadata( null, OnTextChanged ) );
public string Text
{
get
{
return ( string )GetValue( TextProperty );
}
set
{
SetValue( TextProperty, value );
}
}
private static void OnTextChanged( DependencyObject o, DependencyPropertyChangedEventArgs e )
{
TokenizedTextBox tokenizedTextBox = o as TokenizedTextBox;
if( tokenizedTextBox != null )
tokenizedTextBox.OnTextChanged( ( string )e.OldValue, ( string )e.NewValue );
}
protected virtual void OnTextChanged( string oldValue, string newValue )
{
if( _rtb == null || _surpressTextChanged )
return;
//TODO: when text changes update tokens
}
#endregion //Text
public static readonly DependencyProperty ValueMemberPathProperty = DependencyProperty.Register( "ValueMemberPath", typeof( string ), typeof( TokenizedTextBox ), new UIPropertyMetadata( String.Empty ) );
public string ValueMemberPath
{
get
{
return ( string )GetValue( ValueMemberPathProperty );
}
set
{
SetValue( ValueMemberPathProperty, value );
}
}
#endregion //Properties
#region Constructors
static TokenizedTextBox()
{
DefaultStyleKeyProperty.OverrideMetadata( typeof( TokenizedTextBox ), new FrameworkPropertyMetadata( typeof( TokenizedTextBox ) ) );
}
public TokenizedTextBox()
{
CommandBindings.Add( new CommandBinding( TokenizedTextBoxCommands.Delete, DeleteToken ) );
}
#endregion //Constructors
#region Base Class Overrides
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
if( _rtb != null )
{
_rtb.TextChanged -= RichTextBox_TextChanged;
_rtb.PreviewKeyDown -= RichTextBox_PreviewKeyDown;
}
_rtb = GetTemplateChild( "PART_ContentHost" ) as System.Windows.Controls.RichTextBox;
if( _rtb != null )
{
_rtb.TextChanged += RichTextBox_TextChanged;
_rtb.PreviewKeyDown += RichTextBox_PreviewKeyDown;
}
InitializeTokensFromText();
}
#endregion //Base Class Overrides
#region Event Handlers
private void RichTextBox_TextChanged( object sender, TextChangedEventArgs e )
{
if( _surpressTextChangedEvent )
return;
var text = _rtb.CaretPosition.GetTextInRun( LogicalDirection.Backward );
var token = ResolveToken( text );
if( token != null )
{
ReplaceTextWithToken( text.Trim(), token );
}
}
void RichTextBox_PreviewKeyDown( object sender, KeyEventArgs e )
{
InlineUIContainer container = null;
if( e.Key == Key.Back )
{
container = _rtb.CaretPosition.GetAdjacentElement( LogicalDirection.Backward ) as InlineUIContainer;
}
else if( e.Key == Key.Delete )
{
//if the selected text is a blank space, I will assume that a token item is selected.
//if a token item is selected, we need to move the caret position to the left of the element so we can grab the InlineUIContainer
if( _rtb.Selection.Text == " " )
{
TextPointer moveTo = _rtb.CaretPosition.GetNextInsertionPosition( LogicalDirection.Backward );
_rtb.CaretPosition = moveTo;
}
//the cursor is to the left of a token item
container = _rtb.CaretPosition.GetAdjacentElement( LogicalDirection.Forward ) as InlineUIContainer;
}
//if the container is not null that means we have something to delete
if( container != null )
{
var token = ( container as InlineUIContainer ).Child as TokenItem;
if( token != null )
{
SetTextInternal( Text.Replace( token.TokenKey, "" ) );
}
}
}
#endregion //Event Handlers
#region Methods
private void InitializeTokensFromText()
{
if( !String.IsNullOrEmpty( Text ) )
{
string[] tokenKeys = Text.Split( new string[] { TokenDelimiter }, StringSplitOptions.RemoveEmptyEntries );
foreach( string tokenKey in tokenKeys )
{
var para = _rtb.CaretPosition.Paragraph;
var token = new Token( TokenDelimiter )
{
TokenKey = tokenKey,
Item = ResolveItemByTokenKey( tokenKey )
};
para.Inlines.Add( CreateTokenContainer( token ) );
}
}
}
private Token ResolveToken( string text )
{
if( text.EndsWith( TokenDelimiter ) )
return ResolveTokenBySearchMemberPath( text.Substring( 0, text.Length - 1 ).Trim() );
return null;
}
private Token ResolveTokenBySearchMemberPath( string searchText )
{
//create a new token and default the settings to the search text
var token = new Token( TokenDelimiter )
{
TokenKey = searchText,
Item = searchText
};
if( ItemsSource != null )
{
foreach( object item in ItemsSource )
{
var searchProperty = item.GetType().GetProperty( SearchMemberPath );
if( searchProperty != null )
{
var searchValue = searchProperty.GetValue( item, null );
if( searchText.Equals( searchValue.ToString(), StringComparison.InvariantCultureIgnoreCase ) )
{
var valueProperty = item.GetType().GetProperty( ValueMemberPath );
if( valueProperty != null )
token.TokenKey = valueProperty.GetValue( item, null ).ToString();
token.Item = item;
break;
}
}
}
}
return token;
}
private object ResolveItemByTokenKey( string tokenKey )
{
if( ItemsSource != null )
{
foreach( object item in ItemsSource )
{
var property = item.GetType().GetProperty( ValueMemberPath );
if( property != null )
{
var value = property.GetValue( item, null );
if( tokenKey.Equals( value.ToString(), StringComparison.InvariantCultureIgnoreCase ) )
return item;
}
}
}
return tokenKey;
}
private void ReplaceTextWithToken( string inputText, Token token )
{
_surpressTextChangedEvent = true;
var para = _rtb.CaretPosition.Paragraph;
var matchedRun = para.Inlines.FirstOrDefault( inline =>
{
var run = inline as Run;
return ( run != null && run.Text.EndsWith( inputText ) );
} ) as Run;
if( matchedRun != null ) // Found a Run that matched the inputText
{
var tokenContainer = CreateTokenContainer( token );
para.Inlines.InsertBefore( matchedRun, tokenContainer );
// Remove only if the Text in the Run is the same as inputText, else split up
if( matchedRun.Text == inputText )
{
para.Inlines.Remove( matchedRun );
}
else // Split up
{
var index = matchedRun.Text.IndexOf( inputText ) + inputText.Length;
var tailEnd = new Run( matchedRun.Text.Substring( index ) );
para.Inlines.InsertAfter( matchedRun, tailEnd );
para.Inlines.Remove( matchedRun );
}
//now append the Text with the token key
SetTextInternal( Text + token.TokenKey );
}
_surpressTextChangedEvent = false;
}
private InlineUIContainer CreateTokenContainer( Token token )
{
return new InlineUIContainer( CreateTokenItem( token ) )
{
BaselineAlignment = BaselineAlignment.Center
};
}
private TokenItem CreateTokenItem( Token token )
{
object item = token.Item;
var tokenItem = new TokenItem()
{
TokenKey = token.TokenKey,
Content = item,
ContentTemplate = TokenTemplate
};
if( TokenTemplate == null )
{
//if no template was supplied let's try to get a value from the object using the DisplayMemberPath
if( !String.IsNullOrEmpty( DisplayMemberPath ) )
{
var property = item.GetType().GetProperty( DisplayMemberPath );
if( property != null )
{
var value = property.GetValue( item, null );
if( value != null )
tokenItem.Content = value;
}
}
}
return tokenItem;
}
private void DeleteToken( object sender, ExecutedRoutedEventArgs e )
{
var para = _rtb.CaretPosition.Paragraph;
Inline inlineToRemove = para.Inlines.Where( inline => inline is InlineUIContainer && ( ( inline as InlineUIContainer ).Child as TokenItem ).TokenKey.Equals( e.Parameter ) ).FirstOrDefault();
if( inlineToRemove != null )
para.Inlines.Remove( inlineToRemove );
//update Text to remove delimited value
SetTextInternal( Text.Replace( e.Parameter.ToString(), "" ) );
}
private void SetTextInternal( string text )
{
_surpressTextChanged = true;
Text = text;
_surpressTextChanged = false;
}
#endregion //Methods
}
}

36
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/TokenizedTextBox/Implementation/TokenizedTextBoxCommands.cs

@ -1,36 +0,0 @@
/************************************************************************
Extended WPF Toolkit
Copyright (C) 2010-2012 Xceed Software Inc.
This program is provided to you under the terms of the Microsoft Public
License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
This program can be provided to you by Xceed Software Inc. under a
proprietary commercial license agreement for use in non-Open Source
projects. The commercial version of Extended WPF Toolkit also includes
priority technical support, commercial updates, and many additional
useful WPF controls if you license Xceed Business Suite for WPF.
Visit http://xceed.com and follow @datagrid on Twitter.
**********************************************************************/
using System.Windows.Input;
namespace Xceed.Wpf.Toolkit
{
public static class TokenizedTextBoxCommands
{
private static RoutedCommand _deleteCommand = new RoutedCommand();
public static RoutedCommand Delete
{
get
{
return _deleteCommand;
}
}
}
}

78
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/TokenizedTextBox/Themes/Generic.xaml

@ -1,78 +0,0 @@
<!--*********************************************************************
Extended WPF Toolkit
Copyright (C) 2010-2012 Xceed Software Inc.
This program is provided to you under the terms of the Microsoft Public
License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
This program can be provided to you by Xceed Software Inc. under a
proprietary commercial license agreement for use in non-Open Source
projects. The commercial version of Extended WPF Toolkit also includes
priority technical support, commercial updates, and many additional
useful WPF controls if you license Xceed Business Suite for WPF.
Visit http://xceed.com and follow @datagrid on Twitter.
********************************************************************-->
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Xceed.Wpf.Toolkit">
<Style TargetType="{x:Type local:TokenItem}">
<Setter Property="Background" Value="#F3F7FD" />
<Setter Property="BorderBrush" Value="#BBD8FB" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Cursor" Value="Arrow" />
<Setter Property="Padding" Value="5,1,5,1" />
<Setter Property="Margin" Value="1,0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:TokenItem}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}"
Margin="{TemplateBinding Margin}">
<StackPanel Orientation="Horizontal" Margin="1">
<ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" />
<Button Margin="3,0,0,0" Cursor="Hand" Command="local:TokenizedTextBoxCommands.Delete" CommandParameter="{TemplateBinding TokenKey}">
<Button.Template>
<ControlTemplate TargetType="Button">
<ContentPresenter />
</ControlTemplate>
</Button.Template>
<Image Source="/WPFToolkit.Extended;component/TokenizedTextBox/Images/delete8.png" Width="8" Height="8" />
</Button>
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type local:TokenizedTextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:TokenizedTextBox}">
<Border x:Name="Bd"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<RichTextBox x:Name="PART_ContentHost" AcceptsReturn="False" IsDocumentEnabled="True" Padding="-3,0,0,0" />
<!--<Popup>
<Grid Background="White">
<ItemsPresenter />
</Grid>
</Popup>-->
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

10
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj.vspscc

@ -1,10 +0,0 @@
""
{
"FILE_VERSION" = "9237"
"ENLISTMENT_CHOICE" = "NEVER"
"PROJECT_FILE_RELATIVE_PATH" = ""
"NUMBER_OF_EXCLUDED_FILES" = "0"
"ORIGINAL_PROJECT_FILE_PATH" = ""
"NUMBER_OF_NESTED_PROJECTS" = "0"
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
}

BIN
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/sn.pfx

Binary file not shown.

4
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/AssemblyVersionInfo.cs

@ -14,12 +14,14 @@
***********************************************************************************/
#pragma warning disable 0436
[assembly: System.Reflection.AssemblyVersion( _XceedVersionInfo.Version )]
#pragma warning restore 0436
internal static class _XceedVersionInfo
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string BaseVersion = "2.0";
public const string BaseVersion = "3.4";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Version = BaseVersion +
".0.0";

68
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Brushes.xaml

@ -20,7 +20,7 @@
<LinearGradientBrush x:Key="{x:Static at:AeroColors.BaseColor1Key}"
<LinearGradientBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor1}"
StartPoint="0,0"
EndPoint="1,0">
<LinearGradientBrush.GradientStops>
@ -29,13 +29,13 @@
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor2Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor2}"
Color="White"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor3Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor3}"
Color="Black"/>
<LinearGradientBrush x:Key="{x:Static at:AeroColors.BaseColor4Key}"
<LinearGradientBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor4}"
StartPoint="0,0"
EndPoint="0,1">
<LinearGradientBrush.GradientStops>
@ -44,11 +44,11 @@
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor5Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor5}"
Color="#898C95"/>
<LinearGradientBrush x:Key="{x:Static at:AeroColors.BaseColor6Key}"
<LinearGradientBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor6}"
StartPoint="0,0"
EndPoint="0,1">
<LinearGradientBrush.GradientStops>
@ -57,7 +57,7 @@
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="{x:Static at:AeroColors.BaseColor7Key}"
<LinearGradientBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor7}"
StartPoint="0,0"
EndPoint="0,1">
<LinearGradientBrush.GradientStops>
@ -66,28 +66,28 @@
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor8Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor8}"
Color="#D2E6FA"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor9Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor9}"
Color="#FFF5F4EA"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor10Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor10}"
Color="Black"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor11Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor11}"
Color="#FFBBC0C7" />
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor12Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor12}"
Color="#555564"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor13Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor13}"
Color="White"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor14Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor14}"
Color="#69A1BF"/>
<LinearGradientBrush x:Key="{x:Static at:AeroColors.BaseColor15Key}"
<LinearGradientBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor15}"
StartPoint="0,0"
EndPoint="0,1">
<GradientStop Color="#8FADCE" Offset="0" />
@ -95,57 +95,41 @@
</LinearGradientBrush>
<LinearGradientBrush x:Key="{x:Static at:AeroColors.BaseColor16Key}"
<LinearGradientBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor16}"
StartPoint="0,0"
EndPoint="0,1">
<GradientStop Color="#B7CAE0" Offset="0" />
<GradientStop Color="#E8F0FF" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="{x:Static at:AeroColors.BaseColor17Key}"
<LinearGradientBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor17}"
StartPoint="0,0"
EndPoint="0,1">
<GradientStop Color="#F7FCFE" Offset="0" />
<GradientStop Color="#81D0F1" Offset="1" />
</LinearGradientBrush>
<!--
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor18Key}"
Color="Black"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor20Key}"
Color="White"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor21Key}"
Color="White"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor22Key}"
Color="Black"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor23Key}"
Color="Black"/>-->
<LinearGradientBrush x:Key="{x:Static at:AeroColors.BaseColor24Key}" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor24}" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#FBFCFC" Offset="0" />
<GradientStop Color="#D7DCE4" Offset="0.5" />
<GradientStop Color="#CED4DF" Offset="0.5" />
<GradientStop Color="#CED4DF" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="{x:Static at:AeroColors.BaseColor25Key}" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor25}" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#FFFCF2" Offset="0" />
<GradientStop Color="#FFEDBA" Offset="0.5" />
<GradientStop Color="#FFE8A6" Offset="0.5" />
<GradientStop Color="#FFE8A6" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="{x:Static at:AeroColors.BaseColor26Key}"
<LinearGradientBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor26}"
StartPoint="0,0"
EndPoint="0,1">
<GradientStop Color="#F2F2F2" Offset="0" />
<GradientStop Color="#CFCFCF" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="{x:Static at:AeroColors.BaseColor27Key}"
<LinearGradientBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor27}"
StartPoint="0,0"
EndPoint="0,1">
<GradientStop Color="#A7D9F5" Offset="0" />
@ -154,18 +138,18 @@
<GradientStop Color="#FAFDFE" Offset="1" />
</LinearGradientBrush>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor28Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor28}"
Color="White"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor30Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor30}"
Color="#CED4DF"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor31Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor31}"
Color="#FFE8A6"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor32Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor32}"
Color="#3C7FB1"/>
<SolidColorBrush x:Key="{x:Static at:AeroColors.BaseColor33Key}"
<SolidColorBrush x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type at:AeroColors}, ResourceId=BaseColor33}"
Color="#3D5277"/>
</ResourceDictionary>

6
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Properties/AssemblyInfo.cs

@ -25,12 +25,12 @@ using System;
// 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( "Xceed Extended WPF Toolkit - AvalonDock Aero Theme" )]
[assembly: AssemblyTitle( "Xceed Toolkit for WPF - AvalonDock Aero Theme" )]
[assembly: AssemblyDescription( "This assembly implements the Aero Theme for the AvalonDock layout system." )]
[assembly: AssemblyCompany( "Xceed Software Inc." )]
[assembly: AssemblyProduct( "Xceed Extended WPF Toolkit - AvalonDock" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2013" )]
[assembly: AssemblyProduct( "Xceed Toolkit for WPF - AvalonDock" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2017" )]

3337
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/Theme.xaml

File diff suppressed because it is too large

62
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Debug/GeneratedInternalTypeHelper.g.i.cs

@ -0,0 +1,62 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace XamlGeneratedNamespace {
/// <summary>
/// GeneratedInternalTypeHelper
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
/// <summary>
/// CreateInstance
/// </summary>
protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic)
| (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
}
/// <summary>
/// GetPropertyValue
/// </summary>
protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// SetPropertyValue
/// </summary>
protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// CreateDelegate
/// </summary>
protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod
| (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
delegateType,
handler}, null)));
}
/// <summary>
/// AddEventHandler
/// </summary>
protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
eventInfo.AddEventHandler(target, handler);
}
}
}

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/Brushes.baml

Binary file not shown.

2
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/GeneratedInternalTypeHelper.g.cs

@ -0,0 +1,2 @@


62
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/GeneratedInternalTypeHelper.g.i.cs

@ -0,0 +1,62 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace XamlGeneratedNamespace {
/// <summary>
/// GeneratedInternalTypeHelper
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
/// <summary>
/// CreateInstance
/// </summary>
protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic)
| (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
}
/// <summary>
/// GetPropertyValue
/// </summary>
protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// SetPropertyValue
/// </summary>
protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// CreateDelegate
/// </summary>
protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod
| (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
delegateType,
handler}, null)));
}
/// <summary>
/// AddEventHandler
/// </summary>
protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
eventInfo.AddEventHandler(target, handler);
}
}
}

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/Theme.baml

Binary file not shown.

23
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/Xceed.Wpf.AvalonDock.Themes.Aero.csproj.FileListAbsolute.txt

@ -0,0 +1,23 @@
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\Xceed.Wpf.AvalonDock.Themes.Aero.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\Xceed.Wpf.AvalonDock.Themes.Aero.pdb
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\Xceed.Wpf.AvalonDock.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\Xceed.Wpf.AvalonDock.pdb
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\de\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\es\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\fr\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\hu\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\it\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\pt-BR\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\ro\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\ru\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\sv\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\bin\Release\zh-Hans\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\obj\Release\Xceed.Wpf.AvalonDock.Themes.Aero.csprojResolveAssemblyReference.cache
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\obj\Release\GeneratedInternalTypeHelper.g.cs
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\obj\Release\Xceed.Wpf.AvalonDock.Themes.Aero_MarkupCompile.cache
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\obj\Release\Xceed.Wpf.AvalonDock.Themes.Aero_MarkupCompile.lref
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\obj\Release\Brushes.baml
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\obj\Release\Theme.baml
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\obj\Release\Xceed.Wpf.AvalonDock.Themes.Aero.g.resources
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\obj\Release\Xceed.Wpf.AvalonDock.Themes.Aero.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\obj\Release\Xceed.Wpf.AvalonDock.Themes.Aero.pdb

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/Xceed.Wpf.AvalonDock.Themes.Aero.g.resources

Binary file not shown.

5
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Aero/obj/Release/Xceed.Wpf.AvalonDock.Themes.Aero_MarkupCompile.lref

@ -0,0 +1,5 @@
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\obj\Release\GeneratedInternalTypeHelper.g.cs
FD:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\Brushes.xaml;;
FD:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Aero\Theme.xaml;;

4
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/AssemblyVersionInfo.cs

@ -14,12 +14,14 @@
***********************************************************************************/
#pragma warning disable 0436
[assembly: System.Reflection.AssemblyVersion( _XceedVersionInfo.Version )]
#pragma warning restore 0436
internal static class _XceedVersionInfo
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string BaseVersion = "2.0";
public const string BaseVersion = "3.4";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Version = BaseVersion +
".0.0";

6
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Properties/AssemblyInfo.cs

@ -25,12 +25,12 @@ using System;
// 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( "Xceed Extended WPF Toolkit - AvalonDock Metro Theme" )]
[assembly: AssemblyTitle( "Xceed Toolkit for WPF - AvalonDock Metro Theme" )]
[assembly: AssemblyDescription( "This assembly implements the Metro Theme for the AvalonDock layout system." )]
[assembly: AssemblyCompany( "Xceed Software Inc." )]
[assembly: AssemblyProduct( "Xceed Extended WPF Toolkit - AvalonDock" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2013" )]
[assembly: AssemblyProduct( "Xceed Toolkit for WPF - AvalonDock" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2017" )]

3458
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/Theme.xaml

File diff suppressed because it is too large

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/obj/Release/Brushes.baml

Binary file not shown.

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/obj/Release/Theme.baml

Binary file not shown.

22
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/obj/Release/Xceed.Wpf.AvalonDock.Themes.Metro.csproj.FileListAbsolute.txt

@ -0,0 +1,22 @@
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\Xceed.Wpf.AvalonDock.Themes.Metro.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\Xceed.Wpf.AvalonDock.Themes.Metro.pdb
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\Xceed.Wpf.AvalonDock.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\Xceed.Wpf.AvalonDock.pdb
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\de\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\es\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\fr\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\hu\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\it\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\pt-BR\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\ro\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\ru\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\sv\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\bin\Release\zh-Hans\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\obj\Release\Xceed.Wpf.AvalonDock.Themes.Metro.csprojResolveAssemblyReference.cache
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\obj\Release\Brushes.baml
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\obj\Release\Xceed.Wpf.AvalonDock.Themes.Metro_MarkupCompile.cache
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\obj\Release\Xceed.Wpf.AvalonDock.Themes.Metro_MarkupCompile.lref
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\obj\Release\Theme.baml
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\obj\Release\Xceed.Wpf.AvalonDock.Themes.Metro.g.resources
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\obj\Release\Xceed.Wpf.AvalonDock.Themes.Metro.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\obj\Release\Xceed.Wpf.AvalonDock.Themes.Metro.pdb

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/obj/Release/Xceed.Wpf.AvalonDock.Themes.Metro.g.resources

Binary file not shown.

4
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.Metro/obj/Release/Xceed.Wpf.AvalonDock.Themes.Metro_MarkupCompile.lref

@ -0,0 +1,4 @@

FD:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.Metro\Theme.xaml;;

4
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/AssemblyVersionInfo.cs

@ -14,12 +14,14 @@
***********************************************************************************/
#pragma warning disable 0436
[assembly: System.Reflection.AssemblyVersion( _XceedVersionInfo.Version )]
#pragma warning restore 0436
internal static class _XceedVersionInfo
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string BaseVersion = "2.0";
public const string BaseVersion = "3.4";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Version = BaseVersion +
".0.0";

6
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Properties/AssemblyInfo.cs

@ -25,12 +25,12 @@ using System;
// 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( "Xceed Extended WPF Toolkit - AvalonDock" )]
[assembly: AssemblyTitle( "Xceed Toolkit for WPF - AvalonDock VS2010 Theme" )]
[assembly: AssemblyDescription( "This assembly implements the VS2010 Theme for the AvalonDock layout system." )]
[assembly: AssemblyCompany( "Xceed Software Inc." )]
[assembly: AssemblyProduct( "Xceed Extended WPF Toolkit - AvalonDock" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2013" )]
[assembly: AssemblyProduct( "Xceed Toolkit for WPF - AvalonDock" )]
[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2017" )]
// Setting ComVisible to false makes the types in this assembly not visible

3648
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/Theme.xaml

File diff suppressed because it is too large

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/obj/Release/Brushes.baml

Binary file not shown.

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/obj/Release/Theme.baml

Binary file not shown.

22
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/obj/Release/Xceed.Wpf.AvalonDock.Themes.VS2010.csproj.FileListAbsolute.txt

@ -0,0 +1,22 @@
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\Xceed.Wpf.AvalonDock.Themes.VS2010.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\Xceed.Wpf.AvalonDock.Themes.VS2010.pdb
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\Xceed.Wpf.AvalonDock.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\Xceed.Wpf.AvalonDock.pdb
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\de\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\es\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\fr\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\hu\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\it\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\pt-BR\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\ro\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\ru\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\sv\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\bin\Release\zh-Hans\Xceed.Wpf.AvalonDock.resources.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\obj\Release\Xceed.Wpf.AvalonDock.Themes.VS2010.csprojResolveAssemblyReference.cache
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\obj\Release\Brushes.baml
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\obj\Release\Xceed.Wpf.AvalonDock.Themes.VS2010_MarkupCompile.cache
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\obj\Release\Xceed.Wpf.AvalonDock.Themes.VS2010_MarkupCompile.lref
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\obj\Release\Theme.baml
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\obj\Release\Xceed.Wpf.AvalonDock.Themes.VS2010.g.resources
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\obj\Release\Xceed.Wpf.AvalonDock.Themes.VS2010.dll
D:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\obj\Release\Xceed.Wpf.AvalonDock.Themes.VS2010.pdb

BIN
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/obj/Release/Xceed.Wpf.AvalonDock.Themes.VS2010.g.resources

Binary file not shown.

4
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock.Themes.VS2010/obj/Release/Xceed.Wpf.AvalonDock.Themes.VS2010_MarkupCompile.lref

@ -0,0 +1,4 @@

FD:\Dev\ExtendedWPFToolkit\Release\3.4.0\OpenSource\Generated\Src\Xceed.Wpf.AvalonDock.Themes.VS2010\Theme.xaml;;

4
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/AssemblyVersionInfo.cs

@ -14,12 +14,14 @@
***********************************************************************************/
#pragma warning disable 0436
[assembly: System.Reflection.AssemblyVersion( _XceedVersionInfo.Version )]
#pragma warning restore 0436
internal static class _XceedVersionInfo
{
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string BaseVersion = "2.0";
public const string BaseVersion = "3.4";
[System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
public const string Version = BaseVersion +
".0.0";

79
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Commands/RelayCommand.cs

@ -15,57 +15,60 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
namespace Xceed.Wpf.AvalonDock.Commands
{
internal class RelayCommand : ICommand
{
#region Fields
readonly Action<object> _execute;
readonly Predicate<object> _canExecute;
internal class RelayCommand : ICommand
{
#region Fields
#endregion // Fields
private readonly Action<object> _execute;
private readonly Predicate<object> _canExecute;
#region Constructors
#endregion // Fields
public RelayCommand(Action<object> execute)
: this(execute, null)
{
}
#region Constructors
public RelayCommand(Action<object> execute, Predicate<object> canExecute)
{
if (execute == null)
throw new ArgumentNullException("execute");
public RelayCommand( Action<object> execute )
: this( execute, null )
{
}
_execute = execute;
_canExecute = canExecute;
}
#endregion // Constructors
public RelayCommand( Action<object> execute, Predicate<object> canExecute )
{
if( execute == null )
throw new ArgumentNullException( "execute" );
#region ICommand Members
_execute = execute;
_canExecute = canExecute;
}
#endregion // Constructors
public bool CanExecute(object parameter)
{
return _canExecute == null ? true : _canExecute(parameter);
}
#region ICommand Members
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public bool CanExecute( object parameter )
{
return _canExecute == null ? true : _canExecute( parameter );
}
public void Execute(object parameter)
{
_execute(parameter);
}
public event EventHandler CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
}
remove
{
CommandManager.RequerySuggested -= value;
}
}
#endregion // ICommand Members
public void Execute( object parameter )
{
_execute( parameter );
}
#endregion // ICommand Members
}
}

39
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneControlOverlayArea.cs

@ -14,30 +14,33 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using Xceed.Wpf.AvalonDock.Layout;
namespace Xceed.Wpf.AvalonDock.Controls
{
public class AnchorablePaneControlOverlayArea : OverlayArea
{
internal AnchorablePaneControlOverlayArea(
IOverlayWindow overlayWindow,
LayoutAnchorablePaneControl anchorablePaneControl)
: base(overlayWindow)
{
public class AnchorablePaneControlOverlayArea : OverlayArea
{
#region Members
private LayoutAnchorablePaneControl _anchorablePaneControl;
#endregion
_anchorablePaneControl = anchorablePaneControl;
base.SetScreenDetectionArea(new Rect(
_anchorablePaneControl.PointToScreenDPI(new Point()),
_anchorablePaneControl.TransformActualSizeToAncestor()));
#region constructors
}
internal AnchorablePaneControlOverlayArea(
IOverlayWindow overlayWindow,
LayoutAnchorablePaneControl anchorablePaneControl )
: base( overlayWindow )
{
_anchorablePaneControl = anchorablePaneControl;
base.SetScreenDetectionArea( new Rect(
_anchorablePaneControl.PointToScreenDPI( new Point() ),
_anchorablePaneControl.TransformActualSizeToAncestor() ) );
LayoutAnchorablePaneControl _anchorablePaneControl;
}
#endregion
}
}

593
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneDropTarget.cs

@ -14,323 +14,330 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
using Xceed.Wpf.AvalonDock.Layout;
namespace Xceed.Wpf.AvalonDock.Controls
{
internal class AnchorablePaneDropTarget : DropTarget<LayoutAnchorablePaneControl>
internal class AnchorablePaneDropTarget : DropTarget<LayoutAnchorablePaneControl>
{
#region Members
private LayoutAnchorablePaneControl _targetPane;
int _tabIndex = -1;
#endregion
#region Constructors
internal AnchorablePaneDropTarget( LayoutAnchorablePaneControl paneControl, Rect detectionRect, DropTargetType type )
: base( paneControl, detectionRect, type )
{
internal AnchorablePaneDropTarget(LayoutAnchorablePaneControl paneControl, Rect detectionRect, DropTargetType type)
: base(paneControl, detectionRect, type)
{
_targetPane = paneControl;
}
_targetPane = paneControl;
}
internal AnchorablePaneDropTarget(LayoutAnchorablePaneControl paneControl, Rect detectionRect, DropTargetType type, int tabIndex)
: base(paneControl, detectionRect, type)
{
_targetPane = paneControl;
_tabIndex = tabIndex;
}
internal AnchorablePaneDropTarget( LayoutAnchorablePaneControl paneControl, Rect detectionRect, DropTargetType type, int tabIndex )
: base( paneControl, detectionRect, type )
{
_targetPane = paneControl;
_tabIndex = tabIndex;
}
#endregion
LayoutAnchorablePaneControl _targetPane;
#region Overrides
int _tabIndex = -1;
protected override void Drop( LayoutAnchorableFloatingWindow floatingWindow )
{
ILayoutAnchorablePane targetModel = _targetPane.Model as ILayoutAnchorablePane;
LayoutAnchorable anchorableActive = floatingWindow.Descendents().OfType<LayoutAnchorable>().FirstOrDefault();
switch( Type )
{
case DropTargetType.AnchorablePaneDockBottom:
#region DropTargetType.AnchorablePaneDockBottom
{
var parentModel = targetModel.Parent as ILayoutGroup;
var parentModelOrientable = targetModel.Parent as ILayoutOrientableGroup;
int insertToIndex = parentModel.IndexOfChild( targetModel );
if( parentModelOrientable.Orientation != System.Windows.Controls.Orientation.Vertical &&
parentModel.ChildrenCount == 1 )
parentModelOrientable.Orientation = System.Windows.Controls.Orientation.Vertical;
if( parentModelOrientable.Orientation == System.Windows.Controls.Orientation.Vertical )
{
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if( layoutAnchorablePaneGroup != null &&
( layoutAnchorablePaneGroup.Children.Count == 1 ||
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Vertical ) )
{
var anchorablesToMove = layoutAnchorablePaneGroup.Children.ToArray();
for( int i = 0; i < anchorablesToMove.Length; i++ )
parentModel.InsertChildAt( insertToIndex + 1 + i, anchorablesToMove[ i ] );
}
else
parentModel.InsertChildAt( insertToIndex + 1, floatingWindow.RootPanel );
}
else
{
var targetModelAsPositionableElement = targetModel as ILayoutPositionableElement;
var newOrientedPanel = new LayoutAnchorablePaneGroup()
{
Orientation = System.Windows.Controls.Orientation.Vertical,
DockWidth = targetModelAsPositionableElement.DockWidth,
DockHeight = targetModelAsPositionableElement.DockHeight,
};
parentModel.InsertChildAt( insertToIndex, newOrientedPanel );
newOrientedPanel.Children.Add( targetModel );
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
}
}
break;
#endregion
case DropTargetType.AnchorablePaneDockTop:
#region DropTargetType.AnchorablePaneDockTop
{
var parentModel = targetModel.Parent as ILayoutGroup;
var parentModelOrientable = targetModel.Parent as ILayoutOrientableGroup;
int insertToIndex = parentModel.IndexOfChild( targetModel );
if( parentModelOrientable.Orientation != System.Windows.Controls.Orientation.Vertical &&
parentModel.ChildrenCount == 1 )
parentModelOrientable.Orientation = System.Windows.Controls.Orientation.Vertical;
if( parentModelOrientable.Orientation == System.Windows.Controls.Orientation.Vertical )
{
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if( layoutAnchorablePaneGroup != null &&
( layoutAnchorablePaneGroup.Children.Count == 1 ||
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Vertical ) )
{
var anchorablesToMove = layoutAnchorablePaneGroup.Children.ToArray();
for( int i = 0; i < anchorablesToMove.Length; i++ )
parentModel.InsertChildAt( insertToIndex + i, anchorablesToMove[ i ] );
}
else
parentModel.InsertChildAt( insertToIndex, floatingWindow.RootPanel );
}
else
{
var targetModelAsPositionableElement = targetModel as ILayoutPositionableElement;
var newOrientedPanel = new LayoutAnchorablePaneGroup()
{
Orientation = System.Windows.Controls.Orientation.Vertical,
DockWidth = targetModelAsPositionableElement.DockWidth,
DockHeight = targetModelAsPositionableElement.DockHeight,
};
parentModel.InsertChildAt( insertToIndex, newOrientedPanel );
//the floating window must be added after the target modal as it could be raise a CollectGarbage call
newOrientedPanel.Children.Add( targetModel );
newOrientedPanel.Children.Insert( 0, floatingWindow.RootPanel );
protected override void Drop(LayoutAnchorableFloatingWindow floatingWindow)
{
ILayoutAnchorablePane targetModel = _targetPane.Model as ILayoutAnchorablePane;
LayoutAnchorable anchorableActive = floatingWindow.Descendents().OfType<LayoutAnchorable>().FirstOrDefault();
}
}
break;
#endregion
case DropTargetType.AnchorablePaneDockLeft:
#region DropTargetType.AnchorablePaneDockLeft
{
var parentModel = targetModel.Parent as ILayoutGroup;
var parentModelOrientable = targetModel.Parent as ILayoutOrientableGroup;
int insertToIndex = parentModel.IndexOfChild( targetModel );
if( parentModelOrientable.Orientation != System.Windows.Controls.Orientation.Horizontal &&
parentModel.ChildrenCount == 1 )
parentModelOrientable.Orientation = System.Windows.Controls.Orientation.Horizontal;
if( parentModelOrientable.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if( layoutAnchorablePaneGroup != null &&
( layoutAnchorablePaneGroup.Children.Count == 1 ||
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Horizontal ) )
{
var anchorablesToMove = layoutAnchorablePaneGroup.Children.ToArray();
for( int i = 0; i < anchorablesToMove.Length; i++ )
parentModel.InsertChildAt( insertToIndex + i, anchorablesToMove[ i ] );
}
else
parentModel.InsertChildAt( insertToIndex, floatingWindow.RootPanel );
}
else
{
var targetModelAsPositionableElement = targetModel as ILayoutPositionableElement;
var newOrientedPanel = new LayoutAnchorablePaneGroup()
{
Orientation = System.Windows.Controls.Orientation.Horizontal,
DockWidth = targetModelAsPositionableElement.DockWidth,
DockHeight = targetModelAsPositionableElement.DockHeight,
};
parentModel.InsertChildAt( insertToIndex, newOrientedPanel );
//the floating window must be added after the target modal as it could be raise a CollectGarbage call
newOrientedPanel.Children.Add( targetModel );
newOrientedPanel.Children.Insert( 0, floatingWindow.RootPanel );
switch (Type)
}
}
break;
#endregion
case DropTargetType.AnchorablePaneDockRight:
#region DropTargetType.AnchorablePaneDockRight
{
var parentModel = targetModel.Parent as ILayoutGroup;
var parentModelOrientable = targetModel.Parent as ILayoutOrientableGroup;
int insertToIndex = parentModel.IndexOfChild( targetModel );
if( parentModelOrientable.Orientation != System.Windows.Controls.Orientation.Horizontal &&
parentModel.ChildrenCount == 1 )
parentModelOrientable.Orientation = System.Windows.Controls.Orientation.Horizontal;
if( parentModelOrientable.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
case DropTargetType.AnchorablePaneDockBottom:
#region DropTargetType.AnchorablePaneDockBottom
{
var parentModel = targetModel.Parent as ILayoutGroup;
var parentModelOrientable = targetModel.Parent as ILayoutOrientableGroup;
int insertToIndex = parentModel.IndexOfChild(targetModel);
if (parentModelOrientable.Orientation != System.Windows.Controls.Orientation.Vertical &&
parentModel.ChildrenCount == 1)
parentModelOrientable.Orientation = System.Windows.Controls.Orientation.Vertical;
if (parentModelOrientable.Orientation == System.Windows.Controls.Orientation.Vertical)
{
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if (layoutAnchorablePaneGroup != null &&
(layoutAnchorablePaneGroup.Children.Count == 1 ||
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Vertical))
{
var anchorablesToMove = layoutAnchorablePaneGroup.Children.ToArray();
for (int i = 0; i < anchorablesToMove.Length; i++)
parentModel.InsertChildAt(insertToIndex + 1 + i, anchorablesToMove[i]);
}
else
parentModel.InsertChildAt(insertToIndex + 1, floatingWindow.RootPanel);
}
else
{
var targetModelAsPositionableElement = targetModel as ILayoutPositionableElement;
var newOrientedPanel = new LayoutAnchorablePaneGroup()
{
Orientation = System.Windows.Controls.Orientation.Vertical,
DockWidth = targetModelAsPositionableElement.DockWidth,
DockHeight = targetModelAsPositionableElement.DockHeight,
};
parentModel.InsertChildAt(insertToIndex, newOrientedPanel);
newOrientedPanel.Children.Add(targetModel);
newOrientedPanel.Children.Add(floatingWindow.RootPanel);
}
}
break;
#endregion
case DropTargetType.AnchorablePaneDockTop:
#region DropTargetType.AnchorablePaneDockTop
{
var parentModel = targetModel.Parent as ILayoutGroup;
var parentModelOrientable = targetModel.Parent as ILayoutOrientableGroup;
int insertToIndex = parentModel.IndexOfChild(targetModel);
if (parentModelOrientable.Orientation != System.Windows.Controls.Orientation.Vertical &&
parentModel.ChildrenCount == 1)
parentModelOrientable.Orientation = System.Windows.Controls.Orientation.Vertical;
if (parentModelOrientable.Orientation == System.Windows.Controls.Orientation.Vertical)
{
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if (layoutAnchorablePaneGroup != null &&
(layoutAnchorablePaneGroup.Children.Count == 1 ||
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Vertical))
{
var anchorablesToMove = layoutAnchorablePaneGroup.Children.ToArray();
for (int i = 0; i < anchorablesToMove.Length; i++)
parentModel.InsertChildAt(insertToIndex + i, anchorablesToMove[i]);
}
else
parentModel.InsertChildAt(insertToIndex, floatingWindow.RootPanel);
}
else
{
var targetModelAsPositionableElement = targetModel as ILayoutPositionableElement;
var newOrientedPanel = new LayoutAnchorablePaneGroup()
{
Orientation = System.Windows.Controls.Orientation.Vertical,
DockWidth = targetModelAsPositionableElement.DockWidth,
DockHeight = targetModelAsPositionableElement.DockHeight,
};
parentModel.InsertChildAt(insertToIndex, newOrientedPanel);
//the floating window must be added after the target modal as it could be raise a CollectGarbage call
newOrientedPanel.Children.Add(targetModel);
newOrientedPanel.Children.Insert(0, floatingWindow.RootPanel);
}
}
break;
#endregion
case DropTargetType.AnchorablePaneDockLeft:
#region DropTargetType.AnchorablePaneDockLeft
{
var parentModel = targetModel.Parent as ILayoutGroup;
var parentModelOrientable = targetModel.Parent as ILayoutOrientableGroup;
int insertToIndex = parentModel.IndexOfChild(targetModel);
if (parentModelOrientable.Orientation != System.Windows.Controls.Orientation.Horizontal &&
parentModel.ChildrenCount == 1)
parentModelOrientable.Orientation = System.Windows.Controls.Orientation.Horizontal;
if (parentModelOrientable.Orientation == System.Windows.Controls.Orientation.Horizontal)
{
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if (layoutAnchorablePaneGroup != null &&
(layoutAnchorablePaneGroup.Children.Count == 1 ||
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Horizontal))
{
var anchorablesToMove = layoutAnchorablePaneGroup.Children.ToArray();
for (int i = 0; i < anchorablesToMove.Length; i++)
parentModel.InsertChildAt(insertToIndex + i, anchorablesToMove[i]);
}
else
parentModel.InsertChildAt(insertToIndex, floatingWindow.RootPanel);
}
else
{
var targetModelAsPositionableElement = targetModel as ILayoutPositionableElement;
var newOrientedPanel = new LayoutAnchorablePaneGroup()
{
Orientation = System.Windows.Controls.Orientation.Horizontal,
DockWidth = targetModelAsPositionableElement.DockWidth,
DockHeight = targetModelAsPositionableElement.DockHeight,
};
parentModel.InsertChildAt(insertToIndex, newOrientedPanel);
//the floating window must be added after the target modal as it could be raise a CollectGarbage call
newOrientedPanel.Children.Add(targetModel);
newOrientedPanel.Children.Insert(0, floatingWindow.RootPanel);
}
}
break;
#endregion
case DropTargetType.AnchorablePaneDockRight:
#region DropTargetType.AnchorablePaneDockRight
{
var parentModel = targetModel.Parent as ILayoutGroup;
var parentModelOrientable = targetModel.Parent as ILayoutOrientableGroup;
int insertToIndex = parentModel.IndexOfChild(targetModel);
if (parentModelOrientable.Orientation != System.Windows.Controls.Orientation.Horizontal &&
parentModel.ChildrenCount == 1)
parentModelOrientable.Orientation = System.Windows.Controls.Orientation.Horizontal;
if (parentModelOrientable.Orientation == System.Windows.Controls.Orientation.Horizontal)
{
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if (layoutAnchorablePaneGroup != null &&
(layoutAnchorablePaneGroup.Children.Count == 1 ||
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Horizontal))
{
var anchorablesToMove = layoutAnchorablePaneGroup.Children.ToArray();
for (int i = 0; i < anchorablesToMove.Length; i++)
parentModel.InsertChildAt(insertToIndex + 1 + i, anchorablesToMove[i]);
}
else
parentModel.InsertChildAt(insertToIndex + 1, floatingWindow.RootPanel);
}
else
{
var targetModelAsPositionableElement = targetModel as ILayoutPositionableElement;
var newOrientedPanel = new LayoutAnchorablePaneGroup()
{
Orientation = System.Windows.Controls.Orientation.Horizontal,
DockWidth = targetModelAsPositionableElement.DockWidth,
DockHeight = targetModelAsPositionableElement.DockHeight,
};
parentModel.InsertChildAt(insertToIndex, newOrientedPanel);
newOrientedPanel.Children.Add(targetModel);
newOrientedPanel.Children.Add(floatingWindow.RootPanel);
}
}
break;
#endregion
case DropTargetType.AnchorablePaneDockInside:
#region DropTargetType.AnchorablePaneDockInside
{
var paneModel = targetModel as LayoutAnchorablePane;
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
int i = _tabIndex == -1 ? 0 : _tabIndex;
foreach (var anchorableToImport in
layoutAnchorablePaneGroup.Descendents().OfType<LayoutAnchorable>().ToArray())
{
paneModel.Children.Insert(i, anchorableToImport);
i++;
}
}
break;
#endregion
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if( layoutAnchorablePaneGroup != null &&
( layoutAnchorablePaneGroup.Children.Count == 1 ||
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Horizontal ) )
{
var anchorablesToMove = layoutAnchorablePaneGroup.Children.ToArray();
for( int i = 0; i < anchorablesToMove.Length; i++ )
parentModel.InsertChildAt( insertToIndex + 1 + i, anchorablesToMove[ i ] );
}
else
parentModel.InsertChildAt( insertToIndex + 1, floatingWindow.RootPanel );
}
else
{
var targetModelAsPositionableElement = targetModel as ILayoutPositionableElement;
var newOrientedPanel = new LayoutAnchorablePaneGroup()
{
Orientation = System.Windows.Controls.Orientation.Horizontal,
DockWidth = targetModelAsPositionableElement.DockWidth,
DockHeight = targetModelAsPositionableElement.DockHeight,
};
parentModel.InsertChildAt( insertToIndex, newOrientedPanel );
newOrientedPanel.Children.Add( targetModel );
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
}
}
break;
#endregion
case DropTargetType.AnchorablePaneDockInside:
#region DropTargetType.AnchorablePaneDockInside
{
var paneModel = targetModel as LayoutAnchorablePane;
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
int i = _tabIndex == -1 ? 0 : _tabIndex;
foreach( var anchorableToImport in
layoutAnchorablePaneGroup.Descendents().OfType<LayoutAnchorable>().ToArray() )
{
paneModel.Children.Insert( i, anchorableToImport );
i++;
}
anchorableActive.IsActive = true;
}
break;
#endregion
base.Drop(floatingWindow);
}
}
public override System.Windows.Media.Geometry GetPreviewPath(OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel)
{
//var anchorablePaneDropTarget = target as AnchorablePaneDropTarget;
var anchorableFloatingWindowModel = floatingWindowModel as LayoutAnchorableFloatingWindow;
var layoutAnchorablePane = anchorableFloatingWindowModel.RootPanel as ILayoutPositionableElement;
var layoutAnchorablePaneWithActualSize = anchorableFloatingWindowModel.RootPanel as ILayoutPositionableElementWithActualSize;
anchorableActive.IsActive = true;
base.Drop( floatingWindow );
}
switch (Type)
public override System.Windows.Media.Geometry GetPreviewPath( OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel )
{
//var anchorablePaneDropTarget = target as AnchorablePaneDropTarget;
var anchorableFloatingWindowModel = floatingWindowModel as LayoutAnchorableFloatingWindow;
var layoutAnchorablePane = anchorableFloatingWindowModel.RootPanel as ILayoutPositionableElement;
var layoutAnchorablePaneWithActualSize = anchorableFloatingWindowModel.RootPanel as ILayoutPositionableElementWithActualSize;
switch( Type )
{
case DropTargetType.AnchorablePaneDockBottom:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
targetScreenRect.Offset( 0.0, targetScreenRect.Height / 2.0 );
targetScreenRect.Height /= 2.0;
return new RectangleGeometry( targetScreenRect );
}
case DropTargetType.AnchorablePaneDockTop:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
targetScreenRect.Height /= 2.0;
return new RectangleGeometry( targetScreenRect );
}
case DropTargetType.AnchorablePaneDockLeft:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
targetScreenRect.Width /= 2.0;
return new RectangleGeometry( targetScreenRect );
}
case DropTargetType.AnchorablePaneDockRight:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
targetScreenRect.Offset( targetScreenRect.Width / 2.0, 0.0 );
targetScreenRect.Width /= 2.0;
return new RectangleGeometry( targetScreenRect );
}
case DropTargetType.AnchorablePaneDockInside:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
if( _tabIndex == -1 )
{
return new RectangleGeometry( targetScreenRect );
}
else
{
case DropTargetType.AnchorablePaneDockBottom:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
targetScreenRect.Offset(0.0, targetScreenRect.Height / 2.0);
targetScreenRect.Height /= 2.0;
return new RectangleGeometry(targetScreenRect);
}
case DropTargetType.AnchorablePaneDockTop:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
targetScreenRect.Height /= 2.0;
return new RectangleGeometry(targetScreenRect);
}
case DropTargetType.AnchorablePaneDockLeft:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
targetScreenRect.Width /= 2.0;
return new RectangleGeometry(targetScreenRect);
}
case DropTargetType.AnchorablePaneDockRight:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
targetScreenRect.Offset(targetScreenRect.Width / 2.0, 0.0);
targetScreenRect.Width /= 2.0;
return new RectangleGeometry(targetScreenRect);
}
case DropTargetType.AnchorablePaneDockInside:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
if (_tabIndex == -1)
{
return new RectangleGeometry(targetScreenRect);
}
else
{
var translatedDetectionRect = new Rect(DetectionRects[0].TopLeft, DetectionRects[0].BottomRight);
translatedDetectionRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
var pathFigure = new PathFigure();
pathFigure.StartPoint = targetScreenRect.TopLeft;
pathFigure.Segments.Add(new LineSegment() { Point = new Point(targetScreenRect.Left, translatedDetectionRect.Top) });
pathFigure.Segments.Add(new LineSegment() { Point = translatedDetectionRect.TopLeft });
pathFigure.Segments.Add(new LineSegment() { Point = translatedDetectionRect.BottomLeft });
pathFigure.Segments.Add(new LineSegment() { Point = translatedDetectionRect.BottomRight });
pathFigure.Segments.Add(new LineSegment() { Point = translatedDetectionRect.TopRight });
pathFigure.Segments.Add(new LineSegment() { Point = new Point(targetScreenRect.Right, translatedDetectionRect.Top) });
pathFigure.Segments.Add(new LineSegment() { Point = targetScreenRect.TopRight });
pathFigure.IsClosed = true;
pathFigure.IsFilled = true;
pathFigure.Freeze();
return new PathGeometry(new PathFigure[] { pathFigure });
}
}
var translatedDetectionRect = new Rect( DetectionRects[ 0 ].TopLeft, DetectionRects[ 0 ].BottomRight );
translatedDetectionRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
var pathFigure = new PathFigure();
pathFigure.StartPoint = targetScreenRect.TopLeft;
pathFigure.Segments.Add( new LineSegment() { Point = new Point( targetScreenRect.Left, translatedDetectionRect.Top ) } );
pathFigure.Segments.Add( new LineSegment() { Point = translatedDetectionRect.TopLeft } );
pathFigure.Segments.Add( new LineSegment() { Point = translatedDetectionRect.BottomLeft } );
pathFigure.Segments.Add( new LineSegment() { Point = translatedDetectionRect.BottomRight } );
pathFigure.Segments.Add( new LineSegment() { Point = translatedDetectionRect.TopRight } );
pathFigure.Segments.Add( new LineSegment() { Point = new Point( targetScreenRect.Right, translatedDetectionRect.Top ) } );
pathFigure.Segments.Add( new LineSegment() { Point = targetScreenRect.TopRight } );
pathFigure.IsClosed = true;
pathFigure.IsFilled = true;
pathFigure.Freeze();
return new PathGeometry( new PathFigure[] { pathFigure } );
}
}
}
return null;
}
return null;
}
#endregion
}
}

143
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneTabPanel.cs

@ -15,93 +15,98 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows;
using Xceed.Wpf.AvalonDock.Layout;
namespace Xceed.Wpf.AvalonDock.Controls
{
public class AnchorablePaneTabPanel : Panel
public class AnchorablePaneTabPanel : Panel
{
#region Constructors
public AnchorablePaneTabPanel()
{
this.FlowDirection = System.Windows.FlowDirection.LeftToRight;
}
#endregion
#region Overrides
protected override Size MeasureOverride( Size availableSize )
{
public AnchorablePaneTabPanel()
double totWidth = 0;
double maxHeight = 0;
var visibleChildren = Children.Cast<UIElement>().Where( ch => ch.Visibility != System.Windows.Visibility.Collapsed );
foreach( FrameworkElement child in visibleChildren )
{
child.Measure( new Size( double.PositiveInfinity, availableSize.Height ) );
totWidth += child.DesiredSize.Width;
maxHeight = Math.Max( maxHeight, child.DesiredSize.Height );
}
if( totWidth > availableSize.Width )
{
double childFinalDesideredWidth = availableSize.Width / visibleChildren.Count();
foreach( FrameworkElement child in visibleChildren )
{
FlowDirection = System.Windows.FlowDirection.LeftToRight;
child.Measure( new Size( childFinalDesideredWidth, availableSize.Height ) );
}
}
return new Size( Math.Min( availableSize.Width, totWidth ), maxHeight );
}
protected override Size ArrangeOverride( Size finalSize )
{
var visibleChildren = Children.Cast<UIElement>().Where( ch => ch.Visibility != System.Windows.Visibility.Collapsed );
protected override Size MeasureOverride(Size availableSize)
double finalWidth = finalSize.Width;
double desideredWidth = visibleChildren.Sum( ch => ch.DesiredSize.Width );
double offsetX = 0.0;
if( finalWidth > desideredWidth )
{
foreach( FrameworkElement child in visibleChildren )
{
double totWidth = 0;
double maxHeight = 0;
var visibleChildren = Children.Cast<UIElement>().Where(ch => ch.Visibility != System.Windows.Visibility.Collapsed);
foreach (FrameworkElement child in visibleChildren)
{
child.Measure(new Size(double.PositiveInfinity, availableSize.Height));
totWidth += child.DesiredSize.Width;
maxHeight = Math.Max(maxHeight, child.DesiredSize.Height);
}
if (totWidth > availableSize.Width)
{
double childFinalDesideredWidth = availableSize.Width / visibleChildren.Count();
foreach (FrameworkElement child in visibleChildren)
{
child.Measure(new Size(childFinalDesideredWidth, availableSize.Height));
}
}
return new Size(Math.Min(availableSize.Width, totWidth), maxHeight);
}
double childFinalWidth = child.DesiredSize.Width;
child.Arrange( new Rect( offsetX, 0, childFinalWidth, finalSize.Height ) );
protected override Size ArrangeOverride(Size finalSize)
offsetX += childFinalWidth;
}
}
else
{
double childFinalWidth = finalWidth / visibleChildren.Count();
foreach( FrameworkElement child in visibleChildren )
{
var visibleChildren = Children.Cast<UIElement>().Where(ch => ch.Visibility != System.Windows.Visibility.Collapsed);
double finalWidth = finalSize.Width;
double desideredWidth = visibleChildren.Sum(ch => ch.DesiredSize.Width);
double offsetX = 0.0;
if (finalWidth > desideredWidth)
{
foreach (FrameworkElement child in visibleChildren)
{
double childFinalWidth = child.DesiredSize.Width ;
child.Arrange(new Rect(offsetX, 0, childFinalWidth, finalSize.Height));
offsetX += childFinalWidth;
}
}
else
{
double childFinalWidth = finalWidth / visibleChildren.Count();
foreach (FrameworkElement child in visibleChildren)
{
child.Arrange(new Rect(offsetX, 0, childFinalWidth, finalSize.Height));
offsetX += childFinalWidth;
}
}
return finalSize;
child.Arrange( new Rect( offsetX, 0, childFinalWidth, finalSize.Height ) );
offsetX += childFinalWidth;
}
}
protected override void OnMouseLeave(System.Windows.Input.MouseEventArgs e)
{
if (e.LeftButton == System.Windows.Input.MouseButtonState.Pressed &&
LayoutAnchorableTabItem.IsDraggingItem())
{
var contentModel = LayoutAnchorableTabItem.GetDraggingItem().Model as LayoutAnchorable;
var manager = contentModel.Root.Manager;
LayoutAnchorableTabItem.ResetDraggingItem();
return finalSize;
}
manager.StartDraggingFloatingWindowForContent(contentModel);
}
protected override void OnMouseLeave( System.Windows.Input.MouseEventArgs e )
{
if( e.LeftButton == System.Windows.Input.MouseButtonState.Pressed &&
LayoutAnchorableTabItem.IsDraggingItem() )
{
var contentModel = LayoutAnchorableTabItem.GetDraggingItem().Model as LayoutAnchorable;
var manager = contentModel.Root.Manager;
LayoutAnchorableTabItem.ResetDraggingItem();
base.OnMouseLeave(e);
}
manager.StartDraggingFloatingWindowForContent( contentModel );
}
base.OnMouseLeave( e );
}
#endregion
}
}

281
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AnchorablePaneTitle.cs

@ -14,10 +14,7 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows;
using System.Windows.Input;
@ -25,165 +22,191 @@ using Xceed.Wpf.AvalonDock.Layout;
namespace Xceed.Wpf.AvalonDock.Controls
{
public class AnchorablePaneTitle : Control
{
#region Members
public class AnchorablePaneTitle : Control
private bool _isMouseDown = false;
#endregion
#region Constructors
static AnchorablePaneTitle()
{
static AnchorablePaneTitle()
{
IsHitTestVisibleProperty.OverrideMetadata(typeof(AnchorablePaneTitle), new FrameworkPropertyMetadata(true));
FocusableProperty.OverrideMetadata(typeof(AnchorablePaneTitle), new FrameworkPropertyMetadata(false));
DefaultStyleKeyProperty.OverrideMetadata(typeof(AnchorablePaneTitle), new FrameworkPropertyMetadata(typeof(AnchorablePaneTitle)));
}
IsHitTestVisibleProperty.OverrideMetadata( typeof( AnchorablePaneTitle ), new FrameworkPropertyMetadata( true ) );
FocusableProperty.OverrideMetadata( typeof( AnchorablePaneTitle ), new FrameworkPropertyMetadata( false ) );
DefaultStyleKeyProperty.OverrideMetadata( typeof( AnchorablePaneTitle ), new FrameworkPropertyMetadata( typeof( AnchorablePaneTitle ) ) );
}
public AnchorablePaneTitle()
{
}
public AnchorablePaneTitle()
{
#endregion
}
#region Properties
#region Model
#region Model
/// <summary>
/// Model Dependency Property
/// </summary>
public static readonly DependencyProperty ModelProperty =
DependencyProperty.Register("Model", typeof(LayoutAnchorable), typeof(AnchorablePaneTitle),
new FrameworkPropertyMetadata((LayoutAnchorable)null, new PropertyChangedCallback(_OnModelChanged)));
/// <summary>
/// Model Dependency Property
/// </summary>
public static readonly DependencyProperty ModelProperty = DependencyProperty.Register( "Model", typeof( LayoutAnchorable ), typeof( AnchorablePaneTitle ),
new FrameworkPropertyMetadata( ( LayoutAnchorable )null, new PropertyChangedCallback( _OnModelChanged ) ) );
/// <summary>
/// Gets or sets the Model property. This dependency property
/// indicates model attached to this view.
/// </summary>
public LayoutAnchorable Model
{
get { return (LayoutAnchorable)GetValue(ModelProperty); }
set { SetValue(ModelProperty, value); }
}
/// <summary>
/// Gets or sets the Model property. This dependency property
/// indicates model attached to this view.
/// </summary>
public LayoutAnchorable Model
{
get
{
return ( LayoutAnchorable )GetValue( ModelProperty );
}
set
{
SetValue( ModelProperty, value );
}
}
static void _OnModelChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
((AnchorablePaneTitle)sender).OnModelChanged(e);
}
private static void _OnModelChanged( DependencyObject sender, DependencyPropertyChangedEventArgs e )
{
( ( AnchorablePaneTitle )sender ).OnModelChanged( e );
}
/// <summary>
/// Provides derived classes an opportunity to handle changes to the Model property.
/// </summary>
protected virtual void OnModelChanged(DependencyPropertyChangedEventArgs e)
{
if (Model != null)
SetLayoutItem(Model.Root.Manager.GetLayoutItemFromModel(Model));
else
SetLayoutItem(null);
}
/// <summary>
/// Provides derived classes an opportunity to handle changes to the Model property.
/// </summary>
protected virtual void OnModelChanged( DependencyPropertyChangedEventArgs e )
{
if( Model != null )
{
this.SetLayoutItem( Model.Root.Manager.GetLayoutItemFromModel( Model ) );
}
else
{
this.SetLayoutItem( null );
}
}
#endregion
#endregion
#region LayoutItem
#region LayoutItem
/// <summary>
/// LayoutItem Read-Only Dependency Property
/// </summary>
private static readonly DependencyPropertyKey LayoutItemPropertyKey = DependencyProperty.RegisterReadOnly( "LayoutItem", typeof( LayoutItem ), typeof( AnchorablePaneTitle ),
new FrameworkPropertyMetadata( ( LayoutItem )null ) );
/// <summary>
/// LayoutItem Read-Only Dependency Property
/// </summary>
private static readonly DependencyPropertyKey LayoutItemPropertyKey
= DependencyProperty.RegisterReadOnly("LayoutItem", typeof(LayoutItem), typeof(AnchorablePaneTitle),
new FrameworkPropertyMetadata((LayoutItem)null));
public static readonly DependencyProperty LayoutItemProperty = LayoutItemPropertyKey.DependencyProperty;
public static readonly DependencyProperty LayoutItemProperty
= LayoutItemPropertyKey.DependencyProperty;
/// <summary>
/// Gets the LayoutItem property. This dependency property
/// indicates the LayoutItem attached to this tag item.
/// </summary>
public LayoutItem LayoutItem
{
get
{
return ( LayoutItem )GetValue( LayoutItemProperty );
}
}
/// <summary>
/// Gets the LayoutItem property. This dependency property
/// indicates the LayoutItem attached to this tag item.
/// </summary>
public LayoutItem LayoutItem
{
get { return (LayoutItem)GetValue(LayoutItemProperty); }
}
/// <summary>
/// Provides a secure method for setting the LayoutItem property.
/// This dependency property indicates the LayoutItem attached to this tag item.
/// </summary>
/// <param name="value">The new value for the property.</param>
protected void SetLayoutItem( LayoutItem value )
{
this.SetValue( LayoutItemPropertyKey, value );
}
/// <summary>
/// Provides a secure method for setting the LayoutItem property.
/// This dependency property indicates the LayoutItem attached to this tag item.
/// </summary>
/// <param name="value">The new value for the property.</param>
protected void SetLayoutItem(LayoutItem value)
{
SetValue(LayoutItemPropertyKey, value);
}
#endregion
#endregion
#endregion
#region Overrides
private void OnHide()
{
Model.Hide();
}
protected override void OnMouseMove( System.Windows.Input.MouseEventArgs e )
{
if( e.LeftButton != MouseButtonState.Pressed )
{
_isMouseDown = false;
}
private void OnToggleAutoHide()
{
Model.ToggleAutoHide();
}
base.OnMouseMove( e );
}
protected override void OnMouseMove(System.Windows.Input.MouseEventArgs e)
protected override void OnMouseLeave( System.Windows.Input.MouseEventArgs e )
{
base.OnMouseLeave( e );
if( _isMouseDown && e.LeftButton == MouseButtonState.Pressed )
{
var pane = this.FindVisualAncestor<LayoutAnchorablePaneControl>();
if( pane != null )
{
if (e.LeftButton != MouseButtonState.Pressed)
{
_isMouseDown = false;
}
var paneModel = pane.Model as LayoutAnchorablePane;
var manager = paneModel.Root.Manager;
base.OnMouseMove(e);
manager.StartDraggingFloatingWindowForPane( paneModel );
}
}
protected override void OnMouseLeave(System.Windows.Input.MouseEventArgs e)
{
base.OnMouseLeave(e);
if (_isMouseDown && e.LeftButton == MouseButtonState.Pressed)
{
var pane = this.FindVisualAncestor<LayoutAnchorablePaneControl>();
if (pane != null)
{
var paneModel = pane.Model as LayoutAnchorablePane;
var manager = paneModel.Root.Manager;
_isMouseDown = false;
}
manager.StartDraggingFloatingWindowForPane(paneModel);
}
}
protected override void OnMouseLeftButtonDown( System.Windows.Input.MouseButtonEventArgs e )
{
base.OnMouseLeftButtonDown( e );
_isMouseDown = false;
if( !e.Handled )
{
bool attachFloatingWindow = false;
var parentFloatingWindow = Model.FindParent<LayoutAnchorableFloatingWindow>();
if( parentFloatingWindow != null )
{
attachFloatingWindow = parentFloatingWindow.Descendents().OfType<LayoutAnchorablePane>().Count() == 1;
}
bool _isMouseDown = false;
protected override void OnMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs e)
if( attachFloatingWindow )
{
base.OnMouseLeftButtonDown(e);
if (!e.Handled)
{
bool attachFloatingWindow = false;
var parentFloatingWindow = Model.FindParent<LayoutAnchorableFloatingWindow>();
if (parentFloatingWindow != null)
{
attachFloatingWindow = parentFloatingWindow.Descendents().OfType<LayoutAnchorablePane>().Count() == 1;
}
if (attachFloatingWindow)
{
//the pane is hosted inside a floating window that contains only an anchorable pane so drag the floating window itself
var floatingWndControl = Model.Root.Manager.FloatingWindows.Single(fwc => fwc.Model == parentFloatingWindow);
floatingWndControl.AttachDrag(false);
}
else
_isMouseDown = true;//normal drag
}
//the pane is hosted inside a floating window that contains only an anchorable pane so drag the floating window itself
var floatingWndControl = Model.Root.Manager.FloatingWindows.Single( fwc => fwc.Model == parentFloatingWindow );
floatingWndControl.AttachDrag( false );
}
else
_isMouseDown = true;//normal drag
}
}
protected override void OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs e)
{
_isMouseDown = false;
base.OnMouseLeftButtonUp(e);
protected override void OnMouseLeftButtonUp( System.Windows.Input.MouseButtonEventArgs e )
{
_isMouseDown = false;
base.OnMouseLeftButtonUp( e );
if (Model != null)
Model.IsActive = true;//FocusElementManager.SetFocusOnLastElement(Model);
}
if( Model != null )
Model.IsActive = true;//FocusElementManager.SetFocusOnLastElement(Model);
}
#endregion
#region Private Methods
private void OnHide()
{
this.Model.Hide();
}
private void OnToggleAutoHide()
{
this.Model.ToggleAutoHide();
}
#endregion
}
}

136
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/AutoHideWindowManager.cs

@ -15,76 +15,82 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Threading;
using Xceed.Wpf.AvalonDock.Layout;
namespace Xceed.Wpf.AvalonDock.Controls
{
class AutoHideWindowManager
internal class AutoHideWindowManager
{
#region Members
private DockingManager _manager;
private WeakReference _currentAutohiddenAnchor = null;
private DispatcherTimer _closeTimer = null;
#endregion
#region Constructors
internal AutoHideWindowManager( DockingManager manager )
{
_manager = manager;
this.SetupCloseTimer();
}
#endregion
#region Private Methods
public void ShowAutoHideWindow( LayoutAnchorControl anchor )
{
if( _currentAutohiddenAnchor.GetValueOrDefault<LayoutAnchorControl>() != anchor )
{
StopCloseTimer();
_currentAutohiddenAnchor = new WeakReference( anchor );
_manager.AutoHideWindow.Show( anchor );
StartCloseTimer();
}
}
public void HideAutoWindow( LayoutAnchorControl anchor = null )
{
if( anchor == null ||
anchor == _currentAutohiddenAnchor.GetValueOrDefault<LayoutAnchorControl>() )
{
StopCloseTimer();
}
else
System.Diagnostics.Debug.Assert( false );
}
private void SetupCloseTimer()
{
DockingManager _manager;
internal AutoHideWindowManager(DockingManager manager)
{
_manager = manager;
SetupCloseTimer();
}
WeakReference _currentAutohiddenAnchor = null;
public void ShowAutoHideWindow(LayoutAnchorControl anchor)
{
if(_currentAutohiddenAnchor.GetValueOrDefault<LayoutAnchorControl>() != anchor)
{
StopCloseTimer();
_currentAutohiddenAnchor = new WeakReference(anchor);
_manager.AutoHideWindow.Show(anchor);
StartCloseTimer();
}
}
public void HideAutoWindow(LayoutAnchorControl anchor = null)
{
if (anchor == null ||
anchor == _currentAutohiddenAnchor.GetValueOrDefault<LayoutAnchorControl>())
{
StopCloseTimer();
}
else
System.Diagnostics.Debug.Assert(false);
}
DispatcherTimer _closeTimer = null;
void SetupCloseTimer()
{
_closeTimer = new DispatcherTimer(DispatcherPriority.Background);
_closeTimer.Interval = TimeSpan.FromMilliseconds(1500);
_closeTimer.Tick += (s, e) =>
{
if (_manager.AutoHideWindow.IsWin32MouseOver ||
((LayoutAnchorable)_manager.AutoHideWindow.Model).IsActive ||
_manager.AutoHideWindow.IsResizing)
return;
StopCloseTimer();
};
}
void StartCloseTimer()
{
_closeTimer.Start();
}
void StopCloseTimer()
{
_closeTimer.Stop();
_manager.AutoHideWindow.Hide();
_currentAutohiddenAnchor = null;
}
_closeTimer = new DispatcherTimer( DispatcherPriority.Background );
_closeTimer.Interval = TimeSpan.FromMilliseconds( 1500 );
_closeTimer.Tick += ( s, e ) =>
{
if( _manager.AutoHideWindow.IsWin32MouseOver ||
( ( LayoutAnchorable )_manager.AutoHideWindow.Model ).IsActive ||
_manager.AutoHideWindow.IsResizing )
return;
StopCloseTimer();
};
}
private void StartCloseTimer()
{
_closeTimer.Start();
}
private void StopCloseTimer()
{
_closeTimer.Stop();
_manager.AutoHideWindow.Hide();
_currentAutohiddenAnchor = null;
}
#endregion
}
}

49
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/BindingHelper.cs

@ -15,9 +15,6 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.ComponentModel;
using System.Windows.Data;
@ -25,31 +22,35 @@ using System.Windows.Threading;
namespace Xceed.Wpf.AvalonDock.Controls
{
class BindingHelper
internal class BindingHelper
{
#region Methods
public static void RebindInactiveBindings( DependencyObject dependencyObject )
{
public static void RebindInactiveBindings(DependencyObject dependencyObject)
foreach( PropertyDescriptor property in TypeDescriptor.GetProperties( dependencyObject.GetType() ) )
{
var dpd = DependencyPropertyDescriptor.FromProperty( property );
if( dpd != null )
{
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(dependencyObject.GetType()))
BindingExpressionBase binding = BindingOperations.GetBindingExpressionBase( dependencyObject, dpd.DependencyProperty );
if( binding != null )
{
//if (property.Name == "DataContext" || binding.HasError || binding.Status != BindingStatus.Active)
{
var dpd = DependencyPropertyDescriptor.FromProperty(property);
if (dpd != null)
{
BindingExpressionBase binding = BindingOperations.GetBindingExpressionBase(dependencyObject, dpd.DependencyProperty);
if (binding != null)
{
//if (property.Name == "DataContext" || binding.HasError || binding.Status != BindingStatus.Active)
{
// Ensure that no pending calls are in the dispatcher queue
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.SystemIdle, (Action)delegate
{
// Remove and add the binding to re-trigger the binding error
dependencyObject.ClearValue(dpd.DependencyProperty);
BindingOperations.SetBinding(dependencyObject, dpd.DependencyProperty, binding.ParentBindingBase);
});
}
}
}
// Ensure that no pending calls are in the dispatcher queue
Dispatcher.CurrentDispatcher.BeginInvoke( DispatcherPriority.SystemIdle, ( Action )delegate
{
// Remove and add the binding to re-trigger the binding error
dependencyObject.ClearValue( dpd.DependencyProperty );
BindingOperations.SetBinding( dependencyObject, dpd.DependencyProperty, binding.ParentBindingBase );
} );
}
}
}
}
}
#endregion
}
}

44
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/ContextMenuEx.cs

@ -14,39 +14,39 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows;
namespace Xceed.Wpf.AvalonDock.Controls
{
public class ContextMenuEx : ContextMenu
{
static ContextMenuEx()
{
}
public class ContextMenuEx : ContextMenu
{
#region Constructors
public ContextMenuEx()
{
static ContextMenuEx()
{
}
}
public ContextMenuEx()
{
}
protected override System.Windows.DependencyObject GetContainerForItemOverride()
{
return new MenuItemEx();
}
#endregion
protected override void OnOpened(System.Windows.RoutedEventArgs e)
{
BindingOperations.GetBindingExpression(this, ItemsSourceProperty).UpdateTarget();
#region Overrides
base.OnOpened(e);
}
protected override System.Windows.DependencyObject GetContainerForItemOverride()
{
return new MenuItemEx();
}
protected override void OnOpened( System.Windows.RoutedEventArgs e )
{
BindingOperations.GetBindingExpression( this, ItemsSourceProperty ).UpdateTarget();
base.OnOpened( e );
}
#endregion
}
}

427
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DockingManagerDropTarget.cs

@ -15,234 +15,245 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
using Xceed.Wpf.AvalonDock.Layout;
namespace Xceed.Wpf.AvalonDock.Controls
{
internal class DockingManagerDropTarget : DropTarget<DockingManager>
internal class DockingManagerDropTarget : DropTarget<DockingManager>
{
#region Members
private DockingManager _manager;
#endregion
#region Constructors
internal DockingManagerDropTarget( DockingManager manager, Rect detectionRect, DropTargetType type )
: base( manager, detectionRect, type )
{
internal DockingManagerDropTarget(DockingManager manager, Rect detectionRect, DropTargetType type)
: base(manager, detectionRect, type)
{
_manager = manager;
}
_manager = manager;
}
#endregion
DockingManager _manager;
#region Overrides
protected override void Drop(LayoutAnchorableFloatingWindow floatingWindow)
{
switch (Type)
protected override void Drop( LayoutAnchorableFloatingWindow floatingWindow )
{
switch( Type )
{
case DropTargetType.DockingManagerDockLeft:
#region DropTargetType.DockingManagerDockLeft
{
if( _manager.Layout.RootPanel.Orientation != System.Windows.Controls.Orientation.Horizontal &&
_manager.Layout.RootPanel.Children.Count == 1 )
_manager.Layout.RootPanel.Orientation = System.Windows.Controls.Orientation.Horizontal;
if( _manager.Layout.RootPanel.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
case DropTargetType.DockingManagerDockLeft:
#region DropTargetType.DockingManagerDockLeft
{
if (_manager.Layout.RootPanel.Orientation != System.Windows.Controls.Orientation.Horizontal &&
_manager.Layout.RootPanel.Children.Count == 1)
_manager.Layout.RootPanel.Orientation = System.Windows.Controls.Orientation.Horizontal;
if (_manager.Layout.RootPanel.Orientation == System.Windows.Controls.Orientation.Horizontal)
{
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if (layoutAnchorablePaneGroup != null &&
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Horizontal)
{
var childrenToTransfer = layoutAnchorablePaneGroup.Children.ToArray();
for (int i = 0; i < childrenToTransfer.Length; i++)
_manager.Layout.RootPanel.Children.Insert(i, childrenToTransfer[i]);
}
else
_manager.Layout.RootPanel.Children.Insert(0, floatingWindow.RootPanel);
}
else
{
var newOrientedPanel = new LayoutPanel()
{
Orientation = System.Windows.Controls.Orientation.Horizontal
};
newOrientedPanel.Children.Add(floatingWindow.RootPanel);
newOrientedPanel.Children.Add(_manager.Layout.RootPanel);
_manager.Layout.RootPanel = newOrientedPanel;
}
}
break;
#endregion
case DropTargetType.DockingManagerDockRight:
#region DropTargetType.DockingManagerDockRight
{
if (_manager.Layout.RootPanel.Orientation != System.Windows.Controls.Orientation.Horizontal &&
_manager.Layout.RootPanel.Children.Count == 1)
_manager.Layout.RootPanel.Orientation = System.Windows.Controls.Orientation.Horizontal;
if (_manager.Layout.RootPanel.Orientation == System.Windows.Controls.Orientation.Horizontal)
{
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if (layoutAnchorablePaneGroup != null &&
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Horizontal)
{
var childrenToTransfer = layoutAnchorablePaneGroup.Children.ToArray();
for (int i = 0; i < childrenToTransfer.Length; i++)
_manager.Layout.RootPanel.Children.Add(childrenToTransfer[i]);
}
else
_manager.Layout.RootPanel.Children.Add(floatingWindow.RootPanel);
}
else
{
var newOrientedPanel = new LayoutPanel()
{
Orientation = System.Windows.Controls.Orientation.Horizontal
};
newOrientedPanel.Children.Add(_manager.Layout.RootPanel);
newOrientedPanel.Children.Add(floatingWindow.RootPanel);
_manager.Layout.RootPanel = newOrientedPanel;
}
}
break;
#endregion
case DropTargetType.DockingManagerDockTop:
#region DropTargetType.DockingManagerDockTop
{
if (_manager.Layout.RootPanel.Orientation != System.Windows.Controls.Orientation.Vertical &&
_manager.Layout.RootPanel.Children.Count == 1)
_manager.Layout.RootPanel.Orientation = System.Windows.Controls.Orientation.Vertical;
if (_manager.Layout.RootPanel.Orientation == System.Windows.Controls.Orientation.Vertical)
{
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if (layoutAnchorablePaneGroup != null &&
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Vertical)
{
var childrenToTransfer = layoutAnchorablePaneGroup.Children.ToArray();
for (int i = 0; i < childrenToTransfer.Length; i++)
_manager.Layout.RootPanel.Children.Insert(i, childrenToTransfer[i]);
}
else
_manager.Layout.RootPanel.Children.Insert(0, floatingWindow.RootPanel);
}
else
{
var newOrientedPanel = new LayoutPanel()
{
Orientation = System.Windows.Controls.Orientation.Vertical
};
newOrientedPanel.Children.Add(floatingWindow.RootPanel);
newOrientedPanel.Children.Add(_manager.Layout.RootPanel);
_manager.Layout.RootPanel = newOrientedPanel;
}
}
break;
#endregion
case DropTargetType.DockingManagerDockBottom:
#region DropTargetType.DockingManagerDockBottom
{
if (_manager.Layout.RootPanel.Orientation != System.Windows.Controls.Orientation.Vertical &&
_manager.Layout.RootPanel.Children.Count == 1)
_manager.Layout.RootPanel.Orientation = System.Windows.Controls.Orientation.Vertical;
if (_manager.Layout.RootPanel.Orientation == System.Windows.Controls.Orientation.Vertical)
{
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if (layoutAnchorablePaneGroup != null &&
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Vertical)
{
var childrenToTransfer = layoutAnchorablePaneGroup.Children.ToArray();
for (int i = 0; i < childrenToTransfer.Length; i++)
_manager.Layout.RootPanel.Children.Add(childrenToTransfer[i]);
}
else
_manager.Layout.RootPanel.Children.Add(floatingWindow.RootPanel);
}
else
{
var newOrientedPanel = new LayoutPanel()
{
Orientation = System.Windows.Controls.Orientation.Vertical
};
newOrientedPanel.Children.Add(_manager.Layout.RootPanel);
newOrientedPanel.Children.Add(floatingWindow.RootPanel);
_manager.Layout.RootPanel = newOrientedPanel;
}
}
break;
#endregion
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if( layoutAnchorablePaneGroup != null &&
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
var childrenToTransfer = layoutAnchorablePaneGroup.Children.ToArray();
for( int i = 0; i < childrenToTransfer.Length; i++ )
_manager.Layout.RootPanel.Children.Insert( i, childrenToTransfer[ i ] );
}
else
_manager.Layout.RootPanel.Children.Insert( 0, floatingWindow.RootPanel );
}
else
{
var newOrientedPanel = new LayoutPanel()
{
Orientation = System.Windows.Controls.Orientation.Horizontal
};
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
newOrientedPanel.Children.Add( _manager.Layout.RootPanel );
base.Drop(floatingWindow);
}
_manager.Layout.RootPanel = newOrientedPanel;
}
}
break;
#endregion
case DropTargetType.DockingManagerDockRight:
#region DropTargetType.DockingManagerDockRight
{
if( _manager.Layout.RootPanel.Orientation != System.Windows.Controls.Orientation.Horizontal &&
_manager.Layout.RootPanel.Children.Count == 1 )
_manager.Layout.RootPanel.Orientation = System.Windows.Controls.Orientation.Horizontal;
if( _manager.Layout.RootPanel.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if( layoutAnchorablePaneGroup != null &&
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
var childrenToTransfer = layoutAnchorablePaneGroup.Children.ToArray();
for( int i = 0; i < childrenToTransfer.Length; i++ )
_manager.Layout.RootPanel.Children.Add( childrenToTransfer[ i ] );
}
else
_manager.Layout.RootPanel.Children.Add( floatingWindow.RootPanel );
}
else
{
var newOrientedPanel = new LayoutPanel()
{
Orientation = System.Windows.Controls.Orientation.Horizontal
};
public override System.Windows.Media.Geometry GetPreviewPath(OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel)
{
var anchorableFloatingWindowModel = floatingWindowModel as LayoutAnchorableFloatingWindow;
var layoutAnchorablePane = anchorableFloatingWindowModel.RootPanel as ILayoutPositionableElement;
var layoutAnchorablePaneWithActualSize = anchorableFloatingWindowModel.RootPanel as ILayoutPositionableElementWithActualSize;
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
newOrientedPanel.Children.Insert( 0, _manager.Layout.RootPanel );
var targetScreenRect = TargetElement.GetScreenArea();
switch (Type)
_manager.Layout.RootPanel = newOrientedPanel;
}
}
break;
#endregion
case DropTargetType.DockingManagerDockTop:
#region DropTargetType.DockingManagerDockTop
{
if( _manager.Layout.RootPanel.Orientation != System.Windows.Controls.Orientation.Vertical &&
_manager.Layout.RootPanel.Children.Count == 1 )
_manager.Layout.RootPanel.Orientation = System.Windows.Controls.Orientation.Vertical;
if( _manager.Layout.RootPanel.Orientation == System.Windows.Controls.Orientation.Vertical )
{
case DropTargetType.DockingManagerDockLeft:
{
var desideredWidth = layoutAnchorablePane.DockWidth.IsAbsolute ? layoutAnchorablePane.DockWidth.Value : layoutAnchorablePaneWithActualSize.ActualWidth;
var previewBoxRect = new Rect(
targetScreenRect.Left - overlayWindow.Left,
targetScreenRect.Top - overlayWindow.Top,
Math.Min(desideredWidth, targetScreenRect.Width / 2.0),
targetScreenRect.Height);
return new RectangleGeometry(previewBoxRect);
}
case DropTargetType.DockingManagerDockTop:
{
var desideredHeight = layoutAnchorablePane.DockHeight.IsAbsolute ? layoutAnchorablePane.DockHeight.Value : layoutAnchorablePaneWithActualSize.ActualHeight;
var previewBoxRect = new Rect(
targetScreenRect.Left - overlayWindow.Left,
targetScreenRect.Top - overlayWindow.Top,
targetScreenRect.Width,
Math.Min(desideredHeight, targetScreenRect.Height / 2.0));
return new RectangleGeometry(previewBoxRect);
}
case DropTargetType.DockingManagerDockRight:
{
var desideredWidth = layoutAnchorablePane.DockWidth.IsAbsolute ? layoutAnchorablePane.DockWidth.Value : layoutAnchorablePaneWithActualSize.ActualWidth;
var previewBoxRect = new Rect(
targetScreenRect.Right - overlayWindow.Left - Math.Min(desideredWidth, targetScreenRect.Width / 2.0),
targetScreenRect.Top - overlayWindow.Top,
Math.Min(desideredWidth, targetScreenRect.Width / 2.0),
targetScreenRect.Height);
return new RectangleGeometry(previewBoxRect);
}
case DropTargetType.DockingManagerDockBottom:
{
var desideredHeight = layoutAnchorablePane.DockHeight.IsAbsolute ? layoutAnchorablePane.DockHeight.Value : layoutAnchorablePaneWithActualSize.ActualHeight;
var previewBoxRect = new Rect(
targetScreenRect.Left - overlayWindow.Left,
targetScreenRect.Bottom - overlayWindow.Top - Math.Min(desideredHeight, targetScreenRect.Height / 2.0),
targetScreenRect.Width,
Math.Min(desideredHeight, targetScreenRect.Height / 2.0));
return new RectangleGeometry(previewBoxRect);
}
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if( layoutAnchorablePaneGroup != null &&
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Vertical )
{
var childrenToTransfer = layoutAnchorablePaneGroup.Children.ToArray();
for( int i = 0; i < childrenToTransfer.Length; i++ )
_manager.Layout.RootPanel.Children.Insert( i, childrenToTransfer[ i ] );
}
else
_manager.Layout.RootPanel.Children.Insert( 0, floatingWindow.RootPanel );
}
else
{
var newOrientedPanel = new LayoutPanel()
{
Orientation = System.Windows.Controls.Orientation.Vertical
};
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
newOrientedPanel.Children.Add( _manager.Layout.RootPanel );
throw new InvalidOperationException();
}
_manager.Layout.RootPanel = newOrientedPanel;
}
}
break;
#endregion
case DropTargetType.DockingManagerDockBottom:
#region DropTargetType.DockingManagerDockBottom
{
if( _manager.Layout.RootPanel.Orientation != System.Windows.Controls.Orientation.Vertical &&
_manager.Layout.RootPanel.Children.Count == 1 )
_manager.Layout.RootPanel.Orientation = System.Windows.Controls.Orientation.Vertical;
if( _manager.Layout.RootPanel.Orientation == System.Windows.Controls.Orientation.Vertical )
{
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
if( layoutAnchorablePaneGroup != null &&
layoutAnchorablePaneGroup.Orientation == System.Windows.Controls.Orientation.Vertical )
{
var childrenToTransfer = layoutAnchorablePaneGroup.Children.ToArray();
for( int i = 0; i < childrenToTransfer.Length; i++ )
_manager.Layout.RootPanel.Children.Add( childrenToTransfer[ i ] );
}
else
_manager.Layout.RootPanel.Children.Add( floatingWindow.RootPanel );
}
else
{
var newOrientedPanel = new LayoutPanel()
{
Orientation = System.Windows.Controls.Orientation.Vertical
};
newOrientedPanel.Children.Add( floatingWindow.RootPanel );
newOrientedPanel.Children.Insert( 0, _manager.Layout.RootPanel );
_manager.Layout.RootPanel = newOrientedPanel;
}
}
break;
#endregion
}
base.Drop( floatingWindow );
}
public override System.Windows.Media.Geometry GetPreviewPath( OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel )
{
var anchorableFloatingWindowModel = floatingWindowModel as LayoutAnchorableFloatingWindow;
var layoutAnchorablePane = anchorableFloatingWindowModel.RootPanel as ILayoutPositionableElement;
var layoutAnchorablePaneWithActualSize = anchorableFloatingWindowModel.RootPanel as ILayoutPositionableElementWithActualSize;
var targetScreenRect = TargetElement.GetScreenArea();
switch( Type )
{
case DropTargetType.DockingManagerDockLeft:
{
var desideredWidth = layoutAnchorablePane.DockWidth.IsAbsolute ? layoutAnchorablePane.DockWidth.Value : layoutAnchorablePaneWithActualSize.ActualWidth;
var previewBoxRect = new Rect(
targetScreenRect.Left - overlayWindow.Left,
targetScreenRect.Top - overlayWindow.Top,
Math.Min( desideredWidth, targetScreenRect.Width / 2.0 ),
targetScreenRect.Height );
return new RectangleGeometry( previewBoxRect );
}
case DropTargetType.DockingManagerDockTop:
{
var desideredHeight = layoutAnchorablePane.DockHeight.IsAbsolute ? layoutAnchorablePane.DockHeight.Value : layoutAnchorablePaneWithActualSize.ActualHeight;
var previewBoxRect = new Rect(
targetScreenRect.Left - overlayWindow.Left,
targetScreenRect.Top - overlayWindow.Top,
targetScreenRect.Width,
Math.Min( desideredHeight, targetScreenRect.Height / 2.0 ) );
return new RectangleGeometry( previewBoxRect );
}
case DropTargetType.DockingManagerDockRight:
{
var desideredWidth = layoutAnchorablePane.DockWidth.IsAbsolute ? layoutAnchorablePane.DockWidth.Value : layoutAnchorablePaneWithActualSize.ActualWidth;
var previewBoxRect = new Rect(
targetScreenRect.Right - overlayWindow.Left - Math.Min( desideredWidth, targetScreenRect.Width / 2.0 ),
targetScreenRect.Top - overlayWindow.Top,
Math.Min( desideredWidth, targetScreenRect.Width / 2.0 ),
targetScreenRect.Height );
return new RectangleGeometry( previewBoxRect );
}
case DropTargetType.DockingManagerDockBottom:
{
var desideredHeight = layoutAnchorablePane.DockHeight.IsAbsolute ? layoutAnchorablePane.DockHeight.Value : layoutAnchorablePaneWithActualSize.ActualHeight;
var previewBoxRect = new Rect(
targetScreenRect.Left - overlayWindow.Left,
targetScreenRect.Bottom - overlayWindow.Top - Math.Min( desideredHeight, targetScreenRect.Height / 2.0 ),
targetScreenRect.Width,
Math.Min( desideredHeight, targetScreenRect.Height / 2.0 ) );
return new RectangleGeometry( previewBoxRect );
}
}
throw new InvalidOperationException();
}
#endregion
}
}

33
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DockingManagerOverlayArea.cs

@ -14,27 +14,30 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
namespace Xceed.Wpf.AvalonDock.Controls
{
public class DockingManagerOverlayArea : OverlayArea
{
internal DockingManagerOverlayArea(IOverlayWindow overlayWindow, DockingManager manager)
: base(overlayWindow)
{
_manager = manager;
public class DockingManagerOverlayArea : OverlayArea
{
#region Members
private DockingManager _manager;
base.SetScreenDetectionArea(new Rect(
_manager.PointToScreenDPI(new Point()),
_manager.TransformActualSizeToAncestor()));
}
#endregion
DockingManager _manager;
#region Constructors
internal DockingManagerOverlayArea( IOverlayWindow overlayWindow, DockingManager manager )
: base( overlayWindow )
{
_manager = manager;
base.SetScreenDetectionArea( new Rect(
_manager.PointToScreenDPI( new Point() ),
_manager.TransformActualSizeToAncestor() ) );
}
#endregion
}
}

34
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneControlOverlayArea.cs

@ -14,31 +14,29 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
namespace Xceed.Wpf.AvalonDock.Controls
{
public class DocumentPaneControlOverlayArea : OverlayArea
{
public class DocumentPaneControlOverlayArea : OverlayArea
{
#region Members
internal DocumentPaneControlOverlayArea(
IOverlayWindow overlayWindow,
LayoutDocumentPaneControl documentPaneControl)
: base(overlayWindow)
{
_documentPaneControl = documentPaneControl;
base.SetScreenDetectionArea(new Rect(
_documentPaneControl.PointToScreenDPI(new Point()),
_documentPaneControl.TransformActualSizeToAncestor()));
}
private LayoutDocumentPaneControl _documentPaneControl;
LayoutDocumentPaneControl _documentPaneControl;
#endregion
#region Constructors
internal DocumentPaneControlOverlayArea(
IOverlayWindow overlayWindow,
LayoutDocumentPaneControl documentPaneControl )
: base( overlayWindow )
{
_documentPaneControl = documentPaneControl;
base.SetScreenDetectionArea( new Rect( _documentPaneControl.PointToScreenDPI( new Point() ), _documentPaneControl.TransformActualSizeToAncestor() ) );
}
#endregion
}
}

460
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneDropAsAnchorableTarget.cs

@ -15,263 +15,271 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
using System.Diagnostics;
using Xceed.Wpf.AvalonDock.Layout;
namespace Xceed.Wpf.AvalonDock.Controls
{
internal class DocumentPaneDropAsAnchorableTarget : DropTarget<LayoutDocumentPaneControl>
{
internal DocumentPaneDropAsAnchorableTarget(LayoutDocumentPaneControl paneControl, Rect detectionRect, DropTargetType type)
: base(paneControl, detectionRect, type)
{
_targetPane = paneControl;
}
internal class DocumentPaneDropAsAnchorableTarget : DropTarget<LayoutDocumentPaneControl>
{
#region Members
internal DocumentPaneDropAsAnchorableTarget(LayoutDocumentPaneControl paneControl, Rect detectionRect, DropTargetType type, int tabIndex)
: base(paneControl, detectionRect, type)
{
_targetPane = paneControl;
_tabIndex = tabIndex;
}
private LayoutDocumentPaneControl _targetPane;
int _tabIndex = -1;
#endregion
LayoutDocumentPaneControl _targetPane;
#region Constructors
int _tabIndex = -1;
internal DocumentPaneDropAsAnchorableTarget( LayoutDocumentPaneControl paneControl, Rect detectionRect, DropTargetType type )
: base( paneControl, detectionRect, type )
{
_targetPane = paneControl;
}
protected override void Drop(LayoutAnchorableFloatingWindow floatingWindow)
{
ILayoutDocumentPane targetModel = _targetPane.Model as ILayoutDocumentPane;
LayoutDocumentPaneGroup parentGroup;
LayoutPanel parentGroupPanel;
FindParentLayoutDocumentPane(targetModel, out parentGroup, out parentGroupPanel);
internal DocumentPaneDropAsAnchorableTarget( LayoutDocumentPaneControl paneControl, Rect detectionRect, DropTargetType type, int tabIndex )
: base( paneControl, detectionRect, type )
{
_targetPane = paneControl;
_tabIndex = tabIndex;
}
switch (Type)
{
case DropTargetType.DocumentPaneDockAsAnchorableBottom:
#region DropTargetType.DocumentPaneDockAsAnchorableBottom
{
if (parentGroupPanel != null &&
parentGroupPanel.ChildrenCount == 1)
parentGroupPanel.Orientation = System.Windows.Controls.Orientation.Vertical;
if (parentGroupPanel != null &&
parentGroupPanel.Orientation == System.Windows.Controls.Orientation.Vertical)
{
parentGroupPanel.Children.Insert(
parentGroupPanel.IndexOfChild(parentGroup != null ? parentGroup : targetModel) + 1,
floatingWindow.RootPanel);
}
else if (parentGroupPanel != null)
{
var newParentPanel = new LayoutPanel() { Orientation = System.Windows.Controls.Orientation.Vertical };
parentGroupPanel.ReplaceChild(parentGroup != null ? parentGroup : targetModel, newParentPanel);
newParentPanel.Children.Add(parentGroup != null ? parentGroup : targetModel);
newParentPanel.Children.Add(floatingWindow.RootPanel);
}
else
{
throw new NotImplementedException();
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockAsAnchorableTop:
#region DropTargetType.DocumentPaneDockAsAnchorableTop
{
if (parentGroupPanel != null &&
parentGroupPanel.ChildrenCount == 1)
parentGroupPanel.Orientation = System.Windows.Controls.Orientation.Vertical;
if (parentGroupPanel != null &&
parentGroupPanel.Orientation == System.Windows.Controls.Orientation.Vertical)
{
parentGroupPanel.Children.Insert(
parentGroupPanel.IndexOfChild(parentGroup != null ? parentGroup : targetModel),
floatingWindow.RootPanel);
}
else if (parentGroupPanel != null)
{
var newParentPanel = new LayoutPanel() { Orientation = System.Windows.Controls.Orientation.Vertical };
parentGroupPanel.ReplaceChild(parentGroup != null ? parentGroup : targetModel, newParentPanel);
newParentPanel.Children.Add(parentGroup != null ? parentGroup : targetModel);
newParentPanel.Children.Insert(0, floatingWindow.RootPanel);
}
else
{
throw new NotImplementedException();
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockAsAnchorableLeft:
#region DropTargetType.DocumentPaneDockAsAnchorableLeft
{
if (parentGroupPanel != null &&
parentGroupPanel.ChildrenCount == 1)
parentGroupPanel.Orientation = System.Windows.Controls.Orientation.Horizontal;
if (parentGroupPanel != null &&
parentGroupPanel.Orientation == System.Windows.Controls.Orientation.Horizontal)
{
parentGroupPanel.Children.Insert(
parentGroupPanel.IndexOfChild(parentGroup != null ? parentGroup : targetModel),
floatingWindow.RootPanel);
}
else if (parentGroupPanel != null)
{
var newParentPanel = new LayoutPanel() { Orientation = System.Windows.Controls.Orientation.Horizontal };
parentGroupPanel.ReplaceChild(parentGroup != null ? parentGroup : targetModel, newParentPanel);
newParentPanel.Children.Add(parentGroup != null ? parentGroup : targetModel);
newParentPanel.Children.Insert(0, floatingWindow.RootPanel);
}
else
{
throw new NotImplementedException();
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockAsAnchorableRight:
#region DropTargetType.DocumentPaneDockAsAnchorableRight
{
if (parentGroupPanel != null &&
parentGroupPanel.ChildrenCount == 1)
parentGroupPanel.Orientation = System.Windows.Controls.Orientation.Horizontal;
if (parentGroupPanel != null &&
parentGroupPanel.Orientation == System.Windows.Controls.Orientation.Horizontal)
{
parentGroupPanel.Children.Insert(
parentGroupPanel.IndexOfChild(parentGroup != null ? parentGroup : targetModel) + 1,
floatingWindow.RootPanel);
}
else if (parentGroupPanel != null)
{
var newParentPanel = new LayoutPanel() { Orientation = System.Windows.Controls.Orientation.Horizontal };
parentGroupPanel.ReplaceChild(parentGroup != null ? parentGroup : targetModel, newParentPanel);
newParentPanel.Children.Add(parentGroup != null ? parentGroup : targetModel);
newParentPanel.Children.Add(floatingWindow.RootPanel);
}
else
{
throw new NotImplementedException();
}
}
break;
#endregion
}
#endregion
base.Drop(floatingWindow);
}
#region Overrides
public override System.Windows.Media.Geometry GetPreviewPath(OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel)
{
Rect targetScreenRect;
ILayoutDocumentPane targetModel = _targetPane.Model as ILayoutDocumentPane;
var manager = targetModel.Root.Manager;
//ILayoutDocumentPane targetModel = _targetPane.Model as ILayoutDocumentPane;
LayoutDocumentPaneGroup parentGroup;
LayoutPanel parentGroupPanel;
if (!FindParentLayoutDocumentPane(targetModel, out parentGroup, out parentGroupPanel))
return null;
//if (targetModel.Parent is LayoutDocumentPaneGroup)
//{
// var parentGroup = targetModel.Parent as LayoutDocumentPaneGroup;
// var documentPaneGroupControl = manager.FindLogicalChildren<LayoutDocumentPaneGroupControl>().First(d => d.Model == parentGroup);
// targetScreenRect = documentPaneGroupControl.GetScreenArea();
//}
//else
//{
// var documentPaneControl = manager.FindLogicalChildren<LayoutDocumentPaneControl>().First(d => d.Model == targetModel);
// targetScreenRect = documentPaneControl.GetScreenArea();
//}
//var parentPanel = targetModel.FindParent<LayoutPanel>();
var documentPaneControl = manager.FindLogicalChildren<FrameworkElement>().OfType<ILayoutControl>().First(d => parentGroup != null ? d.Model == parentGroup : d.Model == parentGroupPanel) as FrameworkElement;
targetScreenRect = documentPaneControl.GetScreenArea();
switch (Type)
protected override void Drop( LayoutAnchorableFloatingWindow floatingWindow )
{
ILayoutDocumentPane targetModel = _targetPane.Model as ILayoutDocumentPane;
LayoutDocumentPaneGroup parentGroup;
LayoutPanel parentGroupPanel;
FindParentLayoutDocumentPane( targetModel, out parentGroup, out parentGroupPanel );
switch( Type )
{
case DropTargetType.DocumentPaneDockAsAnchorableBottom:
#region DropTargetType.DocumentPaneDockAsAnchorableBottom
{
if( parentGroupPanel != null &&
parentGroupPanel.ChildrenCount == 1 )
parentGroupPanel.Orientation = System.Windows.Controls.Orientation.Vertical;
if( parentGroupPanel != null &&
parentGroupPanel.Orientation == System.Windows.Controls.Orientation.Vertical )
{
case DropTargetType.DocumentPaneDockAsAnchorableBottom:
{
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
targetScreenRect.Offset(0.0, targetScreenRect.Height - targetScreenRect.Height / 3.0);
targetScreenRect.Height /= 3.0;
return new RectangleGeometry(targetScreenRect);
}
case DropTargetType.DocumentPaneDockAsAnchorableTop:
{
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
targetScreenRect.Height /= 3.0;
return new RectangleGeometry(targetScreenRect);
}
case DropTargetType.DocumentPaneDockAsAnchorableRight:
{
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
targetScreenRect.Offset(targetScreenRect.Width - targetScreenRect.Width / 3.0, 0.0);
targetScreenRect.Width /= 3.0;
return new RectangleGeometry(targetScreenRect);
}
case DropTargetType.DocumentPaneDockAsAnchorableLeft:
{
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
targetScreenRect.Width /= 3.0;
return new RectangleGeometry(targetScreenRect);
}
parentGroupPanel.Children.Insert(
parentGroupPanel.IndexOfChild( parentGroup != null ? parentGroup : targetModel ) + 1,
floatingWindow.RootPanel );
}
else if( parentGroupPanel != null )
{
var newParentPanel = new LayoutPanel() { Orientation = System.Windows.Controls.Orientation.Vertical };
parentGroupPanel.ReplaceChild( parentGroup != null ? parentGroup : targetModel, newParentPanel );
newParentPanel.Children.Add( parentGroup != null ? parentGroup : targetModel );
newParentPanel.Children.Add( floatingWindow.RootPanel );
}
else
{
throw new NotImplementedException();
}
return null;
}
bool FindParentLayoutDocumentPane(ILayoutDocumentPane documentPane, out LayoutDocumentPaneGroup containerPaneGroup, out LayoutPanel containerPanel)
{
containerPaneGroup = null;
containerPanel = null;
}
break;
#endregion
case DropTargetType.DocumentPaneDockAsAnchorableTop:
#region DropTargetType.DocumentPaneDockAsAnchorableTop
{
if( parentGroupPanel != null &&
parentGroupPanel.ChildrenCount == 1 )
parentGroupPanel.Orientation = System.Windows.Controls.Orientation.Vertical;
if (documentPane.Parent is LayoutPanel)
if( parentGroupPanel != null &&
parentGroupPanel.Orientation == System.Windows.Controls.Orientation.Vertical )
{
parentGroupPanel.Children.Insert(
parentGroupPanel.IndexOfChild( parentGroup != null ? parentGroup : targetModel ),
floatingWindow.RootPanel );
}
else if( parentGroupPanel != null )
{
containerPaneGroup = null;
containerPanel = documentPane.Parent as LayoutPanel;
return true;
var newParentPanel = new LayoutPanel() { Orientation = System.Windows.Controls.Orientation.Vertical };
parentGroupPanel.ReplaceChild( parentGroup != null ? parentGroup : targetModel, newParentPanel );
newParentPanel.Children.Add( parentGroup != null ? parentGroup : targetModel );
newParentPanel.Children.Insert( 0, floatingWindow.RootPanel );
}
else if (documentPane.Parent is LayoutDocumentPaneGroup)
else
{
var currentDocumentPaneGroup = documentPane.Parent as LayoutDocumentPaneGroup;
while (!(currentDocumentPaneGroup.Parent is LayoutPanel))
{
currentDocumentPaneGroup = currentDocumentPaneGroup.Parent as LayoutDocumentPaneGroup;
throw new NotImplementedException();
}
if (currentDocumentPaneGroup == null)
break;
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockAsAnchorableLeft:
#region DropTargetType.DocumentPaneDockAsAnchorableLeft
{
if( parentGroupPanel != null &&
parentGroupPanel.ChildrenCount == 1 )
parentGroupPanel.Orientation = System.Windows.Controls.Orientation.Horizontal;
if( parentGroupPanel != null &&
parentGroupPanel.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
parentGroupPanel.Children.Insert(
parentGroupPanel.IndexOfChild( parentGroup != null ? parentGroup : targetModel ),
floatingWindow.RootPanel );
}
else if( parentGroupPanel != null )
{
var newParentPanel = new LayoutPanel() { Orientation = System.Windows.Controls.Orientation.Horizontal };
parentGroupPanel.ReplaceChild( parentGroup != null ? parentGroup : targetModel, newParentPanel );
newParentPanel.Children.Add( parentGroup != null ? parentGroup : targetModel );
newParentPanel.Children.Insert( 0, floatingWindow.RootPanel );
}
else
{
throw new NotImplementedException();
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockAsAnchorableRight:
#region DropTargetType.DocumentPaneDockAsAnchorableRight
{
if( parentGroupPanel != null &&
parentGroupPanel.ChildrenCount == 1 )
parentGroupPanel.Orientation = System.Windows.Controls.Orientation.Horizontal;
if( parentGroupPanel != null &&
parentGroupPanel.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
parentGroupPanel.Children.Insert(
parentGroupPanel.IndexOfChild( parentGroup != null ? parentGroup : targetModel ) + 1,
floatingWindow.RootPanel );
}
else if( parentGroupPanel != null )
{
var newParentPanel = new LayoutPanel() { Orientation = System.Windows.Controls.Orientation.Horizontal };
parentGroupPanel.ReplaceChild( parentGroup != null ? parentGroup : targetModel, newParentPanel );
newParentPanel.Children.Add( parentGroup != null ? parentGroup : targetModel );
newParentPanel.Children.Add( floatingWindow.RootPanel );
}
else
{
throw new NotImplementedException();
}
}
break;
#endregion
}
if (currentDocumentPaneGroup == null)
return false;
base.Drop( floatingWindow );
}
containerPaneGroup = currentDocumentPaneGroup;
containerPanel = currentDocumentPaneGroup.Parent as LayoutPanel;
return true;
}
public override System.Windows.Media.Geometry GetPreviewPath( OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel )
{
Rect targetScreenRect;
ILayoutDocumentPane targetModel = _targetPane.Model as ILayoutDocumentPane;
var manager = targetModel.Root.Manager;
//ILayoutDocumentPane targetModel = _targetPane.Model as ILayoutDocumentPane;
LayoutDocumentPaneGroup parentGroup;
LayoutPanel parentGroupPanel;
if( !FindParentLayoutDocumentPane( targetModel, out parentGroup, out parentGroupPanel ) )
return null;
//if (targetModel.Parent is LayoutDocumentPaneGroup)
//{
// var parentGroup = targetModel.Parent as LayoutDocumentPaneGroup;
// var documentPaneGroupControl = manager.FindLogicalChildren<LayoutDocumentPaneGroupControl>().First(d => d.Model == parentGroup);
// targetScreenRect = documentPaneGroupControl.GetScreenArea();
//}
//else
//{
// var documentPaneControl = manager.FindLogicalChildren<LayoutDocumentPaneControl>().First(d => d.Model == targetModel);
// targetScreenRect = documentPaneControl.GetScreenArea();
//}
//var parentPanel = targetModel.FindParent<LayoutPanel>();
var documentPaneControl = manager.FindLogicalChildren<FrameworkElement>().OfType<ILayoutControl>().First( d => parentGroup != null ? d.Model == parentGroup : d.Model == parentGroupPanel ) as FrameworkElement;
targetScreenRect = documentPaneControl.GetScreenArea();
switch( Type )
{
case DropTargetType.DocumentPaneDockAsAnchorableBottom:
{
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
targetScreenRect.Offset( 0.0, targetScreenRect.Height - targetScreenRect.Height / 3.0 );
targetScreenRect.Height /= 3.0;
return new RectangleGeometry( targetScreenRect );
}
case DropTargetType.DocumentPaneDockAsAnchorableTop:
{
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
targetScreenRect.Height /= 3.0;
return new RectangleGeometry( targetScreenRect );
}
case DropTargetType.DocumentPaneDockAsAnchorableRight:
{
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
targetScreenRect.Offset( targetScreenRect.Width - targetScreenRect.Width / 3.0, 0.0 );
targetScreenRect.Width /= 3.0;
return new RectangleGeometry( targetScreenRect );
}
case DropTargetType.DocumentPaneDockAsAnchorableLeft:
{
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
targetScreenRect.Width /= 3.0;
return new RectangleGeometry( targetScreenRect );
}
}
return null;
}
return false;
#endregion
#region Private Methods
private bool FindParentLayoutDocumentPane( ILayoutDocumentPane documentPane, out LayoutDocumentPaneGroup containerPaneGroup, out LayoutPanel containerPanel )
{
containerPaneGroup = null;
containerPanel = null;
if( documentPane.Parent is LayoutPanel )
{
containerPaneGroup = null;
containerPanel = documentPane.Parent as LayoutPanel;
return true;
}
else if( documentPane.Parent is LayoutDocumentPaneGroup )
{
var currentDocumentPaneGroup = documentPane.Parent as LayoutDocumentPaneGroup;
while( !( currentDocumentPaneGroup.Parent is LayoutPanel ) )
{
currentDocumentPaneGroup = currentDocumentPaneGroup.Parent as LayoutDocumentPaneGroup;
if( currentDocumentPaneGroup == null )
break;
}
if( currentDocumentPaneGroup == null )
return false;
containerPaneGroup = currentDocumentPaneGroup;
containerPanel = currentDocumentPaneGroup.Parent as LayoutPanel;
return true;
}
return false;
}
#endregion
}
}

893
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneDropTarget.cs

@ -14,461 +14,500 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
using System.Diagnostics;
using Xceed.Wpf.AvalonDock.Layout;
namespace Xceed.Wpf.AvalonDock.Controls
{
internal class DocumentPaneDropTarget : DropTarget<LayoutDocumentPaneControl>
internal class DocumentPaneDropTarget : DropTarget<LayoutDocumentPaneControl>
{
#region Members
private LayoutDocumentPaneControl _targetPane;
private int _tabIndex = -1;
#endregion
#region Constructors
internal DocumentPaneDropTarget( LayoutDocumentPaneControl paneControl, Rect detectionRect, DropTargetType type )
: base( paneControl, detectionRect, type )
{
internal DocumentPaneDropTarget(LayoutDocumentPaneControl paneControl, Rect detectionRect, DropTargetType type)
: base(paneControl, detectionRect, type)
{
_targetPane = paneControl;
}
_targetPane = paneControl;
}
internal DocumentPaneDropTarget( LayoutDocumentPaneControl paneControl, Rect detectionRect, DropTargetType type, int tabIndex )
: base( paneControl, detectionRect, type )
{
_targetPane = paneControl;
_tabIndex = tabIndex;
}
#endregion
#region Overrides
protected override void Drop( LayoutDocumentFloatingWindow floatingWindow )
{
ILayoutDocumentPane targetModel = _targetPane.Model as ILayoutDocumentPane;
switch( Type )
{
case DropTargetType.DocumentPaneDockBottom:
#region DropTargetType.DocumentPaneDockBottom
{
var newLayoutDocumentPane = new LayoutDocumentPane( floatingWindow.RootDocument );
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
if( parentModel == null )
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Vertical };
parentContainer.ReplaceChild( targetModel, newParentModel );
newParentModel.Children.Add( targetModel as LayoutDocumentPane );
newParentModel.Children.Add( newLayoutDocumentPane );
}
else
{
var manager = parentModel.Root.Manager;
if( !manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Vertical )
{
parentModel.Orientation = System.Windows.Controls.Orientation.Vertical;
int targetPaneIndex = parentModel.IndexOfChild( targetModel );
parentModel.Children.Insert( targetPaneIndex + 1, newLayoutDocumentPane );
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Vertical;
parentModel.ReplaceChild( targetModel, newChildGroup );
newChildGroup.Children.Add( targetModel );
newChildGroup.Children.Add( newLayoutDocumentPane );
}
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockTop:
#region DropTargetType.DocumentPaneDockTop
{
var newLayoutDocumentPane = new LayoutDocumentPane( floatingWindow.RootDocument );
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
if( parentModel == null )
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Vertical };
parentContainer.ReplaceChild( targetModel, newParentModel );
newParentModel.Children.Add( targetModel as LayoutDocumentPane );
newParentModel.Children.Insert( 0, newLayoutDocumentPane );
}
else
{
var manager = parentModel.Root.Manager;
if( !manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Vertical )
{
parentModel.Orientation = System.Windows.Controls.Orientation.Vertical;
int targetPaneIndex = parentModel.IndexOfChild( targetModel );
parentModel.Children.Insert( targetPaneIndex, newLayoutDocumentPane );
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Vertical;
parentModel.ReplaceChild( targetModel, newChildGroup );
newChildGroup.Children.Add( newLayoutDocumentPane );
newChildGroup.Children.Add( targetModel );
}
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockLeft:
#region DropTargetType.DocumentPaneDockLeft
{
var newLayoutDocumentPane = new LayoutDocumentPane( floatingWindow.RootDocument );
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
if( parentModel == null )
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Horizontal };
parentContainer.ReplaceChild( targetModel, newParentModel );
newParentModel.Children.Add( targetModel );
newParentModel.Children.Insert( 0, newLayoutDocumentPane );
}
else
{
var manager = parentModel.Root.Manager;
if( !manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
parentModel.Orientation = System.Windows.Controls.Orientation.Horizontal;
int targetPaneIndex = parentModel.IndexOfChild( targetModel );
parentModel.Children.Insert( targetPaneIndex, newLayoutDocumentPane );
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Horizontal;
parentModel.ReplaceChild( targetModel, newChildGroup );
newChildGroup.Children.Add( newLayoutDocumentPane );
newChildGroup.Children.Add( targetModel );
}
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockRight:
#region DropTargetType.DocumentPaneDockRight
{
var newLayoutDocumentPane = new LayoutDocumentPane( floatingWindow.RootDocument );
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
if( parentModel == null )
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Horizontal };
parentContainer.ReplaceChild( targetModel, newParentModel );
newParentModel.Children.Add( targetModel as LayoutDocumentPane );
newParentModel.Children.Add( newLayoutDocumentPane );
}
else
{
var manager = parentModel.Root.Manager;
if( !manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
parentModel.Orientation = System.Windows.Controls.Orientation.Horizontal;
int targetPaneIndex = parentModel.IndexOfChild( targetModel );
parentModel.Children.Insert( targetPaneIndex + 1, newLayoutDocumentPane );
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Horizontal;
parentModel.ReplaceChild( targetModel, newChildGroup );
newChildGroup.Children.Add( targetModel );
newChildGroup.Children.Add( newLayoutDocumentPane );
}
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockInside:
#region DropTargetType.DocumentPaneDockInside
{
var paneModel = targetModel as LayoutDocumentPane;
var sourceModel = floatingWindow.RootDocument;
int i = 0;
if( _tabIndex != -1 )
{
i = _tabIndex;
}
else
{
var previousIndex = 0;
var previousContainer = ( ( ILayoutPreviousContainer )sourceModel ).PreviousContainer;
if( object.ReferenceEquals( previousContainer, targetModel ) && ( sourceModel.PreviousContainerIndex != -1 ) )
{
previousIndex = sourceModel.PreviousContainerIndex;
}
i = previousIndex;
}
sourceModel.IsActive = false;
paneModel.Children.Insert( i, sourceModel );
sourceModel.IsActive = true;
}
break;
#endregion
internal DocumentPaneDropTarget(LayoutDocumentPaneControl paneControl, Rect detectionRect, DropTargetType type, int tabIndex)
: base(paneControl, detectionRect, type)
{
_targetPane = paneControl;
_tabIndex = tabIndex;
}
}
LayoutDocumentPaneControl _targetPane;
base.Drop( floatingWindow );
}
int _tabIndex = -1;
protected override void Drop( LayoutAnchorableFloatingWindow floatingWindow )
{
ILayoutDocumentPane targetModel = _targetPane.Model as ILayoutDocumentPane;
protected override void Drop(LayoutDocumentFloatingWindow floatingWindow)
{
ILayoutDocumentPane targetModel = _targetPane.Model as ILayoutDocumentPane;
switch( Type )
{
case DropTargetType.DocumentPaneDockBottom:
#region DropTargetType.DocumentPaneDockBottom
{
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
var newLayoutDocumentPane = new LayoutDocumentPane();
switch (Type)
if( parentModel == null )
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Vertical };
parentContainer.ReplaceChild( targetModel, newParentModel );
newParentModel.Children.Add( targetModel as LayoutDocumentPane );
newParentModel.Children.Add( newLayoutDocumentPane );
}
else
{
case DropTargetType.DocumentPaneDockBottom:
#region DropTargetType.DocumentPaneDockBottom
{
var newLayoutDocumentPane = new LayoutDocumentPane(floatingWindow.RootDocument);
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
if (parentModel == null)
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Vertical};
parentContainer.ReplaceChild(targetModel, newParentModel);
newParentModel.Children.Add(targetModel as LayoutDocumentPane);
newParentModel.Children.Add(newLayoutDocumentPane);
}
else
{
var manager = parentModel.Root.Manager;
if (!manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Vertical)
{
parentModel.Orientation = System.Windows.Controls.Orientation.Vertical;
int targetPaneIndex = parentModel.IndexOfChild(targetModel);
parentModel.Children.Insert(targetPaneIndex + 1, newLayoutDocumentPane);
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Vertical;
parentModel.ReplaceChild(targetModel, newChildGroup);
newChildGroup.Children.Add(targetModel);
newChildGroup.Children.Add(newLayoutDocumentPane);
}
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockTop:
#region DropTargetType.DocumentPaneDockTop
{
var newLayoutDocumentPane = new LayoutDocumentPane(floatingWindow.RootDocument);
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
if (parentModel == null)
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Vertical };
parentContainer.ReplaceChild(targetModel, newParentModel);
newParentModel.Children.Add(targetModel as LayoutDocumentPane);
newParentModel.Children.Insert(0, newLayoutDocumentPane);
}
else
{
var manager = parentModel.Root.Manager;
if (!manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Vertical)
{
parentModel.Orientation = System.Windows.Controls.Orientation.Vertical;
int targetPaneIndex = parentModel.IndexOfChild(targetModel);
parentModel.Children.Insert(targetPaneIndex, newLayoutDocumentPane);
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Vertical;
parentModel.ReplaceChild(targetModel, newChildGroup);
newChildGroup.Children.Add(newLayoutDocumentPane);
newChildGroup.Children.Add(targetModel);
}
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockLeft:
#region DropTargetType.DocumentPaneDockLeft
{
var newLayoutDocumentPane = new LayoutDocumentPane(floatingWindow.RootDocument);
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
if (parentModel == null)
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Horizontal };
parentContainer.ReplaceChild(targetModel, newParentModel);
newParentModel.Children.Add(targetModel);
newParentModel.Children.Insert(0, newLayoutDocumentPane);
}
else
{
var manager = parentModel.Root.Manager;
if (!manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Horizontal)
{
parentModel.Orientation = System.Windows.Controls.Orientation.Horizontal;
int targetPaneIndex = parentModel.IndexOfChild(targetModel);
parentModel.Children.Insert(targetPaneIndex, newLayoutDocumentPane);
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Horizontal;
parentModel.ReplaceChild(targetModel, newChildGroup);
newChildGroup.Children.Add(newLayoutDocumentPane);
newChildGroup.Children.Add(targetModel);
}
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockRight:
#region DropTargetType.DocumentPaneDockRight
{
var newLayoutDocumentPane = new LayoutDocumentPane(floatingWindow.RootDocument);
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
if (parentModel == null)
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Horizontal };
parentContainer.ReplaceChild(targetModel, newParentModel);
newParentModel.Children.Add(targetModel as LayoutDocumentPane);
newParentModel.Children.Add(newLayoutDocumentPane);
}
else
{
var manager = parentModel.Root.Manager;
if (!manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Horizontal)
{
parentModel.Orientation = System.Windows.Controls.Orientation.Horizontal;
int targetPaneIndex = parentModel.IndexOfChild(targetModel);
parentModel.Children.Insert(targetPaneIndex + 1, newLayoutDocumentPane);
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Horizontal;
parentModel.ReplaceChild(targetModel, newChildGroup);
newChildGroup.Children.Add(targetModel);
newChildGroup.Children.Add(newLayoutDocumentPane);
}
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockInside:
#region DropTargetType.DocumentPaneDockInside
{
var paneModel = targetModel as LayoutDocumentPane;
var sourceModel = floatingWindow.RootDocument;
int i = _tabIndex == -1 ? 0 : _tabIndex;
sourceModel.IsActive = false;
paneModel.Children.Insert(i, sourceModel);
sourceModel.IsActive = true;
}
break;
#endregion
var manager = parentModel.Root.Manager;
if( !manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Vertical )
{
parentModel.Orientation = System.Windows.Controls.Orientation.Vertical;
int targetPaneIndex = parentModel.IndexOfChild( targetModel );
parentModel.Children.Insert( targetPaneIndex + 1, newLayoutDocumentPane );
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Vertical;
parentModel.ReplaceChild( targetModel, newChildGroup );
newChildGroup.Children.Add( targetModel );
newChildGroup.Children.Add( newLayoutDocumentPane );
}
}
foreach( var cntToTransfer in floatingWindow.RootPanel.Descendents().OfType<LayoutAnchorable>().ToArray() )
newLayoutDocumentPane.Children.Add( cntToTransfer );
}
break;
#endregion
case DropTargetType.DocumentPaneDockTop:
#region DropTargetType.DocumentPaneDockTop
{
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
var newLayoutDocumentPane = new LayoutDocumentPane();
if( parentModel == null )
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Vertical };
parentContainer.ReplaceChild( targetModel, newParentModel );
newParentModel.Children.Add( newLayoutDocumentPane );
newParentModel.Children.Add( targetModel as LayoutDocumentPane );
}
else
{
var manager = parentModel.Root.Manager;
if( !manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Vertical )
{
parentModel.Orientation = System.Windows.Controls.Orientation.Vertical;
int targetPaneIndex = parentModel.IndexOfChild( targetModel );
parentModel.Children.Insert( targetPaneIndex, newLayoutDocumentPane );
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Vertical;
parentModel.ReplaceChild( targetModel, newChildGroup );
newChildGroup.Children.Add( newLayoutDocumentPane );
newChildGroup.Children.Add( targetModel );
}
}
base.Drop(floatingWindow);
}
foreach( var cntToTransfer in floatingWindow.RootPanel.Descendents().OfType<LayoutAnchorable>().ToArray() )
newLayoutDocumentPane.Children.Add( cntToTransfer );
protected override void Drop(LayoutAnchorableFloatingWindow floatingWindow)
{
ILayoutDocumentPane targetModel = _targetPane.Model as ILayoutDocumentPane;
}
break;
#endregion
case DropTargetType.DocumentPaneDockLeft:
#region DropTargetType.DocumentPaneDockLeft
{
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
var newLayoutDocumentPane = new LayoutDocumentPane();
switch (Type)
if( parentModel == null )
{
case DropTargetType.DocumentPaneDockBottom:
#region DropTargetType.DocumentPaneDockBottom
{
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
var newLayoutDocumentPane = new LayoutDocumentPane();
if (parentModel == null)
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Vertical };
parentContainer.ReplaceChild(targetModel, newParentModel);
newParentModel.Children.Add(targetModel as LayoutDocumentPane);
newParentModel.Children.Add(newLayoutDocumentPane);
}
else
{
var manager = parentModel.Root.Manager;
if (!manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Vertical)
{
parentModel.Orientation = System.Windows.Controls.Orientation.Vertical;
int targetPaneIndex = parentModel.IndexOfChild(targetModel);
parentModel.Children.Insert(targetPaneIndex + 1, newLayoutDocumentPane);
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Vertical;
parentModel.ReplaceChild(targetModel, newChildGroup);
newChildGroup.Children.Add(targetModel);
newChildGroup.Children.Add(newLayoutDocumentPane);
}
}
foreach (var cntToTransfer in floatingWindow.RootPanel.Descendents().OfType<LayoutAnchorable>().ToArray())
newLayoutDocumentPane.Children.Add(cntToTransfer);
}
break;
#endregion
case DropTargetType.DocumentPaneDockTop:
#region DropTargetType.DocumentPaneDockTop
{
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
var newLayoutDocumentPane = new LayoutDocumentPane();
if (parentModel == null)
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Vertical };
parentContainer.ReplaceChild(targetModel, newParentModel);
newParentModel.Children.Add(newLayoutDocumentPane);
newParentModel.Children.Add(targetModel as LayoutDocumentPane);
}
else
{
var manager = parentModel.Root.Manager;
if (!manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Vertical)
{
parentModel.Orientation = System.Windows.Controls.Orientation.Vertical;
int targetPaneIndex = parentModel.IndexOfChild(targetModel);
parentModel.Children.Insert(targetPaneIndex, newLayoutDocumentPane);
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Vertical;
parentModel.ReplaceChild(targetModel, newChildGroup);
newChildGroup.Children.Add(newLayoutDocumentPane);
newChildGroup.Children.Add(targetModel);
}
}
foreach (var cntToTransfer in floatingWindow.RootPanel.Descendents().OfType<LayoutAnchorable>().ToArray())
newLayoutDocumentPane.Children.Add(cntToTransfer);
}
break;
#endregion
case DropTargetType.DocumentPaneDockLeft:
#region DropTargetType.DocumentPaneDockLeft
{
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
var newLayoutDocumentPane = new LayoutDocumentPane();
if (parentModel == null)
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Horizontal };
parentContainer.ReplaceChild(targetModel, newParentModel);
newParentModel.Children.Add(newLayoutDocumentPane);
newParentModel.Children.Add(targetModel as LayoutDocumentPane);
}
else
{
var manager = parentModel.Root.Manager;
if (!manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Horizontal)
{
parentModel.Orientation = System.Windows.Controls.Orientation.Horizontal;
int targetPaneIndex = parentModel.IndexOfChild(targetModel);
parentModel.Children.Insert(targetPaneIndex, newLayoutDocumentPane);
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Horizontal;
parentModel.ReplaceChild(targetModel, newChildGroup);
newChildGroup.Children.Add(newLayoutDocumentPane);
newChildGroup.Children.Add(targetModel);
}
}
foreach (var cntToTransfer in floatingWindow.RootPanel.Descendents().OfType<LayoutAnchorable>().ToArray())
newLayoutDocumentPane.Children.Add(cntToTransfer);
}
break;
#endregion
case DropTargetType.DocumentPaneDockRight:
#region DropTargetType.DocumentPaneDockRight
{
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
var newLayoutDocumentPane = new LayoutDocumentPane();
if (parentModel == null)
{
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Horizontal };
parentContainer.ReplaceChild(targetModel, newParentModel);
newParentModel.Children.Add(targetModel as LayoutDocumentPane);
newParentModel.Children.Add(newLayoutDocumentPane);
}
else
{
var manager = parentModel.Root.Manager;
if (!manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Horizontal)
{
parentModel.Orientation = System.Windows.Controls.Orientation.Horizontal;
int targetPaneIndex = parentModel.IndexOfChild(targetModel);
parentModel.Children.Insert(targetPaneIndex + 1, newLayoutDocumentPane);
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Horizontal;
parentModel.ReplaceChild(targetModel, newChildGroup);
newChildGroup.Children.Add(targetModel);
newChildGroup.Children.Add(newLayoutDocumentPane);
}
}
foreach (var cntToTransfer in floatingWindow.RootPanel.Descendents().OfType<LayoutAnchorable>().ToArray())
newLayoutDocumentPane.Children.Add(cntToTransfer);
}
break;
#endregion
case DropTargetType.DocumentPaneDockInside:
#region DropTargetType.DocumentPaneDockInside
{
var paneModel = targetModel as LayoutDocumentPane;
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
int i = _tabIndex == -1 ? 0 : _tabIndex;
LayoutAnchorable anchorableToActivate = null;
foreach (var anchorableToImport in layoutAnchorablePaneGroup.Descendents().OfType<LayoutAnchorable>().ToArray())
{
paneModel.Children.Insert(i, anchorableToImport);
i++;
anchorableToActivate = anchorableToImport;
}
anchorableToActivate.IsActive = true;
}
break;
#endregion
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Horizontal };
parentContainer.ReplaceChild( targetModel, newParentModel );
newParentModel.Children.Add( newLayoutDocumentPane );
newParentModel.Children.Add( targetModel as LayoutDocumentPane );
}
else
{
var manager = parentModel.Root.Manager;
if( !manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
parentModel.Orientation = System.Windows.Controls.Orientation.Horizontal;
int targetPaneIndex = parentModel.IndexOfChild( targetModel );
parentModel.Children.Insert( targetPaneIndex, newLayoutDocumentPane );
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Horizontal;
parentModel.ReplaceChild( targetModel, newChildGroup );
newChildGroup.Children.Add( newLayoutDocumentPane );
newChildGroup.Children.Add( targetModel );
}
}
foreach( var cntToTransfer in floatingWindow.RootPanel.Descendents().OfType<LayoutAnchorable>().ToArray() )
newLayoutDocumentPane.Children.Add( cntToTransfer );
base.Drop(floatingWindow);
}
}
break;
#endregion
case DropTargetType.DocumentPaneDockRight:
#region DropTargetType.DocumentPaneDockRight
{
var parentModel = targetModel.Parent as LayoutDocumentPaneGroup;
var newLayoutDocumentPane = new LayoutDocumentPane();
public override System.Windows.Media.Geometry GetPreviewPath(OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel)
{
switch (Type)
if( parentModel == null )
{
case DropTargetType.DocumentPaneDockInside:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
if (_tabIndex == -1)
{
return new RectangleGeometry(targetScreenRect);
}
else
{
var translatedDetectionRect = new Rect(DetectionRects[0].TopLeft, DetectionRects[0].BottomRight);
translatedDetectionRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
var pathFigure = new PathFigure();
pathFigure.StartPoint = targetScreenRect.BottomRight;
pathFigure.Segments.Add(new LineSegment() { Point = new Point(targetScreenRect.Right, translatedDetectionRect.Bottom) });
pathFigure.Segments.Add(new LineSegment() { Point = translatedDetectionRect.BottomRight });
pathFigure.Segments.Add(new LineSegment() { Point = translatedDetectionRect.TopRight });
pathFigure.Segments.Add(new LineSegment() { Point = translatedDetectionRect.TopLeft });
pathFigure.Segments.Add(new LineSegment() { Point = translatedDetectionRect.BottomLeft });
pathFigure.Segments.Add(new LineSegment() { Point = new Point(targetScreenRect.Left, translatedDetectionRect.Bottom) });
pathFigure.Segments.Add(new LineSegment() { Point = targetScreenRect.BottomLeft });
pathFigure.IsClosed = true;
pathFigure.IsFilled = true;
pathFigure.Freeze();
return new PathGeometry(new PathFigure[] { pathFigure });
}
}
case DropTargetType.DocumentPaneDockBottom:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
targetScreenRect.Offset(0.0, targetScreenRect.Height / 2.0);
targetScreenRect.Height /= 2.0;
return new RectangleGeometry(targetScreenRect);
}
case DropTargetType.DocumentPaneDockTop:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
targetScreenRect.Height /= 2.0;
return new RectangleGeometry(targetScreenRect);
}
case DropTargetType.DocumentPaneDockLeft:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
targetScreenRect.Width /= 2.0;
return new RectangleGeometry(targetScreenRect);
}
case DropTargetType.DocumentPaneDockRight:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
targetScreenRect.Offset(targetScreenRect.Width / 2.0, 0.0);
targetScreenRect.Width /= 2.0;
return new RectangleGeometry(targetScreenRect);
}
var parentContainer = targetModel.Parent as ILayoutContainer;
var newParentModel = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Horizontal };
parentContainer.ReplaceChild( targetModel, newParentModel );
newParentModel.Children.Add( targetModel as LayoutDocumentPane );
newParentModel.Children.Add( newLayoutDocumentPane );
}
else
{
var manager = parentModel.Root.Manager;
if( !manager.AllowMixedOrientation || parentModel.Orientation == System.Windows.Controls.Orientation.Horizontal )
{
parentModel.Orientation = System.Windows.Controls.Orientation.Horizontal;
int targetPaneIndex = parentModel.IndexOfChild( targetModel );
parentModel.Children.Insert( targetPaneIndex + 1, newLayoutDocumentPane );
}
else
{
LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup();
newChildGroup.Orientation = System.Windows.Controls.Orientation.Horizontal;
parentModel.ReplaceChild( targetModel, newChildGroup );
newChildGroup.Children.Add( targetModel );
newChildGroup.Children.Add( newLayoutDocumentPane );
}
}
foreach( var cntToTransfer in floatingWindow.RootPanel.Descendents().OfType<LayoutAnchorable>().ToArray() )
newLayoutDocumentPane.Children.Add( cntToTransfer );
}
break;
#endregion
case DropTargetType.DocumentPaneDockInside:
#region DropTargetType.DocumentPaneDockInside
{
var paneModel = targetModel as LayoutDocumentPane;
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
bool checkPreviousContainer = true;
int i = 0;
if( _tabIndex != -1 )
{
i = _tabIndex;
checkPreviousContainer = false;
}
LayoutAnchorable anchorableToActivate = null;
foreach( var anchorableToImport in layoutAnchorablePaneGroup.Descendents().OfType<LayoutAnchorable>().ToArray() )
{
if( checkPreviousContainer )
{
var previousContainer = ( ( ILayoutPreviousContainer )anchorableToImport ).PreviousContainer;
if( object.ReferenceEquals( previousContainer, targetModel ) && ( anchorableToImport.PreviousContainerIndex != -1 ) )
{
i = anchorableToImport.PreviousContainerIndex;
}
checkPreviousContainer = false;
}
anchorableToImport.SetCanCloseInternal( true );
paneModel.Children.Insert( i, anchorableToImport );
i++;
anchorableToActivate = anchorableToImport;
}
return null;
}
anchorableToActivate.IsActive = true;
}
break;
#endregion
}
base.Drop( floatingWindow );
}
public override System.Windows.Media.Geometry GetPreviewPath( OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel )
{
switch( Type )
{
case DropTargetType.DocumentPaneDockInside:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
if( _tabIndex == -1 )
{
return new RectangleGeometry( targetScreenRect );
}
else
{
var translatedDetectionRect = new Rect( DetectionRects[ 0 ].TopLeft, DetectionRects[ 0 ].BottomRight );
translatedDetectionRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
var pathFigure = new PathFigure();
pathFigure.StartPoint = targetScreenRect.BottomRight;
pathFigure.Segments.Add( new LineSegment() { Point = new Point( targetScreenRect.Right, translatedDetectionRect.Bottom ) } );
pathFigure.Segments.Add( new LineSegment() { Point = translatedDetectionRect.BottomRight } );
pathFigure.Segments.Add( new LineSegment() { Point = translatedDetectionRect.TopRight } );
pathFigure.Segments.Add( new LineSegment() { Point = translatedDetectionRect.TopLeft } );
pathFigure.Segments.Add( new LineSegment() { Point = translatedDetectionRect.BottomLeft } );
pathFigure.Segments.Add( new LineSegment() { Point = new Point( targetScreenRect.Left, translatedDetectionRect.Bottom ) } );
pathFigure.Segments.Add( new LineSegment() { Point = targetScreenRect.BottomLeft } );
pathFigure.IsClosed = true;
pathFigure.IsFilled = true;
pathFigure.Freeze();
return new PathGeometry( new PathFigure[] { pathFigure } );
}
}
case DropTargetType.DocumentPaneDockBottom:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
targetScreenRect.Offset( 0.0, targetScreenRect.Height / 2.0 );
targetScreenRect.Height /= 2.0;
return new RectangleGeometry( targetScreenRect );
}
case DropTargetType.DocumentPaneDockTop:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
targetScreenRect.Height /= 2.0;
return new RectangleGeometry( targetScreenRect );
}
case DropTargetType.DocumentPaneDockLeft:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
targetScreenRect.Width /= 2.0;
return new RectangleGeometry( targetScreenRect );
}
case DropTargetType.DocumentPaneDockRight:
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
targetScreenRect.Offset( targetScreenRect.Width / 2.0, 0.0 );
targetScreenRect.Width /= 2.0;
return new RectangleGeometry( targetScreenRect );
}
}
return null;
}
#endregion
}
}

145
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneGroupDropTarget.cs

@ -14,92 +14,101 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
using System.Diagnostics;
using Xceed.Wpf.AvalonDock.Layout;
namespace Xceed.Wpf.AvalonDock.Controls
{
internal class DocumentPaneGroupDropTarget : DropTarget<LayoutDocumentPaneGroupControl>
internal class DocumentPaneGroupDropTarget : DropTarget<LayoutDocumentPaneGroupControl>
{
#region Constructors
internal DocumentPaneGroupDropTarget( LayoutDocumentPaneGroupControl paneControl, Rect detectionRect, DropTargetType type )
: base( paneControl, detectionRect, type )
{
internal DocumentPaneGroupDropTarget(LayoutDocumentPaneGroupControl paneControl, Rect detectionRect, DropTargetType type)
: base(paneControl, detectionRect, type)
{
_targetPane = paneControl;
}
_targetPane = paneControl;
}
LayoutDocumentPaneGroupControl _targetPane;
#endregion
protected override void Drop(LayoutDocumentFloatingWindow floatingWindow)
{
ILayoutPane targetModel = _targetPane.Model as ILayoutPane;
#region Members
switch (Type)
{
case DropTargetType.DocumentPaneGroupDockInside:
#region DropTargetType.DocumentPaneGroupDockInside
{
var paneGroupModel = targetModel as LayoutDocumentPaneGroup;
var paneModel = paneGroupModel.Children[0] as LayoutDocumentPane;
var sourceModel = floatingWindow.RootDocument;
paneModel.Children.Insert(0, sourceModel);
}
break;
#endregion
}
base.Drop(floatingWindow);
}
private LayoutDocumentPaneGroupControl _targetPane;
protected override void Drop(LayoutAnchorableFloatingWindow floatingWindow)
{
ILayoutPane targetModel = _targetPane.Model as ILayoutPane;
#endregion
switch (Type)
{
case DropTargetType.DocumentPaneGroupDockInside:
#region DropTargetType.DocumentPaneGroupDockInside
{
var paneGroupModel = targetModel as LayoutDocumentPaneGroup;
var paneModel = paneGroupModel.Children[0] as LayoutDocumentPane;
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
int i = 0;
foreach (var anchorableToImport in layoutAnchorablePaneGroup.Descendents().OfType<LayoutAnchorable>().ToArray())
{
paneModel.Children.Insert(i, anchorableToImport);
i++;
}
}
break;
#endregion
}
#region Overrides
base.Drop(floatingWindow);
}
protected override void Drop( LayoutDocumentFloatingWindow floatingWindow )
{
ILayoutPane targetModel = _targetPane.Model as ILayoutPane;
switch( Type )
{
case DropTargetType.DocumentPaneGroupDockInside:
#region DropTargetType.DocumentPaneGroupDockInside
{
var paneGroupModel = targetModel as LayoutDocumentPaneGroup;
var paneModel = paneGroupModel.Children[ 0 ] as LayoutDocumentPane;
var sourceModel = floatingWindow.RootDocument;
paneModel.Children.Insert( 0, sourceModel );
}
break;
#endregion
}
base.Drop( floatingWindow );
}
public override System.Windows.Media.Geometry GetPreviewPath(OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel)
{
switch (Type)
protected override void Drop( LayoutAnchorableFloatingWindow floatingWindow )
{
ILayoutPane targetModel = _targetPane.Model as ILayoutPane;
switch( Type )
{
case DropTargetType.DocumentPaneGroupDockInside:
#region DropTargetType.DocumentPaneGroupDockInside
{
var paneGroupModel = targetModel as LayoutDocumentPaneGroup;
var paneModel = paneGroupModel.Children[ 0 ] as LayoutDocumentPane;
var layoutAnchorablePaneGroup = floatingWindow.RootPanel as LayoutAnchorablePaneGroup;
int i = 0;
foreach( var anchorableToImport in layoutAnchorablePaneGroup.Descendents().OfType<LayoutAnchorable>().ToArray() )
{
case DropTargetType.DocumentPaneGroupDockInside:
#region DropTargetType.DocumentPaneGroupDockInside
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
return new RectangleGeometry(targetScreenRect);
}
#endregion
anchorableToImport.SetCanCloseInternal( true );
paneModel.Children.Insert( i, anchorableToImport );
i++;
}
}
break;
#endregion
}
return null;
}
base.Drop( floatingWindow );
}
public override System.Windows.Media.Geometry GetPreviewPath( OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel )
{
switch( Type )
{
case DropTargetType.DocumentPaneGroupDockInside:
#region DropTargetType.DocumentPaneGroupDockInside
{
var targetScreenRect = TargetElement.GetScreenArea();
targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );
return new RectangleGeometry( targetScreenRect );
}
#endregion
}
return null;
}
#endregion
}
}

137
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DocumentPaneTabPanel.cs

@ -15,94 +15,97 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows;
using Xceed.Wpf.AvalonDock.Layout;
namespace Xceed.Wpf.AvalonDock.Controls
{
public class DocumentPaneTabPanel : Panel
public class DocumentPaneTabPanel : Panel
{
#region Constructors
public DocumentPaneTabPanel()
{
public DocumentPaneTabPanel()
{
FlowDirection = System.Windows.FlowDirection.LeftToRight;
}
this.FlowDirection = System.Windows.FlowDirection.LeftToRight;
}
protected override Size MeasureOverride(Size availableSize)
{
var visibleChildren = Children.Cast<UIElement>().Where(ch => ch.Visibility != System.Windows.Visibility.Collapsed);
#endregion
Size desideredSize = new Size();
foreach (FrameworkElement child in Children)
{
child.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
desideredSize.Width += child.DesiredSize.Width;
#region Overrides
desideredSize.Height = Math.Max(desideredSize.Height, child.DesiredSize.Height);
}
protected override Size MeasureOverride( Size availableSize )
{
var visibleChildren = Children.Cast<UIElement>().Where( ch => ch.Visibility != System.Windows.Visibility.Collapsed );
return new Size(Math.Min(desideredSize.Width, availableSize.Width), desideredSize.Height);
}
Size desideredSize = new Size();
foreach( FrameworkElement child in Children )
{
child.Measure( new Size( double.PositiveInfinity, double.PositiveInfinity ) );
desideredSize.Width += child.DesiredSize.Width;
desideredSize.Height = Math.Max( desideredSize.Height, child.DesiredSize.Height );
}
return new Size( Math.Min( desideredSize.Width, availableSize.Width ), desideredSize.Height );
}
protected override Size ArrangeOverride(Size finalSize)
protected override Size ArrangeOverride( Size finalSize )
{
var visibleChildren = Children.Cast<UIElement>().Where( ch => ch.Visibility != System.Windows.Visibility.Collapsed );
var offset = 0.0;
var skipAllOthers = false;
foreach( TabItem doc in visibleChildren )
{
var layoutContent = doc.Content as LayoutContent;
if( skipAllOthers || offset + doc.DesiredSize.Width > finalSize.Width )
{
restart:
var visibleChildren = Children.Cast<UIElement>().Where(ch => ch.Visibility != System.Windows.Visibility.Collapsed);
double offset = 0.0;
bool skipAllOthers = false;
foreach (TabItem doc in visibleChildren)
if( layoutContent.IsSelected && !doc.IsVisible )
{
var parentContainer = layoutContent.Parent as ILayoutContainer;
var parentSelector = layoutContent.Parent as ILayoutContentSelector;
var parentPane = layoutContent.Parent as ILayoutPane;
int contentIndex = parentSelector.IndexOf( layoutContent );
if( contentIndex > 0 &&
parentContainer.ChildrenCount > 1 )
{
var layoutContent = doc.Content as LayoutContent;
if (skipAllOthers || offset + doc.DesiredSize.Width > finalSize.Width)
{
if (layoutContent.IsSelected)
{
var parentContainer = layoutContent.Parent as ILayoutContainer;
var parentSelector = layoutContent.Parent as ILayoutContentSelector;
var parentPane = layoutContent.Parent as ILayoutPane;
int contentIndex = parentSelector.IndexOf(layoutContent);
if (contentIndex > 0 &&
parentContainer.ChildrenCount > 1)
{
parentPane.MoveChild(contentIndex, 0);
parentSelector.SelectedContentIndex = 0;
goto restart;
}
}
doc.Visibility = System.Windows.Visibility.Hidden;
skipAllOthers = true;
}
else
{
doc.Visibility = System.Windows.Visibility.Visible;
doc.Arrange(new Rect(offset, 0.0, doc.DesiredSize.Width, finalSize.Height));
offset += doc.ActualWidth + doc.Margin.Left + doc.Margin.Right;
}
parentPane.MoveChild( contentIndex, 0 );
parentSelector.SelectedContentIndex = 0;
return ArrangeOverride( finalSize );
}
return finalSize;
}
doc.Visibility = System.Windows.Visibility.Hidden;
skipAllOthers = true;
}
else
{
doc.Visibility = System.Windows.Visibility.Visible;
doc.Arrange( new Rect( offset, 0.0, doc.DesiredSize.Width, finalSize.Height ) );
offset += doc.ActualWidth + doc.Margin.Left + doc.Margin.Right;
}
}
return finalSize;
}
protected override void OnMouseLeave(System.Windows.Input.MouseEventArgs e)
{
//if (e.LeftButton == System.Windows.Input.MouseButtonState.Pressed &&
// LayoutDocumentTabItem.IsDraggingItem())
//{
// var contentModel = LayoutDocumentTabItem.GetDraggingItem().Model;
// var manager = contentModel.Root.Manager;
// LayoutDocumentTabItem.ResetDraggingItem();
// System.Diagnostics.Trace.WriteLine("OnMouseLeave()");
protected override void OnMouseLeave( System.Windows.Input.MouseEventArgs e )
{
//if (e.LeftButton == System.Windows.Input.MouseButtonState.Pressed &&
// LayoutDocumentTabItem.IsDraggingItem())
//{
// var contentModel = LayoutDocumentTabItem.GetDraggingItem().Model;
// var manager = contentModel.Root.Manager;
// LayoutDocumentTabItem.ResetDraggingItem();
// System.Diagnostics.Trace.WriteLine("OnMouseLeave()");
// manager.StartDraggingFloatingWindowForContent(contentModel);
//}
// manager.StartDraggingFloatingWindowForContent(contentModel);
//}
base.OnMouseLeave(e);
}
base.OnMouseLeave( e );
}
#endregion
}
}

349
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DragService.cs

@ -14,88 +14,81 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
using System.Windows;
using System.Diagnostics;
using Xceed.Wpf.AvalonDock.Layout;
namespace Xceed.Wpf.AvalonDock.Controls
{
class DragService
{
DockingManager _manager;
LayoutFloatingWindowControl _floatingWindow;
public DragService(LayoutFloatingWindowControl floatingWindow)
{
_floatingWindow = floatingWindow;
_manager = floatingWindow.Model.Root.Manager;
GetOverlayWindowHosts();
}
List<IOverlayWindowHost> _overlayWindowHosts = new List<IOverlayWindowHost>();
void GetOverlayWindowHosts()
{
_overlayWindowHosts.AddRange(_manager.GetFloatingWindowsByZOrder().OfType<LayoutAnchorableFloatingWindowControl>().Where(fw => fw != _floatingWindow && fw.IsVisible));
_overlayWindowHosts.Add(_manager);
}
IOverlayWindowHost _currentHost;
IOverlayWindow _currentWindow;
List<IDropArea> _currentWindowAreas = new List<IDropArea>();
IDropTarget _currentDropTarget;
public void UpdateMouseLocation(Point dragPosition)
{
if (!_floatingWindow.Model.Root.ActiveContent.CanDock) return;
var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow;
var newHost = _overlayWindowHosts.FirstOrDefault(oh => oh.HitTest(dragPosition));
if (_currentHost != null || _currentHost != newHost)
{
//is mouse still inside current overlay window host?
if ((_currentHost != null && !_currentHost.HitTest(dragPosition)) ||
_currentHost != newHost)
{
//esit drop target
if (_currentDropTarget != null)
_currentWindow.DragLeave(_currentDropTarget);
_currentDropTarget = null;
//exit area
_currentWindowAreas.ForEach(a =>
_currentWindow.DragLeave(a));
_currentWindowAreas.Clear();
//hide current overlay window
if (_currentWindow != null)
_currentWindow.DragLeave(_floatingWindow);
if (_currentHost != null)
_currentHost.HideOverlayWindow();
_currentHost = null;
}
if (_currentHost != newHost)
{
_currentHost = newHost;
_currentWindow = _currentHost.ShowOverlayWindow(_floatingWindow);
_currentWindow.DragEnter(_floatingWindow);
}
}
if (_currentHost == null)
internal class DragService
{
#region Members
private DockingManager _manager;
private LayoutFloatingWindowControl _floatingWindow;
private List<IOverlayWindowHost> _overlayWindowHosts = new List<IOverlayWindowHost>();
private IOverlayWindowHost _currentHost;
private IOverlayWindow _currentWindow;
private List<IDropArea> _currentWindowAreas = new List<IDropArea>();
private IDropTarget _currentDropTarget;
#endregion
#region Public Methods
public DragService(LayoutFloatingWindowControl floatingWindow)
{
_floatingWindow = floatingWindow;
_manager = floatingWindow.Model.Root.Manager;
GetOverlayWindowHosts();
}
public void UpdateMouseLocation(Point dragPosition)
{
if (!_floatingWindow.Model.Root.ActiveContent.CanDock) return;
var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow;
var newHost = _overlayWindowHosts.FirstOrDefault(oh => oh.HitTest(dragPosition));
if (_currentHost != null || _currentHost != newHost)
{
//is mouse still inside current overlay window host?
if ((_currentHost != null && !_currentHost.HitTest(dragPosition)) ||
_currentHost != newHost)
{
//esit drop target
if (_currentDropTarget != null)
_currentWindow.DragLeave(_currentDropTarget);
_currentDropTarget = null;
//exit area
_currentWindowAreas.ForEach(a =>
_currentWindow.DragLeave(a));
_currentWindowAreas.Clear();
//hide current overlay window
if (_currentWindow != null)
_currentWindow.DragLeave(_floatingWindow);
if (_currentHost != null)
_currentHost.HideOverlayWindow();
_currentHost = null;
}
if (_currentHost != newHost)
{
_currentHost = newHost;
_currentWindow = _currentHost.ShowOverlayWindow(_floatingWindow);
_currentWindow.DragEnter(_floatingWindow);
}
}
else if (_currentHost == null)
{
Debug.WriteLine("Zero Dock Areas");
if(_manager.Parent is DockingManager)
// there are no dock areas
if (_manager.Parent is DockingManager)
{
_manager = _manager.Parent as DockingManager;
GetOverlayWindowHosts();
@ -105,100 +98,116 @@ namespace Xceed.Wpf.AvalonDock.Controls
return;
}
if (_currentDropTarget != null &&
!_currentDropTarget.HitTest(dragPosition))
{
_currentWindow.DragLeave(_currentDropTarget);
_currentDropTarget = null;
}
List<IDropArea> areasToRemove = new List<IDropArea>();
_currentWindowAreas.ForEach(a =>
{
//is mouse still inside this area?
if (!a.DetectionRect.Contains(dragPosition))
{
_currentWindow.DragLeave(a);
areasToRemove.Add(a);
}
});
areasToRemove.ForEach(a =>
_currentWindowAreas.Remove(a));
var areasToAdd =
_currentHost.GetDropAreas(_floatingWindow).Where(cw => !_currentWindowAreas.Contains(cw) && cw.DetectionRect.Contains(dragPosition)).ToList();
_currentWindowAreas.AddRange(areasToAdd);
areasToAdd.ForEach(a =>
_currentWindow.DragEnter(a));
if (_currentDropTarget == null)
{
_currentWindowAreas.ForEach(wa =>
{
if (_currentDropTarget != null)
return;
_currentDropTarget = _currentWindow.GetTargets().FirstOrDefault(dt => dt.HitTest(dragPosition));
if (_currentDropTarget != null)
{
_currentWindow.DragEnter(_currentDropTarget);
return;
}
});
}
}
public void Drop(Point dropLocation, out bool dropHandled)
{
dropHandled = false;
UpdateMouseLocation(dropLocation);
var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow;
var root = floatingWindowModel.Root;
if (_currentHost != null)
_currentHost.HideOverlayWindow();
if (_currentDropTarget != null)
{
_currentWindow.DragDrop(_currentDropTarget);
root.CollectGarbage();
dropHandled = true;
}
_currentWindowAreas.ForEach(a => _currentWindow.DragLeave(a));
if (_currentDropTarget != null)
_currentWindow.DragLeave(_currentDropTarget);
if (_currentWindow != null)
_currentWindow.DragLeave(_floatingWindow);
_currentWindow = null;
_currentHost = null;
}
internal void Abort()
{
var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow;
if(_currentWindow != null)
_currentWindowAreas.ForEach(a => _currentWindow.DragLeave(a));
if (_currentDropTarget != null)
_currentWindow.DragLeave(_currentDropTarget);
if (_currentWindow != null)
_currentWindow.DragLeave(_floatingWindow);
_currentWindow = null;
if (_currentHost != null)
_currentHost.HideOverlayWindow();
_currentHost = null;
}
}
if (_currentDropTarget != null &&
!_currentDropTarget.HitTest(dragPosition))
{
_currentWindow.DragLeave(_currentDropTarget);
_currentDropTarget = null;
}
List<IDropArea> areasToRemove = new List<IDropArea>();
_currentWindowAreas.ForEach(a =>
{
//is mouse still inside this area?
if (!a.DetectionRect.Contains(dragPosition))
{
_currentWindow.DragLeave(a);
areasToRemove.Add(a);
}
});
areasToRemove.ForEach(a =>
_currentWindowAreas.Remove(a));
var areasToAdd =
_currentHost.GetDropAreas(_floatingWindow).Where(cw => !_currentWindowAreas.Contains(cw) && cw.DetectionRect.Contains(dragPosition)).ToList();
_currentWindowAreas.AddRange(areasToAdd);
areasToAdd.ForEach(a =>
_currentWindow.DragEnter(a));
if (_currentDropTarget == null)
{
_currentWindowAreas.ForEach(wa =>
{
if (_currentDropTarget != null)
return;
_currentDropTarget = _currentWindow.GetTargets().FirstOrDefault(dt => dt.HitTest(dragPosition));
if (_currentDropTarget != null)
{
_currentWindow.DragEnter(_currentDropTarget);
return;
}
});
}
}
public void Drop(Point dropLocation, out bool dropHandled)
{
dropHandled = false;
UpdateMouseLocation(dropLocation);
var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow;
var root = floatingWindowModel.Root;
if (_currentHost != null)
_currentHost.HideOverlayWindow();
if (_currentDropTarget != null)
{
_currentWindow.DragDrop(_currentDropTarget);
root.CollectGarbage();
dropHandled = true;
}
_currentWindowAreas.ForEach(a => _currentWindow.DragLeave(a));
if (_currentDropTarget != null)
_currentWindow.DragLeave(_currentDropTarget);
if (_currentWindow != null)
_currentWindow.DragLeave(_floatingWindow);
_currentWindow = null;
_currentHost = null;
}
#endregion
#region Internal Methods
internal void Abort()
{
var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow;
if (_currentWindow != null)
_currentWindowAreas.ForEach(a => _currentWindow.DragLeave(a));
if (_currentDropTarget != null)
_currentWindow.DragLeave(_currentDropTarget);
if (_currentWindow != null)
_currentWindow.DragLeave(_floatingWindow);
_currentWindow = null;
if (_currentHost != null)
_currentHost.HideOverlayWindow();
_currentHost = null;
}
#endregion
#region Private Methods
private void GetOverlayWindowHosts()
{
_overlayWindowHosts.AddRange(_manager.GetFloatingWindowsByZOrder().OfType<LayoutAnchorableFloatingWindowControl>().Where(fw => fw != _floatingWindow && fw.IsVisible));
_overlayWindowHosts.Add(_manager);
}
#endregion
}
}

100
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropArea.cs

@ -14,64 +14,78 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
namespace Xceed.Wpf.AvalonDock.Controls
{
public enum DropAreaType
public enum DropAreaType
{
DockingManager,
DocumentPane,
DocumentPaneGroup,
AnchorablePane,
}
public interface IDropArea
{
Rect DetectionRect
{
DockingManager,
get;
}
DropAreaType Type
{
get;
}
}
DocumentPane,
public class DropArea<T> : IDropArea where T : FrameworkElement
{
#region Members
DocumentPaneGroup,
private Rect _detectionRect;
private DropAreaType _type;
private T _element;
AnchorablePane,
#endregion
#region Constructors
internal DropArea( T areaElement, DropAreaType type )
{
_element = areaElement;
_detectionRect = areaElement.GetScreenArea();
_type = type;
}
#endregion
public interface IDropArea
#region Properties
public Rect DetectionRect
{
Rect DetectionRect { get; }
DropAreaType Type { get; }
}
get
{
return _detectionRect;
}
}
public class DropArea<T> : IDropArea where T : FrameworkElement
public DropAreaType Type
{
internal DropArea(T areaElement, DropAreaType type)
{
_element = areaElement;
_detectionRect = areaElement.GetScreenArea();
_type = type;
}
Rect _detectionRect;
public Rect DetectionRect
{
get { return _detectionRect; }
}
DropAreaType _type;
public DropAreaType Type
{
get { return _type; }
}
T _element;
public T AreaElement
{
get
{
return _element;
}
}
get
{
return _type;
}
}
public T AreaElement
{
get
{
return _element;
}
}
#endregion
}
}

223
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropDownButton.cs

@ -14,115 +14,136 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls.Primitives;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Diagnostics;
namespace Xceed.Wpf.AvalonDock.Controls
{
public class DropDownButton : ToggleButton
public class DropDownButton : ToggleButton
{
#region Constructors
public DropDownButton()
{
public DropDownButton()
{
this.Unloaded += new RoutedEventHandler(DropDownButton_Unloaded);
}
#region DropDownContextMenu
/// <summary>
/// DropDownContextMenu Dependency Property
/// </summary>
public static readonly DependencyProperty DropDownContextMenuProperty =
DependencyProperty.Register("DropDownContextMenu", typeof(ContextMenu), typeof(DropDownButton),
new FrameworkPropertyMetadata((ContextMenu)null,
new PropertyChangedCallback(OnDropDownContextMenuChanged)));
/// <summary>
/// Gets or sets the DropDownContextMenu property. This dependency property
/// indicates drop down menu to show up when user click on an anchorable menu pin.
/// </summary>
public ContextMenu DropDownContextMenu
{
get { return (ContextMenu)GetValue(DropDownContextMenuProperty); }
set { SetValue(DropDownContextMenuProperty, value); }
}
/// <summary>
/// Handles changes to the DropDownContextMenu property.
/// </summary>
private static void OnDropDownContextMenuChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((DropDownButton)d).OnDropDownContextMenuChanged(e);
}
/// <summary>
/// Provides derived classes an opportunity to handle changes to the DropDownContextMenu property.
/// </summary>
protected virtual void OnDropDownContextMenuChanged(DependencyPropertyChangedEventArgs e)
{
var oldContextMenu = e.OldValue as ContextMenu;
if (oldContextMenu != null && IsChecked.GetValueOrDefault())
oldContextMenu.Closed -= new RoutedEventHandler(OnContextMenuClosed);
}
#endregion
#region DropDownContextMenuDataContext
/// <summary>
/// DropDownContextMenuDataContext Dependency Property
/// </summary>
public static readonly DependencyProperty DropDownContextMenuDataContextProperty =
DependencyProperty.Register("DropDownContextMenuDataContext", typeof(object), typeof(DropDownButton),
new FrameworkPropertyMetadata((object)null));
/// <summary>
/// Gets or sets the DropDownContextMenuDataContext property. This dependency property
/// indicates data context to set for drop down context menu.
/// </summary>
public object DropDownContextMenuDataContext
{
get { return (object)GetValue(DropDownContextMenuDataContextProperty); }
set { SetValue(DropDownContextMenuDataContextProperty, value); }
}
#endregion
protected override void OnClick()
{
if (DropDownContextMenu != null)
{
//IsChecked = true;
DropDownContextMenu.PlacementTarget = this;
DropDownContextMenu.Placement = PlacementMode.Bottom;
DropDownContextMenu.DataContext = DropDownContextMenuDataContext;
DropDownContextMenu.Closed += new RoutedEventHandler(OnContextMenuClosed);
DropDownContextMenu.IsOpen = true;
}
base.OnClick();
}
void OnContextMenuClosed(object sender, RoutedEventArgs e)
{
//Debug.Assert(IsChecked.GetValueOrDefault());
var ctxMenu = sender as ContextMenu;
ctxMenu.Closed -= new RoutedEventHandler(OnContextMenuClosed);
IsChecked = false;
}
void DropDownButton_Unloaded(object sender, RoutedEventArgs e)
{
DropDownContextMenu = null;
}
this.Unloaded += new RoutedEventHandler( DropDownButton_Unloaded );
}
#endregion
#region Properties
#region DropDownContextMenu
/// <summary>
/// DropDownContextMenu Dependency Property
/// </summary>
public static readonly DependencyProperty DropDownContextMenuProperty = DependencyProperty.Register( "DropDownContextMenu", typeof( ContextMenu ), typeof( DropDownButton ),
new FrameworkPropertyMetadata( ( ContextMenu )null, new PropertyChangedCallback( OnDropDownContextMenuChanged ) ) );
/// <summary>
/// Gets or sets the DropDownContextMenu property. This dependency property
/// indicates drop down menu to show up when user click on an anchorable menu pin.
/// </summary>
public ContextMenu DropDownContextMenu
{
get
{
return ( ContextMenu )GetValue( DropDownContextMenuProperty );
}
set
{
SetValue( DropDownContextMenuProperty, value );
}
}
/// <summary>
/// Handles changes to the DropDownContextMenu property.
/// </summary>
private static void OnDropDownContextMenuChanged( DependencyObject d, DependencyPropertyChangedEventArgs e )
{
( ( DropDownButton )d ).OnDropDownContextMenuChanged( e );
}
/// <summary>
/// Provides derived classes an opportunity to handle changes to the DropDownContextMenu property.
/// </summary>
protected virtual void OnDropDownContextMenuChanged( DependencyPropertyChangedEventArgs e )
{
var oldContextMenu = e.OldValue as ContextMenu;
if( oldContextMenu != null && IsChecked.GetValueOrDefault() )
oldContextMenu.Closed -= new RoutedEventHandler( OnContextMenuClosed );
}
#endregion
#region DropDownContextMenuDataContext
/// <summary>
/// DropDownContextMenuDataContext Dependency Property
/// </summary>
public static readonly DependencyProperty DropDownContextMenuDataContextProperty = DependencyProperty.Register( "DropDownContextMenuDataContext", typeof( object ), typeof( DropDownButton ),
new FrameworkPropertyMetadata( ( object )null ) );
/// <summary>
/// Gets or sets the DropDownContextMenuDataContext property. This dependency property
/// indicates data context to set for drop down context menu.
/// </summary>
public object DropDownContextMenuDataContext
{
get
{
return ( object )GetValue( DropDownContextMenuDataContextProperty );
}
set
{
SetValue( DropDownContextMenuDataContextProperty, value );
}
}
#endregion
#endregion
#region Overrides
protected override void OnClick()
{
if( DropDownContextMenu != null )
{
//IsChecked = true;
DropDownContextMenu.PlacementTarget = this;
DropDownContextMenu.Placement = PlacementMode.Bottom;
DropDownContextMenu.DataContext = DropDownContextMenuDataContext;
DropDownContextMenu.Closed += new RoutedEventHandler( OnContextMenuClosed );
DropDownContextMenu.IsOpen = true;
}
base.OnClick();
}
#endregion
#region Private Methods
private void OnContextMenuClosed( object sender, RoutedEventArgs e )
{
//Debug.Assert(IsChecked.GetValueOrDefault());
var ctxMenu = sender as ContextMenu;
ctxMenu.Closed -= new RoutedEventHandler( OnContextMenuClosed );
IsChecked = false;
}
private void DropDownButton_Unloaded( object sender, RoutedEventArgs e )
{
// When changing theme, Unloaded event is called, erasing the DropDownContextMenu.
// Prevent this on theme changes.
if( this.IsLoaded )
{
DropDownContextMenu = null;
}
}
#endregion
}
}

161
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropDownControlArea.cs

@ -14,105 +14,116 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Media;
using System.Windows.Input;
using System.Diagnostics;
namespace Xceed.Wpf.AvalonDock.Controls
{
public class DropDownControlArea : UserControl
public class DropDownControlArea : UserControl
{
#region Constructors
//static DropDownControlArea()
//{
// //IsHitTestVisibleProperty.OverrideMetadata(typeof(DropDownControlArea), new FrameworkPropertyMetadata(true));
//}
public DropDownControlArea()
{
//static DropDownControlArea()
//{
// //IsHitTestVisibleProperty.OverrideMetadata(typeof(DropDownControlArea), new FrameworkPropertyMetadata(true));
//}
}
public DropDownControlArea()
{
#endregion
}
#region Properties
#region DropDownContextMenu
#region DropDownContextMenu
/// <summary>
/// DropDownContextMenu Dependency Property
/// </summary>
public static readonly DependencyProperty DropDownContextMenuProperty =
DependencyProperty.Register("DropDownContextMenu", typeof(ContextMenu), typeof(DropDownControlArea),
new FrameworkPropertyMetadata((ContextMenu)null));
/// <summary>
/// DropDownContextMenu Dependency Property
/// </summary>
public static readonly DependencyProperty DropDownContextMenuProperty = DependencyProperty.Register( "DropDownContextMenu", typeof( ContextMenu ), typeof( DropDownControlArea ),
new FrameworkPropertyMetadata( ( ContextMenu )null ) );
/// <summary>
/// Gets or sets the DropDownContextMenu property. This dependency property
/// indicates context menu to show when a right click is detected over the area occpied by the control.
/// </summary>
public ContextMenu DropDownContextMenu
{
get { return (ContextMenu)GetValue(DropDownContextMenuProperty); }
set { SetValue(DropDownContextMenuProperty, value); }
}
/// <summary>
/// Gets or sets the DropDownContextMenu property. This dependency property
/// indicates context menu to show when a right click is detected over the area occpied by the control.
/// </summary>
public ContextMenu DropDownContextMenu
{
get
{
return ( ContextMenu )GetValue( DropDownContextMenuProperty );
}
set
{
SetValue( DropDownContextMenuProperty, value );
}
}
#endregion
#endregion
#region DropDownContextMenuDataContext
#region DropDownContextMenuDataContext
/// <summary>
/// DropDownContextMenuDataContext Dependency Property
/// </summary>
public static readonly DependencyProperty DropDownContextMenuDataContextProperty =
DependencyProperty.Register("DropDownContextMenuDataContext", typeof(object), typeof(DropDownControlArea),
new FrameworkPropertyMetadata((object)null));
/// <summary>
/// DropDownContextMenuDataContext Dependency Property
/// </summary>
public static readonly DependencyProperty DropDownContextMenuDataContextProperty = DependencyProperty.Register( "DropDownContextMenuDataContext", typeof( object ), typeof( DropDownControlArea ),
new FrameworkPropertyMetadata( ( object )null ) );
/// <summary>
/// Gets or sets the DropDownContextMenuDataContext property. This dependency property
/// indicates data context to attach when context menu is shown.
/// </summary>
public object DropDownContextMenuDataContext
{
get { return (object)GetValue(DropDownContextMenuDataContextProperty); }
set { SetValue(DropDownContextMenuDataContextProperty, value); }
}
/// <summary>
/// Gets or sets the DropDownContextMenuDataContext property. This dependency property
/// indicates data context to attach when context menu is shown.
/// </summary>
public object DropDownContextMenuDataContext
{
get
{
return ( object )GetValue( DropDownContextMenuDataContextProperty );
}
set
{
SetValue( DropDownContextMenuDataContextProperty, value );
}
}
#endregion
#endregion
protected override void OnMouseRightButtonDown(System.Windows.Input.MouseButtonEventArgs e)
{
base.OnMouseRightButtonDown(e);
#endregion
#region Overrides
}
protected override void OnMouseRightButtonDown( System.Windows.Input.MouseButtonEventArgs e )
{
base.OnMouseRightButtonDown( e );
}
protected override void OnPreviewMouseRightButtonUp( System.Windows.Input.MouseButtonEventArgs e )
{
base.OnPreviewMouseRightButtonUp( e );
protected override void OnPreviewMouseRightButtonUp(System.Windows.Input.MouseButtonEventArgs e)
if( !e.Handled )
{
if( DropDownContextMenu != null )
{
base.OnPreviewMouseRightButtonUp(e);
if (!e.Handled)
{
if (DropDownContextMenu != null)
{
DropDownContextMenu.PlacementTarget = null;
DropDownContextMenu.Placement = PlacementMode.MousePoint;
DropDownContextMenu.DataContext = DropDownContextMenuDataContext;
DropDownContextMenu.IsOpen = true;
// e.Handled = true;
}
}
DropDownContextMenu.PlacementTarget = null;
DropDownContextMenu.Placement = PlacementMode.MousePoint;
DropDownContextMenu.DataContext = DropDownContextMenuDataContext;
DropDownContextMenu.IsOpen = true;
// e.Handled = true;
}
}
}
//protected override System.Windows.Media.HitTestResult HitTestCore(System.Windows.Media.PointHitTestParameters hitTestParameters)
//{
// var hitResult = base.HitTestCore(hitTestParameters);
// if (hitResult == null)
// return new PointHitTestResult(this, hitTestParameters.HitPoint);
//protected override System.Windows.Media.HitTestResult HitTestCore(System.Windows.Media.PointHitTestParameters hitTestParameters)
//{
// var hitResult = base.HitTestCore(hitTestParameters);
// if (hitResult == null)
// return new PointHitTestResult(this, hitTestParameters.HitPoint);
// return hitResult;
//}
// return hitResult;
//}
}
#endregion
}
}

161
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropTarget.cs

@ -17,7 +17,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
using Xceed.Wpf.AvalonDock.Layout;
@ -25,91 +24,117 @@ using System.Windows.Threading;
namespace Xceed.Wpf.AvalonDock.Controls
{
internal abstract class DropTarget<T> : DropTargetBase, IDropTarget where T : FrameworkElement
{
protected DropTarget(T targetElement, Rect detectionRect, DropTargetType type)
{
_targetElement = targetElement;
_detectionRect = new Rect[] { detectionRect };
_type = type;
}
internal abstract class DropTarget<T> : DropTargetBase, IDropTarget where T : FrameworkElement
{
#region Members
protected DropTarget(T targetElement, IEnumerable<Rect> detectionRects, DropTargetType type)
{
_targetElement = targetElement;
_detectionRect = detectionRects.ToArray();
_type = type;
}
private Rect[] _detectionRect;
private T _targetElement;
private DropTargetType _type;
Rect[] _detectionRect;
#endregion
public Rect[] DetectionRects
{
get { return _detectionRect; }
}
#region Constructors
protected DropTarget( T targetElement, Rect detectionRect, DropTargetType type )
{
_targetElement = targetElement;
_detectionRect = new Rect[] { detectionRect };
_type = type;
}
T _targetElement;
public T TargetElement
{
get { return _targetElement; }
}
protected DropTarget( T targetElement, IEnumerable<Rect> detectionRects, DropTargetType type )
{
_targetElement = targetElement;
_detectionRect = detectionRects.ToArray();
_type = type;
}
DropTargetType _type;
#endregion
public DropTargetType Type
{
get { return _type; }
}
#region Properties
protected virtual void Drop(LayoutAnchorableFloatingWindow floatingWindow)
{ }
public Rect[] DetectionRects
{
get
{
return _detectionRect;
}
}
protected virtual void Drop(LayoutDocumentFloatingWindow floatingWindow)
{ }
public T TargetElement
{
get
{
return _targetElement;
}
}
public DropTargetType Type
{
get
{
return _type;
}
}
public void Drop(LayoutFloatingWindow floatingWindow)
{
var root = floatingWindow.Root;
var currentActiveContent = floatingWindow.Root.ActiveContent;
var fwAsAnchorable = floatingWindow as LayoutAnchorableFloatingWindow;
#endregion
if (fwAsAnchorable != null)
{
this.Drop(fwAsAnchorable);
}
else
{
var fwAsDocument = floatingWindow as LayoutDocumentFloatingWindow;
this.Drop(fwAsDocument);
}
#region Overrides
Dispatcher.BeginInvoke(new Action(() =>
{
currentActiveContent.IsSelected = false;
currentActiveContent.IsActive = false;
currentActiveContent.IsActive = true;
}), DispatcherPriority.Background);
}
protected virtual void Drop( LayoutAnchorableFloatingWindow floatingWindow )
{
}
public virtual bool HitTest(Point dragPoint)
{
return _detectionRect.Any(dr => dr.Contains(dragPoint));
}
protected virtual void Drop( LayoutDocumentFloatingWindow floatingWindow )
{
}
public abstract Geometry GetPreviewPath(OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindow);
#endregion
#region Public Methods
public void Drop( LayoutFloatingWindow floatingWindow )
{
var root = floatingWindow.Root;
var currentActiveContent = floatingWindow.Root.ActiveContent;
var fwAsAnchorable = floatingWindow as LayoutAnchorableFloatingWindow;
if( fwAsAnchorable != null )
{
this.Drop( fwAsAnchorable );
}
else
{
var fwAsDocument = floatingWindow as LayoutDocumentFloatingWindow;
this.Drop( fwAsDocument );
}
Dispatcher.BeginInvoke( new Action( () =>
{
currentActiveContent.IsSelected = false;
currentActiveContent.IsActive = false;
currentActiveContent.IsActive = true;
} ), DispatcherPriority.Background );
}
public void DragEnter()
{
SetIsDraggingOver(TargetElement, true);
}
public virtual bool HitTest( Point dragPoint )
{
return _detectionRect.Any( dr => dr.Contains( dragPoint ) );
}
public void DragLeave()
{
SetIsDraggingOver(TargetElement, false);
}
public abstract Geometry GetPreviewPath( OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindow );
public void DragEnter()
{
SetIsDraggingOver( TargetElement, true );
}
public void DragLeave()
{
SetIsDraggingOver( TargetElement, false );
}
#endregion
}
}

65
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/DropTargetBase.cs

@ -14,43 +14,42 @@
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
namespace Xceed.Wpf.AvalonDock.Controls
{
abstract class DropTargetBase : DependencyObject
abstract class DropTargetBase : DependencyObject
{
#region Properties
#region IsDraggingOver
/// <summary>
/// IsDraggingOver Attached Dependency Property
/// </summary>
public static readonly DependencyProperty IsDraggingOverProperty = DependencyProperty.RegisterAttached( "IsDraggingOver", typeof( bool ), typeof( DropTargetBase ),
new FrameworkPropertyMetadata( ( bool )false ) );
/// <summary>
/// Gets the IsDraggingOver property. This dependency property
/// indicates if user is dragging a window over the target element.
/// </summary>
public static bool GetIsDraggingOver( DependencyObject d )
{
#region IsDraggingOver
/// <summary>
/// IsDraggingOver Attached Dependency Property
/// </summary>
public static readonly DependencyProperty IsDraggingOverProperty =
DependencyProperty.RegisterAttached("IsDraggingOver", typeof(bool), typeof(DropTargetBase),
new FrameworkPropertyMetadata((bool)false));
/// <summary>
/// Gets the IsDraggingOver property. This dependency property
/// indicates if user is dragging a window over the target element.
/// </summary>
public static bool GetIsDraggingOver(DependencyObject d)
{
return (bool)d.GetValue(IsDraggingOverProperty);
}
/// <summary>
/// Sets the IsDraggingOver property. This dependency property
/// indicates if user is dragging away a window from the target element.
/// </summary>
public static void SetIsDraggingOver(DependencyObject d, bool value)
{
d.SetValue(IsDraggingOverProperty, value);
}
#endregion
return ( bool )d.GetValue( IsDraggingOverProperty );
}
/// <summary>
/// Sets the IsDraggingOver property. This dependency property
/// indicates if user is dragging away a window from the target element.
/// </summary>
public static void SetIsDraggingOver( DependencyObject d, bool value )
{
d.SetValue( IsDraggingOverProperty, value );
}
#endregion
#endregion
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save