Index: chrome/browser/ui/cocoa/tab_window_controller.h |
=================================================================== |
--- chrome/browser/ui/cocoa/tab_window_controller.h (revision 71805) |
+++ chrome/browser/ui/cocoa/tab_window_controller.h (working copy) |
@@ -1,180 +0,0 @@ |
-// Copyright (c) 2010 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_UI_COCOA_TAB_WINDOW_CONTROLLER_H_ |
-#define CHROME_BROWSER_UI_COCOA_TAB_WINDOW_CONTROLLER_H_ |
-#pragma once |
- |
-// A class acting as the Objective-C window controller for a window that has |
-// tabs which can be dragged around. Tabs can be re-arranged within the same |
-// window or dragged into other TabWindowController windows. This class doesn't |
-// know anything about the actual tab implementation or model, as that is fairly |
-// application-specific. It only provides an API to be overridden by subclasses |
-// to fill in the details. |
-// |
-// This assumes that there will be a view in the nib, connected to |
-// |tabContentArea_|, that indicates the content that it switched when switching |
-// between tabs. It needs to be a regular NSView, not something like an NSBox |
-// because the TabStripController makes certain assumptions about how it can |
-// swap out subviews. |
-// |
-// The tab strip can exist in different orientations and window locations, |
-// depending on the return value of -usesVerticalTabs. If NO (the default), |
-// the tab strip is placed outside the window's content area, overlapping the |
-// title area and window controls and will be stretched to fill the width |
-// of the window. If YES, the tab strip is vertical and lives within the |
-// window's content area. It will be stretched to fill the window's height. |
- |
-#import <Cocoa/Cocoa.h> |
- |
-#import "base/mac/cocoa_protocols.h" |
-#include "base/scoped_nsobject.h" |
- |
-@class FastResizeView; |
-@class FocusTracker; |
-@class TabStripView; |
-@class TabView; |
- |
-@interface TabWindowController : NSWindowController<NSWindowDelegate> { |
- @private |
- IBOutlet FastResizeView* tabContentArea_; |
- // TODO(pinkerton): Figure out a better way to initialize one or the other |
- // w/out needing both to be in the nib. |
- IBOutlet TabStripView* topTabStripView_; |
- IBOutlet TabStripView* sideTabStripView_; |
- NSWindow* overlayWindow_; // Used during dragging for window opacity tricks |
- NSView* cachedContentView_; // Used during dragging for identifying which |
- // view is the proper content area in the overlay |
- // (weak) |
- scoped_nsobject<FocusTracker> focusBeforeOverlay_; |
- scoped_nsobject<NSMutableSet> lockedTabs_; |
- BOOL closeDeferred_; // If YES, call performClose: in removeOverlay:. |
- // Difference between height of window content area and height of the |
- // |tabContentArea_|. Calculated when the window is loaded from the nib and |
- // cached in order to restore the delta when switching tab modes. |
- CGFloat contentAreaHeightDelta_; |
-} |
-@property(readonly, nonatomic) TabStripView* tabStripView; |
-@property(readonly, nonatomic) FastResizeView* tabContentArea; |
- |
-// Used during tab dragging to turn on/off the overlay window when a tab |
-// is torn off. If -deferPerformClose (below) is used, -removeOverlay will |
-// cause the controller to be autoreleased before returning. |
-- (void)showOverlay; |
-- (void)removeOverlay; |
-- (NSWindow*)overlayWindow; |
- |
-// Returns YES if it is ok to constrain the window's frame to fit the screen. |
-- (BOOL)shouldConstrainFrameRect; |
- |
-// A collection of methods, stubbed out in this base class, that provide |
-// the implementation of tab dragging based on whatever model is most |
-// appropriate. |
- |
-// Layout the tabs based on the current ordering of the model. |
-- (void)layoutTabs; |
- |
-// Creates a new window by pulling the given tab out and placing it in |
-// the new window. Returns the controller for the new window. The size of the |
-// new window will be the same size as this window. |
-- (TabWindowController*)detachTabToNewWindow:(TabView*)tabView; |
- |
-// Make room in the tab strip for |tab| at the given x coordinate. Will hide the |
-// new tab button while there's a placeholder. Subclasses need to call the |
-// superclass implementation. |
-- (void)insertPlaceholderForTab:(TabView*)tab |
- frame:(NSRect)frame |
- yStretchiness:(CGFloat)yStretchiness; |
- |
-// Removes the placeholder installed by |-insertPlaceholderForTab:atLocation:| |
-// and restores the new tab button. Subclasses need to call the superclass |
-// implementation. |
-- (void)removePlaceholder; |
- |
-// Returns whether one of the window's tabs is being dragged. |
-- (BOOL)isDragSessionActive; |
- |
-// The follow return YES if tab dragging/tab tearing (off the tab strip)/window |
-// movement is currently allowed. Any number of things can choose to disable it, |
-// such as pending animations. The default implementations always return YES. |
-// Subclasses should override as appropriate. |
-- (BOOL)tabDraggingAllowed; |
-- (BOOL)tabTearingAllowed; |
-- (BOOL)windowMovementAllowed; |
- |
-// Show or hide the new tab button. The button is hidden immediately, but |
-// waits until the next call to |-layoutTabs| to show it again. |
-- (void)showNewTabButton:(BOOL)show; |
- |
-// Returns whether or not |tab| can still be fully seen in the tab strip or if |
-// its current position would cause it be obscured by things such as the edge |
-// of the window or the window decorations. Returns YES only if the entire tab |
-// is visible. The default implementation always returns YES. |
-- (BOOL)isTabFullyVisible:(TabView*)tab; |
- |
-// Called to check if the receiver can receive dragged tabs from |
-// source. Return YES if so. The default implementation returns NO. |
-- (BOOL)canReceiveFrom:(TabWindowController*)source; |
- |
-// Move a given tab view to the location of the current placeholder. If there is |
-// no placeholder, it will go at the end. |controller| is the window controller |
-// of a tab being dropped from a different window. It will be nil if the drag is |
-// within the window, otherwise the tab is removed from that window before being |
-// placed into this one. The implementation will call |-removePlaceholder| since |
-// the drag is now complete. This also calls |-layoutTabs| internally so |
-// clients do not need to call it again. |
-- (void)moveTabView:(NSView*)view |
- fromController:(TabWindowController*)controller; |
- |
-// Number of tabs in the tab strip. Useful, for example, to know if we're |
-// dragging the only tab in the window. This includes pinned tabs (both live |
-// and not). |
-- (NSInteger)numberOfTabs; |
- |
-// YES if there are tabs in the tab strip which have content, allowing for |
-// the notion of tabs in the tab strip that are placeholders but currently have |
-// no content. |
-- (BOOL)hasLiveTabs; |
- |
-// Return the view of the selected tab. |
-- (NSView *)selectedTabView; |
- |
-// The title of the selected tab. |
-- (NSString*)selectedTabTitle; |
- |
-// Called to check whether or not this controller's window has a tab strip (YES |
-// if it does, NO otherwise). The default implementation returns YES. |
-- (BOOL)hasTabStrip; |
- |
-// Returns YES if the tab strip lives in the window content area alongside the |
-// tab contents. Returns NO if the tab strip is outside the window content |
-// area, along the top of the window. |
-- (BOOL)useVerticalTabs; |
- |
-// Get/set whether a particular tab is draggable between windows. |
-- (BOOL)isTabDraggable:(NSView*)tabView; |
-- (void)setTab:(NSView*)tabView isDraggable:(BOOL)draggable; |
- |
-// Tell the window that it needs to call performClose: as soon as the current |
-// drag is complete. This prevents a window (and its overlay) from going away |
-// during a drag. |
-- (void)deferPerformClose; |
- |
-@end |
- |
-@interface TabWindowController(ProtectedMethods) |
-// Tells the tab strip to forget about this tab in preparation for it being |
-// put into a different tab strip, such as during a drop on another window. |
-- (void)detachTabView:(NSView*)view; |
- |
-// Toggles from one display mode of the tab strip to another. Will automatically |
-// call -layoutSubviews to reposition other content. |
-- (void)toggleTabStripDisplayMode; |
- |
-// Called when the size of the window content area has changed. Override to |
-// position specific views. Base class implementation does nothing. |
-- (void)layoutSubviews; |
-@end |
- |
-#endif // CHROME_BROWSER_UI_COCOA_TAB_WINDOW_CONTROLLER_H_ |