1bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file.
4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#ifndef CHROME_BROWSER_UI_COCOA_APPLESCRIPT_BOOKMARK_NODE_APPLESCRIPT_H_
621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#define CHROME_BROWSER_UI_COCOA_APPLESCRIPT_BOOKMARK_NODE_APPLESCRIPT_H_
7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#import <Cocoa/Cocoa.h>
9bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
1021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#import "chrome/browser/ui/cocoa/applescript/element_applescript.h"
11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
12bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass BookmarkModel;
13bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass BookmarkNode;
14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Contains all the elements that are common to both a bookmark folder and
16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// bookmark item.
17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen@interface BookmarkNodeAppleScript : ElementAppleScript {
18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen @protected
19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  const BookmarkNode* bookmarkNode_;  // weak.
20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Contains the temporary title when a scripter creates a new folder/item with
21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // title specified like
22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // |make new bookmark folder with properties {title:"foo"}|.
23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  NSString* tempTitle_;
24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Does not actually create a folder/item but just sets its ID, the folder is
27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// created in insertInBookmarksFolder: in the corresponding bookmarks folder.
28bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (id)init;
29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
30bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Does not make a folder/item but instead uses an existing one.
31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (id)initWithBookmarkNode:(const BookmarkNode*)aBookmarkNode;
32bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
33bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Assigns a node, sets its unique ID and also copies temporary values.
34bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)setBookmarkNode:(const BookmarkNode*)aBookmarkNode;
35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
36bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Get and Set title.
37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (NSString*)title;
38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (void)setTitle:(NSString*)aTitle;
39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
40201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch// Returns the index with respect to its parent bookmark folder.
41201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch- (NSNumber*)index;
42201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch
43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Returns the bookmark model of the browser, returns NULL if there is an error.
44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen- (BookmarkModel*)bookmarkModel;
45bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
46bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen@end
47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
4821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#endif  // CHROME_BROWSER_UI_COCOA_APPLESCRIPT_BOOKMARK_NODE_APPLESCRIPT_H_
49