summaryrefslogtreecommitdiffstats
path: root/views
diff options
context:
space:
mode:
authortfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-25 18:42:25 +0000
committertfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-25 18:42:25 +0000
commit3d2fdb0f19bd403c6e2fec6edd802ed43f2479a5 (patch)
tree427cda8d2368934904f6d9c8f23621c02debe395 /views
parent9cf240d27e787dcfbd4d4310e4c782a8d0938739 (diff)
downloadchromium_src-3d2fdb0f19bd403c6e2fec6edd802ed43f2479a5.zip
chromium_src-3d2fdb0f19bd403c6e2fec6edd802ed43f2479a5.tar.gz
chromium_src-3d2fdb0f19bd403c6e2fec6edd802ed43f2479a5.tar.bz2
views: Factor out SingleSplitView Observer into SingleSplitViewListener.
R=sky@chromium.org Review URL: http://codereview.chromium.org/8351007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107168 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
-rw-r--r--views/controls/single_split_view.cc9
-rw-r--r--views/controls/single_split_view.h31
-rw-r--r--views/controls/single_split_view_listener.h29
-rw-r--r--views/controls/single_split_view_unittest.cc3
-rw-r--r--views/views.gyp1
5 files changed, 47 insertions, 26 deletions
diff --git a/views/controls/single_split_view.cc b/views/controls/single_split_view.cc
index d67e113..79df3fd 100644
--- a/views/controls/single_split_view.cc
+++ b/views/controls/single_split_view.cc
@@ -12,6 +12,7 @@
#include "ui/base/accessibility/accessible_view_state.h"
#include "ui/gfx/canvas.h"
#include "views/background.h"
+#include "views/controls/single_split_view_listener.h"
#if defined(TOOLKIT_USES_GTK)
#include "ui/gfx/gtk_util.h"
@@ -33,11 +34,11 @@ static const int kDividerSize = 4;
SingleSplitView::SingleSplitView(View* leading,
View* trailing,
Orientation orientation,
- Observer* observer)
+ SingleSplitViewListener* listener)
: is_horizontal_(orientation == HORIZONTAL_SPLIT),
divider_offset_(-1),
resize_leading_on_bounds_change_(true),
- observer_(observer) {
+ listener_(listener) {
AddChildView(leading);
AddChildView(trailing);
#if defined(OS_WIN)
@@ -186,7 +187,7 @@ bool SingleSplitView::OnMouseDragged(const MouseEvent& event) {
if (new_size != divider_offset_) {
set_divider_offset(new_size);
- if (!observer_ || observer_->SplitHandleMoved(this))
+ if (!listener_ || listener_->SplitHandleMoved(this))
Layout();
}
return true;
@@ -198,7 +199,7 @@ void SingleSplitView::OnMouseCaptureLost() {
if (drag_info_.initial_divider_offset != divider_offset_) {
set_divider_offset(drag_info_.initial_divider_offset);
- if (!observer_ || observer_->SplitHandleMoved(this))
+ if (!listener_ || listener_->SplitHandleMoved(this))
Layout();
}
}
diff --git a/views/controls/single_split_view.h b/views/controls/single_split_view.h
index 6d4fc6b..7cb8540 100644
--- a/views/controls/single_split_view.h
+++ b/views/controls/single_split_view.h
@@ -11,11 +11,13 @@
namespace views {
+class SingleSplitViewListener;
+
// SingleSplitView lays out two views next to each other, either horizontally
// or vertically. A splitter exists between the two views that the user can
// drag around to resize the views.
-// Observer's SplitHandleMoved notification helps to monitor user initiated
-// layout changes.
+// SingleSplitViewListener's SplitHandleMoved notification helps to monitor user
+// initiated layout changes.
class VIEWS_EXPORT SingleSplitView : public View {
public:
enum Orientation {
@@ -23,24 +25,12 @@ class VIEWS_EXPORT SingleSplitView : public View {
VERTICAL_SPLIT
};
- // Internal class name
static const char kViewClassName[];
- class Observer {
- public:
- // Invoked when split handle is moved by the user. |source|'s divider_offset
- // is already set to the new value, but Layout has not happened yet.
- // Returns false if the layout has been handled by the observer, returns
- // true if |source| should do it by itself.
- virtual bool SplitHandleMoved(SingleSplitView* source) = 0;
- protected:
- virtual ~Observer() {}
- };
-
SingleSplitView(View* leading,
View* trailing,
Orientation orientation,
- Observer* observer);
+ SingleSplitViewListener* listener);
virtual void Layout() OVERRIDE;
virtual std::string GetClassName() const OVERRIDE;
@@ -95,10 +85,9 @@ class VIEWS_EXPORT SingleSplitView : public View {
// Calculates the new |divider_offset| based on the changes of split view
// bounds.
- int CalculateDividerOffset(
- int divider_offset,
- const gfx::Rect& previous_bounds,
- const gfx::Rect& new_bounds) const;
+ int CalculateDividerOffset(int divider_offset,
+ const gfx::Rect& previous_bounds,
+ const gfx::Rect& new_bounds) const;
// Returns divider offset within primary axis size range for given split
// view |bounds|.
@@ -131,8 +120,8 @@ class VIEWS_EXPORT SingleSplitView : public View {
bool resize_leading_on_bounds_change_;
- // Observer to notify about user initiated handle movements. Not own by us.
- Observer* observer_;
+ // Listener to notify about user initiated handle movements. Not owned.
+ SingleSplitViewListener* listener_;
// The accessible name of this view.
string16 accessible_name_;
diff --git a/views/controls/single_split_view_listener.h b/views/controls/single_split_view_listener.h
new file mode 100644
index 0000000..6d38aad
--- /dev/null
+++ b/views/controls/single_split_view_listener.h
@@ -0,0 +1,29 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef VIEWS_CONTROLS_SINGLE_SPLIT_VIEW_LISTENER_H_
+#define VIEWS_CONTROLS_SINGLE_SPLIT_VIEW_LISTENER_H_
+#pragma once
+
+namespace views {
+
+class SingleSplitView;
+
+// An interface implemented by objects that want to be notified when the
+// splitter moves.
+class SingleSplitViewListener {
+ public:
+ // Invoked when split handle is moved by the user. |sender|'s divider_offset
+ // is already set to the new value, but Layout has not happened yet.
+ // Returns false if the layout has been handled by the listener, returns
+ // true if |sender| should do it by itself.
+ virtual bool SplitHandleMoved(SingleSplitView* sender) = 0;
+
+ protected:
+ virtual ~SingleSplitViewListener() {}
+};
+
+} // namespace views
+
+#endif // VIEWS_CONTROLS_SINGLE_SPLIT_VIEW_LISTENER_H_
diff --git a/views/controls/single_split_view_unittest.cc b/views/controls/single_split_view_unittest.cc
index c3375d8..28a9aa0 100644
--- a/views/controls/single_split_view_unittest.cc
+++ b/views/controls/single_split_view_unittest.cc
@@ -6,6 +6,7 @@
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "views/controls/single_split_view.h"
+#include "views/controls/single_split_view_listener.h"
using ::testing::_;
using ::testing::Return;
@@ -43,7 +44,7 @@ static void VerifySplitViewLayout(const views::SingleSplitView& split) {
}
}
-class MockObserver : public views::SingleSplitView::Observer {
+class MockObserver : public views::SingleSplitViewListener {
public:
MOCK_METHOD1(SplitHandleMoved, bool(views::SingleSplitView*));
};
diff --git a/views/views.gyp b/views/views.gyp
index 98f3d64..467d196 100644
--- a/views/views.gyp
+++ b/views/views.gyp
@@ -207,6 +207,7 @@
'controls/separator.h',
'controls/single_split_view.cc',
'controls/single_split_view.h',
+ 'controls/single_split_view_listener.h',
'controls/tabbed_pane/native_tabbed_pane_gtk.cc',
'controls/tabbed_pane/native_tabbed_pane_gtk.h',
'controls/tabbed_pane/native_tabbed_pane_win.cc',