// Copyright 2018 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 ASH_SHELF_WINDOW_PREVIEW_H_
#define ASH_SHELF_WINDOW_PREVIEW_H_

#include "ui/views/controls/button/button.h"
#include "ui/views/view.h"

namespace aura {
class Window;
}

namespace views {
class ImageButton;
class Label;
}  // namespace views

namespace ash {

namespace wm {
class WindowPreviewView;
}

// A view used by the shelf which shows a mirror view of the the window
// associated with the window of the shelf icon where the mouse is hovered over.
// The view is also contains a button which closes the window if clicked. Other
// click events will activate the window and dismiss the bubble which holds this
// view.
class WindowPreview : public views::View, public views::ButtonListener {
 public:
  class Delegate {
   public:
    // Notify the delegate that the preview has closed.
    virtual void OnPreviewDismissed(WindowPreview* preview) = 0;

    // Notify the delegate that the preview has been activated.
    virtual void OnPreviewActivated(WindowPreview* preview) = 0;

   protected:
    virtual ~Delegate() {}
  };

  WindowPreview(aura::Window* window,
                Delegate* delegate,
                const ui::NativeTheme* theme);
  ~WindowPreview() override;

  // views::View:
  gfx::Size CalculatePreferredSize() const override;
  void Layout() override;
  bool OnMousePressed(const ui::MouseEvent& event) override;

  // views::ButtonListener:
  void ButtonPressed(views::Button* sender, const ui::Event& event) override;

 private:
  void SetStyling(const ui::NativeTheme* theme);

  // Child views.
  views::ImageButton* close_button_ = nullptr;
  views::Label* title_ = nullptr;
  wm::WindowPreviewView* preview_view_ = nullptr;

  // Unowned pointer to the delegate. The delegate should outlive this instance.
  Delegate* delegate_;

  DISALLOW_COPY_AND_ASSIGN(WindowPreview);
};

}  // namespace ash

#endif  // ASH_SHELF_WINDOW_PREVIEW_H_
