1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#ifndef CHROME_BROWSER_UI_COCOA_BASE_VIEW_H_
621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#define CHROME_BROWSER_UI_COCOA_BASE_VIEW_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#import <Cocoa/Cocoa.h>
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_nsobject.h"
1272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/rect.h"
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A view that provides common functionality that many views will need:
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// - Automatic registration for mouse-moved events.
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// - Funneling of mouse and key events to two methods
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// - Coordinate conversion utilities
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@interface BaseView : NSView {
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch @private
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  NSTrackingArea *trackingArea_;
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  BOOL dragging_;
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_nsobject<NSEvent> pendingExitEvent_;
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch- (id)initWithFrame:(NSRect)frame;
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Override these methods in a subclass.
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch- (void)mouseEvent:(NSEvent *)theEvent;
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch- (void)keyEvent:(NSEvent *)theEvent;
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Useful rect conversions (doing coordinate flipping)
333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick- (gfx::Rect)flipNSRectToRect:(NSRect)rect;
343345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick- (NSRect)flipRectToNSRect:(gfx::Rect)rect;
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@end
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
38513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// A notification that a view may issue when it receives first responder status.
39513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// The name is |kViewDidBecomeFirstResponder|, the object is the view, and the
40513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// NSSelectionDirection is wrapped in an NSNumber under the key
41513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// |kSelectionDirection|.
42513209b27ff55e2841eac0e4120199c23acce758Ben Murdochextern NSString* kViewDidBecomeFirstResponder;
43513209b27ff55e2841eac0e4120199c23acce758Ben Murdochextern NSString* kSelectionDirection;
44513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
4521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#endif  // CHROME_BROWSER_UI_COCOA_BASE_VIEW_H_
46