Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(269)

Side by Side Diff: chrome/browser/ui/cocoa/panels/panel_titlebar_view_cocoa.h

Issue 2263863002: Remove implementation of Panels on OSes other than ChromeOS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: CR feedback Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_UI_COCOA_PANELS_PANEL_TITLEBAR_VIEW_COCOA_H_
6 #define CHROME_BROWSER_UI_COCOA_PANELS_PANEL_TITLEBAR_VIEW_COCOA_H_
7
8 #import <Cocoa/Cocoa.h>
9
10 #import "chrome/browser/ui/cocoa/panels/mouse_drag_controller.h"
11 #import "ui/base/cocoa/tracking_area.h"
12
13 @class HoverImageButton;
14 @class MouseDragController;
15 @class PanelWindowControllerCocoa;
16
17 // A class that works as a custom titlebar for Panels. It is placed on top of
18 // the regular Cocoa titlebar. It's the place for the close button, page
19 // favicon, title label and a button to minimize/restore the panel.
20 // It also facilitates dragging and minimization of the panels, and changes
21 // color as 'new activity' indicator.
22 // One way to have custom titlebar would be to use NSBorderlessWindow,
23 // but it seems to affect too many other behaviors (for example, it draws shadow
24 // differently based on being key window) so it appears easier to simply overlay
25 // the standard titlebar.
26
27 // This view overlays the titlebar on top. It is used to intercept
28 // mouse input to prevent reordering of the other browser windows when clicking
29 // on the titlebar (to minimize or reorder) while in a docked collection.
30 @interface PanelTitlebarOverlayView : NSView {
31 @private
32 IBOutlet PanelWindowControllerCocoa* controller_;
33 BOOL disableReordering_;
34 }
35 @end
36
37 @interface RepaintAnimation : NSAnimation {
38 @private
39 NSView* targetView_;
40 }
41 - (id)initWithView:(NSView*)targetView duration:(double) duration;
42 - (void)setCurrentProgress:(NSAnimationProgress)progress;
43 @end
44
45 @interface PanelTitlebarViewCocoa : NSView
46 <NSAnimationDelegate,
47 MouseDragControllerClient> {
48 @private
49 IBOutlet PanelWindowControllerCocoa* controller_;
50 IBOutlet NSView* icon_;
51 IBOutlet NSTextField* title_;
52 IBOutlet HoverImageButton* minimizeButton_;
53 IBOutlet HoverImageButton* restoreButton_;
54 IBOutlet HoverImageButton* customCloseButton_;
55 // Transparent view on top of entire titlebar. It catches mouse events to
56 // prevent window activation by the system on mouseDown.
57 IBOutlet NSView* overlay_;
58 NSButton* closeButton_; // Created explicitly, not from NIB. Weak, destroyed
59 // when view is destroyed, as a subview.
60 ui::ScopedCrTrackingArea closeButtonTrackingArea_;
61 BOOL isDrawingAttention_;
62
63 // "Glint" animation is used in "Draw Attention" mode.
64 base::scoped_nsobject<RepaintAnimation> glintAnimation_;
65 base::scoped_nsobject<NSTimer> glintAnimationTimer_;
66 int glintCounter_;
67
68 // Drag support.
69 base::scoped_nsobject<MouseDragController> dragController_;
70 }
71
72 // Callbacks from Close, Minimize, and Restore buttons.
73 - (void)onCloseButtonClick:(id)sender;
74 - (void)onMinimizeButtonClick:(id)sender;
75 - (void)onRestoreButtonClick:(id)sender;
76
77 // Attaches this view to the controller_'s window as a titlebar.
78 - (void)attach;
79
80 - (void)setTitle:(NSString*)newTitle;
81 - (void)setIcon:(NSView*)newIcon;
82
83 - (NSView*)icon;
84
85 // Set the visibility of the minimize and restore buttons.
86 - (void)setMinimizeButtonVisibility:(BOOL)visible;
87 - (void)setRestoreButtonVisibility:(BOOL)visible;
88
89 // Should be called when size of the titlebar changes.
90 - (void)updateCustomButtonsLayout;
91 - (void)updateIconAndTitleLayout;
92
93 // Various events that we'll need to redraw our titlebar for.
94 - (void)didChangeFrame:(NSNotification*)notification;
95 - (void)didChangeMainWindow:(NSNotification*)notification;
96
97 // Draw Attention methods - change appearance of titlebar to attract user.
98 - (void)drawAttention;
99 - (void)stopDrawingAttention;
100 - (BOOL)isDrawingAttention;
101 - (void)startGlintAnimation;
102 - (void)restartGlintAnimation:(NSTimer*)timer;
103 - (void)stopGlintAnimation;
104
105 @end // @interface PanelTitlebarView
106
107 // Methods which are either only for testing, or only public for testing.
108 @interface PanelTitlebarViewCocoa(TestingAPI)
109
110 - (PanelWindowControllerCocoa*)controller;
111
112 - (NSTextField*)title;
113 - (NSButton*)closeButton;
114 - (NSButton*)minimizeButton;
115 - (NSButton*)restoreButton;
116
117 // Simulates click on a close button. Used to test panel closing.
118 - (void)simulateCloseButtonClick;
119
120 // NativePanelTesting support.
121 // |mouseLocation| is in Cocoa's screen coordinates.
122 - (void)pressLeftMouseButtonTitlebar:(NSPoint)mouseLocation
123 modifiers:(int)modifierFlags;
124 - (void)releaseLeftMouseButtonTitlebar:(int)modifierFlags;
125 - (void)dragTitlebar:(NSPoint)mouseLocation;
126 - (void)cancelDragTitlebar;
127 - (void)finishDragTitlebar;
128
129 @end // @interface PanelTitlebarViewCocoa(TestingAPI)
130
131 #endif // CHROME_BROWSER_UI_COCOA_PANELS_PANEL_TITLEBAR_VIEW_COCOA_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698