DockHelper.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:DockHelper.cs
  5. * 2.功能描述:类文件
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 陈晓野 2014/09/01 1.00 新建
  9. *******************************************************************************/
  10. using System.Drawing;
  11. using System.Windows.Forms;
  12. namespace Dongke.IBOSS.PRD.Basics.DockPanel
  13. {
  14. /// <summary>
  15. /// 类文件
  16. /// </summary>
  17. internal static class DockHelper
  18. {
  19. public static bool IsDockStateAutoHide(DockState dockState)
  20. {
  21. if (dockState == DockState.DockLeftAutoHide ||
  22. dockState == DockState.DockRightAutoHide ||
  23. dockState == DockState.DockTopAutoHide ||
  24. dockState == DockState.DockBottomAutoHide)
  25. return true;
  26. else
  27. return false;
  28. }
  29. public static bool IsDockStateValid(DockState dockState, DockAreas dockableAreas)
  30. {
  31. if (((dockableAreas & DockAreas.Float) == 0) &&
  32. (dockState == DockState.Float))
  33. return false;
  34. else if (((dockableAreas & DockAreas.Document) == 0) &&
  35. (dockState == DockState.Document))
  36. return false;
  37. else if (((dockableAreas & DockAreas.DockLeft) == 0) &&
  38. (dockState == DockState.DockLeft || dockState == DockState.DockLeftAutoHide))
  39. return false;
  40. else if (((dockableAreas & DockAreas.DockRight) == 0) &&
  41. (dockState == DockState.DockRight || dockState == DockState.DockRightAutoHide))
  42. return false;
  43. else if (((dockableAreas & DockAreas.DockTop) == 0) &&
  44. (dockState == DockState.DockTop || dockState == DockState.DockTopAutoHide))
  45. return false;
  46. else if (((dockableAreas & DockAreas.DockBottom) == 0) &&
  47. (dockState == DockState.DockBottom || dockState == DockState.DockBottomAutoHide))
  48. return false;
  49. else
  50. return true;
  51. }
  52. public static bool IsDockWindowState(DockState state)
  53. {
  54. if (state == DockState.DockTop || state == DockState.DockBottom || state == DockState.DockLeft ||
  55. state == DockState.DockRight || state == DockState.Document)
  56. return true;
  57. else
  58. return false;
  59. }
  60. public static DockState ToggleAutoHideState(DockState state)
  61. {
  62. if (state == DockState.DockLeft)
  63. return DockState.DockLeftAutoHide;
  64. else if (state == DockState.DockRight)
  65. return DockState.DockRightAutoHide;
  66. else if (state == DockState.DockTop)
  67. return DockState.DockTopAutoHide;
  68. else if (state == DockState.DockBottom)
  69. return DockState.DockBottomAutoHide;
  70. else if (state == DockState.DockLeftAutoHide)
  71. return DockState.DockLeft;
  72. else if (state == DockState.DockRightAutoHide)
  73. return DockState.DockRight;
  74. else if (state == DockState.DockTopAutoHide)
  75. return DockState.DockTop;
  76. else if (state == DockState.DockBottomAutoHide)
  77. return DockState.DockBottom;
  78. else
  79. return state;
  80. }
  81. public static DockPane PaneAtPoint(Point pt, DockPanel dockPanel)
  82. {
  83. if (!Win32Helper.IsRunningOnMono)
  84. for (Control control = Win32Helper.ControlAtPoint(pt); control != null; control = control.Parent)
  85. {
  86. IDockContent content = control as IDockContent;
  87. if (content != null && content.DockHandler.DockPanel == dockPanel)
  88. return content.DockHandler.Pane;
  89. DockPane pane = control as DockPane;
  90. if (pane != null && pane.DockPanel == dockPanel)
  91. return pane;
  92. }
  93. return null;
  94. }
  95. public static FloatWindow FloatWindowAtPoint(Point pt, DockPanel dockPanel)
  96. {
  97. if (!Win32Helper.IsRunningOnMono)
  98. for (Control control = Win32Helper.ControlAtPoint(pt); control != null; control = control.Parent)
  99. {
  100. FloatWindow floatWindow = control as FloatWindow;
  101. if (floatWindow != null && floatWindow.DockPanel == dockPanel)
  102. return floatWindow;
  103. }
  104. return null;
  105. }
  106. }
  107. }