// Copyright 2015 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 UI_TOUCH_SELECTION_TOUCH_SELECTION_MENU_RUNNER_H_
#define UI_TOUCH_SELECTION_TOUCH_SELECTION_MENU_RUNNER_H_

#include "base/macros.h"
#include "ui/touch_selection/ui_touch_selection_export.h"

namespace aura {
class Window;
}

namespace gfx {
class Rect;
class Size;
}

namespace ui {

// Client interface for TouchSelectionMenuRunner.
class UI_TOUCH_SELECTION_EXPORT TouchSelectionMenuClient {
 public:
  virtual ~TouchSelectionMenuClient() {}

  virtual bool IsCommandIdEnabled(int command_id) const = 0;
  virtual void ExecuteCommand(int command_id, int event_flags) = 0;

  // Called when the quick menu needs to run a context menu. Depending on the
  // implementation, this may run the context menu synchronously, or request the
  // menu to show up in which case the menu will run asynchronously at a later
  // time.
  virtual void RunContextMenu() = 0;
};

// An interface for the singleton object responsible for running touch selection
// quick menu.
class UI_TOUCH_SELECTION_EXPORT TouchSelectionMenuRunner {
 public:
  virtual ~TouchSelectionMenuRunner();

  static TouchSelectionMenuRunner* GetInstance();

  // Checks whether there is any command available to show in the menu.
  virtual bool IsMenuAvailable(
      const TouchSelectionMenuClient* client) const = 0;

  // Creates and displays the quick menu, if there is any command available.
  // |anchor_rect| is in screen coordinates.
  virtual void OpenMenu(TouchSelectionMenuClient* client,
                        const gfx::Rect& anchor_rect,
                        const gfx::Size& handle_image_size,
                        aura::Window* context) = 0;

  virtual void CloseMenu() = 0;

  virtual bool IsRunning() const = 0;

 protected:
  TouchSelectionMenuRunner();

 private:
  DISALLOW_COPY_AND_ASSIGN(TouchSelectionMenuRunner);
};

}  // namespace ui

#endif  // UI_TOUCH_SELECTION_TOUCH_SELECTION_MENU_RUNNER_H_
