| Index: chrome/browser/ui/views/sidebar/sidebar_base_tab.h
 | 
| ===================================================================
 | 
| --- chrome/browser/ui/views/sidebar/sidebar_base_tab.h	(revision 0)
 | 
| +++ chrome/browser/ui/views/sidebar/sidebar_base_tab.h	(revision 0)
 | 
| @@ -0,0 +1,136 @@
 | 
| +// Copyright (c) 2010 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 CHROME_BROWSER_UI_VIEWS_SIDEBAR_SIDEBAR_BASE_TAB_H_
 | 
| +#define CHROME_BROWSER_UI_VIEWS_SIDEBAR_SIDEBAR_BASE_TAB_H_
 | 
| +#pragma once
 | 
| +
 | 
| +#include "base/compiler_specific.h"
 | 
| +#include "base/ref_counted.h"
 | 
| +#include "base/scoped_ptr.h"
 | 
| +#include "chrome/browser/ui/views/sidebar/sidebar_tab_renderer_data.h"
 | 
| +#include "ui/base/animation/animation_container.h"
 | 
| +#include "ui/base/animation/animation_delegate.h"
 | 
| +#include "views/view.h"
 | 
| +
 | 
| +namespace ui {
 | 
| +class Animation;
 | 
| +class SlideAnimation;
 | 
| +class ThrobAnimation;
 | 
| +}  // namespace ui
 | 
| +
 | 
| +class SidebarTabController;
 | 
| +
 | 
| +// Generic sidebar tab view. It caches all data necessary for tab rendering,
 | 
| +// handles painting and animation, receives user interaction events and forwards
 | 
| +// them to the controller.
 | 
| +// SidebarBaseTab does not make state transition and layout decisions,
 | 
| +// it should be done in the concrete child classes.
 | 
| +class SidebarBaseTab : public views::View,
 | 
