summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--views/controls/menu/menu_wrapper.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/views/controls/menu/menu_wrapper.h b/views/controls/menu/menu_wrapper.h
new file mode 100644
index 0000000..f418703
--- /dev/null
+++ b/views/controls/menu/menu_wrapper.h
@@ -0,0 +1,44 @@
+// Copyright (c) 2009 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_MENU_MENU_WRAPPER_H_
+#define VIEWS_CONTROLS_MENU_MENU_WRAPPER_H_
+
+#include "base/gfx/native_widget_types.h"
+
+namespace gfx {
+class Point;
+}
+
+namespace views {
+
+class Menu2;
+
+// An interface that wraps an object that implements a menu.
+class MenuWrapper {
+ public:
+ virtual ~MenuWrapper() {}
+
+ // Runs the menu at the specified point. This may or may not block depending
+ // on the platform.
+ virtual void RunMenuAt(const gfx::Point& point, int alignment) = 0;
+
+ // Called when the model supplying data to this menu has changed, and the menu
+ // must be rebuilt.
+ virtual void Rebuild() = 0;
+
+ // Called when the states of the items in the menu must be updated from the
+ // model.
+ virtual void UpdateStates() = 0;
+
+ // Retrieve a native menu handle.
+ virtual gfx::NativeMenu GetNativeMenu() const = 0;
+
+ // Creates the appropriate instance of this wrapper for the current platform.
+ static MenuWrapper* CreateWrapper(Menu2* menu);
+};
+
+} // namespace views
+
+#endif // VIEWS_CONTROLS_MENU_MENU_WRAPPER_H_