Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / ui / app_list / cocoa / apps_collection_view_drag_manager.h
blobe8b5caf0079dc25fe4ecc7bcfc6933171d90ef6c
1 // Copyright 2013 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.
5 #ifndef UI_APP_LIST_COCOA_APPS_COLLECTION_VIEW_DRAG_MANAGER_H_
6 #define UI_APP_LIST_COCOA_APPS_COLLECTION_VIEW_DRAG_MANAGER_H_
8 #import <Cocoa/Cocoa.h>
10 #include "base/mac/scoped_nsobject.h"
11 #include "ui/app_list/app_list_export.h"
13 @class AppsGridController;
14 @class ItemDragController;
16 // Manager for the state associated with dragging an NSCollectionViewItem in the
17 // AppsGridController. It is also a factory for the NSCollectionView pages in
18 // the grid, allowing items to be dragged between pages.
19 APP_LIST_EXPORT
20 @interface AppsCollectionViewDragManager : NSObject {
21 @private
22 base::scoped_nsobject<ItemDragController> itemDragController_;
23 AppsGridController* gridController_; // Weak. Owns us.
25 NSSize cellSize_;
26 size_t rows_;
27 size_t columns_;
29 // Index of the last known position of the item currently being dragged.
30 size_t itemDragIndex_;
32 // Model index of the item being dragged, or NSNotFound if nothing was hit on
33 // the last mouseDown.
34 size_t itemHitIndex_;
36 // Location in the window of the last mouseDown event.
37 NSPoint mouseDownLocation_;
39 // Whether the current mouse action has converted into an item drag.
40 BOOL dragging_;
43 - (id)initWithCellSize:(NSSize)cellSize
44 rows:(size_t)rows
45 columns:(size_t)columns
46 gridController:(AppsGridController*)gridController;
48 // Make an empty NSCollectionView with draggable items in the given |pageFrame|.
49 - (NSCollectionView*)makePageWithFrame:(NSRect)pageFrame;
51 - (void)cancelDrag;
53 @end
55 @interface AppsCollectionViewDragManager (TestingAPI)
57 - (void)onMouseDownInPage:(NSCollectionView*)page
58 withEvent:(NSEvent*)theEvent;
59 - (void)onMouseDragged:(NSEvent*)theEvent;
60 - (void)onMouseUp:(NSEvent*)theEvent;
62 @end
64 #endif // UI_APP_LIST_COCOA_APPS_COLLECTION_VIEW_DRAG_MANAGER_H_