// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ATHENA_WM_TITLE_DRAG_CONTROLLER_H_
#define ATHENA_WM_TITLE_DRAG_CONTROLLER_H_

#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "ui/aura/window_tracker.h"
#include "ui/events/event_handler.h"
#include "ui/gfx/geometry/point.h"

namespace aura {
class Window;
}

namespace wm {
class Shadow;
}

namespace athena {

class TitleDragControllerDelegate {
 public:
  virtual ~TitleDragControllerDelegate() {}

  // Returns the window behind |window|. The returned window is the one that
  // would be revealed while |window|'s title is dragged.
  virtual aura::Window* GetWindowBehind(aura::Window* window) = 0;

  // Notifies the delegate during various stages of the drag.
  virtual void OnTitleDragStarted(aura::Window* window) = 0;
  virtual void OnTitleDragCompleted(aura::Window* window) = 0;
  virtual void OnTitleDragCanceled(aura::Window* window) = 0;
};

// Responsible for allowing dragging a window by its title bar.
class TitleDragController : public ui::EventHandler {
 public:
  TitleDragController(aura::Window* container,
                      TitleDragControllerDelegate* delegate);
  ~TitleDragController() override;

 private:
  void EndTransition(aura::Window* window, bool complete);
  void OnTransitionEnd(aura::Window* window, bool complete);

  // ui::EventHandler:
  void OnGestureEvent(ui::GestureEvent* gesture) override;

  aura::Window* container_;
  TitleDragControllerDelegate* delegate_;
  gfx::Point drag_start_location_;
  scoped_ptr<wm::Shadow> shadow_;
  aura::WindowTracker tracker_;

  base::WeakPtrFactory<TitleDragController> weak_ptr_;

  DISALLOW_COPY_AND_ASSIGN(TitleDragController);
};

}  // namespace athena

#endif  // ATHENA_WM_TITLE_DRAG_CONTROLLER_H_
