148486893f46d2e12e926682a3ecb908716bc66c4Chris Lattner// Copyright (c) 2011 The Chromium Authors. All rights reserved.
29769ab22265b313171d201b5928688524a01bd87Misha Brukman// Use of this source code is governed by a BSD-style license that can be
36fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell// found in the LICENSE file.
46fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell
57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner#ifndef CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_NAME_FOLDER_CONTROLLER_H_
67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner#define CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_NAME_FOLDER_CONTROLLER_H_
79769ab22265b313171d201b5928688524a01bd87Misha Brukman
86fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell#import <Cocoa/Cocoa.h>
9febdf58538c2510ec1c24d3a856420792c53debeChris Lattner
10bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer#include "base/mac/scoped_nsobject.h"
1102dea8b39f3acad5de1df36273444d149145e7fcDan Gohman#include "base/memory/scoped_ptr.h"
12009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner
13009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattnerclass BookmarkModelObserverForCocoa;
14674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszakclass BookmarkNode;
15674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszakclass Profile;
16009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner
175a96f93573439be771ce9609fa2a5754c94485b6Chris Lattner// A controller for dialog to let the user create a new folder or
18255f89faee13dc491cb64fbeae3c763e7e2ea4e6Chandler Carruth// rename an existing folder.  Accessible from a context menu on a
190b8c9a80f20772c3793201ab5b251d3520b9cea3Chandler Carruth// bookmark button or the bookmark bar.
200b8c9a80f20772c3793201ab5b251d3520b9cea3Chandler Carruth@interface BookmarkNameFolderController : NSWindowController {
2140be1e85665d10f5444186f0e7106e368dd735b8Filip Pizlo @private
221f6efa3996dd1929fbc129203ce5009b620e6969Michael J. Spencer  IBOutlet NSTextField* nameField_;
23009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner  IBOutlet NSButton* okButton_;
24d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke
25d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke  NSWindow* parentWindow_;  // weak
26e6e8826870bee3facb04f950f0bd725f8a88623dBill Wendling  Profile* profile_;  // weak
27009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner
2812ddd409535b52a7fa5157ded9a4cedd161fedb6Benjamin Kramer  // Weak; owned by the model.  Can be NULL (see below).  Either node_
293821176b2eb9fe5e66929f3df6f204fa6cb2e4d6Chris Lattner  // is non-NULL (renaming a folder), or parent_ is non-NULL (adding a
30009505452b713ed2e3a8e99c5545a6e721c65495Chris Lattner  // new one).
3118961504fc2b299578dba817900a0696cf3ccc4dChris Lattner  const BookmarkNode* node_;
3217fcdd5e1b78b829068ca657c97357a39d6e768bChris Lattner  const BookmarkNode* parent_;
33a1456e1cb8ade1befa7fc9cdac8fd542862cbcd8Michael Gottesman  int newIndex_;
34a1456e1cb8ade1befa7fc9cdac8fd542862cbcd8Michael Gottesman
35a1456e1cb8ade1befa7fc9cdac8fd542862cbcd8Michael Gottesman  base::scoped_nsobject<NSString> initialName_;
36a1456e1cb8ade1befa7fc9cdac8fd542862cbcd8Michael Gottesman
37a1456e1cb8ade1befa7fc9cdac8fd542862cbcd8Michael Gottesman  // Ping me when things change out from under us.
380a0e68a7eac0513505aff3079e2d5d6864e51895Gabor Greif  scoped_ptr<BookmarkModelObserverForCocoa> observer_;
390e1a9f27bd6451897144f99ff2b2081986077896Michael Gottesman}
400e1a9f27bd6451897144f99ff2b2081986077896Michael Gottesman
410e1a9f27bd6451897144f99ff2b2081986077896Michael Gottesman// Use the 1st initializer for a "rename existing folder" request.
420e1a9f27bd6451897144f99ff2b2081986077896Michael Gottesman//
430e1a9f27bd6451897144f99ff2b2081986077896Michael Gottesman// Use the 2nd initializer for an "add folder" request.  If creating a
440e1a9f27bd6451897144f99ff2b2081986077896Michael Gottesman// new folder |parent| and |newIndex| specify where to put the new
450e1a9f27bd6451897144f99ff2b2081986077896Michael Gottesman// node.
461012919ed8b3e2cd4b421c104ce9d8f4e20ced9dGabor Greif- (id)initWithParentWindow:(NSWindow*)window
470a0e68a7eac0513505aff3079e2d5d6864e51895Gabor Greif                   profile:(Profile*)profile
487eef1800ea8745a814b86c8610086e9f16312dcaGabor Greif                      node:(const BookmarkNode*)node;
49c23b8719ef9d6b1220e854b37d40e9e1c48a82bcGabor Greif- (id)initWithParentWindow:(NSWindow*)window
50c23b8719ef9d6b1220e854b37d40e9e1c48a82bcGabor Greif                   profile:(Profile*)profile
51c23b8719ef9d6b1220e854b37d40e9e1c48a82bcGabor Greif                    parent:(const BookmarkNode*)parent
52f3841fcbd587c31aa9842b3f33bd57de40c9f443Gabor Greif                  newIndex:(int)newIndex;
530a0e68a7eac0513505aff3079e2d5d6864e51895Gabor Greif- (void)runAsModalSheet;
547309be6735666143bd9835b275dc8501617a2591Gabor Greif- (IBAction)cancel:(id)sender;
5518961504fc2b299578dba817900a0696cf3ccc4dChris Lattner- (IBAction)ok:(id)sender;
5618961504fc2b299578dba817900a0696cf3ccc4dChris Lattner@end
57a1456e1cb8ade1befa7fc9cdac8fd542862cbcd8Michael Gottesman
58a1456e1cb8ade1befa7fc9cdac8fd542862cbcd8Michael Gottesman@interface BookmarkNameFolderController(TestingAPI)
59bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer- (NSString*)folderName;
60bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer- (void)setFolderName:(NSString*)name;
61bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer- (NSButton*)okButton;
62bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer@end
63bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer
64bddcb9427cb36ac6609fef233eaac3c9b5e5a8f4Reid Spencer#endif  // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_NAME_FOLDER_CONTROLLER_H_
651f6efa3996dd1929fbc129203ce5009b620e6969Michael J. Spencer