1 | using System.Drawing;
|
---|
2 | using System.Windows.Forms;
|
---|
3 |
|
---|
4 | namespace WeifenLuo.WinFormsUI.Docking {
|
---|
5 | internal static class DockHelper {
|
---|
6 | public static bool IsDockStateAutoHide(DockState dockState) {
|
---|
7 | if (dockState == DockState.DockLeftAutoHide ||
|
---|
8 | dockState == DockState.DockRightAutoHide ||
|
---|
9 | dockState == DockState.DockTopAutoHide ||
|
---|
10 | dockState == DockState.DockBottomAutoHide)
|
---|
11 | return true;
|
---|
12 | else
|
---|
13 | return false;
|
---|
14 | }
|
---|
15 |
|
---|
16 | public static bool IsDockStateValid(DockState dockState, DockAreas dockableAreas) {
|
---|
17 | if (((dockableAreas & DockAreas.Float) == 0) &&
|
---|
18 | (dockState == DockState.Float))
|
---|
19 | return false;
|
---|
20 | else if (((dockableAreas & DockAreas.Document) == 0) &&
|
---|
21 | (dockState == DockState.Document))
|
---|
22 | return false;
|
---|
23 | else if (((dockableAreas & DockAreas.DockLeft) == 0) &&
|
---|
24 | (dockState == DockState.DockLeft || dockState == DockState.DockLeftAutoHide))
|
---|
25 | return false;
|
---|
26 | else if (((dockableAreas & DockAreas.DockRight) == 0) &&
|
---|
27 | (dockState == DockState.DockRight || dockState == DockState.DockRightAutoHide))
|
---|
28 | return false;
|
---|
29 | else if (((dockableAreas & DockAreas.DockTop) == 0) &&
|
---|
30 | (dockState == DockState.DockTop || dockState == DockState.DockTopAutoHide))
|
---|
31 | return false;
|
---|
32 | else if (((dockableAreas & DockAreas.DockBottom) == 0) &&
|
---|
33 | (dockState == DockState.DockBottom || dockState == DockState.DockBottomAutoHide))
|
---|
34 | return false;
|
---|
35 | else
|
---|
36 | return true;
|
---|
37 | }
|
---|
38 |
|
---|
39 | public static bool IsDockWindowState(DockState state) {
|
---|
40 | if (state == DockState.DockTop || state == DockState.DockBottom || state == DockState.DockLeft ||
|
---|
41 | state == DockState.DockRight || state == DockState.Document)
|
---|
42 | return true;
|
---|
43 | else
|
---|
44 | return false;
|
---|
45 | }
|
---|
46 |
|
---|
47 | public static DockState ToggleAutoHideState(DockState state) {
|
---|
48 | if (state == DockState.DockLeft)
|
---|
49 | return DockState.DockLeftAutoHide;
|
---|
50 | else if (state == DockState.DockRight)
|
---|
51 | return DockState.DockRightAutoHide;
|
---|
52 | else if (state == DockState.DockTop)
|
---|
53 | return DockState.DockTopAutoHide;
|
---|
54 | else if (state == DockState.DockBottom)
|
---|
55 | return DockState.DockBottomAutoHide;
|
---|
56 | else if (state == DockState.DockLeftAutoHide)
|
---|
57 | return DockState.DockLeft;
|
---|
58 | else if (state == DockState.DockRightAutoHide)
|
---|
59 | return DockState.DockRight;
|
---|
60 | else if (state == DockState.DockTopAutoHide)
|
---|
61 | return DockState.DockTop;
|
---|
62 | else if (state == DockState.DockBottomAutoHide)
|
---|
63 | return DockState.DockBottom;
|
---|
64 | else
|
---|
65 | return state;
|
---|
66 | }
|
---|
67 |
|
---|
68 | public static DockPane PaneAtPoint(Point pt, DockPanel dockPanel) {
|
---|
69 | for (Control control = Win32Helper.ControlAtPoint(pt); control != null; control = control.Parent) {
|
---|
70 | IDockContent content = control as IDockContent;
|
---|
71 | if (content != null && content.DockHandler.DockPanel == dockPanel)
|
---|
72 | return content.DockHandler.Pane;
|
---|
73 |
|
---|
74 | DockPane pane = control as DockPane;
|
---|
75 | if (pane != null && pane.DockPanel == dockPanel)
|
---|
76 | return pane;
|
---|
77 | }
|
---|
78 |
|
---|
79 | return null;
|
---|
80 | }
|
---|
81 |
|
---|
82 | public static FloatWindow FloatWindowAtPoint(Point pt, DockPanel dockPanel) {
|
---|
83 | for (Control control = Win32Helper.ControlAtPoint(pt); control != null; control = control.Parent) {
|
---|
84 | FloatWindow floatWindow = control as FloatWindow;
|
---|
85 | if (floatWindow != null && floatWindow.DockPanel == dockPanel)
|
---|
86 | return floatWindow;
|
---|
87 | }
|
---|
88 |
|
---|
89 | return null;
|
---|
90 | }
|
---|
91 | }
|
---|
92 | }
|
---|