autofill_notification_container.h revision 3240926e260ce088908e02ac07a6cf7b0c0cbf44
1// Copyright 2013 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_AUTOFILL_AUTOFILL_NOTIFICATION_CONTAINER_H_
6#define CHROME_BROWSER_UI_COCOA_AUTOFILL_AUTOFILL_NOTIFICATION_CONTAINER_H_
7
8#import <Cocoa/Cocoa.h>
9
10#include <vector>
11
12#include "base/mac/scoped_nsobject.h"
13#include "base/memory/scoped_ptr.h"
14#import "chrome/browser/ui/cocoa/autofill/autofill_layout.h"
15
16@class AutofillArrowView;
17
18namespace autofill {
19  class DialogNotification;
20  typedef std::vector<DialogNotification> DialogNotifications;
21  class AutofillDialogViewDelegate;
22}
23
24// Container for all notifications shown in requestAutocomplete dialog.
25@interface AutofillNotificationContainer : NSViewController<AutofillLayout> {
26 @private
27  // Array of all AutofillNotificationControllers.
28  base::scoped_nsobject<NSMutableArray> notificationControllers_;
29
30  // View that the arrow is anchored to. Weak.
31  NSView* anchorView_;
32
33  // The notification that the checkbox is associated with.
34  scoped_ptr<autofill::DialogNotification> checkboxNotification_;
35
36  // Main delegate for the dialog. Weak, owns dialog.
37  autofill::AutofillDialogViewDelegate* delegate_;
38}
39
40// Designated initializer.
41- (id)initWithDelegate:(autofill::AutofillDialogViewDelegate*)delegate;
42
43// Computes the views preferred size given a fixed width.
44- (NSSize)preferredSizeForWidth:(CGFloat)width;
45
46// Sets the notification contents.
47- (void)setNotifications:(const autofill::DialogNotifications&) notifications;
48
49// Sets a view that the arrow is anchored to - center of arrow will be aligned
50// with center of anchorView. (horizontally only).
51- (void)setAnchorView:(NSView*)anchorView;
52
53- (IBAction)checkboxClicked:(id)sender;
54
55@end
56
57#endif // CHROME_BROWSER_UI_COCOA_AUTOFILL_AUTOFILL_NOTIFICATION_CONTAINER_H_
58