| // 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_EXTENSIONS_BROWSER_ACTIONS_CONTAINER_VIEW_ |
| #define CHROME_BROWSER_UI_COCOA_EXTENSIONS_BROWSER_ACTIONS_CONTAINER_VIEW_ |
| |
| #import <Cocoa/Cocoa.h> |
| |
| // Sent when a user-initiated drag to resize the container is initiated. |
| extern NSString* const kBrowserActionGrippyDragStartedNotification; |
| |
| // Sent when a user-initiated drag is resizing the container. |
| extern NSString* const kBrowserActionGrippyDraggingNotification; |
| |
| // Sent when a user-initiated drag to resize the container has finished. |
| extern NSString* const kBrowserActionGrippyDragFinishedNotification; |
| |
| // The view that encompasses the Browser Action buttons in the toolbar and |
| // provides mechanisms for resizing. |
| @interface BrowserActionsContainerView : NSView { |
| @private |
| // The frame encompasing the grippy used for resizing the container. |
| NSRect grippyRect_; |
| |
| // The end frame of the animation currently running for this container or |
| // NSZeroRect if none is in progress. |
| NSRect animationEndFrame_; |
| |
| // Used to cache the original position within the container that initiated the |
| // drag. |
| NSPoint initialDragPoint_; |
| |
| // Used to cache the previous x-pos of the frame rect for resizing purposes. |
| CGFloat lastXPos_; |
| |
| // The maximum width of the container. |
| CGFloat maxWidth_; |
| |
| // Whether the container is currently being resized by the user. |
| BOOL userIsResizing_; |
| |
| // Whether the user can resize this at all. Resizing is disabled in incognito |
| // mode since any changes done in incognito mode are not saved anyway, and |
| // also to avoid a crash. http://crbug.com/42848 |
| BOOL resizable_; |
| |
| // Whether the user is allowed to drag the grippy to the left. NO if all |
| // extensions are shown or the location bar has hit its minimum width (handled |
| // within toolbar_controller.mm). |
| BOOL canDragLeft_; |
| |
| // Whether the user is allowed to drag the grippy to the right. NO if all |
| // extensions are hidden. |
| BOOL canDragRight_; |
| |
| // When the left grippy is pinned, resizing the window has no effect on its |
| // position. This prevents it from overlapping with other elements as well |
| // as letting the container expand when the window is going from super small |
| // to large. |
| BOOL grippyPinned_; |
| } |
| |
| // Resizes the container to the given ideal width, adjusting the |lastXPos_| so |
| // that |resizeDeltaX| is accurate. |
| - (void)resizeToWidth:(CGFloat)width animate:(BOOL)animate; |
| |
| // Returns the change in the x-pos of the frame rect during resizing. Meant to |
| // be queried when a NSViewFrameDidChangeNotification is fired to determine |
| // placement of surrounding elements. |
| - (CGFloat)resizeDeltaX; |
| |
| @property(nonatomic, readonly) NSRect animationEndFrame; |
| @property(nonatomic) BOOL canDragLeft; |
| @property(nonatomic) BOOL canDragRight; |
| @property(nonatomic) BOOL grippyPinned; |
| @property(nonatomic,getter=isResizable) BOOL resizable; |
| @property(nonatomic) CGFloat maxWidth; |
| @property(readonly, nonatomic) BOOL userIsResizing; |
| |
| @end |
| |
| #endif // CHROME_BROWSER_UI_COCOA_EXTENSIONS_BROWSER_ACTIONS_CONTAINER_VIEW_ |