Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: views/controls/single_split_view.h

Issue 8351007: views: Factor out SingleSplitView Observer into SingleSplitViewListener. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view.cc ('k') | views/controls/single_split_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 VIEWS_CONTROLS_SINGLE_SPLIT_VIEW_H_ 5 #ifndef VIEWS_CONTROLS_SINGLE_SPLIT_VIEW_H_
6 #define VIEWS_CONTROLS_SINGLE_SPLIT_VIEW_H_ 6 #define VIEWS_CONTROLS_SINGLE_SPLIT_VIEW_H_
7 #pragma once 7 #pragma once
8 8
9 #include "base/gtest_prod_util.h" 9 #include "base/gtest_prod_util.h"
10 #include "views/view.h" 10 #include "views/view.h"
11 11
12 namespace views { 12 namespace views {
13 13
14 class SingleSplitViewListener;
15
14 // SingleSplitView lays out two views next to each other, either horizontally 16 // SingleSplitView lays out two views next to each other, either horizontally
15 // or vertically. A splitter exists between the two views that the user can 17 // or vertically. A splitter exists between the two views that the user can
16 // drag around to resize the views. 18 // drag around to resize the views.
17 // Observer's SplitHandleMoved notification helps to monitor user initiated 19 // SingleSplitViewListener's SplitHandleMoved notification helps to monitor user
18 // layout changes. 20 // initiated layout changes.
19 class VIEWS_EXPORT SingleSplitView : public View { 21 class VIEWS_EXPORT SingleSplitView : public View {
20 public: 22 public:
21 enum Orientation { 23 enum Orientation {
22 HORIZONTAL_SPLIT, 24 HORIZONTAL_SPLIT,
23 VERTICAL_SPLIT 25 VERTICAL_SPLIT
24 }; 26 };
25 27
26 // Internal class name
27 static const char kViewClassName[]; 28 static const char kViewClassName[];
28 29
29 class Observer {
30 public:
31 // Invoked when split handle is moved by the user. |source|'s divider_offset
32 // is already set to the new value, but Layout has not happened yet.
33 // Returns false if the layout has been handled by the observer, returns
34 // true if |source| should do it by itself.
35 virtual bool SplitHandleMoved(SingleSplitView* source) = 0;
36 protected:
37 virtual ~Observer() {}
38 };
39
40 SingleSplitView(View* leading, 30 SingleSplitView(View* leading,
41 View* trailing, 31 View* trailing,
42 Orientation orientation, 32 Orientation orientation,
43 Observer* observer); 33 SingleSplitViewListener* listener);
44 34
45 virtual void Layout() OVERRIDE; 35 virtual void Layout() OVERRIDE;
46 virtual std::string GetClassName() const OVERRIDE; 36 virtual std::string GetClassName() const OVERRIDE;
47 37
48 virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE; 38 virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE;
49 39
50 // SingleSplitView's preferred size is the sum of the preferred widths 40 // SingleSplitView's preferred size is the sum of the preferred widths
51 // and the max of the heights. 41 // and the max of the heights.
52 virtual gfx::Size GetPreferredSize() OVERRIDE; 42 virtual gfx::Size GetPreferredSize() OVERRIDE;
53 43
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 78
89 private: 79 private:
90 // This test calls OnMouse* functions. 80 // This test calls OnMouse* functions.
91 FRIEND_TEST_ALL_PREFIXES(SingleSplitViewTest, MouseDrag); 81 FRIEND_TEST_ALL_PREFIXES(SingleSplitViewTest, MouseDrag);
92 82
93 // Returns true if |x| or |y| is over the divider. 83 // Returns true if |x| or |y| is over the divider.
94 bool IsPointInDivider(const gfx::Point& p); 84 bool IsPointInDivider(const gfx::Point& p);
95 85
96 // Calculates the new |divider_offset| based on the changes of split view 86 // Calculates the new |divider_offset| based on the changes of split view
97 // bounds. 87 // bounds.
98 int CalculateDividerOffset( 88 int CalculateDividerOffset(int divider_offset,
99 int divider_offset, 89 const gfx::Rect& previous_bounds,
100 const gfx::Rect& previous_bounds, 90 const gfx::Rect& new_bounds) const;
101 const gfx::Rect& new_bounds) const;
102 91
103 // Returns divider offset within primary axis size range for given split 92 // Returns divider offset within primary axis size range for given split
104 // view |bounds|. 93 // view |bounds|.
105 int NormalizeDividerOffset(int divider_offset, const gfx::Rect& bounds) const; 94 int NormalizeDividerOffset(int divider_offset, const gfx::Rect& bounds) const;
106 95
107 // Returns width in case of horizontal split and height otherwise. 96 // Returns width in case of horizontal split and height otherwise.
108 int GetPrimaryAxisSize() const { 97 int GetPrimaryAxisSize() const {
109 return GetPrimaryAxisSize(width(), height()); 98 return GetPrimaryAxisSize(width(), height());
110 } 99 }
111 100
(...skipping 12 matching lines...) Expand all
124 DragInfo drag_info_; 113 DragInfo drag_info_;
125 114
126 // Orientation of the split view. 115 // Orientation of the split view.
127 bool is_horizontal_; 116 bool is_horizontal_;
128 117
129 // Position of the divider. 118 // Position of the divider.
130 int divider_offset_; 119 int divider_offset_;
131 120
132 bool resize_leading_on_bounds_change_; 121 bool resize_leading_on_bounds_change_;
133 122
134 // Observer to notify about user initiated handle movements. Not own by us. 123 // Listener to notify about user initiated handle movements. Not owned.
135 Observer* observer_; 124 SingleSplitViewListener* listener_;
136 125
137 // The accessible name of this view. 126 // The accessible name of this view.
138 string16 accessible_name_; 127 string16 accessible_name_;
139 128
140 DISALLOW_COPY_AND_ASSIGN(SingleSplitView); 129 DISALLOW_COPY_AND_ASSIGN(SingleSplitView);
141 }; 130 };
142 131
143 } // namespace views 132 } // namespace views
144 133
145 #endif // VIEWS_CONTROLS_SINGLE_SPLIT_VIEW_H_ 134 #endif // VIEWS_CONTROLS_SINGLE_SPLIT_VIEW_H_
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view.cc ('k') | views/controls/single_split_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698