17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// found in the LICENSE file.
47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#ifndef UI_APP_LIST_COCOA_APPS_SEARCH_RESULTS_CONTROLLER_H_
67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#define UI_APP_LIST_COCOA_APPS_SEARCH_RESULTS_CONTROLLER_H_
77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#import <Cocoa/Cocoa.h>
97d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/mac/scoped_nsobject.h"
117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "ui/app_list/app_list_export.h"
133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ui/app_list/app_list_model.h"
147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#import "ui/base/cocoa/tracking_area.h"
157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace app_list {
177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class AppsSearchResultsModelBridge;
187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class SearchResult;
197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)@class AppsSearchResultsCell;
227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)@protocol AppsSearchResultsDelegate<NSObject>
247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)- (app_list::AppListModel*)appListModel;
267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)- (void)openResult:(app_list::SearchResult*)result;
273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)- (void)redoSearch;
287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)@end
307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Controller for the search results displayed when a user types in the app list
327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// search box. Results display in an NSTableView with a single column. Each row
337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// has an icon on the left, and one or two lines of formatted text describing
347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// the result.
357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)APP_LIST_EXPORT
367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)@interface AppsSearchResultsController
377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    : NSViewController<NSTableViewDelegate, NSTableViewDataSource> {
387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) @private
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  base::scoped_nsobject<NSTableView> tableView_;
407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ui::ScopedCrTrackingArea trackingArea_;
417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  NSPoint lastMouseDownInView_;
427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  NSInteger hoveredRowIndex_;
437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  scoped_ptr<app_list::AppsSearchResultsModelBridge> bridge_;
443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  NSObject<AppsSearchResultsDelegate>* delegate_;  // Weak. Owns us.
457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)@property(assign, nonatomic) NSObject<AppsSearchResultsDelegate>* delegate;
483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)@property(readonly, nonatomic) app_list::AppListModel::SearchResults* results;
493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)@property(readonly, nonatomic) NSTableView* tableView;
507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)- (id)initWithAppsSearchResultsFrameSize:(NSSize)size;
527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Returns true when handling Enter, to activate the highlighted search result,
547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// or up/down to navigate results.
557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)- (BOOL)handleCommandBySelector:(SEL)command;
567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)@end
587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif  // UI_APP_LIST_COCOA_APPS_SEARCH_RESULTS_CONTROLLER_H_
60