tab_strip_controller.h revision dc0f95d653279beabeb9817299e2902918ba123e
14a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file. 44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 54a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_TABS_TAB_STRIP_CONTROLLER_H_ 64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_TABS_TAB_STRIP_CONTROLLER_H_ 74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once 84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass BaseTab; 104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass BaseTabStrip; 114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass GURL; 124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochnamespace gfx { 144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass Point; 154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Model/Controller for the TabStrip. 184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// NOTE: All indices used by this class are in model coordinates. 194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass TabStripController { 204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual ~TabStripController() {} 224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns the number of tabs in the model. 244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual int GetCount() const = 0; 254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns true if |index| is a valid model index. 274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsValidIndex(int index) const = 0; 284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns true if the selected index is selected. 304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsTabSelected(int index) const = 0; 314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns true if the selected index is pinned. 334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsTabPinned(int index) const = 0; 344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns true if the selected index is closeable. 364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsTabCloseable(int index) const = 0; 374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns true if the selected index is the new tab page. 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsNewTabPage(int index) const = 0; 404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Select the tab at the specified index in the model. 424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void SelectTab(int index) = 0; 434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Closes the tab at the specified index in the model. 454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void CloseTab(int index) = 0; 464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Shows a context menu for the tab at the specified point in screen coords. 48dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void ShowContextMenuForTab(BaseTab* tab, const gfx::Point& p) = 0; 494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Updates the loading animations of all the tabs. 514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void UpdateLoadingAnimations() = 0; 524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns true if the associated TabStrip's delegate supports tab moving or 544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // detaching. Used by the Frame to determine if dragging on the Tab 554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // itself should move the window in cases where there's only one 564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // non drag-able Tab. 574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual int HasAvailableDragActions() const = 0; 584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Performans a drop at the specified location. 604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void PerformDrop(bool drop_before, int index, const GURL& url) = 0; 614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Return true if this tab strip is compatible with the provided tab strip. 634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Compatible tab strips can transfer tabs during drag and drop. 644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsCompatibleWith(BaseTabStrip* other) const = 0; 654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Creates the new tab. 674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void CreateNewTab() = 0; 684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif // CHROME_BROWSER_UI_VIEWS_TABS_TAB_STRIP_CONTROLLER_H_ 71