Change cursor parent from Layer to Actor
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / text-controls / text-selection-toolbar-impl.h
index 3593e79..5cc4fda 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_TOOLBAR_H__
-#define __DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_TOOLBAR_H__
+#ifndef DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_TOOLBAR_H
+#define DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_TOOLBAR_H
 
 /*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,7 +21,8 @@
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
 #include <dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h>
-#include <dali-toolkit/public-api/controls/table-view/table-view.h>
+#include <dali-toolkit/devel-api/controls/scroll-bar/scroll-bar.h>
+#include <dali-toolkit/devel-api/controls/table-view/table-view.h>
 #include <dali-toolkit/devel-api/controls/text-controls/text-selection-toolbar.h>
 
 // EXTERNAL INCLUDES
@@ -36,11 +37,6 @@ namespace Toolkit
 namespace Internal
 {
 
-namespace
-{
-
-} // namespace
-
 class TextSelectionToolbar : public Control
 {
 public:
@@ -70,31 +66,54 @@ public:
   static Property::Value GetProperty( BaseObject* object, Property::Index index );
 
   /**
-   *  @copydoc TextSelectionToolbar::AddOption
+   *  @copydoc Toolkit::TextSelectionToolbar::AddOption()
    */
   void AddOption( Actor& option );
 
   /**
-   *  @copydoc TextSelectionToolbar::AddDivider
+   *  @copydoc Toolkit::TextSelectionToolbar::AddDivider()
    */
   void AddDivider( Actor& divider );
 
   /**
-   * @copydoc ResizeDividers
+   * @copydoc Toolkit::TextSelectionToolbar::ResizeDividers()
    */
   void ResizeDividers( Size& size );
 
+  /**
+   * @copydoc Toolkit::TextSelectionToolbar::RaiseAbove()
+   */
+  void RaiseAbove( Actor target );
+
+  /**
+   * Sets the scroll bar padding.
+   *
+   * @param[in] padding The padding value.
+   */
+  void SetScrollBarPadding( const Vector2& padding );
+
+  /**
+   * @return The padding value.
+   */
+  const Vector2& GetScrollBarPadding() const;
+
+  /**
+   * @copydoc Toolkit::TextSelectionToolbar::ScrollTo()
+   */
+  void ScrollTo( const Vector2& position );
+
 private: // From Control
 
   /**
    * @copydoc Control::OnInitialize()
    */
-  virtual void OnInitialize();
+  void OnInitialize() override;
 
   /**
   * @copydoc Control::OnRelayout()
   */
-  virtual void OnRelayout( const Vector2& size, RelayoutContainer& container );
+  void OnRelayout( const Vector2& size, RelayoutContainer& container ) override;
+
   /**
    * @brief Set max size of Popup
    * @param[in] maxSize Size (Vector2)
@@ -107,11 +126,17 @@ private: // From Control
    */
   const Dali::Vector2& GetPopupMaxSize() const;
 
+private: // Implementation
+
+  /**
+   * @copydoc Toolkit::TextSelectionToolbar::ConfigureScrollview()
+   */
+  void ConfigureScrollview( const Property::Map& properties );
+
   /**
    * @brief Set up scrollview to scroll Toolbar horizontally
-   * @param[out] scrollView scrollview to setup
    */
-  void SetUpScrollView( Toolkit::ScrollView& scrollView );
+  void SetUpScrollView();
 
   /**
    * @brief Set up the parts that make the Toolbar
@@ -119,6 +144,13 @@ private: // From Control
   void SetUp();
 
   /**
+   * @brief Enable or disable the scroll-bar
+   *
+   * @param[in] enable True if the scroll-bar is required
+   */
+  void SetUpScrollBar( bool enable );
+
+  /**
    * Toolbar has started to scroll
    * @param[in] position current scroll view position
    */
@@ -130,8 +162,6 @@ private: // From Control
    */
   void OnScrollCompleted( const Vector2& position );
 
-private: // Implementation
-
   /**
    * Construct a new TextField.
    */
@@ -150,13 +180,16 @@ private:
 
 private: // Data
 
-  Toolkit::TableView mTableOfButtons;                 // Actor which holds all the buttons, sensitivity can be set on buttons via this actor
-  Toolkit::ScrollView mScrollView;                    // Provides scrolling of Toolbar when content does not fit.
-  RulerPtr mRulerX;                                   // Ruler to clamp horizontal scrolling. Updates on Relayout
-  Size mMaxSize;                                      // Max size of the Toolbar
-  unsigned int mIndexInTable;                         // Index in table to add option
-  Dali::Vector< unsigned int > mDividerIndexes;       // Vector of indexes in the Toolbar that contain dividers.
-
+  Actor mToolbarActor;                                ///< The actor used to house the toolbar.
+  Toolkit::TableView mTableOfButtons;                 ///< Actor which holds all the buttons, sensitivity can be set on buttons via this actor
+  Toolkit::ScrollView mScrollView;                    ///< Provides scrolling of Toolbar when content does not fit.
+  Toolkit::ScrollBar mScrollBar;                      ///< An horizontal scroll bar for the text's popup options.
+  RulerPtr mRulerX;                                   ///< Ruler to clamp horizontal scrolling. Updates on Relayout
+  Size mMaxSize;                                      ///< Max size of the Toolbar
+  Vector2 mScrollBarPadding;                          ///< The padding used to position the scroll indicator.
+  unsigned int mIndexInTable;                         ///< Index in table to add option
+  Dali::Vector< unsigned int > mDividerIndexes;       ///< Vector of indexes in the Toolbar that contain dividers.
+  bool mFirstScrollEnd;                               ///< Used for RTL mirroring. Avoids the overshoot to be shown the first time the popup is shown.
 };
 
 } // namespace Internal
@@ -185,4 +218,4 @@ inline const Toolkit::Internal::TextSelectionToolbar& GetImpl( const Toolkit::Te
 
 } // namespace Dali
 
-#endif // __DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_TOOLBAR_H__
+#endif // DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_TOOLBAR_H