OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ | 5 #ifndef CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ |
6 #define CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ | 6 #define CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <vector> | 9 #include <vector> |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 int num_panels() const { return panels_.size(); } | 48 int num_panels() const { return panels_.size(); } |
49 bool is_dragging_panel() const; | 49 bool is_dragging_panel() const; |
50 | 50 |
51 private: | 51 private: |
52 friend class PanelBrowserTest; | 52 friend class PanelBrowserTest; |
53 | 53 |
54 typedef std::vector<Panel*> Panels; | 54 typedef std::vector<Panel*> Panels; |
55 | 55 |
56 PanelManager(); | 56 PanelManager(); |
57 | 57 |
| 58 #if UNIT_TEST |
| 59 const Panels& panels() const { return panels_; } |
| 60 static int horizontal_spacing() { return kPanelsHorizontalSpacing; } |
| 61 #endif |
| 62 |
58 // Applies the new work area. This is called by OnDisplayChanged and the test | 63 // Applies the new work area. This is called by OnDisplayChanged and the test |
59 // code. | 64 // code. |
60 void SetWorkArea(const gfx::Rect& work_area); | 65 void SetWorkArea(const gfx::Rect& work_area); |
61 | 66 |
62 // Handles all the panels that're delayed to be removed. | 67 // Handles all the panels that're delayed to be removed. |
63 void DelayedRemove(); | 68 void DelayedRemove(); |
64 | 69 |
65 // Does the remove. Called from Remove and DelayedRemove. | 70 // Does the remove. Called from Remove and DelayedRemove. |
66 void DoRemove(Panel* panel); | 71 void DoRemove(Panel* panel); |
67 | 72 |
68 // Rearranges the positions of the panels starting from the given iterator. | 73 // Rearranges the positions of the panels starting from the given iterator. |
69 // This is called when the display space has been changed, i.e. working | 74 // This is called when the display space has been changed, i.e. working |
70 // area being changed or a panel being closed. | 75 // area being changed or a panel being closed. |
71 void Rearrange(Panels::iterator iter_to_start); | 76 void Rearrange(Panels::iterator iter_to_start); |
72 | 77 |
73 // Computes the bounds for next panel. | 78 // Computes the bounds for next panel. |
74 // |allow_size_change| is used to indicate if the panel size can be changed to | 79 // |allow_size_change| is used to indicate if the panel size can be changed to |
75 // fall within the size constraint, e.g., when the panel is created. | 80 // fall within the size constraint, e.g., when the panel is created. |
76 // Returns true if computed bounds are within the displayable area. | 81 // Returns true if computed bounds are within the displayable area. |
77 bool ComputeBoundsForNextPanel(gfx::Rect* bounds, bool allow_size_change); | 82 bool ComputeBoundsForNextPanel(gfx::Rect* bounds, bool allow_size_change); |
78 | 83 |
79 // Finds one panel to close so that we may have space for the new panel | 84 // Finds one panel to close so that we may have space for the new panel |
80 // created by |extension|. | 85 // created by |extension|. |
81 void FindAndClosePanelOnOverflow(const Extension* extension); | 86 void FindAndClosePanelOnOverflow(const Extension* extension); |
82 | 87 |
83 // Help functions to drag the given panel. | 88 // Help functions to drag the given panel. |
84 void DragLeft(); | 89 void DragLeft(); |
85 void DragRight(); | 90 void DragRight(); |
86 | 91 |
| 92 // Horizontal spacing between panels. Used for unit testing. |
| 93 |
87 Panels panels_; | 94 Panels panels_; |
88 | 95 |
89 // Stores the panels that are pending to remove. We want to delay the removal | 96 // Stores the panels that are pending to remove. We want to delay the removal |
90 // when we're in the process of the dragging. | 97 // when we're in the process of the dragging. |
91 Panels panels_pending_to_remove_; | 98 Panels panels_pending_to_remove_; |
92 | 99 |
93 // Current work area used in computing the panel bounds. | 100 // Current work area used in computing the panel bounds. |
94 gfx::Rect work_area_; | 101 gfx::Rect work_area_; |
95 | 102 |
96 // Used in computing the bounds of the next panel. | 103 // Used in computing the bounds of the next panel. |
97 int max_width_; | 104 int max_width_; |
98 int max_height_; | 105 int max_height_; |
99 int min_x_; | 106 int min_x_; |
100 int current_x_; | 107 int current_x_; |
101 int bottom_edge_y_; | 108 int bottom_edge_y_; |
102 | 109 |
103 // Panel to drag. | 110 // Panel to drag. |
104 size_t dragging_panel_index_; | 111 size_t dragging_panel_index_; |
105 | 112 |
106 // Original x coordinate of the panel to drag. This is used to get back to | 113 // Original x coordinate of the panel to drag. This is used to get back to |
107 // the original position when we cancel the dragging. | 114 // the original position when we cancel the dragging. |
108 int dragging_panel_original_x_; | 115 int dragging_panel_original_x_; |
109 | 116 |
110 // Bounds of the panel to drag. It is first set to the original bounds when | 117 // Bounds of the panel to drag. It is first set to the original bounds when |
111 // the dragging happens. Then it is updated to the position that will be set | 118 // the dragging happens. Then it is updated to the position that will be set |
112 // to when the dragging ends. | 119 // to when the dragging ends. |
113 gfx::Rect dragging_panel_bounds_; | 120 gfx::Rect dragging_panel_bounds_; |
114 | 121 |
| 122 static const int kPanelsHorizontalSpacing = 4; |
| 123 |
115 DISALLOW_COPY_AND_ASSIGN(PanelManager); | 124 DISALLOW_COPY_AND_ASSIGN(PanelManager); |
116 }; | 125 }; |
117 | 126 |
118 #endif // CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ | 127 #endif // CHROME_BROWSER_UI_PANELS_PANEL_MANAGER_H_ |
OLD | NEW |