drag_drop_delegate.h revision effb81e5f8246d0db0270817048dc992db66e9fb
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#ifndef UI_WM_PUBLIC_DRAG_DROP_DELEGATE_H_ 6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define UI_WM_PUBLIC_DRAG_DROP_DELEGATE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/aura_export.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DropTargetEvent; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Window; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace client { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Delegate interface for drag and drop actions on aura::Window. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AURA_EXPORT DragDropDelegate { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // OnDragEntered is invoked when the mouse enters this window during a drag & 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // drop session. This is immediately followed by an invocation of 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // OnDragUpdated, and eventually one of OnDragExited or OnPerformDrop. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnDragEntered(const ui::DropTargetEvent& event) = 0; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoked during a drag and drop session while the mouse is over the window. 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This should return a bitmask of the DragDropTypes::DragOperation supported 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // based on the location of the event. Return 0 to indicate the drop should 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // not be accepted. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int OnDragUpdated(const ui::DropTargetEvent& event) = 0; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoked during a drag and drop session when the mouse exits the window, or 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // when the drag session was canceled and the mouse was over the window. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnDragExited() = 0; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoked during a drag and drop session when OnDragUpdated returns a valid 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // operation and the user release the mouse. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int OnPerformDrop(const ui::DropTargetEvent& event) = 0; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~DragDropDelegate() {} 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AURA_EXPORT void SetDragDropDelegate(Window* window, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DragDropDelegate* delegate); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AURA_EXPORT DragDropDelegate* GetDragDropDelegate(Window* window); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace client 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace aura 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif // UI_WM_PUBLIC_DRAG_DROP_DELEGATE_H_ 52