• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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_TABLE_MODEL_ARRAY_CONTROLLER_H_
6 #define CHROME_BROWSER_UI_COCOA_TABLE_MODEL_ARRAY_CONTROLLER_H_
7 #pragma once
8 
9 #import <Cocoa/Cocoa.h>
10 
11 #import "base/mac/cocoa_protocols.h"
12 #include "base/memory/scoped_nsobject.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "ui/base/models/table_model_observer.h"
15 
16 class RemoveRowsObserverBridge;
17 class RemoveRowsTableModel;
18 @class TableModelArrayController;
19 
20 // This class allows you to use a RemoveRowsTableModel with Cocoa bindings.
21 // It maps the CanRemoveRows method to its canRemove property, and exposes
22 // RemoveRows and RemoveAll as actions (remove: and removeAll:).
23 // If the table model has groups, these are inserted into the list of arranged
24 // objects as group rows.
25 // The designated initializer is the same as for NSArrayController,
26 // initWithContent:, but usually this class is instantiated from a nib file.
27 // Clicking on a group row selects all rows belonging to that group, like it
28 // does in a Windows table_view.
29 // In order to show group rows, this class must be the delegate of the
30 // NSTableView.
31 @interface TableModelArrayController : NSArrayController<NSTableViewDelegate> {
32  @private
33   RemoveRowsTableModel* model_; // weak
34   scoped_ptr<RemoveRowsObserverBridge> tableObserver_;
35   scoped_nsobject<NSDictionary> columns_;
36   scoped_nsobject<NSString> groupTitle_;
37 }
38 
39 // Bind this controller to the given model.
40 // |columns| is a dictionary mapping table column bindings to NSNumbers
41 // containing the column identifier in the TableModel.
42 // |groupTitleColumn| is the column in the table that should display the group
43 // title for a group row, usually the first column. If the model doesn't have
44 // groups, it can be nil.
45 - (void)bindToTableModel:(RemoveRowsTableModel*)model
46              withColumns:(NSDictionary*)columns
47         groupTitleColumn:(NSString*)groupTitleColumn;
48 
49 - (IBAction)removeAll:(id)sender;
50 
51 @end
52 
53 #endif  // CHROME_BROWSER_UI_COCOA_TABLE_MODEL_ARRAY_CONTROLLER_H_
54 
55