summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/tabs/tab.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/views/tabs/tab.h')
-rw-r--r--chrome/browser/views/tabs/tab.h125
1 files changed, 125 insertions, 0 deletions
diff --git a/chrome/browser/views/tabs/tab.h b/chrome/browser/views/tabs/tab.h
new file mode 100644
index 0000000..753e1a9
--- /dev/null
+++ b/chrome/browser/views/tabs/tab.h
@@ -0,0 +1,125 @@
+// Copyright (c) 2006-2008 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 CHROME_BROWSER_VIEWS_TABS_TAB_H_
+#define CHROME_BROWSER_VIEWS_TABS_TAB_H_
+
+#include "chrome/browser/tabs/tab_strip_model.h"
+#include "chrome/browser/views/tabs/tab_renderer.h"
+#include "chrome/views/base_button.h"
+
+namespace gfx {
+class Path;
+class Point;
+}
+class TabContents;
+class Profile;
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Tab
+//
+// A subclass of TabRenderer that represents an individual Tab in a TabStrip.
+//
+///////////////////////////////////////////////////////////////////////////////
+class Tab : public TabRenderer,
+ public ChromeViews::ContextMenuController,
+ public ChromeViews::BaseButton::ButtonListener {
+ public:
+ static const std::string kTabClassName;
+
+ // An interface implemented by an object that can help this Tab complete
+ // various actions. The index parameter is the index of this Tab in the
+ // TabRenderer::Model.
+ class TabDelegate {
+ public:
+ // Returns true if the specified Tab is selected.
+ virtual bool IsTabSelected(const Tab* tab) const = 0;
+
+ // Selects the specified Tab.
+ virtual void SelectTab(Tab* tab) = 0;
+
+ // Closes the specified Tab.
+ virtual void CloseTab(Tab* tab) = 0;
+
+ // Returns true if the specified command is enabled for the specified Tab.
+ virtual bool IsCommandEnabledForTab(
+ TabStripModel::ContextMenuCommand command_id, const Tab* tab) const = 0;
+
+ // Executes the specified command for the specified Tab.
+ virtual void ExecuteCommandForTab(
+ TabStripModel::ContextMenuCommand command_id, Tab* tab) = 0;
+
+ // Starts/Stops highlighting the tabs that will be affected by the
+ // specified command for the specified Tab.
+ virtual void StartHighlightTabsForCommand(
+ TabStripModel::ContextMenuCommand command_id, Tab* tab) = 0;
+ virtual void StopHighlightTabsForCommand(
+ TabStripModel::ContextMenuCommand command_id, Tab* tab) = 0;
+ virtual void StopAllHighlighting() = 0;
+
+ // Potentially starts a drag for the specified Tab.
+ virtual void MaybeStartDrag(Tab* tab,
+ const ChromeViews::MouseEvent& event) = 0;
+
+ // Continues dragging a Tab.
+ virtual void ContinueDrag(const ChromeViews::MouseEvent& event) = 0;
+
+ // Ends dragging a Tab. |canceled| is true if the drag was aborted in a way
+ // other than the user releasing the mouse.
+ virtual void EndDrag(bool canceled) = 0;
+ };
+
+ explicit Tab(TabDelegate* delegate);
+ virtual ~Tab();
+
+ // Access the delegate.
+ TabDelegate* delegate() const { return delegate_; }
+
+ // Used to set/check whether this Tab is being animated closed.
+ void set_closing(bool closing) { closing_ = closing; }
+ bool closing() const { return closing_; }
+
+ // TabRenderer overrides:
+ virtual bool IsSelected() const;
+
+ // ChromeViews::View overrides:
+ virtual bool HitTest(const CPoint &l) const;
+ private:
+ // ChromeViews::View overrides:
+ virtual bool OnMousePressed(const ChromeViews::MouseEvent& event);
+ virtual bool OnMouseDragged(const ChromeViews::MouseEvent& event);
+ virtual void OnMouseReleased(const ChromeViews::MouseEvent& event,
+ bool canceled);
+ virtual bool GetTooltipText(int x, int y, std::wstring* tooltip);
+ virtual bool GetTooltipTextOrigin(int x, int y, CPoint* origin);
+ virtual std::string GetClassName() const { return kTabClassName; }
+ virtual bool GetAccessibleRole(VARIANT* role);
+ virtual bool GetAccessibleName(std::wstring* name);
+
+ // ChromeViews::ContextMenuController overrides:
+ virtual void ShowContextMenu(ChromeViews::View* source,
+ int x,
+ int y,
+ bool is_mouse_gesture);
+
+ // ChromeViews::BaseButton::ButtonListener overrides:
+ virtual void ButtonPressed(ChromeViews::BaseButton* sender);
+
+ // Creates a path that contains the clickable region of the tab's visual
+ // representation. Used by GetViewForPoint for hit-testing.
+ void MakePathForTab(gfx::Path* path) const;
+
+ // An instance of a delegate object that can perform various actions based on
+ // user gestures.
+ TabDelegate* delegate_;
+
+ // True if the tab is being animated closed.
+ bool closing_;
+
+ DISALLOW_COPY_AND_ASSIGN(Tab);
+};
+
+#endif // CHROME_BROWSER_VIEWS_TABS_TAB_H_
+