| +                       private ui::AnimationDelegate {
 | 
| + public:
 | 
| +  explicit SidebarBaseTab(SidebarTabController* controller);
 | 
| +  virtual ~SidebarBaseTab();
 | 
| +
 | 
| +  // views::View overrides:
 | 
| +  virtual void OnMouseEntered(const views::MouseEvent& event) OVERRIDE;
 | 
| +  virtual void OnMouseExited(const views::MouseEvent& event) OVERRIDE;
 | 
| +  virtual bool OnMousePressed(const views::MouseEvent& event) OVERRIDE;
 | 
| +  virtual bool GetTooltipText(const gfx::Point& p,
 | 
| +                              std::wstring* tooltip) OVERRIDE;
 | 
| +  virtual AccessibilityTypes::Role GetAccessibleRole() OVERRIDE;
 | 
| +
 | 
| +  // Sets the data this tabs displays. Invokes DataChanged for subclasses to
 | 
| +  // update themselves appropriately.
 | 
| +  void SetData(const SidebarTabRendererData& data);
 | 
| +  const SidebarTabRendererData& data() const { return data_; }
 | 
| +
 | 
| +  // Sets the network state. Returns true if the network state was changed.
 | 
| +  bool UpdateLoadingAnimation(SidebarTabRendererData::NetworkState state);
 | 
| +
 | 
| +  // Starts/Stops a pulse animation.
 | 
| +  void StartPulse();
 | 
| +  void StopPulse();
 | 
| +
 | 
| +  // Used to set/check whether this tab is being animated closed.
 | 
| +  void set_closing(bool closing) { closing_ = closing; }
 | 
| +  bool closing() const { return closing_; }
 | 
| +
 | 
| +  // Sets the container all animations run from.
 | 
| +  void set_animation_container(ui::AnimationContainer* container) {
 | 
| +    animation_container_ = container;
 | 
| +  }
 | 
| +  ui::AnimationContainer* animation_container() const {
 | 
| +    return animation_container_.get();
 | 
| +  }
 | 
| +
 | 
| +  // Returns true if the tab is selected.
 | 
| +  bool IsSelected() const;
 | 
| +  // Returns true if the sidebar is expanded.
 | 
| +  bool IsExpanded() const;
 | 
| +
 | 
| +  // Returns the current shape of this tab.
 | 
| +  virtual void GetShape(gfx::Path* shape) const = 0;
 | 
| +
 | 
| + protected:
 | 
| +  // Invoked from SetData after |data_| has been updated to the new data.
 | 
| +  virtual void DataChanged(const SidebarTabRendererData& old) {}
 | 
| +
 | 
| +  // Invoked if data_.network_state changes, or the network_state is not none.
 | 
| +  virtual void AdvanceLoadingAnimation(
 | 
| +      SidebarTabRendererData::NetworkState old_state,
 | 
| +      SidebarTabRendererData::NetworkState state);
 | 
| +
 | 
| +  // Gets the throb value for the tab. When a tab is not selected the
 | 
| +  // active background is drawn at |GetThrobValue()|%. This is used for hover,
 | 
| +  // tab title change and pulsing.
 | 
| +  double GetThrobValue();
 | 
| +
 | 
| +  // Paints the icon at the specified coordinates.
 | 
| +  void PaintIcon(gfx::Canvas* canvas, int x, int y, int alpha);
 | 
| +
 | 
| + private:
 | 
| +  // The animation object used to swap the icon with the sad tab icon.
 | 
| +  class IconCrashAnimation;
 | 
| +
 | 
| +  // ui::AnimationDelegate overrides:
 | 
| +  virtual void AnimationProgressed(const ui::Animation* animation) OVERRIDE;
 | 
| +  virtual void AnimationCanceled(const ui::Animation* animation) OVERRIDE;
 | 
| +  virtual void AnimationEnded(const ui::Animation* animation) OVERRIDE;
 | 
| +
 | 
| +  // Set the temporary offset for the icon. This is used during the crash
 | 
| +  // animation.
 | 
| +  void SetIconHidingOffset(int offset);
 | 
| +
 | 
| +  void DisplayCrashedIcon();
 | 
| +  void ResetCrashedIcon();
 | 
| +
 | 
| +  // Starts/Stops the crash animation.
 | 
| +  void StartCrashAnimation();
 | 
| +  void StopCrashAnimation();
 | 
| +
 | 
| +  // The controller.
 | 
| +  SidebarTabController* const controller_;
 | 
| +
 | 
| +  SidebarTabRendererData data_;
 | 
| +
 | 
| +  // True if the tab is being closed.
 | 
| +  bool closing_;
 | 
| +
 | 
| +  scoped_refptr<ui::AnimationContainer> animation_container_;
 | 
| +  scoped_ptr<ui::ThrobAnimation> pulse_animation_;
 | 
| +  scoped_ptr<ui::SlideAnimation> hover_animation_;
 | 
| +  scoped_ptr<IconCrashAnimation> crash_animation_;
 | 
| +  // The offset used to animate the icon location.
 | 
| +  // It's used when the corresponding sidebar's tab contents crashes.
 | 
| +  int icon_hiding_offset_;
 | 
| +  bool should_display_crashed_icon_;
 | 
| +  // The current index of the loading animation.
 | 
| +  int loading_animation_frame_;
 | 
| +
 | 
| +  DISALLOW_COPY_AND_ASSIGN(SidebarBaseTab);
 | 
| +};
 | 
| +
 | 
| +#endif  // CHROME_BROWSER_UI_VIEWS_SIDEBAR_SIDEBAR_BASE_TAB_H_
 | 
| +
 | 
| 
 | 
| Property changes on: chrome\browser\ui\views\sidebar\sidebar_base_tab.h
 | 
| ___________________________________________________________________
 | 
| Added: svn:eol-style
 | 
|    + LF
 | 
| 
 | 
| 
 |