1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file.
44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifndef CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_BAR_INSTRUCTIONS_VIEW_H_
6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_BAR_INSTRUCTIONS_VIEW_H_
74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once
84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "ui/base/accessibility/accessible_view_state.h"
104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/controls/link.h"
11dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "views/view.h"
124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochnamespace views {
144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass Label;
154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass Link;
164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}
174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// BookmarkBarInstructionsView is a child of the bookmark bar that is visible
194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// when the user has no bookmarks on the bookmark bar.
204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// BookmarkBarInstructionsView shows a description of the bookmarks bar along
214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// with a link to import bookmarks. Clicking the link results in notifying the
224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// delegate.
234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass BookmarkBarInstructionsView : public views::View,
244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                                    public views::LinkController {
254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public:
264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // The delegate is notified once the user clicks on the link to import
274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // bookmarks.
284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  class Delegate {
294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch   public:
304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    virtual void ShowImportDialog() = 0;
314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch   protected:
334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    virtual ~Delegate() {}
344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  };
354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  explicit BookmarkBarInstructionsView(Delegate* delegate);
374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // View overrides.
39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual gfx::Size GetPreferredSize() OVERRIDE;
40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void Layout() OVERRIDE;
41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void OnThemeChanged() OVERRIDE;
424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual void ViewHierarchyChanged(bool is_add,
434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                                    views::View* parent,
44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                                    views::View* child) OVERRIDE;
45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE;
464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // LinkController.
48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void LinkActivated(views::Link* source, int event_flags) OVERRIDE;
494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private:
514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  void UpdateColors();
524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  Delegate* delegate_;
544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  views::Label* instructions_;
564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  views::Link* import_link_;
574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // The baseline of the child views. This is -1 if none of the views support a
594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // baseline.
604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  int baseline_;
614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // Have the colors of the child views been updated? This is initially false
634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // and set to true once we have a valid ThemeProvider.
644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  bool updated_colors_;
654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(BookmarkBarInstructionsView);
674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
69dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif  // CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_BAR_INSTRUCTIONS_VIEW_H_
70