PositionUseAnchor enabled, samples added
authordongsug.song <dongsug.song@samsung.com>
Thu, 30 Mar 2017 14:30:45 +0000 (23:30 +0900)
committerdongsug.song <dongsug.song@samsung.com>
Thu, 30 Mar 2017 14:30:45 +0000 (23:30 +0900)
Change-Id: I4c8182ea672063880954db4089c40f37d5960e91
Signed-off-by: dongsug.song <dongsug.song@samsung.com>
57 files changed:
NUISamples/NUISamples/NUISamples.TizenTV/NUISamples.TizenTV.csproj
NUISamples/NUISamples/NUISamples.TizenTV/examples/Main.cs [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/examples/custom-control.cs
NUISamples/NUISamples/NUISamples.TizenTV/examples/image-view.cs
NUISamples/NUISamples/NUISamples.TizenTV/examples/scroll-view.cs
NUISamples/NUISamples/NUISamples.TizenTV/examples/visuals-using-custom-view/visuals-using-custom-view.cs
NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/App.cs [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/Constants.cs [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/FocusData.cs [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/FocusEffect.cs [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/IFocusEffect.cs [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/ScrollContainer.cs [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/0-normal.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/1-normal.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/2-normal.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/background.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/focus_grid.9.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/focus_launcher_shadow.9.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/focus_launcher_shadow_n.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/halo.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/highlight_spot.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/highlight_stroke.9.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/horizontalFrame.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/thumbnail_shadow.9.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/verticalFrame.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/white-pixel.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/0.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/1.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/2.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/3.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/4.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/5.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/6.png [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/0.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/1.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/10.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/11.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/12.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/13.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/2.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/3.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/4.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/5.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/6.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/7.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/8.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/9.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/0.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/1.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/2.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/3.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/4.jpg [new file with mode: 0755]
NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/5.jpg [new file with mode: 0755]
src/Tizen.NUI/src/internal/Application.cs
src/Tizen.NUI/src/internal/DaliEnumConstants.cs
src/Tizen.NUI/src/public/Actor.cs
src/Tizen.NUI/src/public/View.cs

index 1297ed5..e9d47d5 100755 (executable)
@@ -64,6 +64,7 @@
     <Compile Include="examples\hello-world.cs" />\r
     <Compile Include="examples\image-view.cs" />\r
     <Compile Include="examples\json-loader.cs" />\r
+    <Compile Include="examples\Main.cs" />\r
     <Compile Include="examples\scroll-view.cs" />\r
     <Compile Include="examples\test1.cs" />\r
     <Compile Include="examples\user-alphafunction.cs" />\r
     <Compile Include="examples\visuals-using-custom-view\ContactData.cs" />\r
     <Compile Include="examples\visuals-using-custom-view\ContactView.cs" />\r
     <Compile Include="examples\visuals-using-custom-view\visuals-using-custom-view.cs" />\r
+    <Compile Include="firstscreen\App.cs" />\r
+    <Compile Include="firstscreen\Constants.cs" />\r
+    <Compile Include="firstscreen\FocusData.cs" />\r
+    <Compile Include="firstscreen\FocusEffect.cs" />\r
+    <Compile Include="firstscreen\IFocusEffect.cs" />\r
+    <Compile Include="firstscreen\ScrollContainer.cs" />\r
     <Compile Include="Properties\AssemblyInfo.cs" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
+    <Content Include="res\images\focuseffect\0-normal.png" />\r
+    <Content Include="res\images\focuseffect\1-normal.png" />\r
+    <Content Include="res\images\focuseffect\2-normal.png" />\r
     <Content Include="res\images\arrow.png" />\r
+    <Content Include="res\images\focuseffect\background.png" />\r
     <Content Include="res\images\Dino-Painted_lambert2SG_color.png" />\r
     <Content Include="res\images\Dino-Painted_lambert2SG_gloss.png" />\r
     <Content Include="res\images\Dino-Painted_lambert2SG_nmap.png" />\r
     <Content Include="res\images\Dino2_lambert2SG_color.png" />\r
     <Content Include="res\images\Dino2_lambert2SG_nmap.png" />\r
+    <Content Include="res\images\focuseffect\halo.png" />\r
+    <Content Include="res\images\focuseffect\horizontalFrame.png" />\r
+    <Content Include="res\images\focuseffect\verticalFrame.png" />\r
+    <Content Include="res\images\focuseffect\focus_grid.9.png" />\r
+    <Content Include="res\images\focuseffect\focus_launcher_shadow.9.png" />\r
+    <Content Include="res\images\focuseffect\focus_launcher_shadow_n.png" />\r
     <Content Include="res\images\gallery-0.jpg" />\r
     <Content Include="res\images\gallery-1.jpg" />\r
     <Content Include="res\images\gallery-2.jpg" />\r
     <Content Include="res\images\gallery-4.jpg" />\r
     <Content Include="res\images\gallery-5.jpg" />\r
     <Content Include="res\images\gallery-small-43.jpg" />\r
+    <Content Include="res\images\focuseffect\highlight_spot.png" />\r
+    <Content Include="res\images\focuseffect\highlight_stroke.9.png" />\r
     <Content Include="res\images\image-1.jpg" />\r
     <Content Include="res\images\image-2.jpg" />\r
     <Content Include="res\images\image-3.jpg" />\r
+    <Content Include="res\images\menu\0.png" />\r
+    <Content Include="res\images\menu\1.png" />\r
+    <Content Include="res\images\menu\2.png" />\r
+    <Content Include="res\images\menu\3.png" />\r
+    <Content Include="res\images\menu\4.png" />\r
+    <Content Include="res\images\menu\5.png" />\r
+    <Content Include="res\images\menu\6.png" />\r
     <Content Include="res\images\not_yet_sign.png" />\r
+    <Content Include="res\images\poster0\0.jpg" />\r
+    <Content Include="res\images\poster0\1.jpg" />\r
+    <Content Include="res\images\poster0\10.jpg" />\r
+    <Content Include="res\images\poster0\11.jpg" />\r
+    <Content Include="res\images\poster0\12.jpg" />\r
+    <Content Include="res\images\poster0\13.jpg" />\r
+    <Content Include="res\images\poster0\2.jpg" />\r
+    <Content Include="res\images\poster0\3.jpg" />\r
+    <Content Include="res\images\poster0\4.jpg" />\r
+    <Content Include="res\images\poster0\5.jpg" />\r
+    <Content Include="res\images\poster0\6.jpg" />\r
+    <Content Include="res\images\poster0\7.jpg" />\r
+    <Content Include="res\images\poster0\8.jpg" />\r
+    <Content Include="res\images\poster0\9.jpg" />\r
+    <Content Include="res\images\poster1\0.jpg" />\r
+    <Content Include="res\images\poster1\1.jpg" />\r
+    <Content Include="res\images\poster1\2.jpg" />\r
+    <Content Include="res\images\poster1\3.jpg" />\r
+    <Content Include="res\images\poster1\4.jpg" />\r
+    <Content Include="res\images\poster1\5.jpg" />\r
     <Content Include="res\images\star-dim.png" />\r
     <Content Include="res\images\star-highlight.png" />\r
     <Content Include="res\images\star-mod.png" />\r
+    <Content Include="res\images\focuseffect\thumbnail_shadow.9.png" />\r
+    <Content Include="res\images\focuseffect\white-pixel.png" />\r
   </ItemGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.\r
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/examples/Main.cs b/NUISamples/NUISamples/NUISamples.TizenTV/examples/Main.cs
new file mode 100755 (executable)
index 0000000..d211d81
--- /dev/null
@@ -0,0 +1,40 @@
+using System;\r
+using Tizen.NUI;\r
+\r
+\r
+namespace NUISamples.TizenTV.examples\r
+{\r
+    /// <summary>\r
+    /// The main entry point for the application.\r
+    /// </summary>\r
+    /// \r
+\r
+    class Application\r
+    {\r
+        [STAThread]\r
+        static void Main(string[] args)\r
+        {\r
+            new VisualsUsingCustomView.VisualsExample().Run(args);    //o\r
+            //new VisualsExample().Run(args);                           //o\r
+            //new ControlDashboard.Example().Run(args);                 //o\r
+            //new DatePickerTest.Example().Run(args);                   //o\r
+            //new HelloTest.Example().Run(args);                        //o\r
+            //new HelloWorldTest.Example().Run(args);                   //o\r
+            //new Test1.Example().Run(args);                            //o\r
+            //new UserAlphaFunctionTest.Example().Run(args);            //o\r
+            //new MyCSharpExample.Example().Run(args);                  //o\r
+            //new VisualViewTest.Example().Run(args);                   //o\r
+            //new CustomControlTest.Example().Run(args);                //o\r
+            //new ScrollViewTest.Example().Run(args);                   //o\r
+            //new ImageViewTest.Example().Run(args);                    //o\r
+            //new FlexContainerTest.SampleMain().Run(args);             //o \r
+                                                                        \r
+                                                                        \r
+            //new JsonLoaderTest.Example().Run(args);                   //x 우분투용\r
+            //new DatePickerUsingJson.Example().Run(args);              //x date-picker-theme.json없음\r
+            //new DaliTest.Example().Run(args);                         //x 검은화면 나오고 죽음\r
+\r
+        }\r
+    }\r
+    \r
+}\r
index f37fa94..f75d817 100755 (executable)
@@ -21,9 +21,11 @@ using Tizen.NUI;
 
 namespace CustomControlTest
 {
+    
     // A custom control for star rating (draggable to change the rating)
     class StarRating : CustomView
     {
+        private const string resources = "/home/owner/apps_rw/NUISamples.TizenTV/res";
         private FlexContainer _container;
         private ImageView[] _images;
         private Vector3 _gestureDisplacement;
@@ -67,7 +69,7 @@ namespace CustomControlTest
 
             for(int i = 0; i < 5; i++)
             {
-                _images[i] = new ImageView("./images/star-dim.png");
+                _images[i] = new ImageView(resources+"/images/star-dim.png");
                 _container.Add( _images[i] );
             }
 
@@ -125,14 +127,14 @@ namespace CustomControlTest
             {
                 _images[i].WidthResizePolicy = ResizePolicyType.UseNaturalSize;
                 _images[i].HeightResizePolicy = ResizePolicyType.UseNaturalSize;
-                _images[i].SetImage("./images/star-highlight.png");
+                _images[i].SetImage(resources+"/images/star-highlight.png");
             }
 
             for(int i = rating; i < 5; i++)
             {
                 _images[i].WidthResizePolicy = ResizePolicyType.UseNaturalSize;
                 _images[i].HeightResizePolicy = ResizePolicyType.UseNaturalSize;
-                _images[i].SetImage("./images/star-dim.png");
+                _images[i].SetImage(resources+"/images/star-dim.png");
             }
         }
 
@@ -168,6 +170,8 @@ namespace CustomControlTest
     {
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
         delegate void CallbackDelegate();
+        private const string resources = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+
 
         public Example() : base()
         {
@@ -216,7 +220,7 @@ namespace CustomControlTest
                 container.Add(imageRow);
 
                 // Add the image view to the row
-                ImageView image = new ImageView("./images/gallery-" + i + ".jpg");
+                ImageView image = new ImageView(resources+"/images/gallery-" + i + ".jpg");
                 image.Size = new Vector3(120.0f, 120.0f, 0.0f);
                 image.WidthResizePolicy = ResizePolicyType.Fixed;
                 image.HeightResizePolicy = ResizePolicyType.Fixed;
index 479e338..fb5b481 100755 (executable)
@@ -24,6 +24,8 @@ namespace ImageViewTest
 {
     class Example : NUIApplication
     {
+
+        private const string resources = "/home/owner/apps_rw/NUISamples.TizenTV/res";
         public static void Log(string str)
         {
             Console.WriteLine("[DALI C# SAMPLE] " + str);
@@ -77,7 +79,7 @@ namespace ImageViewTest
             }
             // Add a ImageView to the stage
             _imageView = new ImageView();
-            _imageView.ResourceUrl = "./images/gallery-3.jpg";
+            _imageView.ResourceUrl = resources+"/images/gallery-3.jpg";
             _imageView.ParentOrigin = ParentOrigin.Center;
             _imageView.AnchorPoint = AnchorPoint.Center;
             _imageView.PixelArea = new Vector4(0.0f, 0.0f, 0.5f, 0.5f);
@@ -109,7 +111,7 @@ namespace ImageViewTest
                 Log("OnPushButtonClicked2()!");
                 layer.Remove(_imageView);
                 _imageView = new ImageView();
-                _imageView.ResourceUrl = "./images/gallery-3.jpg";
+                _imageView.ResourceUrl = resources+"/images/gallery-3.jpg";
                 _imageView.ParentOrigin = ParentOrigin.Center;
                 _imageView.AnchorPoint = AnchorPoint.Center;
                 _imageView.PixelArea = new Vector4(0.0f, 0.0f, 0.5f, 0.5f);
index 8992b81..f97f0e2 100755 (executable)
@@ -23,6 +23,9 @@ namespace ScrollViewTest
 {
   class Example : NUIApplication
   {
+    private const string resources = "/home/owner/apps_rw/NUISamples.TizenTV/res";
+   
+
     [UnmanagedFunctionPointer(CallingConvention.StdCall)]
     delegate void CallbackDelegate(IntPtr data);
 
@@ -95,7 +98,7 @@ namespace ScrollViewTest
             for(int column = 0; column < imageColumns;column++)
             {
               int imageId = (row * imageColumns + column) % 2 + 1;
-              ImageView imageView = new ImageView("images/image-" + imageId + ".jpg");
+              ImageView imageView = new ImageView(resources+"/images/image-" + imageId + ".jpg");
               imageView.ParentOrigin = ParentOrigin.Center;
               imageView.AnchorPoint = AnchorPoint.Center;
               imageView.Size = new Size(imageSize.X, imageSize.Y, imageSize.Z);
@@ -131,7 +134,7 @@ namespace ScrollViewTest
 
       // Connect to the OnRelayout signal
       _scrollView.OnRelayoutEvent += OnScrollViewRelayout;
-      _scrollView.Touched += OnTouch;
+      //_scrollView.Touched += OnTouch;
       _scrollView.WheelMoved += Onwheel;
       _scrollView.FocusGained += OnKey;
       _text = new TextLabel("View Touch Event Handler Test");
index 0352108..660c92f 100755 (executable)
@@ -43,6 +43,7 @@ namespace VisualsUsingCustomView
 
         private void Initialize()
         {
+            InternalSetting.DefaultParentOriginAsTopLeft = false;
             Stage stage = Stage.Instance;
             stage.BackgroundColor = Color.White;
 
@@ -88,8 +89,9 @@ namespace VisualsUsingCustomView
         /// The main entry point for the application.
         /// </summary>
         [STAThread]
-        static void Main(string[] args)
+        static void _Main(string[] args)
         {
+            
             VisualsExample visualsExample = new VisualsExample();
             visualsExample.Run(args);
         }
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/App.cs b/NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/App.cs
new file mode 100755 (executable)
index 0000000..75048b3
--- /dev/null
@@ -0,0 +1,473 @@
+using Tizen.NUI;
+using System;
+using System.Runtime.InteropServices;
+using System.Collections.Generic;
+using Tizen.NUI.Constants;
+
+namespace FirstScreen
+{
+    public class FirstScreenApp : NUIApplication
+    {
+        //private Application _application;                  // Reference to Dali Application.
+        private Stage _stage;                              // Reference to Dali stage.
+        private Size2D _stageSize;                        // Reference to Dali stage size.
+
+        private View _topContainer;                        // Top Container added to the Stage will contain Poster ScrollContainers.
+        private View _bottomContainer;                     // Bottom Container added to the Stage will contain Menu ScrollContainer.
+        private int _currentPostersContainerID;            // Current Poster Container ID visible on the Top Container / Stage.
+        private int _totalPostersContainers;               // Number of Poster ScrollContainers to be added on Top Container.
+        private List<ScrollContainer> _postersContainer;   // List collection of Poster ScrollContainers used on the Top Container in this demo application.
+        private ScrollContainer _menuContainer;            // Menu ScrollContainer used on the Bottom Container in this demo application.
+        private Layer _bottomClipLayer;                    // Clip layer (Dali Clip Layer instance) used for Bottom Container.
+        private Layer _topClipLayer;                       // Clip layer (Dali Clip Layer instance) used for Top Container.
+
+        private FocusEffect _focusEffect;                  // FocusEffect is used to apply Focus animation effect on any supplied item/image.
+        private string _imagePath;                         // Contains the physical location of all images used in the demo application.
+
+        private ImageView _keyboardFocusIndicator;         // Reference to the ImageView (Keyboard Focus indicator) applied to the focused item on ScrollContainer.
+        private ImageView _launcherSeparator;              // Reference to the ImageView used for launcher separation (Launcher consists of three image icons on left of Menu ScrollContainer).
+        private ImageView[] launcherIcon;                  // ImageViews used for launcher Icons.
+        private Animation _showBottomContainerAnimation;   // Animation used to show/unhide Bottom Container (Menu ScrollContainer) when it is focused.
+        private Animation _hideBottomContainerAnimation;   // Animation used to hide Bottom Container (Menu ScrollContainer) when it is focused.
+        private Animation _showAnimation;                  // Animation used to move Poster scrollContainer from bottom to top and make it non-transparent.
+        private Animation _hideAnimation;                  // Animation used to make the unused specified Poster scrollContainer transparent.
+        private ScrollContainer _hideScrollContainer;      // The unused Poster scrollContainer which needs to be transparent.
+        FocusManager _keyboardFocusManager;        // Reference to Dali KeyboardFocusManager.
+
+        protected override void OnCreate()\r
+        {\r
+            base.OnCreate();\r
+            OnInitialize();\r
+        }
+
+
+        // Create Items for Poster ScrollContainer
+        private void CreatePosters()
+        {
+            for (int j = 0; j < _totalPostersContainers; j++)
+            {
+                View posterContainer = _postersContainer[j].Container;
+                for (int i = 0; i < Constants.PostersItemsCount; i++)
+                {
+                    if (j % _totalPostersContainers == 0)
+                    {
+                        View item = new ImageView(_imagePath + "/poster" + j + "/" + (i % 14) + ".jpg");
+                        item.Name = ("poster-item-" + _postersContainer[j].ItemCount);
+                        _postersContainer[j].Add(item);
+                    }
+                    else
+                    {
+                        View item = new ImageView(_imagePath + "/poster" + j + "/" + (i % 6) + ".jpg");
+                        item.Name = ("poster-item-" + _postersContainer[j].ItemCount);
+                        _postersContainer[j].Add(item);
+                    }
+                }
+
+                if (j == 0)
+                {
+                    Show(_postersContainer[j]);
+                }
+                else
+                {
+                    Hide(_postersContainer[j]);
+                }
+
+                _postersContainer[j].SetFocused(false);
+            }
+
+            _currentPostersContainerID = 0;
+        }
+
+        // Create Items for Menu ScrollContainer
+        private void CreateMenu()
+        {
+            View menuContainer = _menuContainer.Container;
+            menuContainer.Position = new Position(Constants.LauncherWidth, 0.0f, 0.0f);
+
+            for (int i = 0; i < Constants.MenuItemsCount; i++)
+            {
+                View menuItem = new ImageView(_imagePath + "/menu/" + i % 7 + ".png");
+                menuItem.Name = ("menu-item-" + _menuContainer.ItemCount);
+                _menuContainer.Add(menuItem);
+            }
+        }
+
+        private View OnKeyboardPreFocusChangeSignal(object source, FocusManager.PreFocusChangeEventArgs e)
+        {
+            if (!e.CurrentView && !e.ProposedView)
+            {
+                return _menuContainer;
+            }
+
+            Actor actor = _menuContainer.Container;
+
+            if (e.Direction == View.FocusDirection.Up)
+            {
+                // Move the Focus to Poster ScrollContainer and hide Bottom Container (Menu ScrollContainer)
+                if (_menuContainer.IsFocused)
+                {
+                    actor = _postersContainer[_currentPostersContainerID].GetCurrentFocusedActor();
+                    _menuContainer.SetFocused(false);
+                    _postersContainer[_currentPostersContainerID].SetFocused(true);
+                    HideBottomContainer();
+
+                    // Also apply Focus animation on Focused item on Poster ScrollContainer
+                    FocusAnimation(_postersContainer[_currentPostersContainerID], FocusEffectDirection.BottomToTop);
+                }
+            }
+            else if (e.Direction == View.FocusDirection.Down)
+            {
+                // Show Bottom Container (Menu ScrollContainer) and move the Focus to it
+                if (!_menuContainer.IsFocused)
+                {
+                    ShowBottomContainer();
+                    actor = _menuContainer.GetCurrentFocusedActor();
+                    _postersContainer[_currentPostersContainerID].SetFocused(false);
+                    _menuContainer.SetFocused(true);
+
+                    // Also apply Focus animation on Focused item on Menu ScrollContainer
+                    FocusAnimation(_menuContainer, FocusEffectDirection.TopToBottom);
+                }
+            }
+            else
+            {
+                actor = e.ProposedView;
+            }
+
+            if (e.Direction == View.FocusDirection.Left)
+            {
+                if (_menuContainer.IsFocused)
+                {
+                    int id = _menuContainer.FocusedItemID % _totalPostersContainers;
+                    if (id != _currentPostersContainerID)
+                    {
+                        Hide(_postersContainer[_currentPostersContainerID]);
+                        _currentPostersContainerID = id;
+
+                        Show(_postersContainer[_currentPostersContainerID]);
+                    }
+                }
+            }
+            else if (e.Direction == View.FocusDirection.Right)
+            {
+                if (_menuContainer.IsFocused)
+                {
+                    int id = _menuContainer.FocusedItemID % _totalPostersContainers;
+                    if (id != _currentPostersContainerID)
+                    {
+                        Hide(_postersContainer[_currentPostersContainerID]);
+                        _currentPostersContainerID = id;
+                        Show(_postersContainer[_currentPostersContainerID]);
+                    }
+                }
+            }
+
+            return (Tizen.NUI.View)actor;
+        }
+
+        // Perform Focus animation Effect on the current Focused Item on ScrollContainer.
+        private void FocusAnimation(ScrollContainer scrollContainer, FocusEffectDirection direction)
+        {
+            _focusEffect.FocusAnimation(scrollContainer.GetCurrentFocusedActor(), scrollContainer.ItemSize, 1000, direction);
+        }
+
+        // Perform Show animation on ScrollContainer (used only for Poster Container)
+        private void Show(ScrollContainer scrollContainer)
+        {
+            scrollContainer.Add(scrollContainer.Container);
+
+            _hideScrollContainer = null;
+
+            // This animation will move Poster scrollContainer from bottom to top and make it non-transparent.
+            _showAnimation = new Animation(350);
+            _showAnimation.AnimateTo(scrollContainer.Container, "ColorAlpha", 1.0f);
+
+            scrollContainer.Container.PositionY = scrollContainer.Container.Position.Y + 200.0f;
+            float targetPositionY = scrollContainer.Container.Position.Y - 200.0f;
+
+            _showAnimation.AnimateTo(scrollContainer.Container, "PositionY", targetPositionY, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
+
+            _showAnimation.Play();
+        }
+
+        // Perform Hide animation on ScrollContainer (used only for Poster Container)
+        private void Hide(ScrollContainer scrollContainer)
+        {
+            if (_hideAnimation)
+            {
+                _hideAnimation.Clear();
+                _hideAnimation.Reset();
+            }
+
+            int duration = 350;
+            _hideAnimation = new Animation(duration);
+            _hideAnimation.Duration = duration;
+            _hideAnimation.AnimateTo(scrollContainer.Container, "ColorAlpha", 0.0f, 0, (int)((float)duration * 0.75f), new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
+            _hideAnimation.Finished += OnHideAnimationFinished;
+            _hideScrollContainer = scrollContainer;
+            _hideAnimation.Play();
+        }
+
+        // This removes all the items from the specified unused Poster ScrollContainer (hence Stage) to improve performance.
+        private void OnHideAnimationFinished(object source, EventArgs e)
+        {
+            if (_hideScrollContainer)
+            {
+                _hideScrollContainer.Remove(_hideScrollContainer.Container);
+            }
+        }
+
+        // Hide Bottom Container (Menu ScrollContainer) when it is not focused
+        private void HideBottomContainer()
+        {
+            _topClipLayer.ClippingBox = new Rectangle(0,
+                                                        Convert.ToInt32(_stageSize.Height * Constants.TopContainerPositionFactor),
+                                                        Convert.ToInt32((_stageSize.Width)),
+                                                        Convert.ToInt32((_stageSize.Height * Constants.TopClipLayerExpandHeightFactor)));  // X, Y, Width, Height
+
+
+            _hideBottomContainerAnimation.AnimateTo(_bottomContainer, "Position", new Position(0.0f, _stageSize.Height * Constants.BottomContainerHidePositionFactor, 0.0f),\r
+                    new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
+
+            _hideBottomContainerAnimation.Play();
+        }
+
+        // Show (unhide) Bottom Container (Menu ScrollContainer) when it is focused
+        private void ShowBottomContainer()
+        {
+            _topClipLayer.ClippingBox = new Rectangle(0,
+                                                        Convert.ToInt32(_stageSize.Height * Constants.TopContainerPositionFactor),
+                                                        Convert.ToInt32((_stageSize.Width)),
+                                                        Convert.ToInt32((_stageSize.Height * Constants.TopClipLayerHeightFactor)));  // X, Y, Width, Height
+
+            _showBottomContainerAnimation.AnimateTo(_bottomContainer, "Position", new Position(0.0f, _stageSize.Height * Constants.BottomContainerShowPositionFactor, 0.0f),\r
+                            new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
+            _showBottomContainerAnimation.Play();
+        }
+
+        // First screen demo Application initialisation
+        private void OnInitialize()
+        {\r
+            Tizen.Log.Debug("NUI", "OnInitialize() is called!");\r
+            Tizen.NUI.InternalSetting.DefaultParentOriginAsTopLeft = false;
+            _hideScrollContainer = null;
+            _stage = Stage.Instance;
+            _stageSize = _stage.Size;
+            _totalPostersContainers = Constants.TotalPostersContainers;
+            _imagePath = Constants.ImageResourcePath;
+
+            _postersContainer = new List<ScrollContainer>();
+            _menuContainer = new ScrollContainer();
+
+            _hideBottomContainerAnimation = new Animation(250);
+            _showBottomContainerAnimation = new Animation(250);
+
+            // Create a Top Container for poster items
+            _topContainer = new View();
+            _topContainer.Size = new Size(_stageSize.Width, _stageSize.Height * Constants.TopContainerHeightFactor, 0);
+            _topContainer.Position = new Position(0.0f, _stageSize.Height * Constants.TopContainerPositionFactor, 0.0f);
+            _topContainer.ParentOrigin = ParentOrigin.TopLeft;
+            _topContainer.AnchorPoint = AnchorPoint.TopLeft;
+
+            // Add a background to Top container
+            PropertyMap visual = new PropertyMap();
+            visual.Insert(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image));
+            visual.Insert(ImageVisualProperty.URL, new PropertyValue(_imagePath + "/focuseffect/background.png"));
+            _topContainer.Background = visual;
+            _topContainer.Name = "TopControl";
+
+            // Create a Bottom Container
+            _bottomContainer = new View();
+            _bottomContainer.Size = new Size(_stageSize.Width, _stageSize.Height * Constants.BottomContainerHeightFactor, 0);
+            _bottomContainer.Position = new Position(0.0f, _stageSize.Height * Constants.BottomContainerHidePositionFactor, 0.0f);
+            _bottomContainer.ParentOrigin = ParentOrigin.TopLeft;
+            _bottomContainer.AnchorPoint = AnchorPoint.TopLeft;
+
+            // Add a background to Bottom Container
+            visual = new PropertyMap();
+            visual.Insert(Visual.Property.Type, new PropertyValue((int)Visual.Type.Image));
+            visual.Insert(ImageVisualProperty.URL, new PropertyValue(_imagePath + "/focuseffect/background.png"));
+            _bottomContainer.Background = visual;
+            _bottomContainer.Name = "BottomControl";
+
+            // Add both Top and Bottom Containers to Stage
+            _stage.GetDefaultLayer().Add(_topContainer);
+            _stage.GetDefaultLayer().Add(_bottomContainer);\r
+\r
+            // Add a clip layer to Top Container\r
+            _topClipLayer = new Layer();
+            _topClipLayer.AnchorPoint = AnchorPoint.BottomCenter;
+            _topClipLayer.ParentOrigin = ParentOrigin.BottomCenter;
+            _topClipLayer.ClippingEnable = true;
+            _topClipLayer.ClippingBox = new Rectangle(0,
+                                                        Convert.ToInt32(_stageSize.Height * Constants.TopContainerPositionFactor),
+                                                        Convert.ToInt32((_stageSize.Width)),
+                                                        Convert.ToInt32((_stageSize.Height * Constants.TopClipLayerHeightFactor)));  // X, Y, Width, Height
+            _topContainer.Add(_topClipLayer);
+
+            // Create a SpotLight for items / images of both Poster and Menu ScrollContainers
+            ImageView spotLight = new ImageView(_imagePath + "/focuseffect/highlight_spot.png");
+            spotLight.WidthResizePolicy = ResizePolicyType.UseNaturalSize;
+            spotLight.HeightResizePolicy = ResizePolicyType.UseNaturalSize;
+            spotLight.ParentOrigin = ParentOrigin.Center;
+            spotLight.AnchorPoint = AnchorPoint.Center;
+            spotLight.Name = "spotLight";
+
+            // Create a shadowBorder for items / images of Poster ScrollContainers
+            ImageView shadowBorder = new ImageView(_imagePath + "/focuseffect/thumbnail_shadow.9.png");
+            shadowBorder.ParentOrigin = ParentOrigin.Center;
+            shadowBorder.AnchorPoint = AnchorPoint.Center;
+            shadowBorder.WidthResizePolicy = ResizePolicyType.SizeFixedOffsetFromParent;
+            shadowBorder.HeightResizePolicy = ResizePolicyType.SizeFixedOffsetFromParent;
+            shadowBorder.SizeModeFactor = (new Vector3(32.0f, 41.0f, 0.0f));
+            shadowBorder.Name = "poster shadowBorder";
+
+            // Create Poster Containers and add them to Top Clip layer
+            for (int i = 0; i < _totalPostersContainers; i++)
+            {
+                _postersContainer.Add(new ScrollContainer());
+                _postersContainer[i].Container.Name = "poster" + i;
+                if (i == 0)
+                {
+                    _postersContainer[i].ItemSize = new Size((_stageSize.Width * Constants.Poster0ItemWidthFactor) - Constants.PostersContainerPadding,
+                                                                _stageSize.Height * Constants.PostersItemHeightFactor, 0.0f);
+                }
+                else
+                {
+                    _postersContainer[i].ItemSize = new Size((_stageSize.Width * Constants.Poster1ItemWidthFactor) - Constants.PostersContainerPadding,
+                                                                _stageSize.Height * Constants.PostersItemHeightFactor, 0.0f);
+                }
+
+                _postersContainer[i].Gap = Constants.PostersContainerPadding;
+                _postersContainer[i].MarginX = Constants.PostersContainerMargin;
+                _postersContainer[i].OffsetYFator = Constants.PostersContainerOffsetYFactor;
+                _postersContainer[i].Width = _stageSize.Width;
+                _postersContainer[i].Height = _stageSize.Height * Constants.PostersContainerHeightFactor;
+                _postersContainer[i].ShadowBorder = shadowBorder;
+                _postersContainer[i].ShadowBorder.Position = new Position(0.0f, 4.0f, 0.0f);
+                _postersContainer[i].SpotLight = spotLight;
+                _topClipLayer.Add(_postersContainer[i]);
+            }
+
+            // Add a clip layer to Bottom Container
+            _bottomClipLayer = new Layer();
+            _bottomClipLayer.AnchorPoint = AnchorPoint.BottomCenter;
+            _bottomClipLayer.ParentOrigin = ParentOrigin.BottomCenter;
+            _bottomClipLayer.ClippingEnable = true;
+            _bottomClipLayer.ClippingBox = new Rectangle(Convert.ToInt32(Constants.LauncherWidth),
+                                                           Convert.ToInt32(_stageSize.Height * Constants.BottomContainerShowPositionFactor),
+                                                           Convert.ToInt32((_stageSize.Width)),
+                                                           Convert.ToInt32((_stageSize.Height - (_stageSize.Height * Constants.BottomClipLayerHeightFactor))));  // X, Y, Width, Height
+            _bottomContainer.Add(_bottomClipLayer);
+
+            // Add Launcher items to Bottom Container. Launcher is used to display three images on left of Menu ScrollContainer
+            launcherIcon = new ImageView[Convert.ToInt32(Constants.LauncherItemsCount)];
+            for (int launcherIndex = 0; launcherIndex < Constants.LauncherItemsCount; launcherIndex++)
+            {
+                launcherIcon[launcherIndex] = new ImageView(_imagePath + "/focuseffect/" + launcherIndex + "-normal.png");
+                launcherIcon[launcherIndex].Name = "launcherIcon" + launcherIndex;
+                launcherIcon[launcherIndex].WidthResizePolicy = ResizePolicyType.UseNaturalSize;
+                launcherIcon[launcherIndex].HeightResizePolicy = ResizePolicyType.UseNaturalSize;
+                launcherIcon[launcherIndex].ParentOrigin = ParentOrigin.CenterLeft;
+                launcherIcon[launcherIndex].AnchorPoint = AnchorPoint.CenterLeft;
+                launcherIcon[launcherIndex].Position = new Position(Constants.LauncherIconWidth * launcherIndex + Constants.LauncherLeftMargin, 0.0f, 0.0f);
+                _bottomContainer.Add(launcherIcon[launcherIndex]);
+            }
+
+            // Add a shadow seperator image between last Launcher icon and Menu ScrollContainer
+            _launcherSeparator = new ImageView(_imagePath + "/focuseffect/focus_launcher_shadow_n.png");
+            _launcherSeparator.Name = "launcherSeparator";
+            _launcherSeparator.WidthResizePolicy = ResizePolicyType.UseNaturalSize;
+            _launcherSeparator.HeightResizePolicy = ResizePolicyType.FillToParent;
+            _launcherSeparator.ParentOrigin = ParentOrigin.CenterLeft;
+            _launcherSeparator.AnchorPoint = AnchorPoint.CenterLeft;
+            _launcherSeparator.Position = new Position(Constants.LauncherIconWidth * Constants.LauncherItemsCount + Constants.LauncherLeftMargin, 0.0f, 0.0f);
+            _bottomContainer.Add(_launcherSeparator);
+
+            // Create Menu Container and add it to Bottom Clip Layer
+            Size menuItemSize = new Size((_stageSize.Width * Constants.MenuItemWidthFactor) - Constants.MenuContainerPadding,
+                                        _stageSize.Height * Constants.MenuItemHeightFactor, 0.0f);
+            _menuContainer.Container.Name = "menu";
+            _menuContainer.ItemSize = menuItemSize;
+            _menuContainer.Gap = Constants.MenuContainerPadding;
+            _menuContainer.MarginX = Constants.MenuContainerMargin;
+            _menuContainer.OffsetYFator = Constants.MenuContainerOffsetYFactor;
+            _menuContainer.OffsetX = Constants.LauncherWidth;
+            _menuContainer.Width = _stageSize.Width - Constants.LauncherWidth;
+            _menuContainer.Height = _stageSize.Height * Constants.MenuContainerHeightFactor;
+            _menuContainer.ShadowBorder = new ImageView(_imagePath + "/focuseffect/focus_launcher_shadow.9.png");
+            _menuContainer.ShadowBorder.Name = "_menuContainer.ShadowBorder";
+            _menuContainer.ShadowBorder.Size = new Size(_menuContainer.ItemSize.Width + 40.0f, _menuContainer.ItemSize.Height + 50.0f, 0.0f);
+            _menuContainer.ShadowBorder.Position = new Position(0.0f, 5.0f, 0.0f);
+            _menuContainer.ShadowBorder.ParentOrigin = ParentOrigin.Center;
+            _menuContainer.ShadowBorder.AnchorPoint = AnchorPoint.Center;
+            //_menuContainer.ShadowBorder.MixColor = Color.Red;
+            _menuContainer.SpotLight = spotLight;
+            _bottomClipLayer.Add(_menuContainer);
+
+            CreatePosters(); // Create Items for Poster ScrollContainer
+            CreateMenu();    // Create Items for Menu ScrollContainer
+
+            // Initialize PreFocusChange event of KeyboardFocusManager
+            _keyboardFocusManager = FocusManager.Instance;
+            _keyboardFocusManager.PreFocusChange += OnKeyboardPreFocusChangeSignal;
+
+            _keyboardFocusIndicator = new ImageView(_imagePath + "/focuseffect/highlight_stroke.9.png");
+            _keyboardFocusIndicator.ParentOrigin = ParentOrigin.Center;
+            _keyboardFocusIndicator.AnchorPoint = AnchorPoint.Center;
+            _keyboardFocusIndicator.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _keyboardFocusIndicator.HeightResizePolicy = ResizePolicyType.FillToParent;
+
+            _keyboardFocusManager.FocusIndicator = (_keyboardFocusIndicator);
+
+            _keyboardFocusManager.SetAsFocusGroup(_menuContainer, true);
+            _keyboardFocusManager.SetAsFocusGroup(_postersContainer[0], true);
+            _keyboardFocusManager.SetAsFocusGroup(_postersContainer[1], true);
+            _keyboardFocusManager.FocusGroupLoop = (true);
+
+            _focusEffect = new FocusEffect();
+
+            // Move Fcous to Bottom Container (Menu ScrollContainer)
+            ShowBottomContainer();
+            _menuContainer.SetFocused(true);
+
+#if true
+            //test.
+            TextLabel _dateOfTest = new TextLabel();
+            _dateOfTest.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _dateOfTest.HeightResizePolicy = ResizePolicyType.SizeRelativeToParent;
+            _dateOfTest.AnchorPoint = AnchorPoint.TopCenter;
+            _dateOfTest.ParentOrigin = ParentOrigin.TopCenter;
+            _dateOfTest.SizeModeFactor = new Vector3(0.0f, 0.1f, 0.0f);
+            _dateOfTest.BackgroundColor = new Color(43.0f / 255.0f, 145.0f / 255.0f, 175.0f / 255.0f, 1.0f);
+            _dateOfTest.TextColor = Color.White;
+            _dateOfTest.Text = "  Common Interface Define Verification Test of 2017-02-10 #1";
+            _dateOfTest.HorizontalAlignment = "BEGIN";
+            _dateOfTest.VerticalAlignment = "CENTER";
+            _dateOfTest.PointSize = 12.0f;
+            _dateOfTest.UnderlineEnabled = true;
+            _stage.GetDefaultLayer().Add(_dateOfTest);
+            Tizen.Log.Debug("NUI", "### 1) ColorMode = " + _dateOfTest.ColorMode);
+            _dateOfTest.ColorMode = ColorMode.UseParentColor;\r
+            Tizen.Log.Debug("NUI", "### 2) ColorMode = " + _dateOfTest.ColorMode);\r
+            _dateOfTest.ColorMode = ColorMode.UseOwnMultiplyParentColor;\r
+            Tizen.Log.Debug("NUI", "### 3) ColorMode = " + _dateOfTest.ColorMode);
+            Tizen.Log.Debug("NUI", "### 1) DrawModeType = " + _dateOfTest.DrawMode);
+            _dateOfTest.DrawMode = DrawModeType.Overlay2D;\r
+            Tizen.Log.Debug("NUI", "### 2) DrawModeType = " + _dateOfTest.DrawMode);\r
+\r
+#endif
+\r
+        }\r
+        
+        [STAThread]
+        static void _Main(string[] args)
+        {\r
+            Tizen.Log.Debug("NUI", "Main() is called! ");\r
+            
+            FirstScreenApp app = new FirstScreenApp();
+            app.Run(args);
+        }\r
+\r
+    }
+}
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/Constants.cs b/NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/Constants.cs
new file mode 100755 (executable)
index 0000000..5913793
--- /dev/null
@@ -0,0 +1,51 @@
+using System;
+
+namespace FirstScreen
+{
+    public class Constants
+    {
+        public const int TotalPostersContainers = 2;                  // Number of Poster ScrollContainers to be added on Top Container
+
+        public const float TopContainerHeightFactor = 0.38f;          // Height Factor of stage height used for Top Container total height
+        public const float TopContainerPositionFactor = 0.50f;        // Position Factor of stage height used for Top Container position
+        public const float TopClipLayerHeightFactor = 0.34f;          // Height Factor of stage height used for Top Clip layer height
+        public const float TopClipLayerExpandHeightFactor = 0.36f;    // Expanded Height Factor of stage height used for Top Clip layer height (used when Bottom container is hidden)
+        public const float PostersContainerHeightFactor = 0.32f;      // Height Factor of stage height used for Poster ScrollContainers
+        public const float PostersContainerPadding = 2.0f;            // Padding size used between items / images in Poster ScrollContainer
+        public const float PostersContainerMargin = 60.0f;            // Extra margin Padding size used between items / images in Poster ScrollContainer when item / image is focused
+        public const float PostersContainerOffsetYFactor = 0.17f;     // Position Factor of Poster item height used for Poster items / images position
+
+        public const float BottomContainerHeightFactor = 0.16f;       // Height Factor of stage height used for Bottom Container total height
+        public const float BottomContainerHidePositionFactor = 0.88f; // Position Factor of stage height used for Bottom Container position when bottom container is hidden (not focused)
+        public const float BottomContainerShowPositionFactor = 0.84f; // Position Factor of stage height used for Bottom Container position when bottom container is not hidden (focused)
+        public const float MenuContainerHeightFactor = 0.16f;         // Height Factor of stage height used for Bottom ScrollContainers
+        public const float BottomClipLayerHeightFactor = 0.84f;       // Height Factor of stage height used for Bottom Clip layer height
+        public const float MenuContainerPadding = 10.0f;              // Padding size used between items / images in Menu ScrollContainer
+        public const float MenuContainerMargin = 25.0f;               // Extra margin Padding size used between items / images in Menu ScrollContainer when item / image is focused
+        public const float MenuContainerOffsetYFactor = 0.35f;        // Position Factor of Menu item height used for Menu items / images position
+
+        public const float MenuItemWidthFactor = 0.125f;              // Width Factor (1/8) of stage Width used for Menu items / images Width
+        public const float MenuItemHeightFactor = 0.10f;              // Height Factor of stage height used for Menu items / images Height
+        public const float MenuItemsCount = 14;                       // Number of Menu items / images used in a Menu ScrollContainer
+
+        public const float Poster0ItemWidthFactor = 0.25f;            // Width Factor (1/4) of stage Width used for Poster items / images Width in a Poster ScrollContainer 0
+        public const float Poster1ItemWidthFactor = 0.20f;            // Width Factor of stage Width used for Poster items / images Width in a Poster ScrollContainer 1
+        public const float PostersItemHeightFactor = 0.24f;           // Height Factor of stage height used for Poster items / images Height
+        public const float PostersItemsCount = 24;                    // Number of Menu items / images used in a Poster ScrollContainer
+
+        public const float LauncherWidth = 280.0f;                    // Width of Launcher. Launcher is used to display three images on left of Menu ScrollContainer
+        public const float LauncherLeftMargin = 40.0f;                // Extra Spaces to the left of first Launcher item / image
+        public const float LauncherSeparatorWidth = 20.0f;            // Extra area / space to the left of Menu ScrollContainer used for a speration shadow image
+        public const float LauncherItemsCount = 3.0f;                 // Total number of Launcher items / images
+        public const float LauncherIconWidth = (LauncherWidth - LauncherLeftMargin - LauncherSeparatorWidth) / LauncherItemsCount; // Width of each Launcher item / image
+
+        public const int SpotLightDuration = 5000;                  // Duration of Spot Light Animation. 
+        public const int FocusTransitionDuration = 350;           // MilliSecond Duration of Focus Transition Animation. 
+        public const int FocusDuration = 350;                     // Duration of Focus Animation.
+        public const int ScrollDuration = 350;                    // Duration of Scroll Animation.\r
+\r
+        //             public const string ImageResourcePath = "./firstscreen/images/"; // for Ubuntu\r
+        public const string ImageResourcePath = "/home/owner/apps_rw/NUISamples.TizenTV/res/images/"; // for target
+
+    }
+}
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/FocusData.cs b/NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/FocusData.cs
new file mode 100755 (executable)
index 0000000..e457f8f
--- /dev/null
@@ -0,0 +1,107 @@
+using Tizen.NUI;
+using Tizen.NUI.Constants;
+using System;
+
+namespace FirstScreen
+{
+    public class FocusData
+    {
+        private string _name;                 // Name used for FocusData object (mainly to differentiate key frame animation )
+        private string _imageName;            // Image File Name (to be loaded from disk) used for ImageView used in key frame animation
+        private Position _parentOrigin;        // ParentOrigin applied to ImageView
+        private Size _initSize;            // InitSize used for key frame animation
+        private Size _targetSize;          // TargetSize used for key frame animation
+        private float _keyFrameStart;         // KeyFrameStart used for key frame animation
+        private float _keyFrameEnd;           // KeyFrameEnd used for key frame animation
+        private Direction _direction;         // Direction used for key frame animation
+        private ImageView _imageFocus;        // ImageView used in key frame animation
+
+        // Initialize FocusData used for key frame animation
+        public FocusData(string name, string imageName, Direction direction, Position parentOrigin, Size initSize,
+                         Size targetSize, float keyFrameStart, float keyFrameEnd)
+        {
+            _name = name;
+            _imageName = imageName;
+            _parentOrigin = parentOrigin;
+            _initSize = initSize;
+            _targetSize = targetSize;
+            _keyFrameStart = keyFrameStart;
+            _keyFrameEnd = keyFrameEnd;
+            _direction = direction;
+
+            _imageFocus = new ImageView(Constants.ImageResourcePath + "/focuseffect/" + _imageName); // Target
+
+            _imageFocus.ParentOrigin = _parentOrigin;
+            _imageFocus.AnchorPoint = AnchorPoint.Center;
+            _imageFocus.Name = _name;
+        }
+
+        public enum Direction
+        {
+            Horizontal,
+            Vertical
+        };
+
+        public Direction FocusDirection
+        {
+            get { return _direction; }
+            set { _direction = value; }
+        }
+
+        public string Name
+        {
+            get { return _name; }
+            set { _name = value; }
+        }
+
+        public string ImageName
+        {
+            get { return _imageName; }
+            set { _imageName = value; }
+        }
+
+        public Position ParentOrigin
+        {
+            get
+            {
+                return _parentOrigin;
+            }
+
+            set
+            {
+                _parentOrigin = value;
+                _imageFocus.ParentOrigin = _parentOrigin;
+            }
+        }
+
+        public Size InitSize
+        {
+            get { return _initSize; }
+            set { _initSize = value; }
+        }
+
+        public Size TargetSize
+        {
+            get { return _targetSize; }
+            set { _targetSize = value; }
+        }
+
+        public float KeyFrameStart
+        {
+            get { return _keyFrameStart; }
+            set { _keyFrameStart = value; }
+        }
+
+        public float KeyFrameEnd
+        {
+            get { return _keyFrameEnd; }
+            set { _keyFrameEnd = value; }
+        }
+
+        public ImageView ImageItem
+        {
+            get { return _imageFocus; }
+        }\r
+\r
+    }
+}
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/FocusEffect.cs b/NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/FocusEffect.cs
new file mode 100755 (executable)
index 0000000..3cba7f8
--- /dev/null
@@ -0,0 +1,206 @@
+using Tizen.NUI;
+using Tizen.NUI.Constants;
+using System;
+using System.Collections.Generic;
+
+namespace FirstScreen
+{
+    public class FocusEffect : IFocusEffect
+    {
+        private float _frameThickness;
+        private FocusData[] _focusData; // Each FocusData is used for one key frame animation (total 6 key frame animations needed for EddenEffect)
+        private Animation _animation;   // Animation used to apply all six key frame animations
+
+        public FocusEffect()
+        {
+            _frameThickness = 10.0f;
+            float _bottomFrameTime = 0.6f; // complete the halo/bottom animation 60% of the way through
+            float _sideFrameTime = 0.8f;   // Start the side frame  animation after the bottom animation and complete at 80% of the way through
+            float _topFrameTime = 1.0f;    // start the top frame animation after the side frame animation and complete at 100% way through
+
+            // Six key frame animations (FocusData objects) needed for EddenEffect
+            // Two key frame animations for top horizontal effect
+            // Two key frame animations for bottom horizontal effect
+            // Two key frame animations for vertical horizontal effect
+            _focusData = new FocusData[6];
+
+            FocusData focusData = new FocusData("halo", "halo.png", FocusData.Direction.Horizontal, ParentOrigin.TopCenter,
+                                                new Size(50.0f, 20.0f, 0.0f), new Size(0.0f, 100.0f, 0.0f), 0.0f, _bottomFrameTime);
+            _focusData[0] = focusData;
+
+            focusData = new FocusData("bottom", "horizontalFrame.png", FocusData.Direction.Horizontal, ParentOrigin.TopCenter,
+                                      new Size(0.0f, 0.0f, 0.0f), new Size(0.0f, _frameThickness, 0.0f), 0.0f, _bottomFrameTime);
+            _focusData[1] = focusData;
+
+            focusData = new FocusData("left", "verticalFrame.png", FocusData.Direction.Vertical, ParentOrigin.BottomLeft,
+                                      new Size(0.0f, 0.0f, 0.0f), new Size(_frameThickness, 0.0f, 0.0f), _bottomFrameTime, _sideFrameTime);
+            _focusData[2] = focusData;
+
+            focusData = new FocusData("right", "verticalFrame.png", FocusData.Direction.Vertical, ParentOrigin.BottomRight,
+                                      new Size(0.0f, 0.0f, 0.0f), new Size(_frameThickness, 0.0f, 0.0f), _bottomFrameTime, _sideFrameTime);
+            _focusData[3] = focusData;
+
+            focusData = new FocusData("top-left", "horizontalFrame.png", FocusData.Direction.Horizontal, ParentOrigin.BottomLeft,
+                                      new Size(0.0f, 0.0f, 0.0f), new Size(0.0f, _frameThickness, 0.0f), _sideFrameTime, _topFrameTime);
+            _focusData[4] = focusData;
+
+            focusData = new FocusData("top-right", "horizontalFrame.png", FocusData.Direction.Horizontal, ParentOrigin.BottomRight,
+                                      new Size(0.0f, 0.0f, 0.0f), new Size(0.0f, _frameThickness, 0.0f), _sideFrameTime, _topFrameTime);
+            _focusData[5] = focusData;
+        }
+
+        public void FocusAnimation(View parentItem, Size itemSize, int duration, FocusEffectDirection direction)
+        {
+            var itemWidth = itemSize.Width + _frameThickness / 2;
+            var itemHeight = itemSize.Height + _frameThickness / 3;
+
+            if (_animation)
+            {
+                _animation.Clear();
+                _animation.Reset();
+            }
+
+            _animation = new Animation(duration);
+            _animation.Duration = duration;
+
+            if (direction == FocusEffectDirection.BottomToTop)
+            {
+                _focusData[0].ParentOrigin = ParentOrigin.BottomCenter;
+                _focusData[1].ParentOrigin = ParentOrigin.BottomCenter;
+                _focusData[2].ParentOrigin = ParentOrigin.BottomLeft;
+                _focusData[3].ParentOrigin = ParentOrigin.BottomRight;
+                _focusData[4].ParentOrigin = ParentOrigin.TopLeft;
+                _focusData[5].ParentOrigin = ParentOrigin.TopRight;
+            }
+            else
+            {
+                _focusData[0].ParentOrigin = ParentOrigin.TopCenter;
+                _focusData[1].ParentOrigin = ParentOrigin.TopCenter;
+                _focusData[2].ParentOrigin = ParentOrigin.BottomLeft;
+                _focusData[3].ParentOrigin = ParentOrigin.BottomRight;
+                _focusData[4].ParentOrigin = ParentOrigin.BottomLeft;
+                _focusData[5].ParentOrigin = ParentOrigin.BottomRight;
+            }
+
+            foreach (FocusData focusData in _focusData)
+            {
+                var currentParent = focusData.ImageItem.Parent;
+
+                // first parent the controls
+                if (parentItem != currentParent)
+                {
+                    parentItem.Add(focusData.ImageItem);
+                }
+
+                focusData.ImageItem.Size = new Size(100.0f, 100.0f, 0.0f);
+                parentItem.Add(focusData.ImageItem);
+
+                Size targetSize = focusData.TargetSize;
+                Size initSize = focusData.InitSize;
+
+                if (focusData.FocusDirection == FocusData.Direction.Horizontal)
+                {
+                    // adjust the width to match the parent
+                    targetSize.Width = itemWidth;
+                }
+                else // vertical frame
+                {
+                    // adjust the height to match the parent
+                    targetSize.Height = itemHeight;
+                }
+
+                // half the size for the top frame as we come out from both left / right sides
+                if (focusData.Name == "top-right" || focusData.Name == "top-left")
+                {
+                    targetSize.Width = itemWidth - _frameThickness;
+                }
+
+                KeyFrames keyFrames = new KeyFrames();
+
+                keyFrames.Add(0.0f, initSize);
+                keyFrames.Add(focusData.KeyFrameStart, initSize);
+                keyFrames.Add(focusData.KeyFrameEnd, targetSize);
+
+                // for halo add an extra keyframe to shrink it ( in 20% of time after it has finished)
+                if (focusData.Name == "halo")
+                {
+                    keyFrames.Add(focusData.KeyFrameEnd + 0.2f, initSize);
+                }
+
+                _animation.AnimateBetween(focusData.ImageItem, "Size", keyFrames, Animation.Interpolation.Linear, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
+
+                // Simulate the vertical frame growing from the top.
+                // Vertical items are anchored to the bottom of the parent... so when they grow
+                // we need to move them to the middle of the parent ( otherwise they stick out the bottom)
+                if (focusData.FocusDirection == FocusData.Direction.Vertical)
+                {
+                    //animate position as well so it looks like animation is coming from bottom
+                    KeyFrames keyFramesV = new KeyFrames();
+
+                    if (direction == FocusEffectDirection.BottomToTop)
+                    {
+                        keyFramesV.Add(0.0f, 0.0f);
+                        keyFramesV.Add(focusData.KeyFrameStart, 0.0f);
+                    }
+                    else
+                    {
+                        keyFramesV.Add(0.0f, -itemHeight);
+                        keyFramesV.Add(focusData.KeyFrameStart, -itemHeight);
+                    }
+
+                    keyFramesV.Add(focusData.KeyFrameEnd, (-itemHeight / 2)); // animate to halfway up the control
+
+
+                    _animation.AnimateBetween(focusData.ImageItem, "PositionY", keyFramesV, Animation.Interpolation.Linear, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
+
+
+                }
+
+                // Simulate the top frame growing from the sides.
+                if (focusData.Name == "top-left")
+                {
+                    KeyFrames keyFramesTL = new KeyFrames();
+
+                    keyFramesTL.Add(0.0f, 0.0f);
+                    keyFramesTL.Add(focusData.KeyFrameStart, 0.0f);
+                    keyFramesTL.Add(focusData.KeyFrameEnd, (itemWidth / 2)); // animate to halfway up the control
+
+                    // grow these from the left or right
+                    _animation.AnimateBetween(focusData.ImageItem, "PositionX", keyFramesTL, Animation.Interpolation.Linear, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
+
+
+                }
+
+                if (focusData.Name == "top-right")
+                {
+                    KeyFrames keyFramesTR = new KeyFrames();
+
+                    keyFramesTR.Add(0.0f, 0.0f);
+                    keyFramesTR.Add(focusData.KeyFrameStart, 0.0f);
+                    keyFramesTR.Add(focusData.KeyFrameEnd, (-itemWidth / 2)); // animate to halfway up the control
+
+                    // grow these from the left or right
+                    _animation.AnimateBetween(focusData.ImageItem, "PositionX", keyFramesTR, Animation.Interpolation.Linear, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
+
+                }
+
+                _animation.Finished += OnAnimationFinished;
+
+                _animation.Play();
+            }
+        }
+
+        private void OnAnimationFinished(object source, EventArgs e)
+        {
+            foreach (FocusData focusData in _focusData)
+            {
+                var currentParent = focusData.ImageItem.Parent;
+
+                if (currentParent)
+                {
+                    currentParent.Remove(focusData.ImageItem);
+                }
+            }
+        }
+    }
+}
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/IFocusEffect.cs b/NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/IFocusEffect.cs
new file mode 100755 (executable)
index 0000000..7380d08
--- /dev/null
@@ -0,0 +1,16 @@
+using Tizen.NUI;
+using System;
+
+namespace FirstScreen
+{
+    public enum FocusEffectDirection
+    {
+        TopToBottom,
+        BottomToTop
+    };
+
+    public interface IFocusEffect
+    {
+        void FocusAnimation(View parentItem, Size itemSize, int duration, FocusEffectDirection direction);
+    }
+}
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/ScrollContainer.cs b/NUISamples/NUISamples/NUISamples.TizenTV/firstscreen/ScrollContainer.cs
new file mode 100755 (executable)
index 0000000..915f80b
--- /dev/null
@@ -0,0 +1,643 @@
+using Tizen.NUI;
+using Tizen.NUI.Constants;
+using System;
+using System.Runtime.InteropServices;
+using System.Collections.Generic;
+
+namespace FirstScreen
+{
+    public class ScrollContainer : CustomView
+    {
+        private View _container;                      // View Container will be the first item added to ScrollContainer and parent to all the items added to the ScrollContainer.
+        private Size _itemSize;                    // Size of the item / images added to the ScrollContainer.
+        private List<View> _itemList;                 // List collection of View items/images  added to the ScrollContainer.
+        private int _itemCount;                       // Number of items / images  added to the ScrollContainer.
+        private int _focusedItem;                     // Index of currently focused View item / image  on the ScrollContainer.
+        private float _scrollDisplacement;            // Used for horizontal pan displacement.
+        private float _currentScrollPosition;         // Used for horizontal scroll position.
+        private float _gap;                           // Used for gap / padding between items / images on the ScrollContainer.
+        private float _width;                         // Width of the ScrollContainer.
+        private float _height;                        // Height of the ScrollContainer.
+        private bool _isFocused;                      // Flag to check if ScrollContainer is enabled or not.
+        private float _marginX;                       // Extra horizontal margin is used to add an extra gap between items / images after a focused and scaled item / image.
+        private float _marginY;                       // Extra vertical margin (not used at the moment).
+        private float _offsetYFactor;                 // Vertical Position offset Factor of item height.
+        private float _offsetX;                       // Horizontal Position offset of ScrollContainer.
+        private Stage _stage;                         // Reference to Dali stage.
+        private Size2D _stageSize;                    // Reference to Dali stage size.
+        private ImageView _shadowBorder;              // Reference to Shadow border ImageView applied to the focused item on ScrollContainer.
+        private ImageView _spotLight;                 // Reference to SpotLight ImageView applied to the focused item on ScrollContainer.
+        private Animation _spotLightAnimation;        // SpotLight Animation applied to the focused item on ScrollContainer.
+        private Animation _focusAnimation;            // Focused position animation on ScrollContainer.
+        private Animation _scrollAnimation;           // Scroll animation on items of ScrollContainer.
+        private Animation _focusTransitionAnimation;  // Focus Transition (scaling /unscaling) animation on items of ScrollContainer.
+        private Path _circularPath;                   // Circular path used for SpotLight Animation applied to the focused item on ScrollContainer.
+
+        static CustomView CreateInstance()\r
+        {\r
+            return new ScrollContainer();\r
+        }\r
+\r
+        // static constructor registers the control type (for user can add kinds of visuals to it)\r
+        static ScrollContainer()\r
+        {\r
+            // ViewRegistry registers control type with DALi type registery\r
+            // also uses introspection to find any properties that need to be registered with type registry\r
+            ViewRegistry.Instance.Register(CreateInstance, typeof(ScrollContainer));\r
+        }
+
+        public ScrollContainer() : base(typeof(ScrollContainer).Name, CustomViewBehaviour.DisableStyleChangeSignals |
+                                        CustomViewBehaviour.RequiresKeyboardNavigationSupport)
+        {
+        }
+
+        public bool IsFocused
+        {
+            get
+            {
+                return _isFocused;
+            }
+        }
+
+        public Tizen.NUI.View Container
+        {
+            get
+            {
+                return _container;
+            }
+        }
+
+        public int ItemCount
+        {
+            get
+            {
+                return _itemCount;
+            }
+        }
+
+        public Size ItemSize
+        {
+            get
+            {
+                return _itemSize;
+            }
+
+            set
+            {
+                _itemSize = value;
+
+                Position topLeft = new Position(-0.25f * _itemSize.Width, -0.25f * _itemSize.Height, 0.0f);
+                Position topRight = new Position(0.25f * _itemSize.Width, -0.25f * _itemSize.Height, 0.0f);
+                Position bottomRight = new Position(0.25f * _itemSize.Width, 0.25f * _itemSize.Height, 0.0f);
+                Position bottomLeft = new Position(-0.25f * _itemSize.Width, 0.25f * _itemSize.Height, 0.0f);
+
+                _circularPath = new Path();
+                _circularPath.AddPoint(topLeft);
+                _circularPath.AddPoint(topRight);
+                _circularPath.AddPoint(bottomRight);
+                _circularPath.AddPoint(bottomLeft);
+                _circularPath.AddPoint(topLeft);
+                _circularPath.GenerateControlPoints(0.5f);
+            }
+        }
+
+        public float Gap
+        {
+            get
+            {
+                return _gap;
+            }
+
+            set
+            {
+                _gap = value;
+            }
+        }
+
+        public float MarginX
+        {
+            get
+            {
+                return _marginX;
+            }
+
+            set
+            {
+                _marginX = value;
+            }
+        }
+
+        public float OffsetYFator
+        {
+            get
+            {
+                return _offsetYFactor;
+            }
+
+            set
+            {
+                _offsetYFactor = value;
+            }
+        }
+
+        public float OffsetX
+        {
+            get
+            {
+                return _offsetX;
+            }
+
+            set
+            {
+                _offsetX = value;
+            }
+        }
+
+        public float MarginY
+        {
+            get
+            {
+                return _marginY;
+            }
+
+            set
+            {
+                _marginY = value;
+            }
+        }
+
+        public float Width
+        {
+            get
+            {
+                return _width;
+            }
+
+            set
+            {
+                _width = value;
+            }
+        }
+
+        public float Height
+        {
+            get
+            {
+                return _height;
+            }
+
+            set
+            {
+                _height = value;
+            }
+        }
+
+        public ImageView ShadowBorder
+        {
+            get
+            {
+                return _shadowBorder;
+            }
+
+            set
+            {
+                _shadowBorder = value;
+            }
+        }
+
+        public ImageView SpotLight
+        {
+            get
+            {
+                return _spotLight;
+            }
+
+            set
+            {
+                _spotLight = value;
+            }
+        }
+
+        public int FocusedItemID
+        {
+            get
+            {
+                if (_focusedItem < 0)
+                {
+                    _focusedItem = 0;
+                }
+
+                return _focusedItem;
+            }
+        }
+
+        // This override method is called automatically after the Control has been initialized.
+        // Any second phase initialization is done here.
+        public override void OnInitialize()
+        {
+            _itemSize = new Size(0.0f, 0.0f, 0.0f);
+            _gap = 0.0f;
+            _width = 0.0f;
+            _height = 0.0f;
+            _currentScrollPosition = 0.0f;
+            _itemCount = 0;
+            _focusedItem = -1;
+            _isFocused = false;
+            _marginX = 50.0f;
+            _marginY = 0.0f;
+            _offsetYFactor = 0.0f;
+            _offsetX = 0.0f;
+
+            _container = new View();
+            this.Add(_container);
+
+            _itemList = new List<View>();
+
+            this.ParentOrigin = Tizen.NUI.ParentOrigin.TopLeft;
+            this.AnchorPoint = Tizen.NUI.AnchorPoint.TopLeft;
+            this.WidthResizePolicy = ResizePolicyType.FillToParent;
+            this.HeightResizePolicy = ResizePolicyType.FillToParent;
+            this.Focusable = (true);
+
+            _container.ParentOrigin = Tizen.NUI.ParentOrigin.TopLeft;
+            _container.AnchorPoint = Tizen.NUI.AnchorPoint.TopLeft;
+            _container.WidthResizePolicy = ResizePolicyType.FillToParent;
+            _container.HeightResizePolicy = ResizePolicyType.FillToParent;
+
+            _stage = Stage.Instance;
+            _stageSize = _stage.Size;
+
+            _spotLightAnimation = new Animation(Constants.SpotLightDuration);
+            _focusTransitionAnimation = new Animation(Constants.FocusTransitionDuration);
+            _focusAnimation = new Animation(Constants.FocusDuration);
+            _focusAnimation.EndAction = Animation.EndActions.StopFinal;
+            _scrollAnimation = new Animation(Constants.ScrollDuration);
+            _scrollAnimation.EndAction = Animation.EndActions.StopFinal;\r
+\r
+            //changed to internal\r
+            //EnableGestureDetection(Gesture.Type.Pan);
+        }
+
+        // This will be invoked automatically if an item/image is added to the ScrollContainer
+        public override void OnChildAdd(Actor actor)
+        {
+            View item = View.DownCast(actor);
+            //View item = actor as View;
+
+            if (item is View && item != _container)
+            {
+                item.AnchorPoint = Tizen.NUI.AnchorPoint.BottomCenter;
+                item.ParentOrigin = Tizen.NUI.ParentOrigin.BottomCenter;
+
+                item.Size = _itemSize;
+                item.Focusable = (true);
+                item.Position = GetItemPosition(_itemCount, _currentScrollPosition);
+                item.Name = _itemCount.ToString();
+
+                _container.Add(item);
+                _itemList.Add(item);
+
+                _itemCount++;
+            }
+        }
+
+        // This will be invoked automatically if an item/image is removed from the ScrollContainer
+        public override void OnChildRemove(Actor actor)
+        {
+            View item = View.DownCast(actor);
+            //View item = actor as View;
+
+            if (item is View && item != _container)
+            {
+                _container.Remove(item);
+
+                _itemCount--;
+                _itemList.Remove(item);
+            }
+        }
+
+        // This override function supports two dimensional keyboard navigation.
+        // This function returns the next keyboard focusable actor in ScrollContainer control towards the given direction.
+        public override View GetNextKeyboardFocusableView(View currentFocusedView, View.FocusDirection direction, bool loopEnabled)\r
+        {\r
+            if (direction == View.FocusDirection.Left)\r
+            {\r
+              return View.DownCast(FocusPrevious(loopEnabled));\r
+            }\r
+            else if (direction == View.FocusDirection.Right)\r
+            {\r
+              return View.DownCast(FocusNext(loopEnabled));\r
+            }\r
+            else\r
+            {\r
+              return View.DownCast(currentFocusedView);\r
+            }\r
+        }\r
+        \r
+        public override void OnKeyboardFocusChangeCommitted(View commitedFocusableView)\r
+        {
+            Focus(_focusedItem);
+        }
+\r
+\r
+    // This override function is invoked before chosen focusable actor will be focused.\r
+    // This allows the application to preform any actions (i.e. Scroll and SpotLight animations) before the focus is actually moved to the chosen actor.\r
+\r
+    // This override function is invoked whenever a pan gesture is detected on this control.\r
+    // Perform Scroll Animation based upon pan gesture velocity / speed.\r
+    /*public override void OnPan(PanGesture pan)\r
+    {\r
+      return;  //currently not used\r
+    }*/\r
+\r
+    // This function returns current focused actor\r
+    public View GetCurrentFocusedActor()
+        {
+            if (_focusedItem < 0)
+            {
+                _focusedItem = 0;
+            }
+
+            return _itemList[_focusedItem];
+        }
+
+        public void SetFocused(bool focused)
+        {
+            _isFocused = focused;
+
+            // Perform Focus animation if the ScrollContainer is not focused already
+            if (!_isFocused)
+            {
+                Actor parent = _shadowBorder.Parent;
+                if (parent)
+                {
+                    parent.Remove(_shadowBorder);
+                }
+
+                parent = _spotLight.Parent;
+                if (parent)
+                {
+                    parent.Remove(_spotLight);
+                }
+
+                _focusTransitionAnimation.Clear();
+
+                for (int i = 0; i < _itemList.Count; ++i)
+                {
+                    Position targetPosition = GetItemPosition(i, _currentScrollPosition);
+
+                    _focusTransitionAnimation.AnimateTo(_itemList[i],  "Position", targetPosition, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
+
+                    _focusTransitionAnimation.AnimateTo(_itemList[i], "Scale", new Size(1.0f, 1.0f, 1.0f),  new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
+                }
+
+                _focusTransitionAnimation.Play();
+            }
+            else
+            {
+                Focus(_focusedItem);
+            }
+        }
+
+        // Obtain ID of first visible item/image on the screen of the ScrollContainer
+        private int GetFirstVisibleItemId()
+        {
+            int firstItemId = -1;
+
+            if (_isFocused)
+            {
+                firstItemId = (int)Math.Floor((-1.0 * _currentScrollPosition + _marginX * 2.0f) / (_itemSize.Width + _gap));
+            }
+            else
+            {
+                firstItemId = (int)Math.Floor(-1.0 * _currentScrollPosition / (_itemSize.Width + _gap));
+            }
+
+            if (firstItemId < 0)
+            {
+                firstItemId = 0;
+            }
+
+            return firstItemId;
+        }
+
+        // Obtain ID of last visible item/image on the screen of the ScrollContainer
+        private int GetLastVisibleItemId()
+        {
+            int lastItemId = -1;
+
+            if (_isFocused)
+            {
+                lastItemId = (int)Math.Ceiling(((_width - _currentScrollPosition - _marginX * 2.0f) / _itemSize.Width) - 1);
+            }
+            else
+            {
+                lastItemId = (int)Math.Ceiling(((_width - _currentScrollPosition) / _itemSize.Width) - 1);
+            }
+
+            if (lastItemId >= _itemList.Count)
+            {
+
+                lastItemId = _itemList.Count - 1;
+            }
+
+            return lastItemId;
+        }
+
+        // Obtain Next item/image (Right of the currently focused item) of the ScrollContainer
+        private Actor FocusNext(bool loopEnabled)
+        {
+            int nextItem = -1;
+
+            if (_focusedItem < GetFirstVisibleItemId() || _focusedItem > GetLastVisibleItemId())
+            {
+                nextItem = GetFirstVisibleItemId();
+            }
+            else
+            {
+                nextItem = _focusedItem + 1;
+            }
+
+            if (nextItem >= _itemList.Count)
+            {
+                if (loopEnabled)
+                {
+                    nextItem = 0;
+                }
+                else
+                {
+                    nextItem = _itemList.Count - 1;
+                }
+            }
+
+            _focusedItem = nextItem;
+            return _itemList[_focusedItem];
+        }
+
+        // Obtain Previous item/image (left of the currently focused item) of the ScrollContainer
+        private Actor FocusPrevious(bool loopEnabled)
+        {
+            int previousItem = -1;
+
+            if (_focusedItem < GetFirstVisibleItemId() || _focusedItem > GetLastVisibleItemId())
+            {
+                previousItem = GetFirstVisibleItemId();
+            }
+            else
+            {
+                previousItem = _focusedItem - 1;
+            }
+
+            if (previousItem < 0)
+            {
+                if (loopEnabled)
+                {
+                    previousItem = _itemList.Count - 1;
+                }
+                else
+                {
+                    previousItem = 0;
+                }
+            }
+
+            _focusedItem = previousItem;
+            return _itemList[_focusedItem];
+        }
+
+        // Perform ScrollAnimation on each item
+        private void Scroll(float amount, int baseItem)
+        {
+            float tagetScrollPosition = _currentScrollPosition + amount;
+            float totalItemSize = _itemList.Count * (_itemSize.Width + _gap) + _gap + (_marginX * 2.0f);
+
+            float maxScrollPosition = _width - totalItemSize;
+
+            if (tagetScrollPosition < maxScrollPosition)
+            {
+                tagetScrollPosition = maxScrollPosition;
+            }
+
+            if (tagetScrollPosition > 0.0f)
+            {
+                tagetScrollPosition = 0.0f;
+            }
+
+            _scrollAnimation.Clear();
+
+            for (int i = 0; i < _itemList.Count; ++i)
+            {
+                Position targetPosition = GetItemPosition(i, tagetScrollPosition);
+
+                _scrollAnimation.AnimateTo(_itemList[i], "Position", targetPosition, new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
+            }
+
+            _currentScrollPosition = tagetScrollPosition;
+            _scrollAnimation.Play();
+        }
+
+        // This function uses ItemId as next FocusedItem and preforms Scroll and SpotLight animations on that item.
+        private void Focus(int itemId)
+        {
+               
+            if (itemId < 0)
+            {
+                itemId = 0;
+            }
+            else if (itemId >= _itemList.Count)
+            {
+                itemId = _itemList.Count - 1;
+            }
+
+            _itemList[itemId].Add(_shadowBorder);
+            _itemList[itemId].Add(_spotLight);
+
+            // Perform Spot Light animation
+            if (_focusedItem != itemId && _spotLight != null)
+            {
+                _spotLightAnimation.Clear();
+                _spotLightAnimation.AnimatePath(_spotLight, _circularPath, new Vector3(0.0f, 0.0f, 0.0f));
+                _spotLightAnimation.Looping = true;
+                _spotLightAnimation.Play();
+            }
+
+            _focusedItem = itemId;
+
+            Position itemPosition = GetItemPosition(_focusedItem, _currentScrollPosition);
+
+            _focusAnimation.Clear();
+
+            float relativeItemPositionX = itemPosition.X - _itemSize.Width * 0.5f + (_stageSize.Width * 0.5f) + _offsetX;
+            if (relativeItemPositionX < _marginX + _offsetX + _gap)
+            {
+                float amount = _marginX + _offsetX + _gap - relativeItemPositionX;
+                Scroll(amount, itemId + 1); // Perform Scroll animation
+            }
+            else if (relativeItemPositionX + _itemSize.Width + _gap + _marginX > _stageSize.Width)
+            {
+                float amount = relativeItemPositionX + _marginX + _gap + _itemSize.Width - _stageSize.Width;
+                Scroll(-amount, itemId - 1); // Perform Scroll animation
+            }
+            else
+            {
+                // Perform animation when item is focused
+                for (int i = 0; i < _itemList.Count; ++i)
+                {
+                    Position targetPosition = GetItemPosition(i, _currentScrollPosition);
+
+                    _focusAnimation.AnimateTo(_itemList[i], "Position",targetPosition,  new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine) );
+                }
+            }
+
+            for (int i = 0; i < _itemList.Count; ++i)
+            {
+                // Perform scale animation on Focused item
+                if (i == _focusedItem)
+                {
+                    _focusAnimation.AnimateTo(_itemList[i],  "Scale", new Size(1.2f, 1.2f, 1.2f), new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine));
+                }
+                else
+                {
+
+                    _focusAnimation.AnimateTo(_itemList[i], "Scale", new Size(1.0f, 1.0f, 1.0f), new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseOutSine) );
+                }
+            }
+
+            _focusAnimation.Play();
+
+        }
+
+        // Calculate Position of any item/image of ScrollContainer
+        private Position GetItemPosition(int itemId, float scrollPosition)
+        {
+            if (_isFocused)
+            {
+                // used (_itemSize.Width * 0.5f) because of AnchorPointCenter
+                // used (_stageSize.Width * 0.5f) because of ParentOriginCenter
+                if (_focusedItem > itemId)
+                {
+                    float positionX = (_itemSize.Width * itemId) + (_gap * (itemId + 1)) + scrollPosition + (_itemSize.Width * 0.5f) - (_stageSize.Width * 0.5f);
+                    return new Position(positionX, -_itemSize.Height * _offsetYFactor, 0.0f);
+                }
+                else if (_focusedItem == itemId)
+                {
+                    float positionX = (_itemSize.Width * itemId) + (_gap * (itemId + 1)) + scrollPosition + _marginX + (_itemSize.Width * 0.5f) - (_stageSize.Width * 0.5f);
+                    return new Position(positionX, -_itemSize.Height * _offsetYFactor, 0.0f);
+                }
+                else
+                {
+                    float positionX = (_itemSize.Width * itemId) + (_gap * (itemId + 1)) + scrollPosition + _marginX * 2.0f + (_itemSize.Width * 0.5f) - (_stageSize.Width * 0.5f);
+                    return new Position(positionX, -_itemSize.Height * _offsetYFactor, 0.0f);
+                }
+            }
+            else
+            {
+                float positionX = (_itemSize.Width * itemId) + (_gap * (itemId + 1)) + scrollPosition + (_itemSize.Width * 0.5f) - (_stageSize.Width * 0.5f);
+                return new Position(positionX, -_itemSize.Height * _offsetYFactor, 0.0f);
+            }
+        }
+
+
+    }
+
+}
+
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/0-normal.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/0-normal.png
new file mode 100755 (executable)
index 0000000..ee755c3
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/0-normal.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/1-normal.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/1-normal.png
new file mode 100755 (executable)
index 0000000..432bf7f
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/1-normal.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/2-normal.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/2-normal.png
new file mode 100755 (executable)
index 0000000..c921918
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/2-normal.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/background.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/background.png
new file mode 100755 (executable)
index 0000000..7e4caad
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/background.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/focus_grid.9.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/focus_grid.9.png
new file mode 100755 (executable)
index 0000000..04ccb1f
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/focus_grid.9.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/focus_launcher_shadow.9.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/focus_launcher_shadow.9.png
new file mode 100755 (executable)
index 0000000..f989071
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/focus_launcher_shadow.9.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/focus_launcher_shadow_n.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/focus_launcher_shadow_n.png
new file mode 100755 (executable)
index 0000000..0805e9e
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/focus_launcher_shadow_n.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/halo.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/halo.png
new file mode 100755 (executable)
index 0000000..307f67e
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/halo.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/highlight_spot.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/highlight_spot.png
new file mode 100755 (executable)
index 0000000..8caa716
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/highlight_spot.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/highlight_stroke.9.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/highlight_stroke.9.png
new file mode 100755 (executable)
index 0000000..493b206
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/highlight_stroke.9.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/horizontalFrame.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/horizontalFrame.png
new file mode 100755 (executable)
index 0000000..abff4ec
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/horizontalFrame.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/thumbnail_shadow.9.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/thumbnail_shadow.9.png
new file mode 100755 (executable)
index 0000000..61f5a99
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/thumbnail_shadow.9.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/verticalFrame.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/verticalFrame.png
new file mode 100755 (executable)
index 0000000..bdd372d
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/verticalFrame.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/white-pixel.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/white-pixel.png
new file mode 100755 (executable)
index 0000000..c63f333
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/focuseffect/white-pixel.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/0.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/0.png
new file mode 100755 (executable)
index 0000000..10e1d17
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/0.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/1.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/1.png
new file mode 100755 (executable)
index 0000000..e3e72f5
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/1.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/2.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/2.png
new file mode 100755 (executable)
index 0000000..10138e5
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/2.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/3.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/3.png
new file mode 100755 (executable)
index 0000000..b4a6e61
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/3.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/4.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/4.png
new file mode 100755 (executable)
index 0000000..58d716f
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/4.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/5.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/5.png
new file mode 100755 (executable)
index 0000000..1548244
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/5.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/6.png b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/6.png
new file mode 100755 (executable)
index 0000000..6545c2d
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/menu/6.png differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/0.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/0.jpg
new file mode 100755 (executable)
index 0000000..fafd602
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/0.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/1.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/1.jpg
new file mode 100755 (executable)
index 0000000..beb415a
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/1.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/10.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/10.jpg
new file mode 100755 (executable)
index 0000000..74feaec
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/10.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/11.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/11.jpg
new file mode 100755 (executable)
index 0000000..5f03bec
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/11.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/12.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/12.jpg
new file mode 100755 (executable)
index 0000000..60acbfa
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/12.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/13.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/13.jpg
new file mode 100755 (executable)
index 0000000..902b711
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/13.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/2.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/2.jpg
new file mode 100755 (executable)
index 0000000..7173b85
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/2.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/3.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/3.jpg
new file mode 100755 (executable)
index 0000000..c8188c6
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/3.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/4.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/4.jpg
new file mode 100755 (executable)
index 0000000..4405083
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/4.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/5.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/5.jpg
new file mode 100755 (executable)
index 0000000..5c1faf1
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/5.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/6.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/6.jpg
new file mode 100755 (executable)
index 0000000..5a8ba63
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/6.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/7.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/7.jpg
new file mode 100755 (executable)
index 0000000..7a12aed
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/7.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/8.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/8.jpg
new file mode 100755 (executable)
index 0000000..b528cdb
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/8.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/9.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/9.jpg
new file mode 100755 (executable)
index 0000000..e855ecf
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster0/9.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/0.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/0.jpg
new file mode 100755 (executable)
index 0000000..a7d2add
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/0.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/1.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/1.jpg
new file mode 100755 (executable)
index 0000000..b533798
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/1.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/2.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/2.jpg
new file mode 100755 (executable)
index 0000000..ae6e1b2
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/2.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/3.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/3.jpg
new file mode 100755 (executable)
index 0000000..ac65a2d
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/3.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/4.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/4.jpg
new file mode 100755 (executable)
index 0000000..226f187
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/4.jpg differ
diff --git a/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/5.jpg b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/5.jpg
new file mode 100755 (executable)
index 0000000..490fb56
Binary files /dev/null and b/NUISamples/NUISamples/NUISamples.TizenTV/res/images/poster1/5.jpg differ
index 8b9e960..8f50284 100755 (executable)
@@ -1071,16 +1071,26 @@ namespace Tizen.NUI
                 int ver2 = -1;
                 int ver3 = -1;
 
+                try
+                {
                 if (NDalicManualPINVOKE.NativeVersionCheck(ref ver1, ref ver2, ref ver3))
                 {
                     if (ver1 != Version.ver1 || ver2 != Version.ver2 || ver3 != Version.ver3)
                     {
-                        throw new System.InvalidOperationException("Dali native version mismatch error! nui=" + Version.ver1 + "." + Version.ver2 + "." + Version.ver3 + " but dali=" + ver1 + "." + ver2 + "." + ver3);
+                            //throw new System.InvalidOperationException("Dali native version mismatch error! nui=" + Version.ver1 + "." + Version.ver2 + "." + Version.ver3 + " but dali=" + ver1 + "." + ver2 + "." + ver3);
+                            Tizen.Log.Fatal("NUI", "Dali native version mismatch error! nui=" + Version.ver1 + "." + Version.ver2 + "." + Version.ver3 + " but dali=" + ver1 + "." + ver2 + "." + ver3);
                     }
                 }
                 else
                 {
-                    throw new System.InvalidOperationException("Dali native version mismatch error! nui=" + Version.ver1 + "." + Version.ver2 + "." + Version.ver3 + " but dali=" + ver1 + "." + ver2 + "." + ver3);
+                        //throw new System.InvalidOperationException("Dali native version mismatch error! nui=" + Version.ver1 + "." + Version.ver2 + "." + Version.ver3 + " but dali=" + ver1 + "." + ver2 + "." + ver3);
+                        Tizen.Log.Fatal("NUI", "Dali native version mismatch error! nui=" + Version.ver1 + "." + Version.ver2 + "." + Version.ver3 + " but dali=" + ver1 + "." + ver2 + "." + ver3);
+                    }
+                }
+                catch (Exception e)
+                {
+                    //throw new System.InvalidOperationException("Dali native version is very old! nui=" + Version.ver1 + "." + Version.ver2 + "." + Version.ver3);
+                    Tizen.Log.Fatal("NUI", "Dali native version is very old! nui=" + Version.ver1 + "." + Version.ver2 + "." + Version.ver3);
                 }
             }
 
index 7b56c45..9877386 100755 (executable)
@@ -74,4 +74,9 @@ namespace Tizen.NUI
       }
     }
   } // namespace Constants
+
+    public struct InternalSetting
+    {
+        public static bool DefaultParentOriginAsTopLeft = true;
+    }
 } // namesapce Dali
index c894a4d..6f238b5 100755 (executable)
@@ -156,17 +156,17 @@ namespace Tizen.NUI
         /// Note: If false, then the top-left of the actor is used for the position.
         /// Setting this to false will allow scaling or rotation around the anchor-point without affecting the actor's position.
         /// </summary>
-        public bool PositionUsesAnchorPoint
+        protected bool PositionUsesAnchorPoint
         {
             get
             {
                 bool temp = false;
-                GetProperty(Actor.Property.POSITION_USES_ANCHOR_POINT).Get(ref temp);
+                if(this) GetProperty(Actor.Property.POSITION_USES_ANCHOR_POINT).Get(ref temp);
                 return temp;
             }
             set
             {
-                SetProperty(Actor.Property.POSITION_USES_ANCHOR_POINT, new Tizen.NUI.PropertyValue(value));
+                if(this) SetProperty(Actor.Property.POSITION_USES_ANCHOR_POINT, new Tizen.NUI.PropertyValue(value));
             }
         }
 
index ae2db50..eccc543 100755 (executable)
@@ -36,6 +36,7 @@ namespace Tizen.NUI
 
             // By default, we do not want the position to use the anchor point
             //this.PositionUsesAnchorPoint = false;
+            this.PositionUsesAnchorPoint = !(InternalSetting.DefaultParentOriginAsTopLeft);
         }
 
         internal static global::System.Runtime.InteropServices.HandleRef getCPtr(View obj)