1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 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 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Returns true if the tab at |index| is the active tab. The active tab is the 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // one whose content is shown. 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual bool IsActiveTab(int index) const = 0; 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns true if the selected index is selected. 344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsTabSelected(int index) const = 0; 354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns true if the selected index is pinned. 374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsTabPinned(int index) const = 0; 384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns true if the selected index is closeable. 404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsTabCloseable(int index) const = 0; 414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns true if the selected index is the new tab page. 434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsNewTabPage(int index) const = 0; 444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Select the tab at the specified index in the model. 464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void SelectTab(int index) = 0; 474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Extends the selection from the anchor to the specified index in the model. 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void ExtendSelectionTo(int index) = 0; 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Toggles the selection of the specified index in the model. 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void ToggleSelected(int index) = 0; 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Adds the selection the anchor to |index|. 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void AddSelectionFromAnchorTo(int index) = 0; 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Closes the tab at the specified index in the model. 584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void CloseTab(int index) = 0; 594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Shows a context menu for the tab at the specified point in screen coords. 61dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void ShowContextMenuForTab(BaseTab* tab, const gfx::Point& p) = 0; 624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Updates the loading animations of all the tabs. 644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void UpdateLoadingAnimations() = 0; 654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Returns true if the associated TabStrip's delegate supports tab moving or 674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // detaching. Used by the Frame to determine if dragging on the Tab 684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // itself should move the window in cases where there's only one 694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // non drag-able Tab. 704a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual int HasAvailableDragActions() const = 0; 714a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 724a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Performans a drop at the specified location. 734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void PerformDrop(bool drop_before, int index, const GURL& url) = 0; 744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 754a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Return true if this tab strip is compatible with the provided tab strip. 764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Compatible tab strips can transfer tabs during drag and drop. 774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsCompatibleWith(BaseTabStrip* other) const = 0; 784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Creates the new tab. 804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void CreateNewTab() = 0; 814a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 824a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 834a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif // CHROME_BROWSER_UI_VIEWS_TABS_TAB_STRIP_CONTROLLER_H_ 84