Merge "Fix Left/Right/Up/DownFocusableView bug =>If app set the Left/Right/Up/DownFoc...
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / BaseComponents / View.cs
index 207c2c4..f312226 100755 (executable)
@@ -1,18 +1,19 @@
-/** 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.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*
-*/
+/*
+ * 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
 
 namespace Tizen.NUI.BaseComponents
 {
@@ -20,15 +21,14 @@ namespace Tizen.NUI.BaseComponents
     using System;
     using System.Runtime.InteropServices;
 
-
-
     /// <summary>
     /// View is the base class for all views.
     /// </summary>
-    public class View : Animatable //CustomActor => Animatable
+    public class View : Container
     {
         private global::System.Runtime.InteropServices.HandleRef swigCPtr;
 
+
         internal View(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.View_SWIGUpcast(cPtr), cMemoryOwn)
         {
             swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
@@ -40,7 +40,92 @@ namespace Tizen.NUI.BaseComponents
             return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
         }
 
-        // you can override it to clean-up your own resources.
+        // From Container Base class
+
+        /// <summary>
+        /// Adds a child view to this view.
+        /// </summary>
+        /// <seealso cref="Container.Add" />
+        /// <since_tizen> 4 </since_tizen>
+        public override void Add(View child)
+        {
+            NDalicPINVOKE.Actor_Add(swigCPtr, View.getCPtr(child));
+            if (NDalicPINVOKE.SWIGPendingException.Pending)
+                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+            Children.Add(child);
+        }
+
+        /// <summary>
+        /// Removes a child view from this View. If the view was not a child of this view, this is a no-op.
+        /// </summary>
+        /// <seealso cref="Container.Remove" />
+        /// <since_tizen> 4 </since_tizen>
+        public override void Remove(View child)
+        {
+            NDalicPINVOKE.Actor_Remove(swigCPtr, View.getCPtr(child));
+            if (NDalicPINVOKE.SWIGPendingException.Pending)
+                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+            Children.Remove(child);
+        }
+
+        /// <summary>
+        /// Retrieves a child view by index.
+        /// </summary>
+        /// <seealso cref="Container.GetChildAt" />
+        /// <since_tizen> 4 </since_tizen>
+        public override View GetChildAt(uint index)
+        {
+            if (index < Children.Count)
+            {
+                return Children[Convert.ToInt32(index)];
+            }
+            else
+            {
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// Retrieves the number of children held by the view.
+        /// </summary>
+        /// <seealso cref="Container.GetChildCount" />
+        public override uint GetChildCount()
+        {
+            return Convert.ToUInt32(Children.Count);
+        }
+
+        /// <summary>
+        /// Gets the views parent.
+        /// </summary>
+        /// <seealso cref="Container.GetParent()" />
+        public override Container GetParent()
+        {
+            IntPtr cPtr = NDalicPINVOKE.Actor_GetParent(swigCPtr);
+
+            BaseHandle basehandle = Registry.GetManagedBaseHandleFromNativePtr(cPtr);
+
+            if (NDalicPINVOKE.SWIGPendingException.Pending)
+                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+            return basehandle as Container;
+        }
+
+        internal bool IsTopLevelView()
+        {
+            if(GetParent() is Layer)
+            {
+                return true;
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// you can override it to clean-up your own resources.
+        /// </summary>
+        /// <param name="type">DisposeTypes</param>
+        /// <since_tizen> 3 </since_tizen>
         protected override void Dispose(DisposeTypes type)
         {
             if(disposed)
@@ -59,6 +144,8 @@ namespace Tizen.NUI.BaseComponents
             //You should not access any managed member here except static instance.
             //because the execution order of Finalizes is non-deterministic.
 
+            DisConnectFromSignals();
+
             if (swigCPtr.Handle != global::System.IntPtr.Zero)
             {
                 if (swigCMemOwn)
@@ -70,6 +157,106 @@ namespace Tizen.NUI.BaseComponents
             }
 
             base.Dispose(type);
+
+            // Dispose all Children of this View.
+            foreach (View childView in Children)
+            {
+                childView?.Dispose();
+            }
+            Children.Clear();
+        }
+
+        private void DisConnectFromSignals()
+        {
+            // Save current CPtr.
+            global::System.Runtime.InteropServices.HandleRef currentCPtr = swigCPtr;
+
+            // Use BaseHandle CPtr as current might have been deleted already in derived classes.
+            swigCPtr = GetBaseHandleCPtrHandleRef;
+
+            if (_onRelayoutEventCallback != null)
+            {
+                this.OnRelayoutSignal().Disconnect(_onRelayoutEventCallback);
+            }
+
+            if (_offWindowEventCallback != null)
+            {
+                this.OffWindowSignal().Disconnect(_offWindowEventCallback);
+            }
+
+            if (_onWindowEventCallback != null)
+            {
+                this.OnWindowSignal().Disconnect(_onWindowEventCallback);
+            }
+
+            if (_wheelEventCallback != null)
+            {
+                this.WheelEventSignal().Disconnect(_wheelEventCallback);
+            }
+
+            if (_hoverEventCallback != null)
+            {
+                this.HoveredSignal().Disconnect(_hoverEventCallback);
+            }
+
+            if (_touchDataCallback != null)
+            {
+                this.TouchSignal().Disconnect(_touchDataCallback);
+            }
+
+            if (_ResourcesLoadedCallback != null)
+            {
+                this.ResourcesLoadedSignal().Disconnect(_ResourcesLoadedCallback);
+            }
+
+            if (_offWindowEventCallback != null)
+            {
+                this.OffWindowSignal().Disconnect(_offWindowEventCallback);
+            }
+
+            if (_onWindowEventCallback != null)
+            {
+                this.OnWindowSignal().Disconnect(_onWindowEventCallback);
+            }
+
+            if (_wheelEventCallback != null)
+            {
+                this.WheelEventSignal().Disconnect(_wheelEventCallback);
+            }
+
+            if (_hoverEventCallback != null)
+            {
+                this.HoveredSignal().Disconnect(_hoverEventCallback);
+            }
+
+            if (_touchDataCallback != null)
+            {
+                this.TouchSignal().Disconnect(_touchDataCallback);
+            }
+
+            if (_onRelayoutEventCallback != null)
+            {
+                this.OnRelayoutSignal().Disconnect(_onRelayoutEventCallback);
+            }
+
+            if (_keyCallback != null)
+            {
+                this.KeyEventSignal().Disconnect(_keyCallback);
+            }
+
+            if (_keyInputFocusLostCallback != null)
+            {
+                this.KeyInputFocusLostSignal().Disconnect(_keyInputFocusLostCallback);
+            }
+
+            if (_keyInputFocusGainedCallback != null)
+            {
+                this.KeyInputFocusGainedSignal().Disconnect(_keyInputFocusGainedCallback);
+            }
+
+            // BaseHandle CPtr is used in Registry and there is danger of deletion if we keep using it here.
+            // Restore current CPtr.
+            swigCPtr = currentCPtr;
         }
 
         private EventHandler _keyInputFocusGainedEventHandler;
@@ -78,9 +265,10 @@ namespace Tizen.NUI.BaseComponents
         private KeyInputFocusGainedCallbackType _keyInputFocusGainedCallback;
 
         /// <summary>
-        /// Event for KeyInputFocusGained signal which can be used to subscribe/unsubscribe the event handler provided by the user.<br>
-        /// KeyInputFocusGained signal is emitted when the control gets Key Input Focus.<br>
+        /// An event for the KeyInputFocusGained signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
+        /// The KeyInputFocusGained signal is emitted when the control gets the key input focus.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public event EventHandler FocusGained
         {
             add
@@ -120,9 +308,10 @@ namespace Tizen.NUI.BaseComponents
         private KeyInputFocusLostCallbackType _keyInputFocusLostCallback;
 
         /// <summary>
-        /// Event for KeyInputFocusLost signal which can be used to subscribe/unsubscribe the event handler provided by the user.<br>
-        /// KeyInputFocusLost signal is emitted when the control loses Key Input Focus.<br>
+        /// An event for the KeyInputFocusLost signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
+        /// The KeyInputFocusLost signal is emitted when the control loses the key input focus.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public event EventHandler FocusLost
         {
             add
@@ -156,15 +345,16 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Event arguments that passed via KeyEvent signal.
+        /// Event arguments that passed via the KeyEvent signal.
         /// </summary>
         public class KeyEventArgs : EventArgs
         {
             private Key _key;
 
             /// <summary>
-            /// Key - is the key sent to the View.
+            /// Key - is the key sent to the view.
             /// </summary>
+            /// <since_tizen> 3 </since_tizen>
             public Key Key
             {
                 get
@@ -184,9 +374,10 @@ namespace Tizen.NUI.BaseComponents
         private KeyCallbackType _keyCallback;
 
         /// <summary>
-        /// Event for KeyPressed signal which can be used to subscribe/unsubscribe the event handler provided by the user.<br>
-        /// KeyPressed signal is emitted when key event is received.<br>
+        /// An event for the KeyPressed signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
+        /// The KeyPressed signal is emitted when the key event is received.<br />
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandlerWithReturnType<object, KeyEventArgs, bool> KeyEvent
         {
             add
@@ -239,9 +430,10 @@ namespace Tizen.NUI.BaseComponents
         private OnRelayoutEventCallbackType _onRelayoutEventCallback;
 
         /// <summary>
-        /// Event for OnRelayout signal which can be used to subscribe/unsubscribe the event handler.<br>
-        /// OnRelayout signal is emitted after the size has been set on the view during relayout.<br>
+        /// An event for the OnRelayout signal which can be used to subscribe or unsubscribe the event handler.<br />
+        /// The OnRelayout signal is emitted after the size has been set on the view during relayout.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public event EventHandler Relayout
         {
             add
@@ -277,15 +469,16 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Event arguments that passed via Touch signal.
+        /// Event arguments that passed via the touch signal.
         /// </summary>
         public class TouchEventArgs : EventArgs
         {
             private Touch _touch;
 
             /// <summary>
-            /// Touch - contains the information of touch points
+            /// Touch - contains the information of touch points.
             /// </summary>
+            /// <since_tizen> 3 </since_tizen>
             public Touch Touch
             {
                 get
@@ -305,9 +498,10 @@ namespace Tizen.NUI.BaseComponents
         private TouchDataCallbackType _touchDataCallback;
 
         /// <summary>
-        /// Event for Touched signal which can be used to subscribe/unsubscribe the event handler provided by the user.<br>
-        /// Touched signal is emitted when touch input is received.<br>
+        /// An event for the touched signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
+        /// The touched signal is emitted when the touch input is received.<br />
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandlerWithReturnType<object, TouchEventArgs, bool> TouchEvent
         {
             add
@@ -349,7 +543,7 @@ namespace Tizen.NUI.BaseComponents
 
 
         /// <summary>
-        /// Event arguments that passed via Hover signal.
+        /// Event arguments that passed via the hover signal.
         /// </summary>
         public class HoverEventArgs : EventArgs
         {
@@ -358,6 +552,7 @@ namespace Tizen.NUI.BaseComponents
             /// <summary>
             /// Hover - contains touch points that represent the points that are currently being hovered or the points where a hover has stopped.
             /// </summary>
+            /// <since_tizen> 3 </since_tizen>
             public Hover Hover
             {
                 get
@@ -377,9 +572,10 @@ namespace Tizen.NUI.BaseComponents
         private HoverEventCallbackType _hoverEventCallback;
 
         /// <summary>
-        /// Event for Hovered signal which can be used to subscribe/unsubscribe the event handler provided by the user.<br>
-        /// Hovered signal is emitted when hover input is received.<br>
+        /// An event for the hovered signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
+        /// The hovered signal is emitted when the hover input is received.<br />
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandlerWithReturnType<object, HoverEventArgs, bool> HoverEvent
         {
             add
@@ -421,15 +617,16 @@ namespace Tizen.NUI.BaseComponents
 
 
         /// <summary>
-        /// Event arguments that passed via Wheel signal.
+        /// Event arguments that passed via the wheel signal.
         /// </summary>
         public class WheelEventArgs : EventArgs
         {
             private Wheel _wheel;
 
             /// <summary>
-            /// WheelEvent - store a wheel rolling type : MOUSE_WHEEL or CUSTOM_WHEEL
+            /// WheelEvent - store a wheel rolling type: MOUSE_WHEEL or CUSTOM_WHEEL.
             /// </summary>
+            /// <since_tizen> 3 </since_tizen>
             public Wheel Wheel
             {
                 get
@@ -449,9 +646,10 @@ namespace Tizen.NUI.BaseComponents
         private WheelEventCallbackType _wheelEventCallback;
 
         /// <summary>
-        /// Event for WheelMoved signal which can be used to subscribe/unsubscribe the event handler provided by the user.<br>
-        /// WheelMoved signal is emitted when wheel event is received.<br>
+        /// An event for the WheelMoved signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
+        /// The WheelMoved signal is emitted when the wheel event is received.<br />
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandlerWithReturnType<object, WheelEventArgs, bool> WheelEvent
         {
             add
@@ -498,9 +696,10 @@ namespace Tizen.NUI.BaseComponents
         private OnWindowEventCallbackType _onWindowEventCallback;
 
         /// <summary>
-        /// Event for OnWindow signal which can be used to subscribe/unsubscribe the event handler.<br>
-        /// OnWindow signal is emitted after the view has been connected to the Window.<br>
+        /// An event for the OnWindow signal which can be used to subscribe or unsubscribe the event handler.<br />
+        /// The OnWindow signal is emitted after the view has been connected to the window.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public event EventHandler AddedToWindow
         {
             add
@@ -541,9 +740,10 @@ namespace Tizen.NUI.BaseComponents
         private OffWindowEventCallbackType _offWindowEventCallback;
 
         /// <summary>
-        /// Event for OffWindow signal which can be used to subscribe/unsubscribe the event handler.<br>
-        /// OffWindow signal is emitted after the view has been disconnected from the Window.<br>
+        /// An event for the OffWindow signal, which can be used to subscribe or unsubscribe the event handler.<br />
+        /// OffWindow signal is emitted after the view has been disconnected from the window.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public event EventHandler RemovedFromWindow
         {
             add
@@ -589,6 +789,7 @@ namespace Tizen.NUI.BaseComponents
             /// <summary>
             /// The view, or child of view, whose visibility has changed.
             /// </summary>
+            /// <since_tizen> 3 </since_tizen>
             public View View
             {
                 get
@@ -604,6 +805,7 @@ namespace Tizen.NUI.BaseComponents
             /// <summary>
             /// Whether the view is now visible or not.
             /// </summary>
+            /// <since_tizen> 3 </since_tizen>
             public bool Visibility
             {
                 get
@@ -619,6 +821,7 @@ namespace Tizen.NUI.BaseComponents
             /// <summary>
             /// Whether the view's visible property has changed or a parent's.
             /// </summary>
+            /// <since_tizen> 3 </since_tizen>
             public VisibilityChangeType Type
             {
                 get
@@ -638,9 +841,10 @@ namespace Tizen.NUI.BaseComponents
         private VisibilityChangedEventCallbackType _visibilityChangedEventCallback;
 
         /// <summary>
-        /// Event for visibility change which can be used to subscribe/unsubscribe the event handler.<br>
-        /// This signal is emitted when the visible property of this or a parent view is changed.<br>
+        /// An event for visibility change which can be used to subscribe or unsubscribe the event handler.<br />
+        /// This signal is emitted when the visible property of this or a parent view is changed.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public event EventHandler<VisibilityChangedEventArgs> VisibilityChanged
         {
             add
@@ -682,6 +886,104 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+
+        /// <summary>
+        /// Event arguments of layout direction changed.
+        /// </summary>
+        public class LayoutDirectionChangedEventArgs : EventArgs
+        {
+            private View _view;
+            private ViewLayoutDirectionType _type;
+
+            /// <summary>
+            /// The view, or child of view, whose layout direction has changed.
+            /// </summary>
+            /// <since_tizen> 4 </since_tizen>
+            public View View
+            {
+                get
+                {
+                    return _view;
+                }
+                set
+                {
+                    _view = value;
+                }
+            }
+
+            /// <summary>
+            /// Whether the view's layout direction property has changed or a parent's.
+            /// </summary>
+            /// <since_tizen> 4 </since_tizen>
+            public ViewLayoutDirectionType Type
+            {
+                get
+                {
+                    return _type;
+                }
+                set
+                {
+                    _type = value;
+                }
+            }
+        }
+
+        private EventHandler<LayoutDirectionChangedEventArgs> _layoutDirectionChangedEventHandler;
+        [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+        private delegate void LayoutDirectionChangedEventCallbackType(IntPtr data, ViewLayoutDirectionType type);
+        private LayoutDirectionChangedEventCallbackType _layoutDirectionChangedEventCallback;
+
+        /// <summary>
+        /// Event for layout direction change which can be used to subscribe/unsubscribe the event handler.<br />
+        /// This signal is emitted when the layout direction property of this or a parent view is changed.<br />
+        /// </summary>
+        /// <since_tizen> 4 </since_tizen>
+        public event EventHandler<LayoutDirectionChangedEventArgs> LayoutDirectionChanged
+        {
+            add
+            {
+                if (_layoutDirectionChangedEventHandler == null)
+                {
+                    _layoutDirectionChangedEventCallback = OnLayoutDirectionChanged;
+                    LayoutDirectionChangedSignal(this).Connect(_layoutDirectionChangedEventCallback);
+                }
+
+                _layoutDirectionChangedEventHandler += value;
+            }
+
+            remove
+            {
+                _layoutDirectionChangedEventHandler -= value;
+
+                if (_layoutDirectionChangedEventHandler == null && LayoutDirectionChangedSignal(this).Empty() == false)
+                {
+                    LayoutDirectionChangedSignal(this).Disconnect(_layoutDirectionChangedEventCallback);
+                }
+            }
+        }
+
+        // Callback for View layout direction change signal
+        private void OnLayoutDirectionChanged(IntPtr data, ViewLayoutDirectionType type)
+        {
+            LayoutDirectionChangedEventArgs e = new LayoutDirectionChangedEventArgs();
+            if (data != null)
+            {
+                e.View = Registry.GetManagedBaseHandleFromNativePtr(data) as View;
+            }
+            e.Type = type;
+
+            if (_layoutDirectionChangedEventHandler != null)
+            {
+                _layoutDirectionChangedEventHandler(this, e);
+            }
+        }
+
+
+
+
+
+
+
         // Resource Ready Signal
 
         private EventHandler _resourcesLoadedEventHandler;
@@ -690,9 +992,10 @@ namespace Tizen.NUI.BaseComponents
         private ResourcesLoadedCallbackType _ResourcesLoadedCallback;
 
         /// <summary>
-        /// Event for ResourcesLoadedSignal signal which can be used to subscribe/unsubscribe the event handler provided by the user.<br>
-        /// This signal is emitted after all resources required by a View are loaded and ready.<br>
+        /// An event for the ResourcesLoadedSignal signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
+        /// This signal is emitted after all resources required by a view are loaded and ready.<br />
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public event EventHandler ResourcesLoaded
         {
             add
@@ -792,24 +1095,54 @@ namespace Tizen.NUI.BaseComponents
             internal static readonly int MAXIMUM_SIZE = NDalicPINVOKE.Actor_Property_MAXIMUM_SIZE_get();
             internal static readonly int INHERIT_POSITION = NDalicPINVOKE.Actor_Property_INHERIT_POSITION_get();
             internal static readonly int CLIPPING_MODE = NDalicPINVOKE.Actor_Property_CLIPPING_MODE_get();
+            internal static readonly int INHERIT_LAYOUT_DIRECTION = NDalicManualPINVOKE.Actor_Property_INHERIT_LAYOUT_DIRECTION_get();
+            internal static readonly int LAYOUT_DIRECTION = NDalicManualPINVOKE.Actor_Property_LAYOUT_DIRECTION_get();
+            internal static readonly int MARGIN = NDalicPINVOKE.View_Property_MARGIN_get();
+            internal static readonly int PADDINGEX = NDalicPINVOKE.View_Property_PADDING_get();
         }
 
         /// <summary>
         /// Describes the direction to move the focus towards.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public enum FocusDirection
         {
+            /// <summary>
+            /// Move keyboard focus towards the left direction.
+            /// </summary>
+            /// <since_tizen> 3 </since_tizen>
             Left,
+            /// <summary>
+            /// Move keyboard focus towards the right direction.
+            /// </summary>
+            /// <since_tizen> 3 </since_tizen>
             Right,
+            /// <summary>
+            /// Move keyboard focus towards the up direction.
+            /// </summary>
+            /// <since_tizen> 3 </since_tizen>
             Up,
+            /// <summary>
+            /// Move keyboard focus towards the down direction.
+            /// </summary>
+            /// <since_tizen> 3 </since_tizen>
             Down,
+            /// <summary>
+            /// Move keyboard focus towards the previous page direction.
+            /// </summary>
+            /// <since_tizen> 3 </since_tizen>
             PageUp,
+            /// <summary>
+            /// Move keyboard focus towards the next page direction.
+            /// </summary>
+            /// <since_tizen> 3 </since_tizen>
             PageDown
         }
 
         /// <summary>
-        /// Creates a new instance of a View.
+        /// Creates a new instance of a view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public View() : this(NDalicPINVOKE.View_New(), true)
         {
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -821,20 +1154,24 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Downcasts a handle to View handle.<br>
-        /// If handle points to a View, the downcast produces valid handle.<br>
-        /// If not, the returned handle is left uninitialized.<br>
+        /// Downcasts a handle to view handle.<br />
+        /// If handle points to a view, the downcast produces a valid handle.<br />
+        /// If not, the returned handle is left uninitialized.<br />
         /// </summary>
-        /// <param name="handle">Handle to an object</param>
-        /// <returns>A handle to a View or an uninitialized handle</returns>
+        /// <param name="handle">A handle to an object.</param>
+        /// <returns>A handle to a view or an uninitialized handle.</returns>
         [Obsolete("Please do not use! this will be deprecated, instead please use as keyword.")]
-        public new static View DownCast(BaseHandle handle)
+        public static View DownCast(BaseHandle handle)
         {
             View ret =  Registry.GetManagedBaseHandleFromNativePtr(handle) as View;
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
 
+        /// <summary>
+        /// [Obsolete("Please do not use! this will be deprecated, instead please use as keyword.")]
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         [Obsolete("Please do not use! this will be deprecated, instead please use as keyword.")]
         public static T DownCast<T>(View view) where T : View
         {
@@ -850,9 +1187,10 @@ namespace Tizen.NUI.BaseComponents
         {
             View view = null;
 
-            if (Parent)
+            if (Parent is View)
             {
-                view = Parent.FindChildById(id);
+                View parentView = Parent as View;
+                view = parentView.FindChildById(id);
             }
 
             if (!view)
@@ -870,9 +1208,10 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Quries whether the view has focus.
+        /// Queries whether the view has a focus.
         /// </summary>
-        /// <returns>true if this view has focus</returns>
+        /// <returns>True if this view has a focus.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public bool HasFocus()
         {
             bool ret = NDalicPINVOKE.View_HasKeyInputFocus(swigCPtr);
@@ -917,7 +1256,8 @@ namespace Tizen.NUI.BaseComponents
         /// <summary>
         /// Sets the name of the style to be applied to the view.
         /// </summary>
-        /// <param name="styleName">A string matching a style described in a stylesheet</param>
+        /// <param name="styleName">A string matching a style described in a stylesheet.</param>
+        /// <since_tizen> 3 </since_tizen>
         public void SetStyleName(string styleName)
         {
             NDalicPINVOKE.View_SetStyleName(swigCPtr, styleName);
@@ -927,7 +1267,8 @@ namespace Tizen.NUI.BaseComponents
         /// <summary>
         /// Retrieves the name of the style to be applied to the view (if any).
         /// </summary>
-        /// <returns>A string matching a style, or an empty string</returns>
+        /// <returns>A string matching a style, or an empty string.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public string GetStyleName()
         {
             string ret = NDalicPINVOKE.View_GetStyleName(swigCPtr);
@@ -957,6 +1298,7 @@ namespace Tizen.NUI.BaseComponents
         /// <summary>
         /// Clears the background.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public void ClearBackground()
         {
             NDalicPINVOKE.View_ClearBackground(swigCPtr);
@@ -997,8 +1339,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// styleName, type string.
+        /// The StyleName, type string.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public string StyleName
         {
             get
@@ -1014,8 +1357,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// mutually exclusive with BACKGROUND_IMAGE & BACKGROUND,  type Vector4.
+        /// The mutually exclusive with BACKGROUND_IMAGE and BACKGROUND type Vector4.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Color BackgroundColor
         {
             get
@@ -1039,9 +1383,10 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Create an Animation to animate the background color visual. If there is no
+        /// Creates an animation to animate the background color visual. If there is no
         /// background visual, creates one with transparent black as it's mixColor.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public Animation AnimateBackgroundColor( object destinationValue,
                                                  int startTime,
                                                  int endTime,
@@ -1061,8 +1406,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Create an Animation to animate the mixColor of the named visual.
+        /// Creates an animation to animate the mixColor of the named visual.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public Animation AnimateColor( string targetVisual, object destinationColor, int startTime, int endTime, AlphaFunction.BuiltinFunctions? alphaFunction = null, object initialColor = null )
         {
             Animation animation = null;
@@ -1101,8 +1447,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// mutually exclusive with BACKGROUND_COLOR & BACKGROUND,  type Map.
+        /// The mutually exclusive with BACKGROUND_COLOR and BACKGROUND type Map.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public string BackgroundImage
         {
             get
@@ -1125,6 +1472,10 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// The background of view.
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Tizen.NUI.PropertyMap Background
         {
             get
@@ -1143,6 +1494,7 @@ namespace Tizen.NUI.BaseComponents
         /// <summary>
         /// The current state of the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public States State
         {
             get
@@ -1181,6 +1533,7 @@ namespace Tizen.NUI.BaseComponents
         /// <summary>
         /// The current sub state of the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public States SubState
         {
             get
@@ -1235,6 +1588,7 @@ namespace Tizen.NUI.BaseComponents
         /// <summary>
         /// Displays a tooltip
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Tizen.NUI.PropertyMap Tooltip
         {
             get
@@ -1250,8 +1604,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Displays a tooltip as Text
+        /// Displays a tooltip as a text.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public string TooltipText
         {
             set
@@ -1317,10 +1672,11 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Child Property of FlexContainer.<br>
-        /// The proportion of the free space in the container the flex item will receive.<br>
-        /// If all items in the container set this property, their sizes will be proportional to the specified flex factor.<br>
+        /// The Child property of FlexContainer.<br />
+        /// The proportion of the free space in the container, the flex item will receive.<br />
+        /// If all items in the container set this property, their sizes will be proportional to the specified flex factor.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public float Flex
         {
             get
@@ -1336,9 +1692,10 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Child Property of FlexContainer.<br>
-        /// The alignment of the flex item along the cross axis, which, if set, overides the default alignment for all items in the container.<br>
+        /// The Child property of FlexContainer.<br />
+        /// The alignment of the flex item along the cross axis, which, if set, overides the default alignment for all items in the container.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public int AlignSelf
         {
             get
@@ -1354,9 +1711,10 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Child Property of FlexContainer.<br>
-        /// The space around the flex item.<br>
+        /// The Child property of FlexContainer.<br />
+        /// The space around the flex item.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Vector4 FlexMargin
         {
             get
@@ -1372,8 +1730,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// The top-left cell this child occupies, if not set, the first available cell is used
+        /// The top-left cell this child occupies, if not set, the first available cell is used.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Vector2 CellIndex
         {
             get
@@ -1389,8 +1748,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// The number of rows this child occupies, if not set, default value is 1
+        /// The number of rows this child occupies, if not set, the default value is 1.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public float RowSpan
         {
             get
@@ -1406,8 +1766,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// The number of columns this child occupies, if not set, default value is 1
+        /// The number of columns this child occupies, if not set, the default value is 1.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public float ColumnSpan
         {
             get
@@ -1423,8 +1784,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// The horizontal alignment of this child inside the cells, if not set, default value is 'left'
+        /// The horizontal alignment of this child inside the cells, if not set, the default value is 'left'.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Tizen.NUI.HorizontalAlignmentType CellHorizontalAlignment
         {
             get
@@ -1478,8 +1840,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// The vertical alignment of this child inside the cells, if not set, default value is 'top'
+        /// The vertical alignment of this child inside the cells, if not set, the default value is 'top'.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Tizen.NUI.VerticalAlignmentType CellVerticalAlignment
         {
             get
@@ -1533,10 +1896,11 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// The left focusable view.<br>
-        /// This will return NULL if not set.<br>
-        /// This will also return NULL if the specified left focusable view is not on Window.<br>
+        /// The left focusable view.<br />
+        /// This will return null if not set.<br />
+        /// This will also return null if the specified left focusable view is not on a window.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public View LeftFocusableView
         {
             // As native side will be only storing IDs so need a logic to convert View to ID and vice-versa.
@@ -1550,15 +1914,23 @@ namespace Tizen.NUI.BaseComponents
             }
             set
             {
-                LeftFocusableViewId = (int)value.GetId();
+                if(value)
+                {
+                    LeftFocusableViewId = (int)value.GetId();
+                }
+                else
+                {
+                    LeftFocusableViewId = -1;
+                }
             }
         }
 
         /// <summary>
-        /// The right focusable view.<br>
-        /// This will return NULL if not set.<br>
-        /// This will also return NULL if the specified right focusable view is not on Window.<br>
+        /// The right focusable view.<br />
+        /// This will return null if not set.<br />
+        /// This will also return null if the specified right focusable view is not on a window.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public View RightFocusableView
         {
             // As native side will be only storing IDs so need a logic to convert View to ID and vice-versa.
@@ -1572,15 +1944,23 @@ namespace Tizen.NUI.BaseComponents
             }
             set
             {
-                RightFocusableViewId = (int)value.GetId();
+                if(value)
+                {
+                    RightFocusableViewId = (int)value.GetId();
+                }
+                else
+                {
+                    RightFocusableViewId = -1;
+                }
             }
         }
 
         /// <summary>
-        /// The up focusable view.<br>
-        /// This will return NULL if not set.<br>
-        /// This will also return NULL if the specified up focusable view is not on Window.<br>
+        /// The up focusable view.<br />
+        /// This will return null if not set.<br />
+        /// This will also return null if the specified up focusable view is not on a window.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public View UpFocusableView
         {
             // As native side will be only storing IDs so need a logic to convert View to ID and vice-versa.
@@ -1594,15 +1974,23 @@ namespace Tizen.NUI.BaseComponents
             }
             set
             {
-                UpFocusableViewId = (int)value.GetId();
+                if(value)
+                {
+                    UpFocusableViewId = (int)value.GetId();
+                }
+                else
+                {
+                    UpFocusableViewId = -1;
+                }
             }
         }
 
         /// <summary>
-        /// The down focusable view.<br>
-        /// This will return NULL if not set.<br>
-        /// This will also return NULL if the specified down focusable view is not on Window.<br>
+        /// The down focusable view.<br />
+        /// This will return null if not set.<br />
+        /// This will also return null if the specified down focusable view is not on a window.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public View DownFocusableView
         {
             // As native side will be only storing IDs so need a logic to convert View to ID and vice-versa.
@@ -1616,13 +2004,21 @@ namespace Tizen.NUI.BaseComponents
             }
             set
             {
-                DownFocusableViewId = (int)value.GetId();
+                if(value)
+                {
+                    DownFocusableViewId = (int)value.GetId();
+                }
+                else
+                {
+                    DownFocusableViewId = -1;
+                }
             }
         }
 
         /// <summary>
-        /// whether the view should be focusable by keyboard navigation.
+        /// Whether the view should be focusable by keyboard navigation.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public bool Focusable
         {
             set
@@ -1636,28 +2032,30 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Enumeration for describing the states of view.
+        /// Enumeration for describing the states of the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public enum States
         {
             /// <summary>
-            /// Normal state
+            /// The normal state.
             /// </summary>
             Normal,
             /// <summary>
-            /// Focused state
+            /// The focused state.
             /// </summary>
             Focused,
             /// <summary>
-            /// Disabled state
+            /// The disabled state.
             /// </summary>
             Disabled
         }
 
         /// <summary>
-        ///  Retrieves the position of the View.<br>
-        ///  The coordinates are relative to the View's parent.<br>
+        ///  Retrieves the position of the view.<br />
+        ///  The coordinates are relative to the view's parent.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Position CurrentPosition
         {
             get
@@ -1667,11 +2065,12 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Sets the size of an view for width and height.<br>
-        /// Geometry can be scaled to fit within this area.<br>
-        /// This does not interfere with the views scale factor.<br>
-        /// The views default depth is the minimum of width & height.<br>
+        /// Sets the size of a view for the width and the height.<br />
+        /// Geometry can be scaled to fit within this area.<br />
+        /// This does not interfere with the view's scale factor.<br />
+        /// The views default depth is the minimum of width and height.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Size2D Size2D
         {
             get
@@ -1688,9 +2087,10 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        ///  Retrieves the size of the View.<br>
-        ///  The coordinates are relative to the View's parent.<br>
+        ///  Retrieves the size of the view.<br />
+        ///  The coordinates are relative to the view's parent.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Size2D CurrentSize
         {
             get
@@ -1700,17 +2100,11 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Retrieves the view's parent.<br>
+        /// [Obsolete("Please do not use! this will be deprecated. Please use Visibility instead.")]
         /// </summary>
-        public View Parent
-        {
-            get
-            {
-                return GetParent();
-            }
-        }
-
-        public bool Visibility
+        /// <since_tizen> 3 </since_tizen>
+        [Obsolete("Please do not use! this will be deprecated. Please use Visibility instead.")]
+        public bool Visible
         {
             get
             {
@@ -1719,8 +2113,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Retrieves and sets the view's opacity.<br>
+        /// Retrieves and sets the view's opacity.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public float Opacity
         {
             get
@@ -1736,10 +2131,11 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Sets the position of the View for X and Y.<br>
-        /// By default, sets the position vector between the parent origin and pivot point(default).<br>
-        /// If Position inheritance if disabled, sets the world position.<br>
+        /// Sets the position of the view for X and Y.<br />
+        /// By default, sets the position vector between the parent origin and the pivot point (default).<br />
+        /// If the position inheritance is disabled, sets the world position.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Position2D Position2D
         {
             get
@@ -1755,8 +2151,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Retrieves screen postion of view's.<br>
+        /// Retrieves the screen postion of the view.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Vector2 ScreenPosition
         {
             get
@@ -1774,6 +2171,7 @@ namespace Tizen.NUI.BaseComponents
         /// <remarks>If false, then the top-left of the view is used for the position.
         /// Setting this to false will allow scaling or rotation around the anchor-point without affecting the view's position.
         /// </remarks>
+        /// <since_tizen> 4 </since_tizen>
         public bool PositionUsesPivotPoint
         {
             get
@@ -1788,6 +2186,10 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// [Obsolete("Please do not use! this will be deprecated")]
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         [Obsolete("Please do not use! this will be deprecated")]
         public bool PositionUsesAnchorPoint
         {
@@ -1816,9 +2218,10 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Queries whether the view is connected to the Stage.<br>
-        /// When an view is connected, it will be directly or indirectly parented to the root View.<br>
+        /// Queries whether the view is connected to the stage.<br />
+        /// When a view is connected, it will be directly or indirectly parented to the root view.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public bool IsOnWindow
         {
             get
@@ -1828,8 +2231,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets depth in the hierarchy for the view.
+        /// Gets the depth in the hierarchy for the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public int HierarchyDepth
         {
             get
@@ -1839,13 +2243,14 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Sets the sibling order of the view so depth position can be defined within the same parent.
+        /// Sets the sibling order of the view so the depth position can be defined within the same parent.
         /// </summary>
         /// <remarks>
-        /// Note The initial value is 0.
-        /// Raise, Lower, RaiseToTop, LowerToBottom, RaiseAbove and LowerBelow will override the sibling order.
-        /// The values set by this Property will likely change.
+        /// Note the initial value is 0.
+        /// Raise, Lower, RaiseToTop, LowerToBottom, RaiseAbove, and LowerBelow will override the sibling order.
+        /// The values set by this property will likely change.
         /// </remarks>
+        /// <since_tizen> 3 </since_tizen>
         public int SiblingOrder
         {
             get
@@ -1860,7 +2265,13 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
-        [Obsolete("Please do not use! this will be internal property")]
+        /// <summary>
+        /// Returns the natural size of the view.
+        /// </summary>
+        /// <remarks>
+        /// Deriving classes stipulate the natural size and by default a view has a zero natural size.
+        /// </remarks>
+        [Obsolete("Please do not use! this will be deprecated, please use NaturalSize2D instead")]
         public Vector3 NaturalSize
         {
             get
@@ -1873,24 +2284,45 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Shows the View.
+        /// Returns the natural size (Size2D) of the view.
+        /// </summary>
+        /// <remarks>
+        /// Deriving classes stipulate the natural size and by default a view has a zero natural size.
+        /// </remarks>
+        /// <since_tizen> 4 </since_tizen>
+        public Size2D NaturalSize2D
+        {
+            get
+            {
+                Vector3 temp = new Vector3(NDalicPINVOKE.Actor_GetNaturalSize(swigCPtr), true);
+                if (NDalicPINVOKE.SWIGPendingException.Pending)
+                    throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+                return new Size2D((int)temp.Width, (int)temp.Height);
+            }
+        }
+
+        /// <summary>
+        /// Shows the view.
         /// </summary>
         /// <remarks>
         /// This is an asynchronous method.
         /// </remarks>
+        /// <since_tizen> 3 </since_tizen>
         public void Show()
         {
             SetVisible(true);
         }
 
         /// <summary>
-        /// Hides the View.
+        /// Hides the view.
         /// </summary>
         /// <remarks>
         /// This is an asynchronous method.
-        /// If an view is hidden, then the view and its children will not be rendered.
-        /// This is regardless of the individual visibility of the children i.e.an view will only be rendered if all of its parents are shown.
+        /// If the view is hidden, then the view and its children will not be rendered.
+        /// This is regardless of the individual visibility of the children, i.e., the view will only be rendered if all of its parents are shown.
         /// </remarks>
+        /// <since_tizen> 3 </since_tizen>
         public void Hide()
         {
             SetVisible(false);
@@ -1898,6 +2330,21 @@ namespace Tizen.NUI.BaseComponents
 
         internal void Raise()
         {
+            var parentChildren = Parent?.Children;
+
+            if (parentChildren != null)
+            {
+                int currentIndex = parentChildren.IndexOf(this);
+
+                // If the view is not already the last item in the list.
+                if (currentIndex != parentChildren.Count -1)
+                {
+                    View temp = parentChildren[currentIndex + 1];
+                    parentChildren[currentIndex + 1] = this;
+                    parentChildren[currentIndex] = temp;
+                }
+            }
+
             NDalicPINVOKE.Raise(swigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending)
                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -1905,44 +2352,78 @@ namespace Tizen.NUI.BaseComponents
 
         internal void Lower()
         {
+            var parentChildren = Parent?.Children;
+
+            if (parentChildren != null)
+            {
+                int currentIndex = parentChildren.IndexOf(this);
+
+                // If the view is not already the first item in the list.
+                if (currentIndex > 0)
+                {
+                    View temp = parentChildren[currentIndex - 1];
+                    parentChildren[currentIndex - 1] = this;
+                    parentChildren[currentIndex] = temp;
+                }
+            }
+
             NDalicPINVOKE.Lower(swigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending)
                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         /// <summary>
-        /// Raise view above all other views.
+        /// Raises the view above all other views.
         /// </summary>
         /// <remarks>
         /// Sibling order of views within the parent will be updated automatically.
-        /// Once a raise or lower API is used that view will then have an exclusive sibling order independent of insertion.
+        /// Once a raise or lower API is used, that view will then have an exclusive sibling order independent of insertion.
         /// </remarks>
+        /// <since_tizen> 3 </since_tizen>
         public void RaiseToTop()
         {
+            var parentChildren = Parent?.Children;
+
+            if (parentChildren != null)
+            {
+                parentChildren.Remove(this);
+                parentChildren.Add(this);
+            }
+
             NDalicPINVOKE.RaiseToTop(swigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending)
                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         /// <summary>
-        /// Lower view to the bottom of all views.
+        /// Lowers the view to the bottom of all views.
         /// </summary>
         /// <remarks>
-        /// Sibling order of views within the parent will be updated automatically.
+        /// The sibling order of views within the parent will be updated automatically.
         /// Once a raise or lower API is used that view will then have an exclusive sibling order independent of insertion.
         /// </remarks>
+        /// <since_tizen> 3 </since_tizen>
         public void LowerToBottom()
         {
+            var parentChildren = Parent?.Children;
+
+            if (parentChildren != null)
+            {
+                parentChildren.Remove(this);
+                parentChildren.Insert(0, this);
+            }
+
             NDalicPINVOKE.LowerToBottom(swigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending)
                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         /// <summary>
-        /// Query if all resources required by a View are loaded and ready.
+        /// Queries if all resources required by a view are loaded and ready.
         /// </summary>
-        /// <remarks>Most resources are only loaded when the control is placed on stage
+        /// <remarks>Most resources are only loaded when the control is placed on the stage.
         /// </remarks>
+        /// <since_tizen> 4 </since_tizen>
         public bool IsResourceReady()
         {
             bool ret = NDalicPINVOKE.IsResourceReady(swigCPtr);
@@ -1951,32 +2432,63 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Raise the view to above the target view.
+        /// Raises the view to above the target view.
         /// </summary>
-        /// <remarks>Sibling order of views within the parent will be updated automatically.
+        /// <remarks>The sibling order of views within the parent will be updated automatically.
         /// Views on the level above the target view will still be shown above this view.
         /// Raising this view above views with the same sibling order as each other will raise this view above them.
         /// Once a raise or lower API is used that view will then have an exclusive sibling order independent of insertion.
         /// </remarks>
-        /// <param name="target">Will be raised above this view</param>
+        /// <param name="target">Will be raised above this view.</param>
         internal void RaiseAbove(View target)
         {
+            var parentChildren = Parent?.Children;
+
+            if (parentChildren != null)
+            {
+                int currentIndex = parentChildren.IndexOf(this);
+                int targetIndex = parentChildren.IndexOf(target);
+
+                // If the currentIndex is less than the target index and the target has the same parent.
+                if (currentIndex < targetIndex)
+                {
+                    parentChildren.Remove(this);
+                    parentChildren.Insert(targetIndex, this);
+                }
+            }
+
             NDalicPINVOKE.RaiseAbove(swigCPtr, View.getCPtr(target));
             if (NDalicPINVOKE.SWIGPendingException.Pending)
                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         /// <summary>
-        /// Lower the view to below the target view.
+        /// Lowers the view to below the target view.
         /// </summary>
-        /// <remarks>Sibling order of views within the parent will be updated automatically.
+        /// <remarks>The sibling order of views within the parent will be updated automatically.
         /// Lowering this view below views with the same sibling order as each other will lower this view above them.
         /// Once a raise or lower API is used that view will then have an exclusive sibling order independent of insertion.
         /// </remarks>
-        /// <param name="target">Will be lowered below this view</param>
+        /// <param name="target">Will be lowered below this view.</param>
         internal void LowerBelow(View target)
         {
-            NDalicPINVOKE.RaiseAbove(swigCPtr, View.getCPtr(target));
+            var parentChildren = Parent?.Children;
+
+            if (parentChildren != null)
+            {
+                int currentIndex = parentChildren.IndexOf(this);
+                int targetIndex = parentChildren.IndexOf(target);
+
+                // If the currentIndex is not already the 0th index and the target has the same parent.
+                if ((currentIndex != 0) && (targetIndex != -1) &&
+                    (currentIndex > targetIndex))
+                {
+                    parentChildren.Remove(this);
+                    parentChildren.Insert(targetIndex, this);
+                }
+            }
+
+            NDalicPINVOKE.LowerBelow(swigCPtr, View.getCPtr(target));
             if (NDalicPINVOKE.SWIGPendingException.Pending)
                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
@@ -2030,79 +2542,23 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Adds a child view to this View.
+        /// Removes a view from its parent view or layer. If a view has no parent, this method does nothing.
         /// </summary>
-        /// <pre>This View(the parent) has been initialized. The child view has been initialized. The child view is not the same as the parent view.</pre>
-        /// <post>The child will be referenced by its parent. This means that the child will be kept alive, even if the handle passed into this method is reset or destroyed.</post>
-        /// <remarks>If the child already has a parent, it will be removed from old parent and reparented to this view. This may change child's position, color, scale etc as it now inherits them from this view.</remarks>
-        /// <param name="child">The child</param>
-        public void Add(View child)
-        {
-            NDalicPINVOKE.Actor_Add(swigCPtr, View.getCPtr(child));
-            if (NDalicPINVOKE.SWIGPendingException.Pending)
-                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-        }
-
-        /// <summary>
-        /// Removes a child View from this View. If the view was not a child of this view, this is a no-op.
-        /// </summary>
-        /// <pre>This View(the parent) has been initialized. The child view is not the same as the parent view.</pre>
-        /// <param name="child">The child</param>
-        public void Remove(View child)
-        {
-            NDalicPINVOKE.Actor_Remove(swigCPtr, View.getCPtr(child));
-            if (NDalicPINVOKE.SWIGPendingException.Pending)
-                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-        }
-
-        /// <summary>
-        /// Removes a View from its Parent View / Layer. If the View has no parent, this method does nothing.
-        /// </summary>
-        /// <pre>The (child) View has been initialized. </pre>
+        /// <pre>The (child) view has been initialized. </pre>
+        /// <since_tizen> 4 </since_tizen>
         public void Unparent()
         {
-            NDalicPINVOKE.Actor_Unparent(swigCPtr);
-            if (NDalicPINVOKE.SWIGPendingException.Pending)
-                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            GetParent()?.Remove(this);
         }
 
         /// <summary>
-        /// Retrieves the number of children held by the view.
-        /// </summary>
-        /// <pre>The View has been initialized.</pre>
-        /// <returns>The number of children</returns>
-        internal uint GetChildCount()
-        {
-            uint ret = NDalicPINVOKE.Actor_GetChildCount(swigCPtr);
-            if (NDalicPINVOKE.SWIGPendingException.Pending)
-                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-            return ret;
-        }
-
-        /// <summary>
-        /// Retrieves child view by index.
-        /// </summary>
-        /// <pre>The View has been initialized.</pre>
-        /// <param name="index">The index of the child to retrieve</param>
-        /// <returns>The view for the given index or empty handle if children not initialized</returns>
-        public View GetChildAt(uint index)
-        {
-            IntPtr cPtr = NDalicPINVOKE.Actor_GetChildAt(swigCPtr, index);
-
-            View ret = Registry.GetManagedBaseHandleFromNativePtr(cPtr) as View;
-
-            if (NDalicPINVOKE.SWIGPendingException.Pending)
-                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-            return ret ?? null;
-        }
-
-        /// <summary>
-        /// Search through this view's hierarchy for an view with the given name.
+        /// Search through this view's hierarchy for a view with the given name.
         /// The view itself is also considered in the search.
         /// </summary>
-        /// <pre>The View has been initialized.</pre>
-        /// <param name="viewName">The name of the view to find</param>
-        /// <returns>A handle to the view if found, or an empty handle if not</returns>
+        /// <pre>The view has been initialized.</pre>
+        /// <param name="viewName">The name of the view to find.</param>
+        /// <returns>A handle to the view if found, or an empty handle if not.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public View FindChildByName(string viewName)
         {
             IntPtr cPtr = NDalicPINVOKE.Actor_FindChildByName(swigCPtr, viewName);
@@ -2125,47 +2581,6 @@ namespace Tizen.NUI.BaseComponents
             return ret;
         }
 
-        /*internal View GetParent()
-        {
-            View ret;
-            IntPtr cPtr = NDalicPINVOKE.Actor_GetParent(swigCPtr);
-
-            BaseHandle basehandle = Registry.GetManagedBaseHandleFromNativePtr(cPtr);
-
-            if(basehandle is Layer)
-            {
-                ret = new View(cPtr,false);
-            }
-            else
-            {
-                ret = basehandle as View;
-            }
-
-            if (NDalicPINVOKE.SWIGPendingException.Pending)
-                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-            return ret;
-        }*/
-
-        internal View GetParent()
-        {
-            View ret;
-            IntPtr cPtr = NDalicPINVOKE.Actor_GetParent(swigCPtr);
-
-            BaseHandle basehandle = Registry.GetManagedBaseHandleFromNativePtr(cPtr);
-
-            if(basehandle is Layer)
-            {
-                View ret2 = new View(cPtr,false);
-                return ret2;
-            }
-
-            ret = basehandle as View;
-
-            if (NDalicPINVOKE.SWIGPendingException.Pending)
-                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-            return ret;
-        }
-
         internal void SetParentOrigin(Vector3 origin)
         {
             NDalicPINVOKE.Actor_SetParentOrigin(swigCPtr, Vector3.getCPtr(origin));
@@ -2555,13 +2970,14 @@ namespace Tizen.NUI.BaseComponents
         /// <summary>
         /// Converts screen coordinates into the view's coordinate system using the default camera.
         /// </summary>
-        /// <pre>The View has been initialized.</pre>
-        /// <remarks>The view coordinates are relative to the top-left(0.0, 0.0, 0.5)</remarks>
-        /// <param name="localX">On return, the X-coordinate relative to the view</param>
-        /// <param name="localY">On return, the Y-coordinate relative to the view</param>
-        /// <param name="screenX">The screen X-coordinate</param>
-        /// <param name="screenY">The screen Y-coordinate</param>
-        /// <returns>True if the conversion succeeded</returns>
+        /// <pre>The view has been initialized.</pre>
+        /// <remarks>The view coordinates are relative to the top-left(0.0, 0.0, 0.5).</remarks>
+        /// <param name="localX">On return, the X-coordinate relative to the view.</param>
+        /// <param name="localY">On return, the Y-coordinate relative to the view.</param>
+        /// <param name="screenX">The screen X-coordinate.</param>
+        /// <param name="screenY">The screen Y-coordinate.</param>
+        /// <returns>True if the conversion succeeded.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public bool ScreenToLocal(out float localX, out float localY, float screenX, float screenY)
         {
             bool ret = NDalicPINVOKE.Actor_ScreenToLocal(swigCPtr, out localX, out localY, screenX, screenY);
@@ -2601,13 +3017,14 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Sets the relative to parent size factor of the view.<br>
+        /// Sets the relative to parent size factor of the view.<br />
         /// This factor is only used when ResizePolicy is set to either:
-        /// ResizePolicy::SIZE_RELATIVE_TO_PARENT or ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT.<br>
-        /// This view's size is set to the view's size multiplied by or added to this factor, depending on ResizePolicy.<br>
+        /// ResizePolicy::SIZE_RELATIVE_TO_PARENT or ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT.<br />
+        /// This view's size is set to the view's size multiplied by or added to this factor, depending on ResizePolicy.<br />
         /// </summary>
-        /// <pre>The View has been initialized.</pre>
-        /// <param name="factor">A Vector3 representing the relative factor to be applied to each axis</param>
+        /// <pre>The view has been initialized.</pre>
+        /// <param name="factor">A Vector3 representing the relative factor to be applied to each axis.</param>
+        /// <since_tizen> 3 </since_tizen>
         public void SetSizeModeFactor(Vector3 factor)
         {
             NDalicPINVOKE.Actor_SetSizeModeFactor(swigCPtr, Vector3.getCPtr(factor));
@@ -2624,12 +3041,13 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Calculates the height of the view given a width.<br>
-        /// The natural size is used for default calculation. <br>
-        /// size 0 is treated as aspect ratio 1:1.<br>
+        /// Calculates the height of the view given a width.<br />
+        /// The natural size is used for default calculation.<br />
+        /// Size 0 is treated as aspect ratio 1:1.<br />
         /// </summary>
-        /// <param name="width">Width to use</param>
-        /// <returns>The height based on the width</returns>
+        /// <param name="width">The width to use.</param>
+        /// <returns>The height based on the width.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public float GetHeightForWidth(float width)
         {
             float ret = NDalicPINVOKE.Actor_GetHeightForWidth(swigCPtr, width);
@@ -2639,12 +3057,13 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Calculates the width of the view given a height.<br>
-        /// The natural size is used for default calculation.<br>
-        /// size 0 is treated as aspect ratio 1:1.<br>
+        /// Calculates the width of the view given a height.<br />
+        /// The natural size is used for default calculation.<br />
+        /// Size 0 is treated as aspect ratio 1:1.<br />
         /// </summary>
-        /// <param name="height">Height to use</param>
-        /// <returns>The width based on the height</returns>
+        /// <param name="height">The height to use.</param>
+        /// <returns>The width based on the height.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public float GetWidthForHeight(float height)
         {
             float ret = NDalicPINVOKE.Actor_GetWidthForHeight(swigCPtr, height);
@@ -2653,6 +3072,12 @@ namespace Tizen.NUI.BaseComponents
             return ret;
         }
 
+        /// <summary>
+        /// Return the amount of size allocated for relayout.
+        /// </summary>
+        /// <param name="dimension">The dimension to retrieve.</param>
+        /// <returns>Return the size.</returns>
+        /// <since_tizen> 3 </since_tizen>
         public float GetRelayoutSize(DimensionType dimension)
         {
             float ret = NDalicPINVOKE.Actor_GetRelayoutSize(swigCPtr, (int)dimension);
@@ -2661,6 +3086,11 @@ namespace Tizen.NUI.BaseComponents
             return ret;
         }
 
+        /// <summary>
+        /// Set the padding for the view.
+        /// </summary>
+        /// <param name="padding">Padding for the view.</param>
+        /// <since_tizen> 3 </since_tizen>
         public void SetPadding(PaddingType padding)
         {
             NDalicPINVOKE.Actor_SetPadding(swigCPtr, PaddingType.getCPtr(padding));
@@ -2668,6 +3098,11 @@ namespace Tizen.NUI.BaseComponents
                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
+        /// <summary>
+        /// Return the value of padding for the view.
+        /// </summary>
+        /// <param name="paddingOut">the value of padding for the view</param>
+        /// <since_tizen> 3 </since_tizen>
         public void GetPadding(PaddingType paddingOut)
         {
             NDalicPINVOKE.Actor_GetPadding(swigCPtr, PaddingType.getCPtr(paddingOut));
@@ -2713,6 +3148,7 @@ namespace Tizen.NUI.BaseComponents
             return ret;
         }
 
+        /// <since_tizen> 4 </since_tizen>
         public uint AddRenderer(Renderer renderer)
         {
             uint ret = NDalicPINVOKE.Actor_AddRenderer(swigCPtr, Renderer.getCPtr(renderer));
@@ -2729,6 +3165,7 @@ namespace Tizen.NUI.BaseComponents
             return ret;
         }
 
+        /// <since_tizen> 4 </since_tizen>
         public Renderer GetRendererAt(uint index)
         {
             IntPtr cPtr = NDalicPINVOKE.Actor_GetRendererAt(swigCPtr, index);
@@ -2739,6 +3176,7 @@ namespace Tizen.NUI.BaseComponents
             return ret;
         }
 
+        /// <since_tizen> 4 </since_tizen>
         public void RemoveRenderer(Renderer renderer)
         {
             NDalicPINVOKE.Actor_RemoveRenderer__SWIG_0(swigCPtr, Renderer.getCPtr(renderer));
@@ -2746,6 +3184,7 @@ namespace Tizen.NUI.BaseComponents
                 throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
+        /// <since_tizen> 4 </since_tizen>
         public void RemoveRenderer(uint index)
         {
             NDalicPINVOKE.Actor_RemoveRenderer__SWIG_1(swigCPtr, index);
@@ -2807,6 +3246,14 @@ namespace Tizen.NUI.BaseComponents
             return ret;
         }
 
+
+        internal ViewLayoutDirectionChangedSignal LayoutDirectionChangedSignal(View view) {
+            ViewLayoutDirectionChangedSignal ret = new ViewLayoutDirectionChangedSignal(NDalicManualPINVOKE.LayoutDirectionChangedSignal(View.getCPtr(view)), false);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
+        }
+
+
         internal ViewSignal ResourcesLoadedSignal()
         {
             ViewSignal ret = new ViewSignal(NDalicPINVOKE.ResourceReadySignal(swigCPtr), false);
@@ -2815,12 +3262,13 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the origin of an view, within its parent's area.<br>
-        /// This is expressed in unit coordinates, such that (0.0, 0.0, 0.5) is the top-left corner of the parent, and(1.0, 1.0, 0.5) is the bottom-right corner.<br>
-        /// The default parent-origin is ParentOrigin.TopLeft (0.0, 0.0, 0.5).<br>
-        /// An view's position is the distance between this origin, and the view's anchor-point.<br>
+        /// Gets or sets the origin of a view within its parent's area.<br />
+        /// This is expressed in unit coordinates, such that (0.0, 0.0, 0.5) is the top-left corner of the parent, and (1.0, 1.0, 0.5) is the bottom-right corner.<br />
+        /// The default parent-origin is ParentOrigin.TopLeft (0.0, 0.0, 0.5).<br />
+        /// A view's position is the distance between this origin and the view's anchor-point.<br />
         /// </summary>
-        /// <pre>The View has been initialized.</pre>
+        /// <pre>The view has been initialized.</pre>
+        /// <since_tizen> 3 </since_tizen>
         public Position ParentOrigin
         {
             get
@@ -2878,13 +3326,14 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the anchor-point of an view.<br>
-        /// This is expressed in unit coordinates, such that (0.0, 0.0, 0.5) is the top-left corner of the view, and (1.0, 1.0, 0.5) is the bottom-right corner.<br>
-        /// The default pivot point is PivotPoint.Center (0.5, 0.5, 0.5).<br>
-        /// An view position is the distance between its parent-origin and this anchor-point.<br>
-        /// An view's orientation is the rotation from its default orientation, the rotation is centered around its anchor-point.<br>
-        /// <pre>The View has been initialized.</pre>
+        /// Gets or sets the anchor-point of a view.<br />
+        /// This is expressed in unit coordinates, such that (0.0, 0.0, 0.5) is the top-left corner of the view, and (1.0, 1.0, 0.5) is the bottom-right corner.<br />
+        /// The default pivot point is PivotPoint.Center (0.5, 0.5, 0.5).<br />
+        /// A view position is the distance between its parent-origin and this anchor-point.<br />
+        /// A view's orientation is the rotation from its default orientation, the rotation is centered around its anchor-point.<br />
+        /// <pre>The view has been initialized.</pre>
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Position PivotPoint
         {
             get
@@ -2942,8 +3391,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the size width of an view.
+        /// Gets or sets the size width of the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public float SizeWidth
         {
             get
@@ -2959,8 +3409,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the size height of an view.
+        /// Gets or sets the size height of the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public float SizeHeight
         {
             get
@@ -2976,10 +3427,11 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the position of the View.<br>
-        /// By default, sets the position vector between the parent origin and pivot point(default).<br>
-        /// If Position inheritance if disabled, sets the world position.<br>
+        /// Gets or sets the position of the view.<br />
+        /// By default, sets the position vector between the parent origin and pivot point (default).<br />
+        /// If the position inheritance is disabled, sets the world position.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Position Position
         {
             get
@@ -2995,8 +3447,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the position x of the View.
+        /// Gets or sets the position X of the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public float PositionX
         {
             get
@@ -3012,8 +3465,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the position y of the View.
+        /// Gets or sets the position Y of the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public float PositionY
         {
             get
@@ -3029,8 +3483,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the position z of the View.
+        /// Gets or sets the position Z of the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public float PositionZ
         {
             get
@@ -3046,8 +3501,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the world position of the View.
+        /// Gets or sets the world position of the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Vector3 WorldPosition
         {
             get
@@ -3089,10 +3545,11 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the orientation of the View.<br>
-        /// An view's orientation is the rotation from its default orientation, and the rotation is centered around its anchor-point.<br>
+        /// Gets or sets the orientation of the view.<br />
+        /// The view's orientation is the rotation from its default orientation, and the rotation is centered around its anchor-point.<br />
         /// </summary>
         /// <remarks>This is an asynchronous method.</remarks>
+        /// <since_tizen> 3 </since_tizen>
         public Rotation Orientation
         {
             get
@@ -3108,8 +3565,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the world orientation of the View.<br>
+        /// Gets or sets the world orientation of the view.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Rotation WorldOrientation
         {
             get
@@ -3121,8 +3579,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the scale factor applied to an view.<br>
+        /// Gets or sets the scale factor applied to the view.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Vector3 Scale
         {
             get
@@ -3138,8 +3597,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the scale x factor applied to an view.
+        /// Gets or sets the scale X factor applied to the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public float ScaleX
         {
             get
@@ -3155,8 +3615,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the scale y factor applied to an view.
+        /// Gets or sets the scale Y factor applied to the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public float ScaleY
         {
             get
@@ -3172,8 +3633,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the scale z factor applied to an view.
+        /// Gets or sets the scale Z factor applied to the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public float ScaleZ
         {
             get
@@ -3189,8 +3651,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets the world scale of View.
+        /// Gets the world scale of the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Vector3 WorldScale
         {
             get
@@ -3202,29 +3665,27 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Retrieves the visibility flag of an view.
+        /// Retrieves the visibility flag of the view.
         /// </summary>
         /// <remarks>
-        /// If an view is not visible, then the view and its children will not be rendered.
-        /// This is regardless of the individual visibility values of the children i.e.an view will only be rendered if all of its parents have visibility set to true.
+        /// If the view is not visible, then the view and its children will not be rendered.
+        /// This is regardless of the individual visibility values of the children, i.e., the view will only be rendered if all of its parents have visibility set to true.
         /// </remarks>
-        public bool Visible
+        /// <since_tizen> 3 </since_tizen>
+        public bool Visibility
         {
             get
             {
                 bool temp = false;
                 GetProperty(View.Property.VISIBLE).Get(out temp);
                 return temp;
-            }/* only get is required : removed
-            set
-            {
-                SetProperty(View.Property.VISIBLE, new Tizen.NUI.PropertyValue(value));
-            }*/
+            }
         }
 
         /// <summary>
         /// Gets the view's world color.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Vector4 WorldColor
         {
             get
@@ -3246,8 +3707,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the View's name.
+        /// Gets or sets the view's name.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public string Name
         {
             get
@@ -3265,7 +3727,8 @@ namespace Tizen.NUI.BaseComponents
         /// <summary>
         /// Get the number of children held by the view.
         /// </summary>
-        public uint ChildCount
+        /// <since_tizen> 3 </since_tizen>
+        public new uint ChildCount
         {
             get
             {
@@ -3274,9 +3737,10 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets the View's ID.
+        /// Gets the view's ID.
         /// Readonly
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public uint ID
         {
             get
@@ -3286,8 +3750,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the status of whether an view should emit touch or hover signals.
+        /// Gets or sets the status of whether the view should emit touch or hover signals.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public bool Sensitive
         {
             get
@@ -3303,8 +3768,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the status of whether the view should receive a notification when touch or hover motion events leave the boundary of the view.
+        /// Gets or sets the status of whether the view should receive a notification when touch or hover motion events leave the boundary of the view.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public bool LeaveRequired
         {
             get
@@ -3320,8 +3786,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the status of whether a child view inherits it's parent's orientation.
+        /// Gets or sets the status of whether a child view inherits it's parent's orientation.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public bool InheritOrientation
         {
             get
@@ -3337,8 +3804,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the status of whether a child view inherits it's parent's scale.
+        /// Gets or sets the status of whether a child view inherits it's parent's scale.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public bool InheritScale
         {
             get
@@ -3354,13 +3822,14 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the status of how the view and its children should be drawn.<br>
-        /// Not all views are renderable, but DrawMode can be inherited from any view.<br>
-        /// If an object is in a 3D layer, it will be depth-tested against other objects in the world i.e. it may be obscured if other objects are in front.<br>
-        /// If DrawMode.Overlay2D is used, the view and its children will be drawn as a 2D overlay.<br>
-        /// Overlay views are drawn in a separate pass, after all non-overlay views within the Layer.<br>
-        /// For overlay views, the drawing order is with respect to tree levels of Views, and depth-testing will not be used.<br>
+        /// Gets or sets the status of how the view and its children should be drawn.<br />
+        /// Not all views are renderable, but DrawMode can be inherited from any view.<br />
+        /// If an object is in a 3D layer, it will be depth-tested against other objects in the world, i.e., it may be obscured if other objects are in front.<br />
+        /// If DrawMode.Overlay2D is used, the view and its children will be drawn as a 2D overlay.<br />
+        /// Overlay views are drawn in a separate pass, after all non-overlay views within the layer.<br />
+        /// For overlay views, the drawing order is with respect to tree levels of views, and depth-testing will not be used.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public DrawModeType DrawMode
         {
             get
@@ -3389,10 +3858,11 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the relative to parent size factor of the view.<br>
-        /// This factor is only used when ResizePolicyType is set to either: ResizePolicyType.SizeRelativeToParent or ResizePolicyType.SizeFixedOffsetFromParent.<br>
-        /// This view's size is set to the view's size multiplied by or added to this factor, depending on ResizePolicyType.<br>
+        /// Gets or sets the relative to parent size factor of the view.<br />
+        /// This factor is only used when ResizePolicyType is set to either: ResizePolicyType.SizeRelativeToParent or ResizePolicyType.SizeFixedOffsetFromParent.<br />
+        /// This view's size is set to the view's size multiplied by or added to this factor, depending on ResizePolicyType.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Vector3 SizeModeFactor
         {
             get
@@ -3408,8 +3878,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the width resize policy to be used.
+        /// Gets or sets the width resize policy to be used.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public ResizePolicyType WidthResizePolicy
         {
             get
@@ -3448,8 +3919,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the height resize policy to be used.
+        /// Gets or sets the height resize policy to be used.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public ResizePolicyType HeightResizePolicy
         {
             get
@@ -3488,9 +3960,10 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the policy to use when setting size with size negotiation.<br>
-        /// Defaults to  SizeScalePolicyType.UseSizeSet.<br>
+        /// Gets or sets the policy to use when setting size with size negotiation.<br />
+        /// Defaults to SizeScalePolicyType.UseSizeSet.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public SizeScalePolicyType SizeScalePolicy
         {
             get
@@ -3543,8 +4016,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        ///  Gets/Sets the status of whether the width size is dependent on height size.
+        ///  Gets or sets the status of whether the width size is dependent on the height size.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public bool WidthForHeight
         {
             get
@@ -3560,8 +4034,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        ///  Gets/Sets the status of whether the height size is dependent on width size.
+        /// Gets or sets the status of whether the height size is dependent on the width size.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public bool HeightForWidth
         {
             get
@@ -3577,8 +4052,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the padding for use in layout.
+        /// Gets or sets the padding for use in layout.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Vector4 Padding
         {
             get
@@ -3594,8 +4070,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the minimum size an view can be assigned in size negotiation.
+        /// Gets or sets the minimum size the view can be assigned in size negotiation.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Size2D MinimumSize
         {
             get
@@ -3611,8 +4088,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets the maximum size an view can be assigned in size negotiation.
+        /// Gets or sets the maximum size the view can be assigned in size negotiation.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public Size2D MaximumSize
         {
             get
@@ -3628,10 +4106,11 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets whether a child view inherits it's parent's position.<br>
-        /// Default is to inherit.<br>
-        /// Switching this off means that using Position sets the view's world position, i.e. translates from the world origin(0,0,0) to the pivot point of the view.<br>
+        /// Gets or sets whether a child view inherits it's parent's position.<br />
+        /// Default is to inherit.<br />
+        /// Switching this off means that using position sets the view's world position, i.e., translates from the world origin (0,0,0) to the pivot point of the view.<br />
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public bool InheritPosition
         {
             get
@@ -3647,8 +4126,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Gets/Sets clipping behavior(mode) of it's children.
+        /// Gets or sets the clipping behavior (mode) of it's children.
         /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         public ClippingModeType ClippingMode
         {
             get
@@ -3664,6 +4144,8 @@ namespace Tizen.NUI.BaseComponents
                     return ClippingModeType.Disabled;
                     case "CLIP_CHILDREN":
                     return ClippingModeType.ClipChildren;
+                    case "CLIP_TO_BOUNDING_BOX":
+                    return ClippingModeType.ClipToBoundingBox;
                     default:
                     return ClippingModeType.Disabled;
                 }
@@ -3675,8 +4157,9 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
-        /// Get the number of renderers held by the view.
+        /// Gets the number of renderers held by the view.
         /// </summary>
+        /// <since_tizen> 4 </since_tizen>
         public uint RendererCount
         {
             get
@@ -3687,7 +4170,10 @@ namespace Tizen.NUI.BaseComponents
 
 
 
-
+        /// <summary>
+        /// [Obsolete("Please do not use! this will be deprecated")]
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         [Obsolete("Please do not use! this will be deprecated")]
         public event EventHandlerWithReturnType<object, TouchEventArgs, bool> Touched
         {
@@ -3714,6 +4200,10 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// [Obsolete("Please do not use! this will be deprecated")]
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         [Obsolete("Please do not use! this will be deprecated")]
         public event EventHandlerWithReturnType<object, HoverEventArgs, bool> Hovered
         {
@@ -3740,6 +4230,10 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// [Obsolete("Please do not use! this will be deprecated")]
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         [Obsolete("Please do not use! this will be deprecated")]
         public event EventHandlerWithReturnType<object, WheelEventArgs, bool> WheelMoved
         {
@@ -3766,6 +4260,10 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// [Obsolete("Please do not use! this will be deprecated")]
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         [Obsolete("Please do not use! this will be deprecated")]
         public Position AnchorPoint
         {
@@ -3781,7 +4279,11 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
-        [Obsolete("Please do not use! this will be deprecated")]
+        /// <summary>
+        /// [Obsolete("Please do not use! this will be deprecated")]
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        [Obsolete("Please do not use! this will be deprecated, please use Size2D instead")]
         public Size Size
         {
             get
@@ -3796,6 +4298,10 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// [Obsolete("Please do not use! this will be deprecated")]
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         [Obsolete("Please do not use! this will be deprecated")]
         public event EventHandler OnWindowEvent
         {
@@ -3821,6 +4327,10 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// [Obsolete("Please do not use! this will be deprecated")]
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         [Obsolete("Please do not use! this will be deprecated")]
         public event EventHandler OffWindowEvent
         {
@@ -3846,6 +4356,10 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// [Obsolete("Please do not use! this will be deprecated")]
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
         [Obsolete("Please do not use! this will be deprecated")]
         public event EventHandler OnRelayoutEvent
         {
@@ -3872,8 +4386,123 @@ namespace Tizen.NUI.BaseComponents
             }
         }
 
+        /// <summary>
+        /// "Please DO NOT use! This will be deprecated! Please use 'Container GetParent() for derived class' instead!"
+        /// </summary>
+        /// <since_tizen> 3 </since_tizen>
+        //"Please DO NOT use! This will be deprecated! Please use 'Container GetParent() for derived class' instead!"
+        [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
+        public new View Parent
+        {
+            get
+            {
+                View ret;
+                IntPtr cPtr = NDalicPINVOKE.Actor_GetParent(swigCPtr);
+
+                BaseHandle basehandle = Registry.GetManagedBaseHandleFromNativePtr(cPtr);
+
+                if (basehandle is Layer)
+                {
+                    ret = new View(cPtr, false);
+                }
+                else
+                {
+                    ret = basehandle as View;
+                }
+
+                if (NDalicPINVOKE.SWIGPendingException.Pending)
+                    throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+                return ret;
+            }
+        }
+
+        /// <summary>
+        /// Gets/Sets whether inherit parent's the layout Direction.
+        /// </summary>
+        /// <since_tizen> 4 </since_tizen>
+        public bool InheritLayoutDirection
+        {
+            get
+            {
+                bool temp = false;
+                GetProperty(View.Property.INHERIT_LAYOUT_DIRECTION).Get(out temp);
+                return temp;
+            }
+            set
+            {
+                SetProperty(View.Property.INHERIT_LAYOUT_DIRECTION, new Tizen.NUI.PropertyValue(value));
+            }
+        }
+
+        /// <summary>
+        /// Gets/Sets the layout Direction.
+        /// </summary>
+        /// <since_tizen> 4 </since_tizen>
+        public ViewLayoutDirectionType LayoutDirection
+        {
+            get
+            {
+                int temp;
+                if (GetProperty(View.Property.LAYOUT_DIRECTION).Get(out temp) == false)
+                {
+                    NUILog.Error("LAYOUT_DIRECTION get error!");
+                }
+                return (ViewLayoutDirectionType)temp;
+            }
+            set
+            {
+                SetProperty(View.Property.LAYOUT_DIRECTION, new Tizen.NUI.PropertyValue((int)value));
+            }
+        }
 
+        /// <summary>
+        /// Gets or sets the Margin for use in layout.
+        /// </summary>
+        public Extents Margin
+        {
+            get
+            {
+                Extents temp = new Extents(0, 0, 0, 0);
+                GetProperty(View.Property.MARGIN).Get(temp);
+                return temp;
+            }
+            set
+            {
+                SetProperty(View.Property.MARGIN, new Tizen.NUI.PropertyValue(value));
+            }
+        }
 
+        /// <summary>
+        /// Gets or sets the Padding for use in layout.
+        /// </summary>
+        public Extents PaddingEX
+        {
+            get
+            {
+                Extents temp = new Extents(0, 0, 0, 0);
+                GetProperty(View.Property.PADDINGEX).Get(temp);
+                return temp;
+            }
+            set
+            {
+                SetProperty(View.Property.PADDINGEX, new Tizen.NUI.PropertyValue(value));
+            }
+        }
+    }
 
+    /// <summary>
+    /// The View layout Direction type.
+    /// </summary>
+    /// <since_tizen> 4 </since_tizen>
+    public enum ViewLayoutDirectionType
+    {
+        /// <summary>
+        /// Left to right.
+        /// </summary>
+        LTR,
+        /// <summary>
+        /// Right to left.
+        /// </summary>
+        RTL
     }
 }