1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file.
4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef CHROME_BROWSER_UI_COCOA_AUTOFILL_AUTOFILL_NOTIFICATION_CONTAINER_H_
6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define CHROME_BROWSER_UI_COCOA_AUTOFILL_AUTOFILL_NOTIFICATION_CONTAINER_H_
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#import <Cocoa/Cocoa.h>
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <vector>
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/mac/scoped_nsobject.h"
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/memory/scoped_ptr.h"
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#import "chrome/browser/ui/cocoa/autofill/autofill_layout.h"
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch@class AutofillArrowView;
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace autofill {
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  class DialogNotification;
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  typedef std::vector<DialogNotification> DialogNotifications;
213240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  class AutofillDialogViewDelegate;
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Container for all notifications shown in requestAutocomplete dialog.
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch@interface AutofillNotificationContainer : NSViewController<AutofillLayout> {
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch @private
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Array of all AutofillNotificationControllers.
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  base::scoped_nsobject<NSMutableArray> notificationControllers_;
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // View that the arrow is anchored to. Weak.
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  NSView* anchorView_;
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // The notification that the checkbox is associated with.
34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  scoped_ptr<autofill::DialogNotification> checkboxNotification_;
35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
363240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Main delegate for the dialog. Weak, owns dialog.
373240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  autofill::AutofillDialogViewDelegate* delegate_;
38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Designated initializer.
413240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch- (id)initWithDelegate:(autofill::AutofillDialogViewDelegate*)delegate;
42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Computes the views preferred size given a fixed width.
44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch- (NSSize)preferredSizeForWidth:(CGFloat)width;
45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Sets the notification contents.
47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch- (void)setNotifications:(const autofill::DialogNotifications&) notifications;
48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Sets a view that the arrow is anchored to - center of arrow will be aligned
50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// with center of anchorView. (horizontally only).
51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch- (void)setAnchorView:(NSView*)anchorView;
52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch- (IBAction)checkboxClicked:(id)sender;
54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch@end
56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
573240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#endif // CHROME_BROWSER_UI_COCOA_AUTOFILL_AUTOFILL_NOTIFICATION_CONTAINER_H_
58