Merge remote-tracking branch 'origin/master' into tizen
authorTizenAPI-Bot <tizenapi@samsung.com>
Wed, 20 Apr 2022 08:56:40 +0000 (08:56 +0000)
committerTizenAPI-Bot <tizenapi@samsung.com>
Wed, 20 Apr 2022 08:56:40 +0000 (08:56 +0000)
433 files changed:
packaging/csapi-tizenfx.spec
packaging/version.txt
pkg/Tizen.NET.API10/xamlbuild/Tizen.NUI.XamlBuild.dll
pkg/Tizen.NET.API10/xamlbuild/Tizen.NUI.XamlBuild.targets
src/Tizen.NUI.Components/Controls/AlertDialog.cs
src/Tizen.NUI.Components/Controls/Button.Internal.cs
src/Tizen.NUI.Components/Controls/CheckBox.cs
src/Tizen.NUI.Components/Controls/DatePicker.cs
src/Tizen.NUI.Components/Controls/Dialog.cs
src/Tizen.NUI.Components/Controls/Loading.cs
src/Tizen.NUI.Components/Controls/Menu.cs
src/Tizen.NUI.Components/Controls/MenuItem.cs
src/Tizen.NUI.Components/Controls/Navigation/AppBar.cs
src/Tizen.NUI.Components/Controls/Navigation/ContentPage.cs
src/Tizen.NUI.Components/Controls/Navigation/DialogPage.cs
src/Tizen.NUI.Components/Controls/Navigation/Navigator.cs
src/Tizen.NUI.Components/Controls/Navigation/Page.cs
src/Tizen.NUI.Components/Controls/Pagination.cs
src/Tizen.NUI.Components/Controls/Picker.cs
src/Tizen.NUI.Components/Controls/Popup.cs
src/Tizen.NUI.Components/Controls/Progress.cs
src/Tizen.NUI.Components/Controls/RadioButton.cs
src/Tizen.NUI.Components/Controls/RecyclerView/CollectionView.cs
src/Tizen.NUI.Components/Controls/RecyclerView/CollectionViewBindableProperty.cs
src/Tizen.NUI.Components/Controls/RecyclerView/Item/RecyclerViewItem.Internal.cs
src/Tizen.NUI.Components/Controls/RecyclerView/Item/RecyclerViewItem.cs
src/Tizen.NUI.Components/Controls/RecyclerView/RecyclerView.cs
src/Tizen.NUI.Components/Controls/Slider.Internal.cs
src/Tizen.NUI.Components/Controls/Slider.cs
src/Tizen.NUI.Components/Controls/Switch.cs
src/Tizen.NUI.Components/Controls/TabBar.cs
src/Tizen.NUI.Components/Controls/TabButton.cs
src/Tizen.NUI.Components/Controls/TabContent.cs
src/Tizen.NUI.Components/Controls/TabView.cs
src/Tizen.NUI.Components/Controls/TimePicker.cs
src/Tizen.NUI.Components/Theme/DefaultThemeCommon.cs
src/Tizen.NUI.Components/res/nui_component_default_back_button.png
src/Tizen.NUI.XamlBuild/src/internal/Xaml/MarkupExtensions/BindingExtension.cs
src/Tizen.NUI.XamlBuild/src/public/EXamlBuild/EXaml/EXamlCreateObject/EXamlCreateArrayObject.cs
src/Tizen.NUI.XamlBuild/src/public/EXamlBuild/EXaml/EXamlCreateObject/EXamlCreateDPObject.cs
src/Tizen.NUI.XamlBuild/src/public/EXamlBuild/EXaml/EXamlCreateObject/EXamlCreateObject.cs
src/Tizen.NUI.XamlBuild/src/public/EXamlBuild/EXaml/EXamlCreateObject/EXamlCreateResourceDictionary.cs [new file with mode: 0755]
src/Tizen.NUI.XamlBuild/src/public/EXamlBuild/EXamlContext.cs
src/Tizen.NUI.XamlBuild/src/public/EXamlBuild/EXamlCreateObjectVisitor.cs
src/Tizen.NUI.XamlBuild/src/public/EXamlBuild/EXamlExpandMarkupsVisitor.cs
src/Tizen.NUI.XamlBuild/src/public/EXamlBuild/EXamlSetPropertiesVisitor.cs
src/Tizen.NUI.XamlBuild/src/public/EXamlBuild/Utility/EXamlOperationType.cs
src/Tizen.NUI.XamlBuild/src/public/EXamlBuild/Utility/EXamlUtility.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/CompiledConverters/BindablePropertyConverter.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/CompiledConverters/BoundsTypeConverter.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/CompiledConverters/ExtentsTypeConverter.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/CompiledConverters/PositionTypeConverter.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/CompiledConverters/RDSourceTypeConverter.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/CompiledConverters/RectangleTypeConverter.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/CompiledConverters/SizeTypeConverter.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/CompiledConverters/ThicknessTypeConverter.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/CompiledConverters/TypeTypeConverter.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/CompiledMarkupExtensions/StaticExtension.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/CompiledMarkupExtensions/TypeExtension.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/CreateObjectVisitor.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/ExpandMarkupsVisitor.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/ILContext.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/NodeILExtensions.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/SetPropertiesVisitor.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/TypeReferenceExtensions.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/XamlCTask.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/XamlGTask.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/XamlGenerator.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/XamlTask.cs
src/Tizen.NUI.XamlBuild/src/public/XamlBuild/XmlTypeExtensions.cs
src/Tizen.NUI/res/close.png [new file with mode: 0644]
src/Tizen.NUI/res/dark_close.png [new file with mode: 0644]
src/Tizen.NUI/res/dark_leftCorner.png [new file with mode: 0644]
src/Tizen.NUI/res/dark_maximalize.png [new file with mode: 0644]
src/Tizen.NUI/res/dark_minimalize.png [new file with mode: 0644]
src/Tizen.NUI/res/dark_rightCorner.png [new file with mode: 0644]
src/Tizen.NUI/res/dark_smallwindow.png [new file with mode: 0644]
src/Tizen.NUI/res/leftCorner.png [new file with mode: 0644]
src/Tizen.NUI/res/maximalize.png [new file with mode: 0644]
src/Tizen.NUI/res/minimalize.png [new file with mode: 0644]
src/Tizen.NUI/res/rightCorner.png [new file with mode: 0644]
src/Tizen.NUI/res/smallwindow.png [new file with mode: 0644]
src/Tizen.NUI/src/internal/Application/Application.cs
src/Tizen.NUI/src/internal/EXaml/Action/GetValueAction.cs
src/Tizen.NUI/src/internal/EXaml/Action/RootAction.cs
src/Tizen.NUI/src/internal/EXaml/LoadEXaml.cs
src/Tizen.NUI/src/internal/EXaml/Operation/CreateArrayObject.cs
src/Tizen.NUI/src/internal/EXaml/Operation/CreateDPObject.cs [new file with mode: 0755]
src/Tizen.NUI/src/internal/EXaml/Operation/CreateObject.cs
src/Tizen.NUI/src/internal/Interop/Interop.ControlDevel.cs
src/Tizen.NUI/src/internal/Interop/Interop.TextEditor.cs
src/Tizen.NUI/src/internal/XamlBinding/ExtentsTypeConverter.cs
src/Tizen.NUI/src/internal/XamlBinding/ListStringTypeConverter.cs
src/Tizen.NUI/src/internal/XamlBinding/PositionTypeConverter.cs
src/Tizen.NUI/src/internal/XamlBinding/RectangleTypeConverter.cs
src/Tizen.NUI/src/internal/XamlBinding/RotationTypeConverter.cs
src/Tizen.NUI/src/internal/XamlBinding/VectorTypeConverter.cs
src/Tizen.NUI/src/public/Accessibility/IAtspiEditableText.cs [new file with mode: 0644]
src/Tizen.NUI/src/public/Accessibility/IAtspiSelection.cs [new file with mode: 0644]
src/Tizen.NUI/src/public/Accessibility/IAtspiText.cs [new file with mode: 0644]
src/Tizen.NUI/src/public/Accessibility/IAtspiValue.cs [new file with mode: 0644]
src/Tizen.NUI/src/public/Application/NUIApplication.cs
src/Tizen.NUI/src/public/BaseComponents/AnimatedImageView.cs
src/Tizen.NUI/src/public/BaseComponents/CustomView.cs
src/Tizen.NUI/src/public/BaseComponents/Style/Constants.cs
src/Tizen.NUI/src/public/BaseComponents/Style/TextEditorStyle.cs
src/Tizen.NUI/src/public/BaseComponents/TextEditor.cs
src/Tizen.NUI/src/public/BaseComponents/TextEditorBindableProperty.cs
src/Tizen.NUI/src/public/BaseComponents/TextField.cs
src/Tizen.NUI/src/public/BaseComponents/View.cs
src/Tizen.NUI/src/public/BaseComponents/ViewAccessibility.cs
src/Tizen.NUI/src/public/BaseComponents/ViewAccessibilityEnum.cs
src/Tizen.NUI/src/public/BaseComponents/ViewAccessibilityWrappers.cs
src/Tizen.NUI/src/public/BaseComponents/ViewBindableProperty.cs
src/Tizen.NUI/src/public/BaseComponents/ViewInternal.cs
src/Tizen.NUI/src/public/BaseComponents/ViewPublicMethods.cs
src/Tizen.NUI/src/public/Common/Color.cs
src/Tizen.NUI/src/public/Common/Layer.cs
src/Tizen.NUI/src/public/Common/PropertyNotification.cs
src/Tizen.NUI/src/public/Layouting/LayoutGroup.cs
src/Tizen.NUI/src/public/Layouting/LayoutItem.cs
src/Tizen.NUI/src/public/Theme/ThemeManager.cs
src/Tizen.NUI/src/public/Window/BorderWindow.cs [new file with mode: 0755]
src/Tizen.NUI/src/public/Window/DefaultBorder.cs [new file with mode: 0755]
src/Tizen.NUI/src/public/Window/IBorderInterface.cs [new file with mode: 0755]
src/Tizen.NUI/src/public/Window/Window.cs
src/Tizen.NUI/src/public/Window/WindowEvent.cs
src/Tizen.NUI/src/public/XamlBinding/ColorTypeConverter.cs
src/Tizen.NUI/src/public/XamlBinding/SizeTypeConverter.cs
src/Tizen.NUI/src/public/XamlBinding/TypeConverter.cs
test/NUITestSample/CommonUI_Samples/Samples/SliderSample.cs
test/NUITizenGallery/.vscode/launch.json
test/NUITizenGallery/Examples/AbsoluteLayoutTest/AbsoluteLayoutTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/ActivityIndicatorTest/ActivityIndicatorTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/AlertDialogTest/AlertDialogTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/AnimatedVectorImageViewTest/AnimatedVectorImageViewTest.cs [new file with mode: 0644]
test/NUITizenGallery/Examples/AnimatedVectorImageViewTest/AnimatedVectorImageViewTest.xaml [new file with mode: 0755]
test/NUITizenGallery/Examples/AnimatedVectorImageViewTest/AnimatedVectorImageViewTest.xaml.cs [new file with mode: 0644]
test/NUITizenGallery/Examples/BackgroundColorTest/BackgroundColorTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BackgroundColorTest/BackgroundColorTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BackgroundColorTest/BackgroundColorTest3Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BackgroundColorTest/BackgroundColorTest4Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BackgroundColorTest/BackgroundColorTest5Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BackgroundTest/BackgroundTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BindingTest/BindingTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BindingTest/BindingTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BoxViewTest/BoxViewTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BoxViewTest/BoxViewTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BoxViewTest/BoxViewTest3Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BoxViewTest/BoxViewTest4Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BrushTest/BrushBackgroundTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BrushTest/BrushBorderTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BrushTest/BrushComponentsTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BrushTest/BrushImageTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/BrushTest/BrushViewerTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/ButtonTest/ButtonTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/ButtonTest/ButtonTest1Page.xaml.cs [changed mode: 0644->0755]
test/NUITizenGallery/Examples/ButtonTest/ButtonTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/ButtonTest/ButtonTest2Page.xaml.cs [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CarouselTest/CarouselPageTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CarouselTest/CarouselViewFocusTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CarouselTest/CarouselViewItem.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CarouselTest/CarouselViewTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CarouselTest/CarouselViewTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CarouselTest/CarouselViewTest4Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewCustomItem.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewCustomItem.xaml.cs [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewCustomItemTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewFooterTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewObservableTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewTest3Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewTest4Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewTest5Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewTest6Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewTest7Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewTest8Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CollectionViewTest/CollectionViewTest9Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/ContentPageTest/ContentPageTestPage1.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/ContentPageTest/ContentPageTestPage2.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CustomCellTest/CustomCellListItem.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/CustomCellTest/CustomCellTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/EntryTest/EntryTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/EntryTest/EntryTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/EntryTest/EntryTest4Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/FrameLayoutTest/FrameLayoutTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/FrameLayoutTest/FrameLayoutTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/FrameTest/FrameTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/GraphicsTypeTest/GraphicsTypeTest.cs
test/NUITizenGallery/Examples/GraphicsTypeTest/GraphicsTypeTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/GraphicsTypeTest/GraphicsTypeTestPage.xaml.cs
test/NUITizenGallery/Examples/HelloWorld/HelloWorldPage.xaml
test/NUITizenGallery/Examples/ImageButtonTest/ImageButtonTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/ImageButtonTest/ImageButtonTestPage.xaml.cs [changed mode: 0644->0755]
test/NUITizenGallery/Examples/IndicatorViewTest/IndicatorViewTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/IndicatorViewTest/IndicatorViewTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/IndicatorViewTest/IndicatorViewTest3Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/IndicatorViewTest/IndicatorViewTest4Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/KeyboardTest/KeyboardTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LabelTest/LabelTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LabelTest/LabelTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LabelTest/LabelTest3Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LabelTest/LabelTest5Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LayoutAddRemoveTest/LayoutAddRemoveTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LayoutAddRemoveTest/LayoutAddRemoveTest1Page.xaml.cs [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LayoutAddRemoveTest/LayoutAddRemoveTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LinearLayoutTest/LinearLayoutTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LinearLayoutTest/LinearLayoutTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LinearLayoutTest/LinearLayoutTest3Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LinearLayoutTest/LinearLayoutTest4Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LinearLayoutTest/LinearLayoutTest5Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LinearLayoutTest/LinearLayoutTest6Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/LinearLayoutTest/LinearLayoutTest8Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/MenuTest/MenuTestMenu.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/MenuTest/MenuTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/NavigatorTest/NavigatorTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/NavigatorTest/NavigatorTest1Page.xaml.cs [changed mode: 0644->0755]
test/NUITizenGallery/Examples/NavigatorTest/NavigatorTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/NavigatorTest/NavigatorTest2Page.xaml.cs [changed mode: 0644->0755]
test/NUITizenGallery/Examples/OpacityTest/OpacityTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/PerformanceTest/ListItemTitle.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/PerformanceTest/ListItemTitleSwitch.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/PerformanceTest/ListItemTitleView.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/PerformanceTest/PerformanceTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/PerformanceTest/PerformanceTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/PerformanceTest/PerformanceTest3Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/ProgressbarTest/ProgressbarTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/RecalculateTest/RecalculateTest1Page.xaml
test/NUITizenGallery/Examples/RefreshViewTest/RefreshViewTest1Page.xaml
test/NUITizenGallery/Examples/RotationTest/RotationTest1Page.xaml
test/NUITizenGallery/Examples/RotationTest/RotationTest1Page.xaml.cs
test/NUITizenGallery/Examples/ScaleTest/ScaleTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/ScaleTest/ScaleTest2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/ScrollViewTest/ScrollViewTest2Page.xaml.cs
test/NUITizenGallery/Examples/ScrollViewTest/ScrollViewTest3Page.xaml.cs
test/NUITizenGallery/Examples/ScrollViewTest/ScrollViewTest6Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/SetColorTest/SetColorTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/SetColorTest/SetColorTestPage.xaml.cs [changed mode: 0644->0755]
test/NUITizenGallery/Examples/SimpleTest/SimpleTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/StackInGridTest/StackInGridTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/TabViewTest/TabViewTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/TabViewTest/TabViewTestPage.xaml.cs [changed mode: 0644->0755]
test/NUITizenGallery/Examples/Test1/Test1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/Test2/Test2Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/TimerTest/TimerTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/ToolbarItemTest/ToolbarItemTest1Page.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/VectorGraphicsTest/VectorGraphicsCanvasViewTest6Page.xaml.cs [changed mode: 0644->0755]
test/NUITizenGallery/Examples/VectorGraphicsTest/VectorGraphicsTVGTestPage.xaml [changed mode: 0644->0755]
test/NUITizenGallery/Examples/WebViewTest/WebViewTest1Page.xaml.cs [changed mode: 0644->0755]
test/NUITizenGallery/NUITizenGallery.cs [changed mode: 0644->0755]
test/NUITizenGallery/NUITizenGallery.csproj
test/NUITizenGallery/res/images/cycle_animation.json [new file with mode: 0644]
test/NUITizenGallery/tizen-manifest.xml
test/Tizen.NUI.Devel.Tests.Ubuntu/Tizen.NUI.Devel.Tests/testcase/public/TSView.cs
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples.sln [new file with mode: 0755]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/CellPaddingView.xaml [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/CellPaddingView.xaml.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlView.xaml [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlView.xaml.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlWindowLayoutTab.png [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlWindowViewTab.png [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/DisplayWindow.png [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/HeightSpecificationView.xaml [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/HeightSpecificationView.xaml.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/HorizontalAlignmentView.xaml [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/HorizontalAlignmentView.xaml.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ILayoutProperty.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/IObjectLayout.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/IObjectProperty.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/IObjectView.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LayoutSamplesClassDiagram.png [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LayoutSamplesClassDiagram.txt [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LayoutTypeView.xaml [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LayoutTypeView.xaml.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LinearLayoutControlView.xaml [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LinearLayoutControlView.xaml.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LinearOrientationView.xaml [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LinearOrientationView.xaml.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/MarginView.xaml [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/MarginView.xaml.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectControlView.xaml [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectControlView.xaml.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectLinearLayout.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectView.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectView.xaml [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectView.xaml.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectViewGroup.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/PaddingView.xaml [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/PaddingView.xaml.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples.csproj [new file with mode: 0755]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/VerticalAlignmentView.xaml [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/VerticalAlignmentView.xaml.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/WidthSpecificationView.xaml [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/WidthSpecificationView.xaml.cs [new file with mode: 0644]
test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/tizen-manifest.xml [new file with mode: 0755]
test/Tizen.NUI.PerformanceTest/PerformanceTest.cs [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/Tizen.NUI.PerformanceTest.code-workspace [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/Tizen.NUI.PerformanceTest.csproj [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-1.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-10.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-11.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-12.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-13.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-14.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-15.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-16.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-17.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-18.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-19.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-2.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-20.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-21.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-22.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-23.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-24.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-25.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-26.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-27.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-28.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-29.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-3.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-30.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-31.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-32.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-33.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-34.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-35.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-36.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-37.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-38.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-39.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-4.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-40.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-41.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-42.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-43.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-44.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-45.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-46.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-47.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-48.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-49.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-5.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-50.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-51.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-52.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-53.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-6.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-7.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-8.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-9.jpg [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/shared/res/Tizen.NUI.PerformanceTest.png [new file with mode: 0644]
test/Tizen.NUI.PerformanceTest/tizen-manifest.xml [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/AllAppsSample.cs [new file with mode: 0644]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/AtspiSample.cs [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/BorderWindowTest.cs [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/DefaultGrabTouchAfterLeaveSample.cs [new file with mode: 0644]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/SliderSample.cs
test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/frame.png [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/google chrome.png [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/hbo.png [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/igtv.png [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/instagram.png [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/linkedin.png [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/netflix.png [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/pinterest.png [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/soundcloud.png [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/spoti.png [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/youtube.png [new file with mode: 0755]
test/Tizen.NUI.Samples/Tizen.NUI.Samples/tizen-manifest.xml
test/Tizen.NUI.StyleGuide/.pic/csproj-file.png [changed mode: 0755->0644]
test/Tizen.NUI.StyleGuide/.pic/launch.png [changed mode: 0755->0644]
test/Tizen.NUI.StyleGuide/.vscode/launch.json
test/Tizen.NUI.StyleGuide/Examples/ContentPageExample.cs [new file with mode: 0644]
test/Tizen.NUI.StyleGuide/Examples/DialogAndAlertDialogExample.cs [moved from test/Tizen.NUI.StyleGuide/Examples/AlertDialogExample.cs with 96% similarity]
test/Tizen.NUI.StyleGuide/Examples/NavigatorExample.cs [new file with mode: 0644]
test/Tizen.NUI.StyleGuide/Examples/TabViewExample.cs [new file with mode: 0644]
test/Tizen.NUI.StyleGuide/README.md
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/GlobalSuppressions.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/Program.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/Properties/Resources.Designer.cs [moved from test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/Resource.Designer.cs with 82% similarity]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/Properties/Resources.resx [moved from test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/Resource.resx with 91% similarity]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/README.md [new file with mode: 0644]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/Tizen.NUI.Components.Devel.Tests.csproj
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/Tizen.NUI.Components.Devel.Tests.sln [deleted file]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/nui-components-tct.png [new file with mode: 0644]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/res/demoVideo.mp4 [deleted file]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/shared/res/Tizen.NUI.Components.Devel.Tests.png [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/shared/res/nui-csharp.png [deleted file]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/CheckBox.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/FlexibleView/TSFlexibleView.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/FlexibleView/TSFlexibleViewLayoutManager.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/FlexibleView/TSFlexibleViewRecycler.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/FlexibleView/TSOrientationHelper.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/Navigation/TSAppBar.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/Navigation/TSNavigator.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/Item/TSDefaultGridItem.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/Item/TSDefaultLinearItem.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/Layouter/TSGridLayouter.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/Layouter/TSItemsLayouter.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/TSCollectionView.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/TSRecyclerView.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/TSSelectionChangedEventArgs.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/TSSelectionList.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSButton.Internal.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSButton.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSButtonGroup.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSCheckBoxGroup.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSDatePicker.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSImageScrollBar.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSMenu.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSPagination.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSPopup.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSRadioButton.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSScrollableBase.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSSlider.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSTimePicker.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Extension/TSLottieSwitchExtension.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Extension/TSSlidingSwitchExtension.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSDatePickerStyle.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSDefaultGridItemStyle.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSDefaultLinearItemStyle.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSDefaultTitleItemStyle.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSSliderStyle.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Utils/TSStyleManager.cs
test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/tizen-manifest.xml
test/Tizen.NUI.Tests/Tizen.NUI.Devel.Tests/testcase/public/BaseComponents/TSTextConstants.cs [new file with mode: 0755]
test/Tizen.NUI.Tests/Tizen.NUI.Devel.Tests/testcase/public/BaseComponents/TSTextEditor.cs
test/Tizen.NUI.Tests/Tizen.NUI.Devel.Tests/testcase/public/BaseComponents/TSTextField.cs
test/Tizen.NUI.Tests/Tizen.NUI.Devel.Tests/testcase/public/BaseComponents/TSTextLabel.cs
test/Tizen.NUI.Tests/Tizen.NUI.Devel.Tests/tizen-manifest.xml

index a903c13..bf91708 100644 (file)
@@ -1,8 +1,8 @@
 # Auto-generated from csapi-tizenfx.spec.in by makespec.sh
 
 %define TIZEN_NET_API_VERSION 10
-%define TIZEN_NET_RPM_VERSION 10.0.0.17066+nui22115
-%define TIZEN_NET_NUGET_VERSION 10.0.0.17066
+%define TIZEN_NET_RPM_VERSION 10.0.0.999+nui22118
+%define TIZEN_NET_NUGET_VERSION 10.0.0.99999
 
 %define DOTNET_ASSEMBLY_PATH /usr/share/dotnet.tizen/framework
 %define DOTNET_ASSEMBLY_DUMMY_PATH %{DOTNET_ASSEMBLY_PATH}/ref
index 524f4d8..19e1892 100755 (executable)
@@ -6,4 +6,4 @@ RPM_VERSION=10.0.0.999
 NUGET_VERSION=10.0.0.99999
 
 # RPM Version Suffix
-RPM_VERSION_SUFFIX=nui22115
+RPM_VERSION_SUFFIX=nui22118
index bbe5db2..e1552f4 100644 (file)
Binary files a/pkg/Tizen.NET.API10/xamlbuild/Tizen.NUI.XamlBuild.dll and b/pkg/Tizen.NET.API10/xamlbuild/Tizen.NUI.XamlBuild.dll differ
index c9ba6b7..1adb303 100755 (executable)
@@ -26,6 +26,7 @@
                        Language="$(Language)"
                        AssemblyName="$(AssemblyName)"
                        ReferencePath="@(ReferencePath)"
+                       XamlOptimization="$(XamlOptimization)"
             AddXamlCompilationAttribute="True" />
                <ItemGroup>
                        <FileWrites Include="@(_XamlGOutputs)" />
@@ -50,6 +51,7 @@
                        DebugType = "$(DebugType)"
                        NeedDebug = "$(NeedDebug)"
                        UseInjection = "$(NeedInjection)"
+                       XamlOptimization="$(XamlOptimization)"
                        KeepXamlResources = "$(XFKeepXamlResources)" />
                <Touch Files="$(IntermediateOutputPath)XamlC.stamp" AlwaysCreate="True" />
                <ItemGroup>
index c67aa3f..ba9e69a 100755 (executable)
@@ -463,7 +463,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.Dialog);
+            AccessibilityRole = Role.Dialog;
             AppendAccessibilityAttribute("sub-role", "Alert");
             Show(); // calls RegisterDefaultLabel(); Hide() will call UnregisterDefaultLabel()
         }
index 70fe232..ab4e503 100644 (file)
@@ -176,7 +176,7 @@ namespace Tizen.NUI.Components
                         }
 
                         ClickedEventArgs eventArgs = new ClickedEventArgs();
-                        OnClickedInternal(eventArgs);
+                        OnClickedInternal(eventArgs, touch);
 
                         return true;
                     }
@@ -275,8 +275,8 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.PushButton);
 
+            AccessibilityRole = Role.PushButton;
             AccessibilityHighlightable = true;
             EnableControlStatePropagation = true;
 
@@ -454,6 +454,23 @@ namespace Tizen.NUI.Components
             }
         }
 
+        private void OnClickedInternal(ClickedEventArgs eventArgs, Touch touch)
+        {
+            // If GrabTouchAfterLeave is true, Up will result in Finished rather than Interrupted even if it is out of the button area.
+            // So, it is necessary to check whether it is Up in the button area.
+            if (GrabTouchAfterLeave == true)
+            {
+                Vector2 localPosition = touch.GetLocalPosition(0);
+                if ((localPosition != null && Size != null &&
+                    0 <= localPosition.X && localPosition.X <= Size.Width &&
+                    0 <= localPosition.Y && localPosition.Y <= Size.Height) == false)
+                {
+                    return;
+                }
+            }
+            OnClickedInternal(eventArgs);
+        }
+
         private void OnClickedInternal(ClickedEventArgs eventArgs)
         {
             Command?.Execute(CommandParameter);
index d0b0da2..fc2581c 100755 (executable)
@@ -51,7 +51,7 @@ namespace Tizen.NUI.Components
         {
             base.OnInitialize();
 
-            SetAccessibilityConstructor(Role.CheckBox);
+            AccessibilityRole = Role.CheckBox;
             WidthSpecification = LayoutParamPolicies.WrapContent;
             HeightSpecification = LayoutParamPolicies.WrapContent;
         }
index 1505393..bfbe1e7 100755 (executable)
@@ -87,6 +87,7 @@ namespace Tizen.NUI.Components
         /// <since_tizen> 9 </since_tizen>
         public DatePicker()
         {
+            SetKeyboardNavigationSupport(true);
         }
 
         /// <summary>
@@ -96,6 +97,7 @@ namespace Tizen.NUI.Components
         /// <since_tizen> 9 </since_tizen>
         public DatePicker(string style) : base(style)
         {
+            SetKeyboardNavigationSupport(true);
         }
 
         /// <summary>
@@ -105,6 +107,7 @@ namespace Tizen.NUI.Components
         /// <since_tizen> 9 </since_tizen>
         public DatePicker(DatePickerStyle datePickerStyle) : base(datePickerStyle)
         {
+            SetKeyboardNavigationSupport(true);
         }
 
 
@@ -180,7 +183,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.DateEditor);
+            AccessibilityRole = Role.DateEditor;
 
             dayPicker = new Picker()
             {
@@ -234,7 +237,8 @@ namespace Tizen.NUI.Components
         }
 
         /// <summary>
-        /// ToDo : only key navigation is enabled, but value editing is not yet added. for example, after enter key and up/down key the value need be changed.
+        /// ToDo : only key navigation is enabled, and value editing is added as an very simple operation. by toggling enter key, it switches edit mode. 
+        /// ToDo : this should be fixed and changed properly by owner. (And UX SPEC should be referenced also)
         /// </summary>
         /// <param name="currentFocusedView"></param>
         /// <param name="direction"></param>
@@ -249,10 +253,6 @@ namespace Tizen.NUI.Components
                 {
                     return monthPicker;
                 }
-                else if (direction == View.FocusDirection.Left)
-                {
-                    return null;
-                }
             }
             else if (currentFocusedView == monthPicker)
             {
@@ -267,11 +267,7 @@ namespace Tizen.NUI.Components
             }
             else if (currentFocusedView == dayPicker)
             {
-                if (direction == View.FocusDirection.Right)
-                {
-                    return null;
-                }
-                else if (direction == View.FocusDirection.Left)
+                if (direction == View.FocusDirection.Left)
                 {
                     return monthPicker;
                 }
index 5b258ec..00fce27 100755 (executable)
@@ -133,7 +133,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.Dialog);
+            AccessibilityRole = Role.Dialog;
             AppendAccessibilityAttribute("sub-role", "Alert");
             Show(); // calls RegisterDefaultLabel(); Hide() will call UnregisterDefaultLabel()
         }
index b54654f..4e61107 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * Copyright(c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -226,7 +226,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.ProgressBar);
+            AccessibilityRole = Role.ProgressBar;
 
             imageVisual = new AnimatedImageVisual()
             {
@@ -304,8 +304,7 @@ namespace Tizen.NUI.Components
         /// <summary>
         /// Play Loading Animation.
         /// </summary>
-        /// This may be public opened in tizen_6.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 10 </since_tizen>
         public void Play()
         {
             PropertyValue attributes = new PropertyValue(0);
@@ -316,8 +315,7 @@ namespace Tizen.NUI.Components
         /// <summary>
         /// Pause Loading Animation.
         /// </summary>
-        /// This may be public opened in tizen_6.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 10 </since_tizen>
         public void Pause()
         {
             PropertyValue attributes = new PropertyValue(0);
@@ -328,8 +326,7 @@ namespace Tizen.NUI.Components
         /// <summary>
         /// Stop Loading Animation.
         /// </summary>
-        /// This may be public opened in tizen_6.5 after ACR done. Before ACR, need to be hidden as inhouse API.
-        [EditorBrowsable(EditorBrowsableState.Never)]
+        /// <since_tizen> 10 </since_tizen>
         public void Stop()
         {
             PropertyValue attributes = new PropertyValue(0);
index 91c6e69..56e6efc 100755 (executable)
@@ -652,7 +652,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.PopupMenu);
+            AccessibilityRole = Role.PopupMenu;
             AppendAccessibilityAttribute("sub-role", "Alert");
         }
 
index fe9688d..d9b0ac0 100755 (executable)
@@ -244,7 +244,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.MenuItem);
+            AccessibilityRole = Role.MenuItem;
         }
     }
 }
index 41280b6..5485227 100755 (executable)
@@ -544,7 +544,7 @@ namespace Tizen.NUI.Components
         {
             base.OnInitialize();
 
-            SetAccessibilityConstructor(Role.TitleBar);
+            AccessibilityRole = Role.TitleBar;
         }
 
         /// <summary>
index aeeb2e7..9dd60ec 100755 (executable)
@@ -76,7 +76,7 @@ namespace Tizen.NUI.Components
         {
             base.OnInitialize();
 
-            SetAccessibilityConstructor(Role.PageTab);
+            AccessibilityRole = Role.PageTab;
         }
 
         /// <summary>
index aaea2c7..5a22f23 100755 (executable)
@@ -288,9 +288,8 @@ namespace Tizen.NUI.Components
 
         private View CreateDefaultScrim()
         {
-            //FIXME: Needs to separate GUI implementation codes to style cs file.
-            var scrim = new VisualView();
-            scrim.BackgroundColor = new Color(0.0f, 0.0f, 0.0f, 0.5f);
+            var scrimStyle = ThemeManager.GetStyle("Tizen.NUI.Components.DialogPage.Scrim");
+            var scrim = new VisualView(scrimStyle);
             //FIXME: Needs to set proper size to Scrim.
             scrim.Size = NUIApplication.GetDefaultWindow().Size;
             scrim.TouchEvent += (object source, TouchEventArgs e) =>
index 7e8dbf2..8094b7d 100755 (executable)
@@ -132,7 +132,7 @@ namespace Tizen.NUI.Components
         {
             base.OnInitialize();
 
-            SetAccessibilityConstructor(Role.PageTabList);
+            AccessibilityRole = Role.PageTabList;
         }
 
         /// <summary>
index a66099d..ee15a92 100755 (executable)
@@ -94,6 +94,7 @@ namespace Tizen.NUI.Components
             return instance.InternalDisappearingTransition;
         });
 
+        /// <inheritdoc/>
         [EditorBrowsable(EditorBrowsableState.Never)]
         protected internal BaseComponents.View LastFocusedView = null;
 
index 64b3ba2..9dd36c5 100755 (executable)
@@ -19,6 +19,7 @@ using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Diagnostics;
+using Tizen.NUI.Accessibility;
 using Tizen.NUI.BaseComponents;
 using Tizen.NUI.Binding;
 
@@ -28,7 +29,7 @@ namespace Tizen.NUI.Components
     /// Pagination shows the number of pages available and the currently active page.
     /// </summary>
     /// <since_tizen> 8 </since_tizen>
-    public partial class Pagination : Control
+    public partial class Pagination : Control, IAtspiValue
     {
         /// <summary>The IndicatorSize bindable property.</summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
@@ -453,7 +454,7 @@ namespace Tizen.NUI.Components
         /// Minimum value.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override double AccessibilityGetMinimum()
+        double IAtspiValue.AccessibilityGetMinimum()
         {
             return 0.0;
         }
@@ -462,7 +463,7 @@ namespace Tizen.NUI.Components
         /// Current value.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override double AccessibilityGetCurrent()
+        double IAtspiValue.AccessibilityGetCurrent()
         {
             return (double)SelectedIndex;
         }
@@ -471,7 +472,7 @@ namespace Tizen.NUI.Components
         /// Maximum value.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override double AccessibilityGetMaximum()
+        double IAtspiValue.AccessibilityGetMaximum()
         {
             return (double)IndicatorCount;
         }
@@ -480,7 +481,7 @@ namespace Tizen.NUI.Components
         /// Current value.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override bool AccessibilitySetCurrent(double value)
+        bool IAtspiValue.AccessibilitySetCurrent(double value)
         {
             int integerValue = (int)value;
 
@@ -497,7 +498,7 @@ namespace Tizen.NUI.Components
         /// Minimum increment.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override double AccessibilityGetMinimumIncrement()
+        double IAtspiValue.AccessibilityGetMinimumIncrement()
         {
             return 1.0;
         }
@@ -507,7 +508,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.ScrollBar, AccessibilityInterface.Value);
+            AccessibilityRole = Role.ScrollBar;
             AccessibilityHighlightable = true;
             AppendAccessibilityAttribute("style", "pagecontrolbyvalue");
 
index 1bcf1a0..1b38b39 100755 (executable)
@@ -33,7 +33,7 @@ namespace Tizen.NUI.Components
         /// ValueChangedEventArgs default constructor.
         /// <param name="value">value of Picker.</param>
         /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]   
+        [EditorBrowsable(EditorBrowsableState.Never)]
         public ValueChangedEventArgs(int value)
         {
             Value = value;
@@ -45,7 +45,7 @@ namespace Tizen.NUI.Components
         /// </summary>
         /// <since_tizen> 9 </since_tizen>
         public int Value { get; }
-        
+
     }
 
     /// <summary>
@@ -59,7 +59,7 @@ namespace Tizen.NUI.Components
         private const int scrollVisibleItems = 5;
         //Dummy item count for loop feature. Max value of scrolling distance in 
         //RPI target is bigger than 20 items height. it can adjust depends on the internal logic and device env.
-        private const int dummyItemsForLoop = 20;             
+        private const int dummyItemsForLoop = 20;
         private int startScrollOffset;
         private int itemHeight;
         private int startScrollY;
@@ -81,6 +81,10 @@ namespace Tizen.NUI.Components
         private IList<TextLabel> itemList;
         private Vector2 size;
         private TextLabelStyle itemTextLabel;
+        private bool editMode = false;
+        private View recoverIndicator = null;
+        private View editModeIndicator = null;
+
 
         /// <summary>
         /// Creates a new instance of Picker.
@@ -144,6 +148,13 @@ namespace Tizen.NUI.Components
                 Utility.Dispose(upLine);
                 Remove(downLine);
                 Utility.Dispose(downLine);
+
+                recoverIndicator = null;
+                if (editModeIndicator)
+                {
+                    editModeIndicator.Dispose();
+                    editModeIndicator = null;
+                }
             }
 
             base.Dispose(type);
@@ -177,7 +188,7 @@ namespace Tizen.NUI.Components
                 UpdateValueList();
             }
         }
-        
+
         /// <summary>
         /// The Current value of Picker.
         /// </summary>
@@ -239,7 +250,7 @@ namespace Tizen.NUI.Components
             {
                 if (maxValue == value) return;
                 if (currentValue > value) currentValue = value;
-                
+
                 maxValue = value;
                 needItemUpdate = true;
 
@@ -273,7 +284,7 @@ namespace Tizen.NUI.Components
             {
                 if (minValue == value) return;
                 if (currentValue < value) currentValue = value;
-                
+
                 minValue = value;
                 needItemUpdate = true;
 
@@ -286,7 +297,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.List);
+            AccessibilityRole = Role.List;
 
             Initialize();
         }
@@ -361,7 +372,7 @@ namespace Tizen.NUI.Components
                 pickerScroller.ScrollAvailableArea = new Vector2(0, (itemList.Count * itemHeight) - size.Height);
             }
         }
-                
+
         private void Initialize()
         {
             HeightSpecification = LayoutParamPolicies.MatchParent;
@@ -388,7 +399,7 @@ namespace Tizen.NUI.Components
             pickerScroller.ScrollAnimationStarted += OnScrollAnimationStarted;
 
             itemList = new List<TextLabel>();
-            
+
             minValue = maxValue = currentValue = 0;
             displayedValues = null;
             //Those many flags for min, max, value method calling sequence dependency.
@@ -399,10 +410,13 @@ namespace Tizen.NUI.Components
 
             Add(pickerScroller);
             AddLine();
+
+            Focusable = true;
+            KeyEvent += OnKeyEvent;
         }
 
         private void OnValueChanged()
-        { 
+        {
             ValueChangedEventArgs eventArgs =
                 new ValueChangedEventArgs(displayedValuesUpdate ? Int32.Parse(itemList[currentValue].Name) : Int32.Parse(itemList[currentValue].Text));
             ValueChanged?.Invoke(this, eventArgs);
@@ -420,7 +434,7 @@ namespace Tizen.NUI.Components
         private void OnScroll(object sender, ScrollEventArgs e)
         {
             if (!loopEnabled || onAnimation || onAlignAnimation) return;
-            
+
             PageAdjust(e.Position.Y);
         }
 
@@ -441,7 +455,8 @@ namespace Tizen.NUI.Components
             lastScrollPosion = (int)(-e.Position.Y + offset);
 
             onAnimation = false;
-            if (onAlignAnimation) {
+            if (onAlignAnimation)
+            {
                 onAlignAnimation = false;
                 if (loopEnabled == true)
                 {
@@ -457,11 +472,13 @@ namespace Tizen.NUI.Components
             }
 
             //Item center align with animation, otherwise changed event emit.
-            if (offset != 0) {
+            if (offset != 0)
+            {
                 onAlignAnimation = true;
                 pickerScroller.ScrollTo(-e.Position.Y + offset, true);
             }
-            else {
+            else
+            {
                 if (currentValue != ((int)(-e.Position.Y / itemHeight) + 2))
                 {
                     currentValue = ((int)(-e.Position.Y / itemHeight) + 2);
@@ -483,10 +500,13 @@ namespace Tizen.NUI.Components
         private String GetItemText(bool loopEnabled, int idx)
         {
             if (!loopEnabled) return " ";
-            else {
-                if (displayedValuesUpdate) {
+            else
+            {
+                if (displayedValuesUpdate)
+                {
                     idx = idx - MinValue;
-                    if (idx <= displayedValues.Count) {
+                    if (idx <= displayedValues.Count)
+                    {
                         return displayedValues[idx];
                     }
                     return " ";
@@ -509,6 +529,7 @@ namespace Tizen.NUI.Components
                 Name = idx.ToString(),
             };
 
+            temp.AccessibilitySuppressedEvents[AccessibilityEvent.MovedOut] = true;
             itemList.Add(temp);
             pickerScroller.Add(temp);
         }
@@ -535,7 +556,8 @@ namespace Tizen.NUI.Components
 
             //FIXME: This is wrong.
             //       But scroller can't update item property after added please fix me.
-            if (itemList.Count > 0) {
+            if (itemList.Count > 0)
+            {
                 itemList.Clear();
                 pickerScroller.RemoveAllChildren();
             }
@@ -547,9 +569,9 @@ namespace Tizen.NUI.Components
                 //So need below calc.
                 int dummyStartIdx = 0;
                 if (maxValue - minValue >= dummyItemsForLoop)
-                  dummyStartIdx = maxValue - dummyItemsForLoop + 1;
+                    dummyStartIdx = maxValue - dummyItemsForLoop + 1;
                 else
-                  dummyStartIdx = maxValue - (dummyItemsForLoop % (maxValue - minValue + 1)) + 1;
+                    dummyStartIdx = maxValue - (dummyItemsForLoop % (maxValue - minValue + 1)) + 1;
 
                 //Start add items in scroller. first dummys for scroll anim.
                 for (int i = 0; i < dummyItemsForLoop; i++)
@@ -595,6 +617,75 @@ namespace Tizen.NUI.Components
             needItemUpdate = false;
         }
 
+        private bool OnKeyEvent(object o, View.KeyEventArgs e)
+        {
+            if (e.Key.State == Key.StateType.Down)
+            {
+                if (e.Key.KeyPressedName == "Return")
+                {
+                    if (editMode)
+                    {
+                        //Todo: sometimes this gets wrong. the currentValue is not correct. need to be fixed.
+                        if (currentValue != ((int)(-pickerScroller.Position.Y / itemHeight) + 2))
+                        {
+                            currentValue = ((int)(-pickerScroller.Position.Y / itemHeight) + 2);
+                            OnValueChanged();
+                        }
+
+                        //set editMode false (toggle the mode)
+                        editMode = false;
+                        FocusManager.Instance.FocusIndicator = recoverIndicator;
+                        return true;
+                    }
+                    else
+                    {
+                        //set editMode true (toggle the mode)
+                        editMode = true;
+                        if (editModeIndicator == null)
+                        {
+                            editModeIndicator = new View()
+                            {
+                                PositionUsesPivotPoint = true,
+                                PivotPoint = new Position(0, 0, 0),
+                                WidthResizePolicy = ResizePolicyType.FillToParent,
+                                HeightResizePolicy = ResizePolicyType.FillToParent,
+                                BorderlineColor = Color.Red,
+                                BorderlineWidth = 6.0f,
+                                BorderlineOffset = -1f,
+                                BackgroundColor = new Color(0.2f, 0.2f, 0.2f, 0.4f),
+                            };
+                        }
+                        recoverIndicator = FocusManager.Instance.FocusIndicator;
+                        FocusManager.Instance.FocusIndicator = editModeIndicator;
+                        return true;
+                    }
+                }
+                else if (e.Key.KeyPressedName == "Up")
+                {
+                    if (editMode)
+                    {
+                        InternalCurrentValue += 1;
+                        return true;
+                    }
+                }
+                else if (e.Key.KeyPressedName == "Down")
+                {
+                    if (editMode)
+                    {
+                        InternalCurrentValue -= 1;
+                        return true;
+                    }
+                }
+
+                if (editMode)
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+
         internal class PickerScroller : ScrollableBase
         {
             private int itemHeight;
index 59d93a6..2ebe2ab 100755 (executable)
@@ -782,7 +782,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.Dialog);
+            AccessibilityRole = Role.Dialog;
             AppendAccessibilityAttribute("sub-role", "Alert");
 
             container.Add(this);
index f7d239b..ee8c73c 100755 (executable)
  * limitations under the License.
  *
  */
+
 using System;
-using Tizen.NUI.BaseComponents;
-using Tizen.NUI.Binding;
 using System.ComponentModel;
 using System.Diagnostics;
+using Tizen.NUI.Accessibility;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Binding;
 
 namespace Tizen.NUI.Components
 {
@@ -26,7 +28,7 @@ namespace Tizen.NUI.Components
     /// The Progress class is used to show the ongoing status with a long narrow bar.
     /// </summary>
     /// <since_tizen> 6 </since_tizen>
-    public partial class Progress : Control
+    public partial class Progress : Control, IAtspiValue
     {
         /// <summary>
         /// MaxValueProperty
@@ -474,7 +476,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.ProgressBar, AccessibilityInterface.Value);
+            AccessibilityRole = Role.ProgressBar;
             // create necessary components
             InitializeTrack();
             InitializeBuffer();
@@ -521,7 +523,7 @@ namespace Tizen.NUI.Components
         /// Gets minimum value for Accessibility.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override double AccessibilityGetMinimum()
+        double IAtspiValue.AccessibilityGetMinimum()
         {
             if (this.ProgressState == Progress.ProgressStatusType.Determinate)
             {
@@ -537,7 +539,7 @@ namespace Tizen.NUI.Components
         /// Gets the current value for Accessibility.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override double AccessibilityGetCurrent()
+        double IAtspiValue.AccessibilityGetCurrent()
         {
             if (this.ProgressState == Progress.ProgressStatusType.Determinate)
             {
@@ -549,11 +551,17 @@ namespace Tizen.NUI.Components
             }
         }
 
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool IAtspiValue.AccessibilitySetCurrent(double value)
+        {
+            return false;
+        }
+
         /// <summary>
         /// Gets maximum value for Accessibility.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override double AccessibilityGetMaximum()
+        double IAtspiValue.AccessibilityGetMaximum()
         {
             if (this.ProgressState == Progress.ProgressStatusType.Determinate)
             {
@@ -565,6 +573,12 @@ namespace Tizen.NUI.Components
             }
         }
 
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        double IAtspiValue.AccessibilityGetMinimumIncrement()
+        {
+            return 0.0;
+        }
+
         /// <summary>
         /// Dispose Progress and all children on it.
         /// </summary>
index 3a36152..a802de1 100755 (executable)
@@ -61,7 +61,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.RadioButton);
+            AccessibilityRole = Role.RadioButton;
         }
 
         /// <summary>
index f8e8469..78f0e39 100755 (executable)
@@ -100,57 +100,6 @@ namespace Tizen.NUI.Components
                     return colView.selectionMode;
                 });
 
-        /// <summary>
-        /// Binding Property of items data source.
-        /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty ItemsSourceProperty =
-            BindableProperty.Create(nameof(ItemsSource), typeof(IEnumerable), typeof(CollectionView), null,
-                propertyChanged: (bindable, oldValue, newValue) =>
-                {
-                    var colView = (CollectionView)bindable;
-                    oldValue = colView.itemsSource;
-
-                    if (oldValue != null)
-                    {
-                        // Clearing old data!
-                        if (oldValue is INotifyCollectionChanged prevNotifyCollectionChanged)
-                        {
-                            prevNotifyCollectionChanged.CollectionChanged -= colView.CollectionChanged;
-                        }
-                        if (colView.selectedItem != null) colView.selectedItem = null;
-                        colView.selectedItems?.Clear();
-                    }
-
-                    colView.itemsSource = (IEnumerable)newValue;
-
-                    if (newValue == null)
-                    {
-                        colView.InternalItemSource?.Dispose();
-                        colView.InternalItemSource = null;
-                        colView.itemsLayouter?.Clear();
-                        colView.ClearCache();
-                        return;
-                    }
-                    if (newValue is INotifyCollectionChanged newNotifyCollectionChanged)
-                    {
-                        newNotifyCollectionChanged.CollectionChanged += colView.CollectionChanged;
-                    }
-
-                    colView.InternalItemSource?.Dispose();
-                    colView.InternalItemSource = ItemsSourceFactory.Create(colView);
-
-                    if (colView.itemsLayouter == null) return;
-
-                    colView.needInitalizeLayouter = true;
-                    colView.Init();
-                },
-                defaultValueCreator: (bindable) =>
-                {
-                    var colView = (CollectionView)bindable;
-                    return colView.itemsSource;
-                });
-
 
         private static readonly IList<object> selectEmpty = new List<object>(0);
         private DataTemplate itemTemplate = null;
@@ -167,8 +116,6 @@ namespace Tizen.NUI.Components
         private ItemSelectionMode selectionMode = ItemSelectionMode.None;
         private RecyclerViewItem header;
         private RecyclerViewItem footer;
-        private View focusedView;
-        private int prevFocusedDataIndex = 0;
         private List<RecyclerViewItem> recycleGroupHeaderCache { get; } = new List<RecyclerViewItem>();
         private List<RecyclerViewItem> recycleGroupFooterCache { get; } = new List<RecyclerViewItem>();
         private bool delayedScrollTo;
@@ -255,8 +202,53 @@ namespace Tizen.NUI.Components
         /// <since_tizen> 9 </since_tizen>
         public override IEnumerable ItemsSource
         {
-            get => (IEnumerable)GetValue(ItemsSourceProperty);
-            set => SetValue(ItemsSourceProperty, value);
+            get => (IEnumerable)GetValue(RecyclerView.ItemsSourceProperty);
+            set => SetValue(RecyclerView.ItemsSourceProperty, value);
+        }
+
+        internal override IEnumerable InternalItemsSource
+        {
+            get
+            {
+                return itemsSource;
+            }
+            set
+            {
+                if (itemsSource != null)
+                {
+                    // Clearing old data!
+                    if (itemsSource is INotifyCollectionChanged prevNotifyCollectionChanged)
+                    {
+                        prevNotifyCollectionChanged.CollectionChanged -= CollectionChanged;
+                    }
+                    if (selectedItem != null) selectedItem = null;
+                    selectedItems?.Clear();
+                }
+
+                itemsSource = (IEnumerable)value;
+
+                if (itemsSource == null)
+                {
+                    InternalItemSource?.Dispose();
+                    InternalItemSource = null;
+                    itemsLayouter?.Clear();
+                    ClearCache();
+                    return;
+                }
+                if (itemsSource is INotifyCollectionChanged newNotifyCollectionChanged)
+                {
+                    newNotifyCollectionChanged.CollectionChanged += CollectionChanged;
+                }
+
+                InternalItemSource?.Dispose();
+                InternalItemSource = ItemsSourceFactory.Create(this);
+
+                if (itemsLayouter == null) return;
+
+                needInitalizeLayouter = true;
+                Init();
+
+            }
         }
 
         /// <summary>
@@ -278,7 +270,7 @@ namespace Tizen.NUI.Components
                 NotifyPropertyChanged();
             }
         }
-        private DataTemplate InternalItemTemplate
+        internal override DataTemplate InternalItemTemplate
         {
             get
             {
@@ -317,7 +309,11 @@ namespace Tizen.NUI.Components
                 NotifyPropertyChanged();
             }
         }
-        private ItemsLayouter InternalItemsLayouter
+
+
+        /// <inheritdoc/>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected override ItemsLayouter InternalItemsLayouter
         {
             get
             {
@@ -852,7 +848,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.List);
+            AccessibilityRole = Role.List;
         }
 
         /// <summary>
index 25d15f4..4ff3d73 100755 (executable)
@@ -6,23 +6,6 @@ namespace Tizen.NUI.Components
 {
     public partial class CollectionView
     {
-        /// <summary>
-        /// ItemTemplateProperty
-        /// </summary>
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly new BindableProperty ItemTemplateProperty = BindableProperty.Create(nameof(ItemTemplate), typeof(DataTemplate), typeof(CollectionView), null, propertyChanged: (bindable, oldValue, newValue) =>
-        {
-            var instance = (CollectionView)bindable;
-            if (newValue != null)
-            {
-                instance.InternalItemTemplate = newValue as DataTemplate;
-            }
-        },
-        defaultValueCreator: (bindable) =>
-        {
-            var instance = (CollectionView)bindable;
-            return instance.InternalItemTemplate;
-        });
 
         /// <summary>
         /// ItemsLayouterProperty
index e61e033..1133423 100755 (executable)
@@ -191,7 +191,7 @@ namespace Tizen.NUI.Components
 
             AccessibilityManager.Instance.SetAccessibilityAttribute(this, AccessibilityManager.AccessibilityAttribute.Trait, "ViewItem");
 
-            SetAccessibilityConstructor(Role.ListItem);
+            AccessibilityRole = Role.ListItem;
             AccessibilityHighlightable = true;
         }
 
index 14bb7ce..901675b 100755 (executable)
@@ -30,7 +30,7 @@ namespace Tizen.NUI.Components
         /// Property of boolean Enable flag.
         /// </summary>
         /// <since_tizen> 9 </since_tizen>
-        public static readonly BindableProperty IsEnabledProperty = View.IsEnabledProperty;
+        public new static readonly BindableProperty IsEnabledProperty = View.IsEnabledProperty;
 
         /// <summary>
         /// Property of boolean Selected flag.
index 935e314..c159abe 100755 (executable)
@@ -88,7 +88,7 @@ namespace Tizen.NUI.Components
                 NotifyPropertyChanged();
             }
         }
-        private IEnumerable InternalItemsSource { get; set; }
+        internal virtual IEnumerable InternalItemsSource { get; set; }
 
         /// <summary>
         /// DataTemplate for items.
@@ -106,7 +106,7 @@ namespace Tizen.NUI.Components
                 NotifyPropertyChanged();
             }
         }
-        private DataTemplate InternalItemTemplate { get; set; }
+        internal virtual DataTemplate InternalItemTemplate { get; set; }
 
         /// <summary>
         /// Internal encapsulated items data source.
@@ -123,7 +123,7 @@ namespace Tizen.NUI.Components
         /// Internal Items Layouter.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected ItemsLayouter InternalItemsLayouter { get; set; }
+        protected virtual ItemsLayouter InternalItemsLayouter { get; set; }
 
         /// <summary>
         /// Max size of RecycleCache. Default is 50.
@@ -333,7 +333,7 @@ namespace Tizen.NUI.Components
             if (item == null) return;
             item.Index = -1;
             item.ParentItemsView = null;
-            item.BindingContext = null; 
+            item.BindingContext = null;
             item.IsPressed = false;
             item.IsSelected = false;
             item.IsEnabled = true;
@@ -412,7 +412,7 @@ namespace Tizen.NUI.Components
 
         /// <summary>
         /// On scroll event callback.
-        /// </summary>        
+        /// </summary>
         /// <since_tizen> 9 </since_tizen>
         protected virtual void OnScrolling(object source, ScrollEventArgs args)
         {
index acc1384..e0c5daa 100755 (executable)
@@ -86,12 +86,9 @@ namespace Tizen.NUI.Components
 
         private PanGestureDetector panGestureDetector = null;
         private float currentSlidedOffset;
-        private EventHandler<ValueChangedArgs> valueChangedHandler;
-        private EventHandler<SlidingFinishedArgs> slidingFinishedHandler;
         private EventHandler<SliderValueChangedEventArgs> sliderValueChangedHandler;
         private EventHandler<SliderSlidingStartedEventArgs> sliderSlidingStartedHandler;
         private EventHandler<SliderSlidingFinishedEventArgs> sliderSlidingFinishedHandler;
-        private EventHandler<StateChangedArgs> stateChangedHandler;
 
         bool isFocused = false;
         bool isPressed = false;
@@ -359,13 +356,6 @@ namespace Tizen.NUI.Components
                     valueIndicatorImage.Hide();
                 }
 
-                if (null != slidingFinishedHandler)
-                {
-                    SlidingFinishedArgs args = new SlidingFinishedArgs();
-                    args.CurrentValue = curValue;
-                    slidingFinishedHandler(this, args);
-                }
-
                 if (null != sliderSlidingFinishedHandler)
                 {
                     SliderSlidingFinishedEventArgs args = new SliderSlidingFinishedEventArgs();
index 19a5641..5c88e1b 100755 (executable)
  * limitations under the License.
  *
  */
+
 using System;
-using Tizen.NUI.BaseComponents;
 using System.ComponentModel;
+using Tizen.NUI.Accessibility;
+using Tizen.NUI.BaseComponents;
 using Tizen.NUI.Binding;
 
 namespace Tizen.NUI.Components
@@ -64,7 +66,7 @@ namespace Tizen.NUI.Components
     /// A slider lets users select a value from a continuous or discrete range of values by moving the slider thumb.
     /// </summary>
     /// <since_tizen> 6 </since_tizen>
-    public partial class Slider : Control
+    public partial class Slider : Control, IAtspiValue
     {
         /// <summary>
         /// SpaceBetweenTrackAndIndicatorProperty
@@ -227,40 +229,6 @@ namespace Tizen.NUI.Components
         /// <summary>
         /// The value changed event handler.
         /// </summary>
-        /// <since_tizen> 6 </since_tizen>
-        [Obsolete("Deprecated in API8; Will be removed in API10. Please use ValueChanged event instead.")]
-        public event EventHandler<ValueChangedArgs> ValueChangedEvent
-        {
-            add
-            {
-                valueChangedHandler += value;
-            }
-            remove
-            {
-                valueChangedHandler -= value;
-            }
-        }
-
-        /// <summary>
-        /// The sliding finished event handler.
-        /// </summary>
-        /// <since_tizen> 6 </since_tizen>
-        [Obsolete("Deprecated in API8; Will be removed in API10. Please use SlidingFinished event instead.")]
-        public event EventHandler<SlidingFinishedArgs> SlidingFinishedEvent
-        {
-            add
-            {
-                slidingFinishedHandler += value;
-            }
-            remove
-            {
-                slidingFinishedHandler -= value;
-            }
-        }
-
-        /// <summary>
-        /// The value changed event handler.
-        /// </summary>
         /// <since_tizen> 8 </since_tizen>
         public event EventHandler<SliderValueChangedEventArgs> ValueChanged
         {
@@ -307,23 +275,6 @@ namespace Tizen.NUI.Components
         }
 
         /// <summary>
-        /// The state changed event handler.
-        /// </summary>
-        /// <since_tizen> 6 </since_tizen>
-        [Obsolete("Deprecated in API8; Will be removed in API10. Please use View.ControlStateChangedEvent")]
-        public event EventHandler<StateChangedArgs> StateChangedEvent
-        {
-            add
-            {
-                stateChangedHandler += value;
-            }
-            remove
-            {
-                stateChangedHandler -= value;
-            }
-        }
-
-        /// <summary>
         /// The direction type of slider.
         /// </summary>
         /// <since_tizen> 6 </since_tizen>
@@ -1587,7 +1538,7 @@ namespace Tizen.NUI.Components
         /// Gets minimum value for Accessibility.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override double AccessibilityGetMinimum()
+        double IAtspiValue.AccessibilityGetMinimum()
         {
             return (double)MinValue;
         }
@@ -1596,7 +1547,7 @@ namespace Tizen.NUI.Components
         /// Gets the current value for Accessibility.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override double AccessibilityGetCurrent()
+        double IAtspiValue.AccessibilityGetCurrent()
         {
             return (double)CurrentValue;
         }
@@ -1605,7 +1556,7 @@ namespace Tizen.NUI.Components
         /// Gets maximum value for Accessibility.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override double AccessibilityGetMaximum()
+        double IAtspiValue.AccessibilityGetMaximum()
         {
             return (double)MaxValue;
         }
@@ -1614,7 +1565,7 @@ namespace Tizen.NUI.Components
         /// Sets the current value using Accessibility.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override bool AccessibilitySetCurrent(double value)
+        bool IAtspiValue.AccessibilitySetCurrent(double value)
         {
             var current = (float)value;
 
@@ -1635,7 +1586,7 @@ namespace Tizen.NUI.Components
         /// Gets minimum increment for Accessibility.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected override double AccessibilityGetMinimumIncrement()
+        double IAtspiValue.AccessibilityGetMinimumIncrement()
         {
             // FIXME
             return (MaxValue - MinValue) / 20.0;
@@ -1648,7 +1599,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.Slider, AccessibilityInterface.Value);
+            AccessibilityRole = Role.Slider;
         }
 
         /// <summary>
@@ -1702,8 +1653,11 @@ namespace Tizen.NUI.Components
                 this.TouchEvent -= OnTouchEventForTrack;
 
                 recoverIndicator = null;
-                editModeIndicator.Dispose();
-                editModeIndicator = null;
+                if (editModeIndicator != null)
+                {
+                    editModeIndicator.Dispose();
+                    editModeIndicator = null;
+                }
             }
 
             base.Dispose(type);
@@ -1760,13 +1714,6 @@ namespace Tizen.NUI.Components
                 this.CurrentValue = CalculateDiscreteValue(this.CurrentValue);
             }
 
-            if (valueChangedHandler != null)
-            {
-                ValueChangedArgs args = new ValueChangedArgs();
-                args.CurrentValue = this.CurrentValue;
-                valueChangedHandler(this, args);
-            }
-
             if (sliderValueChangedHandler != null)
             {
                 SliderValueChangedEventArgs args = new SliderValueChangedEventArgs();
@@ -1793,12 +1740,6 @@ namespace Tizen.NUI.Components
                 Vector2 pos = e.Touch.GetLocalPosition(0);
                 CalculateCurrentValueByTouch(pos);
                 UpdateValue();
-                if (null != slidingFinishedHandler)
-                {
-                    SlidingFinishedArgs args = new SlidingFinishedArgs();
-                    args.CurrentValue = curValue;
-                    slidingFinishedHandler(this, args);
-                }
 
                 if (null != sliderSlidingFinishedHandler)
                 {
@@ -1852,13 +1793,6 @@ namespace Tizen.NUI.Components
                     this.CurrentValue = CalculateDiscreteValue(this.CurrentValue);
                 }
 
-                if (null != valueChangedHandler)
-                {
-                    ValueChangedArgs args = new ValueChangedArgs();
-                    args.CurrentValue = this.CurrentValue;
-                    valueChangedHandler(this, args);
-                }
-
                 if (null != sliderValueChangedHandler)
                 {
                     SliderValueChangedEventArgs args = new SliderValueChangedEventArgs();
@@ -1889,46 +1823,18 @@ namespace Tizen.NUI.Components
             if (!IsEnabled) // Disabled
             {
                 ControlState = ControlState.Disabled;
-
-                if (stateChangedHandler != null)
-                {
-                    StateChangedArgs args = new StateChangedArgs();
-                    args.CurrentState = (ControlStates)ControlStates.Disabled;
-                    stateChangedHandler(this, args);
-                }
             }
             else if (!isFocused && !isPressed)
             {
                 ControlState = ControlState.Normal;
-
-                if (stateChangedHandler != null)
-                {
-                    StateChangedArgs args = new StateChangedArgs();
-                    args.CurrentState = (ControlStates)ControlStates.Normal;
-                    stateChangedHandler(this, args);
-                }
             }
             else if (isPressed)
             {
                 ControlState = ControlState.Pressed;
-
-                if (stateChangedHandler != null)
-                {
-                    StateChangedArgs args = new StateChangedArgs();
-                    args.CurrentState = (ControlStates)ControlStates.Pressed;
-                    stateChangedHandler(this, args);
-                }
             }
             else if (!isPressed && isFocused)
             {
                 ControlState = ControlState.Focused;
-
-                if (stateChangedHandler != null)
-                {
-                    StateChangedArgs args = new StateChangedArgs();
-                    args.CurrentState = (ControlStates)ControlStates.Focused;
-                    stateChangedHandler(this, args);
-                }
             }
         }
 
@@ -1993,59 +1899,5 @@ namespace Tizen.NUI.Components
                 }
             }
         }
-
-        /// <summary>
-        /// Value Changed event data.
-        /// </summary>
-        /// <since_tizen> 6 </since_tizen>
-        [Obsolete("Deprecated in API8; Will be removed in API10. Please use SliderValueChangedEventArgs instead.")]
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
-        public class ValueChangedArgs : EventArgs
-        {
-            /// <summary>
-            /// Current value
-            /// </summary>
-            /// <since_tizen> 6 </since_tizen>
-            /// It will be removed in API10
-            [global::System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:Do not declare visible instance fields")]
-            [Obsolete("Deprecated in API8; Will be removed in API10. Please use SliderValueChangedEventArgs.CurrentValue instead.")]
-            public float CurrentValue;
-        }
-
-        /// <summary>
-        /// Value Changed event data.
-        /// </summary>
-        /// <since_tizen> 6 </since_tizen>
-        [Obsolete("Deprecated in API8; Will be removed in API10. Please use SliderSlidingFinishedEventArgs instead.")]
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
-        public class SlidingFinishedArgs : EventArgs
-        {
-            /// <summary>
-            /// Current value
-            /// </summary>
-            /// <since_tizen> 6 </since_tizen>
-            /// It will be removed in API10
-            [global::System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:Do not declare visible instance fields")]
-            [Obsolete("Deprecated in API8; Will be removed in API10. Please use SliderSlidingFinishedEventArgs.CurrentValue instead.")]
-            public float CurrentValue;
-        }
-
-        /// <summary>
-        /// State Changed event data.
-        /// </summary>
-        /// <since_tizen> 6 </since_tizen>
-        [Obsolete("Deprecated in API8; Will be removed in API10. Please use View.ControlStateChangedEventArgs")]
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
-        public class StateChangedArgs : EventArgs
-        {
-            /// <summary>
-            /// Current state
-            /// </summary>
-            /// <since_tizen> 6 </since_tizen>
-            /// It will be removed in API10
-            [global::System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:Do not declare visible instance fields")]
-            [Obsolete("Deprecated in API8; Will be removed in API10")]
-            public ControlStates CurrentState;
-        }
     }
 }
index 75df8ec..1143a22 100755 (executable)
@@ -66,7 +66,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.ToggleButton);
+            AccessibilityRole = Role.ToggleButton;
 
             IsSelectable = true;
 #if PROFILE_MOBILE
index b4ab380..c6a1ced 100755 (executable)
@@ -99,7 +99,7 @@ namespace Tizen.NUI.Components
         {
             base.OnInitialize();
 
-            SetAccessibilityConstructor(Role.PageTabList);
+            AccessibilityRole = Role.PageTabList;
         }
 
         /// <summary>
index f1a1b40..9ffd875 100755 (executable)
@@ -70,7 +70,7 @@ namespace Tizen.NUI.Components
         {
             base.OnInitialize();
 
-            SetAccessibilityConstructor(Role.PageTab);
+            AccessibilityRole = Role.PageTab;
         }
 
         /// <inheritdoc/>
index 5c418de..72dd4c1 100755 (executable)
@@ -59,7 +59,7 @@ namespace Tizen.NUI.Components
         {
             base.OnInitialize();
 
-            SetAccessibilityConstructor(Role.PageTabList);
+            AccessibilityRole = Role.PageTabList;
         }
 
         /// <summary>
index 6cddfec..ee89c19 100755 (executable)
@@ -105,7 +105,7 @@ namespace Tizen.NUI.Components
         {
             base.OnInitialize();
 
-            SetAccessibilityConstructor(Role.PageTabList);
+            AccessibilityRole = Role.PageTabList;
         }
 
         private void InitTabBar()
index a71e031..49c2c59 100755 (executable)
@@ -268,7 +268,7 @@ namespace Tizen.NUI.Components
         public override void OnInitialize()
         {
             base.OnInitialize();
-            SetAccessibilityConstructor(Role.DateEditor);
+            AccessibilityRole = Role.DateEditor;
 
             hourPicker = new Picker()
             {
@@ -338,7 +338,8 @@ namespace Tizen.NUI.Components
         }
 
         /// <summary>
-        /// ToDo : only key navigation is enabled, but value editing is not yet added. for example, after enter key and up/down key the value need be changed.
+        /// ToDo : only key navigation is enabled, and value editing is added as an very simple operation. by toggling enter key, it switches edit mode. 
+        /// ToDo : this should be fixed and changed properly by owner. (And UX SPEC should be referenced also)
         /// </summary>
         /// <param name="currentFocusedView"></param>
         /// <param name="direction"></param>
@@ -353,10 +354,7 @@ namespace Tizen.NUI.Components
                 {
                     return minutePicker;
                 }
-                else if (direction == View.FocusDirection.Left)
-                {
-                    return null;
-                }
+
             }
             else if (currentFocusedView == minutePicker)
             {
@@ -371,11 +369,7 @@ namespace Tizen.NUI.Components
             }
             else if (currentFocusedView == ampmPicker)
             {
-                if (direction == View.FocusDirection.Right)
-                {
-                    return null;
-                }
-                else if (direction == View.FocusDirection.Left)
+                if (direction == View.FocusDirection.Left)
                 {
                     return minutePicker;
                 }
@@ -383,7 +377,6 @@ namespace Tizen.NUI.Components
             return null;
         }
 
-
         [SuppressMessage("Microsoft.Reliability",
                          "CA2000:DisposeObjectsBeforeLosingScope",
                          Justification = "The CellPadding will be dispose when the time picker disposed")]
index 7f20990..88f4246 100755 (executable)
@@ -414,63 +414,66 @@ namespace Tizen.NUI.Components
             // ContentPage base style
             theme.AddStyleWithoutClone("Tizen.NUI.Components.ContentPage", new ViewStyle()
             {
-                BackgroundColor = new Color("#EEEFF1"),
+                BackgroundColor = new Color("#FAFAFA"),
+                CornerRadius = new Vector4(24.0f, 24.0f, 24.0f ,24.0f),
+                CornerRadiusPolicy = VisualTransformPolicyType.Absolute,
+                BoxShadow = new Shadow(8.0f, new Color(0.0f, 0.0f, 0.0f, 0.16f), new Vector2(0.0f, 2.0f)),
             });
 
             // AppBar base style
             theme.AddStyleWithoutClone("Tizen.NUI.Components.AppBar", new AppBarStyle()
             {
-                Size = new Size(-1, 120),
-                BackgroundColor = new Color("#EEEFF1"),
+                Size = new Size(-1, 64),
+                BackgroundColor = Color.Transparent,
                 BackButton = new ButtonStyle()
                 {
                     Size = new Size(48, 48),
                     CornerRadius = 0,
-                    BackgroundColor = new Color(0, 0, 0, 0),
+                    BackgroundColor = Color.Transparent,
                     Icon = new ImageViewStyle()
                     {
                         Size = new Size(48, 48),
                         ResourceUrl = FrameworkInformation.ResourcePath + "nui_component_default_back_button.png",
                         Color = new Selector<Color>()
                         {
-                            Normal = new Color("#0A0E4A"),
-                            Focused = new Color("#00338B"),
-                            Pressed = new Color("#1B69CA"),
-                            Disabled = new Color("#C3CAD2"),
+                            Normal = new Color("#17234D"),
+                            Focused = new Color("#17234D"),
+                            Pressed = new Color("#FF6200"),
+                            Disabled = new Color("#CACACA"),
                         },
                     },
                     ThemeChangeSensitive = false
                 },
                 TitleTextLabel = new TextLabelStyle()
                 {
-                    PixelSize = 40,
+                    PixelSize = 24,
                     VerticalAlignment = VerticalAlignment.Center,
                     TextColor = new Selector<Color>()
                     {
-                        Normal = new Color("#000C2B"),
+                        Normal = new Color("#17234D"),
                     },
                     ThemeChangeSensitive = false
                 },
                 ActionView = new ViewStyle()
                 {
-                    Size = new Size(48, 120),
+                    Size = new Size(48, 64),
                     CornerRadius = 0,
-                    BackgroundColor = new Color(0, 0, 0, 0),
+                    BackgroundColor = Color.Transparent,
                 },
                 ActionButton = new ButtonStyle()
                 {
-                    Size = new Size(-2, 120),
+                    Size = new Size(-2, 64),
                     CornerRadius = 0,
-                    BackgroundColor = new Color(0, 0, 0, 0),
+                    BackgroundColor = Color.Transparent,
                     Text = new TextLabelStyle()
                     {
-                        PixelSize = 26,
+                        PixelSize = 24,
                         TextColor = new Selector<Color>()
                         {
-                            Normal = new Color("#0A0E4A"),
-                            Focused = new Color("#00338B"),
-                            Pressed = new Color("#1B69CA"),
-                            Disabled = new Color("#C3CAD2"),
+                            Normal = new Color("#FF6200"),
+                            Focused = new Color("#FF6200"),
+                            Pressed = new Color("#D95300"),
+                            Disabled = new Color("#CACACA"),
                         },
                     },
                     Icon = new ImageViewStyle()
@@ -478,18 +481,18 @@ namespace Tizen.NUI.Components
                         Size = new Size(48, 48),
                         Color = new Selector<Color>()
                         {
-                            Normal = new Color("#0A0E4A"),
-                            Focused = new Color("#00338B"),
-                            Pressed = new Color("#1B69CA"),
-                            Disabled = new Color("#C3CAD2"),
+                            Normal = new Color("#17234D"),
+                            Focused = new Color("#17234D"),
+                            Pressed = new Color("#FF6200"),
+                            Disabled = new Color("#CACACA"),
                         },
                     },
                     ThemeChangeSensitive = false,
                 },
-                Padding = new Extents(64, 64, 0, 0),
-                NavigationPadding = new Extents(0, 24, 0, 0),
-                ActionPadding = new Extents(40, 0, 0, 0),
-                ActionCellPadding = new Size2D(40, 0),
+                Padding = new Extents(16, 16, 0, 0),
+                NavigationPadding = new Extents(0, 8, 0, 0),
+                ActionPadding = new Extents(16, 0, 0, 0),
+                ActionCellPadding = new Size2D(16, 0),
             });
 
             // Picker base style
@@ -724,6 +727,13 @@ namespace Tizen.NUI.Components
                 },
             });
 
+            // AlertDialog base style
+            theme.AddStyleWithoutClone("Tizen.NUI.Components.DialogPage.Scrim", new ViewStyle()
+            {
+                BackgroundColor = new Color("#090E21"),
+                Opacity = 0.5f,
+            });
+
             return theme;
         }
     }
index 19a101a..97b226c 100755 (executable)
Binary files a/src/Tizen.NUI.Components/res/nui_component_default_back_button.png and b/src/Tizen.NUI.Components/res/nui_component_default_back_button.png differ
index 84c5628..3888d6a 100755 (executable)
@@ -20,6 +20,7 @@ using Tizen.NUI.Binding;
 using Tizen.NUI.EXaml;
 using Mono.Cecil;
 using Tizen.NUI.EXaml.Build.Tasks;
+using Tizen.NUI.Xaml.Build.Tasks;
 
 namespace Tizen.NUI.Xaml
 {
@@ -27,6 +28,7 @@ namespace Tizen.NUI.Xaml
     [AcceptEmptyServiceProvider]
     internal sealed class BindingExtension : IMarkupExtension<BindingBase>
     {
+        public XmlType XmlType { get; set; }
         public string Path { get; set; } = Tizen.NUI.Binding.Binding.SelfPath;
         public BindingMode Mode { get; set; } = BindingMode.Default;
 
@@ -52,8 +54,8 @@ namespace Tizen.NUI.Xaml
         {
             if (TypedBinding == null)
             {
-                var newTypeRef = module.ImportReference(typeof(Tizen.NUI.Binding.Binding));
-                return new EXamlCreateObject(context, null, newTypeRef, new object[] { Path, ModeInEXaml, Converter, ConverterParameter, StringFormat, Source });
+                var typeRef = XmlType.GetTypeReference(XmlTypeExtensions.ModeOfGetType.OnlyGetType, module, null);
+                return new EXamlCreateObject(context, null, typeRef, new object[] { Path, ModeInEXaml, Converter, ConverterParameter, StringFormat, Source });
             }
             else
             {
index 2b3bdad..0cdc353 100755 (executable)
@@ -51,7 +51,7 @@ namespace Tizen.NUI.EXaml
 
             string ret = String.Format("({0} ({1} {2}))\n",
                          eXamlContext.GetValueString((int)EXamlOperationType.CreateArrayObject),
-                         eXamlContext.GetValueString(eXamlContext.GetTypeIndex(Type)),
+                         eXamlContext.GetValueString(eXamlContext.GetTypeIndex(Type.Resolve())),
                          itemsString);
 
             return ret;
index b872363..dfd8595 100755 (executable)
@@ -24,10 +24,10 @@ namespace Tizen.NUI.EXaml
 {
     internal class EXamlCreateDPObject : EXamlCreateObject
     {
-        public EXamlCreateDPObject(EXamlContext context, object value, TypeReference type, string prefix) : base(context, null, type)
+        public EXamlCreateDPObject(EXamlContext context, object value, TypeReference type, string subfix) : base(context, null, type)
         {
             this.value = value;
-            this.prefix = prefix;
+            this.subfix = subfix;
         }
 
         internal override string Write()
@@ -39,14 +39,14 @@ namespace Tizen.NUI.EXaml
 
             string ret = String.Format("({0} ({1} {2}))\n",
                          eXamlContext.GetValueString((int)EXamlOperationType.CreateDPObject),
-                         eXamlContext.GetValueString(value.ToString() + prefix),
+                         eXamlContext.GetValueString(value.ToString() + subfix),
                          eXamlContext.GetValueString(eXamlContext.GetTypeIndex(Type)));
 
             return ret;
         }
 
         private object value;
-        private string prefix;
+        private string subfix;
     }
 }
  
index 682a0d8..ec4983c 100755 (executable)
@@ -166,11 +166,6 @@ namespace Tizen.NUI.EXaml
         public EXamlCreateObject(EXamlContext context, object instance, TypeReference type, object[] @params = null)
             : base(context)
         {
-            if (null == type?.Resolve())
-            {
-                throw new Exception("Type can't be null when create object");
-            }
-
             Instance = instance;
             Type = type;
 
diff --git a/src/Tizen.NUI.XamlBuild/src/public/EXamlBuild/EXaml/EXamlCreateObject/EXamlCreateResourceDictionary.cs b/src/Tizen.NUI.XamlBuild/src/public/EXamlBuild/EXaml/EXamlCreateObject/EXamlCreateResourceDictionary.cs
new file mode 100755 (executable)
index 0000000..60ec6fb
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Mono.Cecil;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Tizen.NUI.EXaml.Build.Tasks;
+
+namespace Tizen.NUI.EXaml
+{
+    internal class EXamlCreateResourceDictionary : EXamlCreateObject
+    {
+        public EXamlCreateResourceDictionary(EXamlContext context, TypeReference type, string content = null) : base(context, null, type)
+        {
+            if (null != content)
+            {
+                Content = content;
+            }
+        }
+
+        private string content;
+        public string Content
+        {
+            get
+            {
+                return content;
+            }
+            set
+            {
+                content = value;
+                indexRangeOfContent = eXamlContext.GetLongStringIndexs(content);
+            }
+        }
+
+        private (int, int) indexRangeOfContent;
+
+        internal override string Write()
+        {
+            if (false == IsValid)
+            {
+                return "";
+            }
+
+            string ret = String.Format("({0} ({1} {2} {3}))\n",
+                         eXamlContext.GetValueString((int)EXamlOperationType.CreateResourceDictionary),
+                         eXamlContext.GetValueString(eXamlContext.GetTypeIndex(Type)),
+                         eXamlContext.GetValueString(indexRangeOfContent.Item1),
+                         eXamlContext.GetValueString(indexRangeOfContent.Item2));
+
+            return ret;
+        }
+    }
+}
index 2c4de0c..a2c8059 100755 (executable)
@@ -26,7 +26,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
 {
     internal class EXamlContext
     {
-        public EXamlContext(TypeDefinition type, ModuleDefinition module, FieldDefinition parentContextValues = null)
+        public EXamlContext(TypeDefinition type, ModuleDefinition module, string embeddedResourceNameSpace, FieldDefinition parentContextValues = null)
         {
             Values = new Dictionary<INode, object>();
             Variables = new Dictionary<IElementNode, VariableDefinition>();
@@ -35,6 +35,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
             ParentContextValues = parentContextValues;
             Type = type;
             Module = module;
+            EmbeddedResourceNameSpace = embeddedResourceNameSpace;
         }
 
         public Dictionary<INode, object> Values { get; private set; }
@@ -55,6 +56,8 @@ namespace Tizen.NUI.EXaml.Build.Tasks
 
         public ModuleDefinition Module { get; private set; }
 
+        public string EmbeddedResourceNameSpace { get; }
+
         public List<EXamlOperation> eXamlOperations = new List<EXamlOperation>();
 
         private string GetAssemblyName(AssemblyDefinition assembly)
@@ -374,9 +377,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
 
             if (0 < longStrings.Length)
             {
-                ret += String.Format("({0} ({1}))\n",
-                                GetValueString((int)EXamlOperationType.GetLongString),
-                                GetValueString(longStrings));
+                ret += String.Format("/{0}\n", longStrings);
             }
 
             return ret;
@@ -622,7 +623,11 @@ namespace Tizen.NUI.EXaml.Build.Tasks
             //Fang: How to deal the Enum
             string ret = "";
 
-            if (null == valueObject)
+            if (System.Type.Missing == valueObject)
+            {
+                ret += "yy ";
+            }
+            else if (null == valueObject)
             {
                 ret += "zz ";
             }
index 9d76d01..88c5b72 100755 (executable)
@@ -27,6 +27,7 @@ using static Mono.Cecil.Cil.Instruction;
 using static Mono.Cecil.Cil.OpCodes;
 using Tizen.NUI.Xaml.Build.Tasks;
 using ArrayExtension = Tizen.NUI.Xaml.Build.Tasks.ArrayExtension;
+using Tizen.NUI.Binding;
 
 namespace Tizen.NUI.EXaml.Build.Tasks
 {
@@ -67,7 +68,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
 
         public void Visit(ElementNode node, INode parentNode)
         {
-            var typeref = Module.ImportReference(node.XmlType.GetTypeReference(Module, node));
+            var typeref = Module.ImportReference(node.XmlType.GetTypeReference(XmlTypeExtensions.ModeOfGetType.Both, Module, node));
 
             if (IsXaml2009LanguagePrimitive(node))
             {
@@ -128,7 +129,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
                     VariableDefinition vardef = new VariableDefinition(typeref);
                     Context.Variables[node] = vardef;
 
-                    var argumentList = GetCtorXArguments(node, factoryCtorInfo.Parameters.Count);
+                    var argumentList = GetCtorXArguments(node, factoryCtorInfo.Parameters.Count, true);
                     Context.Values[node] = new EXamlCreateObject(Context, null, typedef, argumentList.ToArray());
                     return;
                 }
@@ -143,7 +144,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
 
                 if (factoryMethodInfo == null)
                 {
-                    var typeExtensionRef = Module.ImportReference(node.XmlType.GetTypeExtensionReference(Module, node));
+                    var typeExtensionRef = Module.ImportReference(node.XmlType.GetTypeReference(XmlTypeExtensions.ModeOfGetType.OnlyGetTypeExtension, Module, node));
                     typeExtensionRef = typeExtensionRef?.ResolveCached();
 
                     if (null != typeExtensionRef)
@@ -164,7 +165,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
                 VariableDefinition vardef = new VariableDefinition(typeref);
                 Context.Variables[node] = vardef;
 
-                var argumentList = GetCtorXArguments(node, factoryMethodInfo.Parameters.Count);
+                var argumentList = GetCtorXArguments(node, factoryMethodInfo.Parameters.Count, false);
                 Context.Values[node] = new EXamlCreateObject(Context, null, typedef, factoryMethodInfo, argumentList?.ToArray());
                 return;
             }
@@ -286,12 +287,11 @@ namespace Tizen.NUI.EXaml.Build.Tasks
                     if (typeref.FullName == "Tizen.NUI.Xaml.ArrayExtension")
                     {
                         typeref = Module.ImportReference(typeof(ArrayExtension));
-                        typedef = typeref.ResolveCached();
                     }
 
-                    var accordingType = this.GetType().Assembly.GetType(typedef.FullName);
+                    var accordingType = this.GetType().Assembly.GetType(typeref.FullName);
 
-                    if (null != accordingType && accordingType != typeof(Binding.Setter))
+                    if (null != accordingType && accordingType != typeof(Binding.Setter) && accordingType != typeof(ResourceDictionary))
                     {
                         Context.Values[node] = new EXamlCreateObject(Context, Activator.CreateInstance(accordingType), typeref);
                     }
@@ -364,23 +364,14 @@ namespace Tizen.NUI.EXaml.Build.Tasks
                 else if (ctorInfo != null && node.Properties.ContainsKey(XmlName.xArguments) &&
                          !node.Properties.ContainsKey(XmlName.xFactoryMethod) && ctorInfo.MatchXArguments(node, typeref, Module, Context))
                 {
-                    //IL_0008:  ldloca.s 1
-                    //IL_000a:  ldc.i4.1 
-                    //IL_000b:  call instance void valuetype Test/Foo::'.ctor'(bool)
-
-                    //Fang
-                    //var ctor = Module.ImportReference(ctorinforef);
-                    //Context.IL.Emit(OpCodes.Ldloca, vardef);
-                    //Context.IL.Append(PushCtorXArguments(factoryCtorInfo, node));
-                    //Context.IL.Emit(OpCodes.Call, ctor);
+                    var argumentList = GetCtorXArguments(node, factoryCtorInfo.Parameters.Count, true);
+                    Context.Values[node] = new EXamlCreateObject(Context, null, typedef, argumentList.ToArray());
+                    return;
                 }
                 else
                 {
-                    //IL_0000:  ldloca.s 0
-                    //IL_0002:  initobj Test/Foo
-                    //Fang
-                    //Context.IL.Emit(OpCodes.Ldloca, vardef);
-                    //Context.IL.Emit(OpCodes.Initobj, Module.ImportReference(typedef));
+                    Context.Values[node] = new EXamlCreateObject(Context, null, typedef, null);
+                    return;
                 }
 
                 if (typeref.FullName == "Tizen.NUI.Xaml.ArrayExtension")
@@ -454,7 +445,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
             return true;
         }
 
-        List<object> GetCtorXArguments(ElementNode enode, int paramsCount)
+        List<object> GetCtorXArguments(ElementNode enode, int paramsCount, bool isConstructor)
         {
             if (!enode.Properties.ContainsKey(XmlName.xArguments))
             {
@@ -483,9 +474,12 @@ namespace Tizen.NUI.EXaml.Build.Tasks
                 argumentList.Add(Context.Values[arguments[i]]);
             }
 
-            for (int i = arguments.Count; i < paramsCount; i++)
+            if (!isConstructor)
             {
-                argumentList.Add(null);
+                for (int i = arguments.Count; i < paramsCount; i++)
+                {
+                    argumentList.Add(Type.Missing);
+                }
             }
 
             return argumentList;
@@ -496,7 +490,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
             if (node.NamespaceURI == XamlParser.X2009Uri)
             {
                 var n = node.XmlType.Name.Split(':')[1];
-                return n != "Array";
+                return n != "Array" && n != "DateTime";
             }
             if (node.NamespaceURI != "clr-namespace:System;assembly=mscorlib")
                 return false;
@@ -583,7 +577,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
                     break;
                 case "System.Boolean":
                     if (hasValue && bool.TryParse(valueString, out bool outbool))
-                        ret = true;
+                        ret = outbool;
                     else
                         ret = false;
                     break;
@@ -629,7 +623,6 @@ namespace Tizen.NUI.EXaml.Build.Tasks
                 case "System.TimeSpan":
                     if (hasValue && TimeSpan.TryParse(valueString, CultureInfo.InvariantCulture, out TimeSpan outspan))
                     {
-
                         ret = outspan;
                     }
                     else
@@ -675,7 +668,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
 
                     if ("System.Type" == valueType.FullName)
                     {
-                        var typeRef = XmlTypeExtensions.GetTypeReference(valueNode.Value as string, Module, node as BaseNode);
+                        var typeRef = XmlTypeExtensions.GetTypeReference(valueNode.Value as string, Module, node as BaseNode, XmlTypeExtensions.ModeOfGetType.Both);
                         context.Values[node] = new EXamlCreateObject(context, typeRef);
                     }
                     else
index dc153af..b34d925 100755 (executable)
@@ -182,7 +182,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
                 try
                 {
                     type = new XmlType(namespaceuri, name + "Extension", null);
-                    type.GetTypeReference(contextProvider.Context.Module, null);
+                    type.GetTypeReference(XmlTypeExtensions.ModeOfGetType.Both, contextProvider.Context.Module, null);
                 }
                 catch (XamlParseException)
                 {
index 737cb84..ac2ee2f 100755 (executable)
@@ -65,10 +65,15 @@ namespace Tizen.NUI.EXaml.Build.Tasks
         public bool IsResourceDictionary(ElementNode node)
         {
             var parentVar = Context.Values[node] as EXamlCreateObject;
-            return null != parentVar
-                    &&
-                    (parentVar.GetType().FullName == "Tizen.NUI.Binding.ResourceDictionary"
-                    || parentVar.GetType().Resolve().BaseType?.FullName == "Tizen.NUI.Binding.ResourceDictionary");
+
+            if (null != parentVar && !parentVar.GetType().IsLocalType())
+            {
+                return parentVar.GetType().FullName == "Tizen.NUI.Binding.ResourceDictionary"
+                       ||
+                       parentVar.GetType().Resolve().BaseType?.FullName == "Tizen.NUI.Binding.ResourceDictionary";
+            }
+
+            return false;
         }
 
         ModuleDefinition Module { get; }
@@ -286,15 +291,22 @@ namespace Tizen.NUI.EXaml.Build.Tasks
 
         internal static string GetContentProperty(TypeReference typeRef)
         {
-            var typeDef = typeRef.ResolveCached();
-            var attributes = typeDef.CustomAttributes;
-            var attr =
-                attributes.FirstOrDefault(cad => ContentPropertyAttribute.ContentPropertyTypes.Contains(cad.AttributeType.FullName));
-            if (attr != null)
-                return attr.ConstructorArguments[0].Value as string;
-            if (typeDef.BaseType == null)
-                return null;
-            return GetContentProperty(typeDef.BaseType);
+            if (typeRef.IsLocalType())
+            {
+                return typeRef.GetContentPropertyNameOfLocalType();
+            }
+            else
+            {
+                var typeDef = typeRef.ResolveCached();
+                var attributes = typeDef.CustomAttributes;
+                var attr =
+                    attributes.FirstOrDefault(cad => ContentPropertyAttribute.ContentPropertyTypes.Contains(cad.AttributeType.FullName));
+                if (attr != null)
+                    return attr.ConstructorArguments[0].Value as string;
+                if (typeDef.BaseType == null)
+                    return null;
+                return GetContentProperty(typeDef.BaseType);
+            }
         }
 
         public static object ProvideValue(EXamlCreateObject instance, EXamlContext context,
@@ -315,9 +327,10 @@ namespace Tizen.NUI.EXaml.Build.Tasks
             else if (instance.GetType().ImplementsGenericInterface("Tizen.NUI.Xaml.IMarkupExtension`1", out markupExtension, out genericArguments))
             {
                 var nodeValue = context.Values[node] as EXamlCreateObject;
-                if (nodeValue?.Instance is BindingExtension)
+                if (nodeValue?.Instance is BindingExtension bindingExtension)
                 {
-                    var newValue = (nodeValue.Instance as BindingExtension).ProvideValue(context, module);
+                    bindingExtension.XmlType = new XmlType(node.XmlType.NamespaceUri, "Binding", node.XmlType.TypeArguments);
+                    var newValue = bindingExtension.ProvideValue(context, module);
                     return newValue;
                 }
                 else if (nodeValue?.Instance is DynamicResourceExtension)
@@ -436,12 +449,42 @@ namespace Tizen.NUI.EXaml.Build.Tasks
             return properties;
         }
 
+        private static bool SetPropertyValueToLocalType(EXamlCreateObject parent, XmlName propertyName, INode valueNode, EXamlContext context)
+        {
+            if (parent.Instance is Tizen.NUI.Xaml.Build.Tasks.ArrayExtension arrayExtension)
+            {
+                if ("Type" == propertyName.LocalName)
+                {
+                    var value = context.Values[valueNode] as EXamlCreateObject;
+                    if (null != value)
+                    {
+                        arrayExtension.Type = value.Instance as TypeReference;
+                        parent.IsValid = false;
+                    }
+                }
+                else if ("Items" == propertyName.LocalName)
+                {
+                    arrayExtension.Items = context.Values[valueNode];
+                    parent.IsValid = false;
+                }
+
+                return true;
+            }
+
+            return false;
+        }
+
         public static void SetPropertyValue(EXamlCreateObject parent, XmlName propertyName, INode valueNode, EXamlContext context, IXmlLineInfo iXmlLineInfo)
         {
             var module = context.Module;
             var localName = propertyName.LocalName;
             bool attached;
 
+            if (SetPropertyValueToLocalType(parent, propertyName, valueNode, context))
+            {
+                return;
+            }
+
             var bpRef = GetBindablePropertyReference(parent, propertyName.NamespaceURI, ref localName, out attached, context, iXmlLineInfo);
 
             //If the target is an event, connect
@@ -667,7 +710,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
             if (implicitOperator != null)
                 return true;
 
-            return valueInstance.GetType().InheritsFromOrImplements(XamlTask.bindingNameSpace + ".BindingBase");
+            return valueInstance.GetType().InheritsFromOrImplements(module.ImportReference((XamlCTask.bindingAssemblyName, XamlCTask.bindingNameSpace, "BindingBase")));
         }
 
         static void SetBinding(EXamlCreateObject parent, MemberReference bpRef, IElementNode elementNode, IXmlLineInfo iXmlLineInfo, EXamlContext context)
@@ -804,7 +847,20 @@ namespace Tizen.NUI.EXaml.Build.Tasks
             var realValue = context.Values[elementNode] as EXamlCreateObject;
             if (null != realValue)
             {
-                if (realValue.GetType().InheritsFromOrImplements(propertyType))
+                var valueTypeRef = realValue.GetType();
+                if (valueTypeRef.InheritsFromOrImplements(propertyType))
+                {
+                    return true;
+                }
+
+                var realTypeFromMarkupExtension = valueTypeRef.GetRealTypeIfIsMarkupExtension();
+
+                if (true == realTypeFromMarkupExtension?.InheritsFromOrImplements(propertyType))
+                {
+                    return true;
+                }
+
+                if ("System.Type" == valueTypeRef.FullName && "Mono.Cecil.TypeReference" == propertyType.FullName)
                 {
                     return true;
                 }
@@ -868,6 +924,10 @@ namespace Tizen.NUI.EXaml.Build.Tasks
                     var fieldRef = bindableProperty.DeclaringType.ResolveCached().Fields.FirstOrDefault(a => a.FullName == bindableProperty.FullName);
                     context.Values[node] = new EXamlCreateObject(context, bindableProperty.DeclaringType, fieldRef, null);
                 }
+                else if ("Tizen.NUI.Binding.ResourceDictionary" == propertyType.FullName)
+                {
+                    context.Values[node] = GetResourceDictionaryByXaml(parent, node, context, iXmlLineInfo);
+                }
                 else
                 {
                     var converterType = valueNode.GetConverterType(new ICustomAttributeProvider[] { property, propertyType.ResolveCached() });
@@ -959,6 +1019,11 @@ namespace Tizen.NUI.EXaml.Build.Tasks
         static Dictionary<EXamlCreateObject, IList<string>> resourceNamesInUse = new Dictionary<EXamlCreateObject, IList<string>>();
         static bool CanAddToResourceDictionary(EXamlCreateObject parent, TypeReference collectionType, IElementNode node, IXmlLineInfo lineInfo, EXamlContext context)
         {
+            if (collectionType.IsLocalType())
+            {
+                return false;
+            }
+
             if (   collectionType.FullName != "Tizen.NUI.Binding.ResourceDictionary"
                 && collectionType.ResolveCached().BaseType?.FullName != "Tizen.NUI.Binding.ResourceDictionary")
                 return false;
@@ -1079,17 +1144,16 @@ namespace Tizen.NUI.EXaml.Build.Tasks
             {
                 var typename = localname.Substring(0, dotIdx);
                 localname = localname.Substring(dotIdx + 1);
-                elementType = new XmlType(namespaceURI, typename, null).GetTypeReference(context.Module, lineInfo);
+                elementType = new XmlType(namespaceURI, typename, null).GetTypeReference(XmlTypeExtensions.ModeOfGetType.Both, context.Module, lineInfo);
                 return true;
             }
             return false;
         }
 
-        static void SetDataTemplate(ElementNode parentNode, ElementNode rootnode, EXamlContext parentContext,
-            IXmlLineInfo xmlLineInfo)
+        static void SetDataTemplate(ElementNode parentNode, ElementNode rootnode, EXamlContext parentContext, IXmlLineInfo xmlLineInfo)
         {
-            var typeref = parentContext.Module.ImportReference(rootnode.XmlType.GetTypeReference(parentContext.Module, rootnode));
-            var visitorContext = new EXamlContext(typeref.ResolveCached(), typeref.Module);
+            var typeref = parentContext.Module.ImportReference(rootnode.XmlType.GetTypeReference(XmlTypeExtensions.ModeOfGetType.Both, parentContext.Module, rootnode));
+            var visitorContext = new EXamlContext(typeref.ResolveCached(), typeref.Module, parentContext.EmbeddedResourceNameSpace);
 
             rootnode.Accept(new XamlNodeVisitor((node, parent) => node.Parent = parent), null);
             rootnode.Accept(new EXamlExpandMarkupsVisitor(visitorContext), null);
@@ -1102,7 +1166,7 @@ namespace Tizen.NUI.EXaml.Build.Tasks
 
             var eXamlString = visitorContext.GenerateEXamlString();
 
-            var parentTyperef = parentContext.Module.ImportReference(parentNode.XmlType.GetTypeReference(parentContext.Module, parentNode));
+            var parentTyperef = parentContext.Module.ImportReference(parentNode.XmlType.GetTypeReference(XmlTypeExtensions.ModeOfGetType.Both, parentContext.Module, parentNode));
 
             if (parentContext.Values[parentNode] is EXamlCreateObject eXamlObject)
             {
@@ -1111,6 +1175,77 @@ namespace Tizen.NUI.EXaml.Build.Tasks
             }
         }
 
+        static EXamlCreateResourceDictionary GetResourceDictionaryByXaml(EXamlCreateObject parentObject, INode nodeOfXaml, EXamlContext parentContext, IXmlLineInfo xmlLineInfo)
+        {
+            var module = parentContext.Module;
+
+            string xamlName = "";
+
+            if (nodeOfXaml is ValueNode valueNode)
+            {
+                xamlName = valueNode.Value as string;
+            }
+
+            EmbeddedResource matchedResource = null;
+
+            foreach (var resource in module.Resources.OfType<EmbeddedResource>())
+            {
+                if (resource.Name.StartsWith(parentContext.EmbeddedResourceNameSpace) && resource.Name.EndsWith(xamlName))
+                {
+                    matchedResource = resource;
+                    break;
+                }
+            }
+
+            if (null == matchedResource)
+            {
+                foreach (var resource in module.Resources.OfType<EmbeddedResource>())
+                {
+                    if (resource.Name.EndsWith(xamlName))
+                    {
+                        matchedResource = resource;
+                        break;
+                    }
+                }
+            }
+
+            if (null != matchedResource)
+            {
+                string classname;
+
+                if (matchedResource.IsResourceDictionaryXaml(module, out classname))
+                {
+                    int lastIndex = classname.LastIndexOf('.');
+                    var realClassName = classname.Substring(lastIndex + 1);
+                    var typeref = XmlTypeExtensions.GetTypeReference(realClassName, module, nodeOfXaml as BaseNode, XmlTypeExtensions.ModeOfGetType.Both);
+
+                    var visitorContext = new EXamlContext(typeref.ResolveCached(), typeref.Module, parentContext.EmbeddedResourceNameSpace);
+                    var rootnode = XamlTask.ParseXaml(matchedResource.GetResourceStream(), typeref);
+
+                    var rootInstance =  new EXamlCreateObject(visitorContext, null, typeref);
+                    visitorContext.Values[rootnode] = rootInstance;
+
+                    rootnode.Accept(new XamlNodeVisitor((node, parent) => node.Parent = parent), null);
+                    rootnode.Accept(new EXamlExpandMarkupsVisitor(visitorContext), null);
+                    rootnode.Accept(new PruneIgnoredNodesVisitor(), null);
+                    rootnode.Accept(new EXamlCreateObjectVisitor(visitorContext), null);
+                    rootnode.Accept(new EXamlSetNamescopesAndRegisterNamesVisitor(visitorContext), null);
+                    rootnode.Accept(new EXamlSetFieldVisitor(visitorContext), null);
+                    rootnode.Accept(new EXamlSetResourcesVisitor(visitorContext), null);
+                    rootnode.Accept(new EXamlSetPropertiesVisitor(visitorContext, true), null);
+
+                    foreach (var pair in visitorContext.resourceDictionary)
+                    {
+                        parentContext.resourceDictionary.Add(pair.Key, pair.Value);
+                    }
+
+                    return new EXamlCreateResourceDictionary(parentContext, typeref, visitorContext.GenerateEXamlString());
+                }
+            }
+
+            return null;
+        }
+
         bool TrySetRuntimeName(XmlName propertyName, EXamlCreateObject variableDefinition, ValueNode node)
         {
             if (null == variableDefinition)
index 60be873..eaeb567 100755 (executable)
@@ -48,6 +48,7 @@ namespace Tizen.NUI.EXaml
         RegisterXName,
         GetLongString,
         CreateDPObject,
+        CreateResourceDictionary,
         MAX
     }
 }
index fb108d3..ee4ac84 100755 (executable)
@@ -29,6 +29,17 @@ namespace Tizen.NUI.EXaml
             {
                 return typeReference1 == typeReference2;
             }
+            else if (typeReference1.IsArray || typeReference2.IsArray)
+            {
+                if (typeReference1.IsArray != typeReference2.IsArray)
+                {
+                    return false;
+                }
+                else
+                {
+                    return typeReference1.Resolve() == typeReference2.Resolve();
+                }
+            }
             else if (typeReference1.Resolve() != typeReference2.Resolve())
             {
                 return false;
@@ -62,7 +73,6 @@ namespace Tizen.NUI.EXaml
                     return false;
                 }
             }
-
             else
             {
                 return true;
index 772301c..c4cc2c4 100755 (executable)
@@ -78,7 +78,7 @@ namespace Tizen.NUI.Xaml.Core.XamlC
             if (typeName == null || propertyName == null)
                 throw new XamlParseException($"Cannot convert \"{value}\" into {typeof(BindableProperty)}", node);
 
-            var typeRef = XmlTypeExtensions.GetTypeReference(typeName, module, node);
+            var typeRef = XmlTypeExtensions.GetTypeReference(typeName, module, node, XmlTypeExtensions.ModeOfGetType.Both);
             if (typeRef == null)
                 throw new XamlParseException($"Can't resolve {typeName}", node);
             bpRef = GetBindablePropertyFieldReference(typeRef, propertyName, module);
index b7d1981..830db1c 100755 (executable)
@@ -41,7 +41,7 @@ namespace Tizen.NUI.Xaml.Core.XamlC
 
             foreach (var thick in xywh)
             {
-                if (thick.EndsWith("dp") || thick.EndsWith("px"))
+                if (null != NodeILExtensions.GetDPValueSubFix(thick))
                 {
                     return null;
                 }
index 2d496d8..fdbdffd 100755 (executable)
@@ -49,7 +49,7 @@ namespace Tizen.NUI.Xaml.Core.XamlC
 
                 foreach (var thick in thickness)
                 {
-                    if (thick.EndsWith("dp") || thick.EndsWith("px"))
+                    if (null != NodeILExtensions.GetDPValueSubFix(thick))
                     {
                         return null;
                     }
index 715d181..db5c2de 100755 (executable)
@@ -84,7 +84,7 @@ namespace Tizen.NUI.Xaml.Core.XamlC
 
             foreach (var thick in thickness)
             {
-                if (thick.EndsWith("dp") || thick.EndsWith("px"))
+                if (null != NodeILExtensions.GetDPValueSubFix(thick))
                 {
                     return null;
                 }
@@ -150,7 +150,7 @@ namespace Tizen.NUI.Xaml.Core.XamlC
 
                 foreach (var thick in thickness)
                 {
-                    if (thick.EndsWith("dp") || thick.EndsWith("px"))
+                    if (null != NodeILExtensions.GetDPValueSubFix(thick))
                     {
                         return null;
                     }
index 8851b75..baac8ff 100755 (executable)
@@ -26,6 +26,7 @@ using static Mono.Cecil.Cil.OpCodes;
 using Tizen.NUI.Xaml.Build.Tasks;
 using Tizen.NUI.Xaml;
 using Tizen.NUI.Binding;
+using System.Linq;
 
 namespace Tizen.NUI.Xaml.Core.XamlC
 {
@@ -33,55 +34,89 @@ namespace Tizen.NUI.Xaml.Core.XamlC
     {
         public IEnumerable<Instruction> ConvertFromString(string value, ILContext context, BaseNode node)
         {
-            var module = context.Body.Method.Module;
-            var body = context.Body;
-
-            INode rootNode = node;
-            while (!(rootNode is ILRootNode))
-                rootNode = rootNode.Parent;
-
-            var rdNode = node.Parent as IElementNode;
-
-            var rootTargetPath = XamlTask.GetPathForType(module, ((ILRootNode)rootNode).TypeReference);
-            var uri = new Uri(value, UriKind.Relative);
-
-            var resourcePath = ResourceDictionary.RDSourceTypeConverter.GetResourcePath(uri, rootTargetPath);
-
-            //fail early
-            var resourceId = XamlTask.GetResourceIdForPath(module, resourcePath);
-            if (resourceId == null)
-                throw new XamlParseException($"Resource '{value}' not found.", node);
-
-
-            //abuse the converter, produce some side effect, but leave the stack untouched
-            //public void SetAndLoadSource(Uri value, string resourceID, Assembly assembly, System.Xml.IXmlLineInfo lineInfo)
-            yield return Create(Ldloc, context.Variables[rdNode]); //the resourcedictionary
-            foreach (var instruction in (new UriTypeConverter()).ConvertFromString(value, context, node))
-                yield return instruction; //the Uri
-
-            //keep the Uri for later
-            yield return Create(Dup);
-            var uriVarDef = new VariableDefinition(module.ImportReference(("System", "System", "Uri")));
-            body.Variables.Add(uriVarDef);
-            yield return Create(Stloc, uriVarDef);
-            yield return Create(Ldstr, resourcePath); //resourcePath
-            yield return Create(Ldtoken, module.ImportReference(((ILRootNode)rootNode).TypeReference));
-            yield return Create(Call, module.ImportMethodReference(("mscorlib", "System", "Type"), methodName: "GetTypeFromHandle", parameterTypes: new[] { ("mscorlib", "System", "RuntimeTypeHandle") }, isStatic: true));
-            yield return Create(Call, module.ImportMethodReference(("mscorlib", "System.Reflection", "IntrospectionExtensions"), methodName: "GetTypeInfo", parameterTypes: new[] { ("mscorlib", "System", "Type") }, isStatic: true));
-            yield return Create(Callvirt, module.ImportPropertyGetterReference(("mscorlib", "System.Reflection", "TypeInfo"), propertyName: "Assembly", flatten: true));
-
-            foreach (var instruction in node.PushXmlLineInfo(context))
-                yield return instruction; //lineinfo
-            yield return Create(Callvirt, module.ImportMethodReference((XamlTask.bindingAssemblyName, XamlTask.bindingNameSpace, "ResourceDictionary"),
-                                                                       methodName: "SetAndLoadSource",
-                                                                       parameterTypes: new[] { ("System", "System", "Uri"), ("mscorlib", "System", "String"), ("mscorlib", "System.Reflection", "Assembly"), ("System.Xml.ReaderWriter", "System.Xml", "IXmlLineInfo") }));
-            //ldloc the stored uri as return value
-            yield return Create(Ldloc, uriVarDef);
+            var module = context.Module;
+
+            EmbeddedResource matchedResource = null;
+
+            foreach (var resource in module.Resources.OfType<EmbeddedResource>())
+            {
+                if (resource.Name.StartsWith(context.EmbeddedResourceNameSpace) && resource.Name.EndsWith(value))
+                {
+                    matchedResource = resource;
+                    break;
+                }
+            }
+
+            if (null == matchedResource)
+            {
+                foreach (var resource in module.Resources.OfType<EmbeddedResource>())
+                {
+                    if (resource.Name.EndsWith(value))
+                    {
+                        matchedResource = resource;
+                        break;
+                    }
+                }
+            }
+
+            if (null != matchedResource)
+            {
+                string classname;
+                if (matchedResource.IsResourceDictionaryXaml(module, out classname))
+                {
+                    int lastIndex = classname.LastIndexOf('.');
+                    var realClassName = classname.Substring(lastIndex + 1);
+                    var typeref = XmlTypeExtensions.GetTypeReference(realClassName, module, node, XmlTypeExtensions.ModeOfGetType.Both);
+
+                    var typeName = matchedResource.Name.Replace('.', '_');
+                    var typeDefOfGetResource = module.Types.FirstOrDefault(type => type.FullName == "GetResource." + typeName);
+                    if (null != typeDefOfGetResource)
+                    {
+                        module.Types.Remove(typeDefOfGetResource);
+                        typeDefOfGetResource = null;
+                    }
+
+                    if (null == typeDefOfGetResource)
+                    {
+                        typeDefOfGetResource = new TypeDefinition("GetResource", typeName, TypeAttributes.NotPublic);
+                        typeDefOfGetResource.BaseType = typeref;
+                        module.Types.Add(typeDefOfGetResource);
+
+                        typeDefOfGetResource.AddDefaultConstructor(typeref);
+                    }
+
+                    var methodName = "GetResource";
+                    var methodOfGetResource = typeDefOfGetResource.Methods.FirstOrDefault(m => m.Name == methodName);
+
+                    if (null == methodOfGetResource)
+                    {
+                        methodOfGetResource = new MethodDefinition(methodName, MethodAttributes.Public, typeref);
+                        typeDefOfGetResource.Methods.Add(methodOfGetResource);
+                    }
+
+                    var constructor = typeDefOfGetResource.Methods.FirstOrDefault(m => m.IsConstructor);
+
+                    if (null != constructor)
+                    {
+                        constructor.Body.Instructions.Insert(constructor.Body.Instructions.Count - 1, Instruction.Create(OpCodes.Ldarg_0));
+                        constructor.Body.Instructions.Insert(constructor.Body.Instructions.Count - 1, Instruction.Create(OpCodes.Call, methodOfGetResource));
+                        constructor.Body.Instructions.Insert(constructor.Body.Instructions.Count - 1, Instruction.Create(OpCodes.Pop));
+                    }
+
+                    var rootnode = XamlTask.ParseXaml(matchedResource.GetResourceStream(), typeref);
+
+                    Exception exception;
+                    TryCoreCompile(methodOfGetResource, rootnode, context.EmbeddedResourceNameSpace, out exception);
+
+                    yield return Create(Newobj, constructor);
+                }
+            }
         }
 
         internal static string GetPathForType(ModuleDefinition module, TypeReference type)
         {
-            foreach (var ca in type.Module.GetCustomAttributes()) {
+            foreach (var ca in type.Module.GetCustomAttributes())
+            {
                 if (!TypeRefComparer.Default.Equals(ca.AttributeType, module.ImportReference((XamlTask.xamlAssemblyName, XamlTask.xamlNameSpace, "XamlResourceIdAttribute"))))
                     continue;
                 if (!TypeRefComparer.Default.Equals(ca.ConstructorArguments[2].Value as TypeReference, type))
@@ -90,6 +125,57 @@ namespace Tizen.NUI.Xaml.Core.XamlC
             }
             return null;
         }
+
+        private bool TryCoreCompile(MethodDefinition initComp, ILRootNode rootnode, string resourceName, out Exception exception)
+        {
+            try
+            {
+                var body = new MethodBody(initComp);
+                var module = body.Method.Module;
+                var type = initComp.DeclaringType;
+
+                body.InitLocals = true;
+                var il = body.GetILProcessor();
+                il.Emit(OpCodes.Ldarg_0);
+                var resourcePath = GetPathForType(module, type);
+
+                il.Emit(Nop);
+
+                List<Instruction> insOfAddEvent = new List<Instruction>();
+
+                var visitorContext = new ILContext(il, body, insOfAddEvent, module, resourceName);
+
+                rootnode.Accept(new XamlNodeVisitor((node, parent) => node.Parent = parent), null);
+                rootnode.Accept(new Tizen.NUI.Xaml.Build.Tasks.ExpandMarkupsVisitor(visitorContext), null);
+                rootnode.Accept(new PruneIgnoredNodesVisitor(), null);
+                rootnode.Accept(new CreateObjectVisitor(visitorContext), null);
+
+                rootnode.Accept(new SetNamescopesAndRegisterNamesVisitor(visitorContext), null);
+                rootnode.Accept(new SetFieldVisitor(visitorContext), null);
+                rootnode.Accept(new SetResourcesVisitor(visitorContext), null);
+                rootnode.Accept(new SetPropertiesVisitor(visitorContext, true), null);
+
+                il.Emit(Ret);
+                initComp.Body = body;
+                exception = null;
+                return true;
+            }
+            catch (Exception e)
+            {
+                XamlParseException xamlParseException = e as XamlParseException;
+                if (null != xamlParseException)
+                {
+                    XamlParseException ret = new XamlParseException(xamlParseException.Message, xamlParseException.XmlInfo, xamlParseException.InnerException);
+                    exception = ret;
+                }
+                else
+                {
+                    exception = e;
+                }
+
+                return false;
+            }
+        }
     }
 }
+
index 59b19e9..2c2b82b 100755 (executable)
@@ -38,7 +38,7 @@ namespace Tizen.NUI.Xaml.Core.XamlC
 
             foreach (var thick in xywh)
             {
-                if (thick.EndsWith("dp") || thick.EndsWith("px"))
+                if (null != NodeILExtensions.GetDPValueSubFix(thick))
                 {
                     return null;
                 }
index cd39e26..0ea880b 100755 (executable)
@@ -47,7 +47,7 @@ namespace Tizen.NUI.Xaml.Core.XamlC
 
                 foreach (var thick in thickness)
                 {
-                    if (thick.EndsWith("dp") || thick.EndsWith("px"))
+                    if (null != NodeILExtensions.GetDPValueSubFix(thick))
                     {
                         return null;
                     }
@@ -98,7 +98,7 @@ namespace Tizen.NUI.Xaml.Core.XamlC
 
                 foreach (var thick in thickness)
                 {
-                    if (thick.EndsWith("dp") || thick.EndsWith("px"))
+                    if (null != NodeILExtensions.GetDPValueSubFix(thick))
                     {
                         return null;
                     }
index 77f89b2..5dd229b 100755 (executable)
@@ -38,7 +38,7 @@ namespace Tizen.NUI.Xaml.Core.XamlC
 
                 foreach (var thick in thickness)
                 {
-                    if (thick.EndsWith("dp") || thick.EndsWith("px"))
+                    if (null != NodeILExtensions.GetDPValueSubFix(thick))
                     {
                         return null;
                     }
index 4c9df8d..b61dae2 100755 (executable)
@@ -47,7 +47,7 @@ namespace Tizen.NUI.Xaml.Core.XamlC
             else
                 xmlType = new XmlType(node.NamespaceResolver.LookupNamespace(""), split[0], null);
 
-            var typeRef = xmlType.GetTypeReference(module, (IXmlLineInfo)node, true);
+            var typeRef = xmlType.GetTypeReference(XmlTypeExtensions.ModeOfGetType.Both, module, (IXmlLineInfo)node, true);
             if (typeRef == null)
                 goto error;
 
index 59b97ff..c15bfe3 100755 (executable)
@@ -45,7 +45,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             var typename = member.Substring(0, dotIdx);
             var membername = member.Substring(dotIdx + 1);
 
-            var typeRef = module.ImportReference(XmlTypeExtensions.GetTypeReference(typename, module, node as BaseNode));
+            var typeRef = module.ImportReference(XmlTypeExtensions.GetTypeReference(typename, module, node as BaseNode, XmlTypeExtensions.ModeOfGetType.Both));
             var fieldRef = GetFieldReference(typeRef, membername, module);
             var propertyDef = GetPropertyDefinition(typeRef, membername, module);
 
@@ -117,7 +117,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             var typename = member.Substring(0, dotIdx);
             var membername = member.Substring(dotIdx + 1);
 
-            var typeRef = module.ImportReference(XmlTypeExtensions.GetTypeReference(typename, module, node as BaseNode));
+            var typeRef = module.ImportReference(XmlTypeExtensions.GetTypeReference(typename, module, node as BaseNode, XmlTypeExtensions.ModeOfGetType.Both));
             var fieldRef = GetFieldReference(typeRef, membername, module);
             var propertyDef = GetPropertyDefinition(typeRef, membername, module);
 
index af96136..8e7f26a 100755 (executable)
@@ -51,7 +51,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
                 node.CollectionItems.Clear();
             }
 
-            var typeref = module.ImportReference(XmlTypeExtensions.GetTypeReference(valueNode.Value as string, module, node as BaseNode));
+            var typeref = module.ImportReference(XmlTypeExtensions.GetTypeReference(valueNode.Value as string, module, node as BaseNode, XmlTypeExtensions.ModeOfGetType.Both));
 
             context.TypeExtensions[node] = typeref ?? throw new XamlParseException($"Can't resolve type `{valueNode.Value}'.", node as IXmlLineInfo);
 
@@ -82,11 +82,11 @@ namespace Tizen.NUI.Xaml.Build.Tasks
                 node.CollectionItems.Clear();
             }
 
-            var typeref = module.ImportReference(XmlTypeExtensions.GetTypeReference(valueNode.Value as string, module, node as BaseNode));
+            var typeref = module.ImportReference(XmlTypeExtensions.GetTypeReference(valueNode.Value as string, module, node as BaseNode, XmlTypeExtensions.ModeOfGetType.Both));
 
             context.TypeExtensions[node] = typeref ?? throw new XamlParseException($"Can't resolve type `{valueNode.Value}'.", node as IXmlLineInfo);
 
-            return new EXamlCreateObject(context, typeref, module.ImportReference(typeof(TypeReference)));
+            return new EXamlCreateObject(context, typeref, module.ImportReference(typeof(System.Type))) { IsValid = false,};
         }
     }
 }
index 02104c5..a115df9 100755 (executable)
@@ -65,7 +65,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
         public void Visit(ElementNode node, INode parentNode)
         {
-            var typeref = Module.ImportReference(node.XmlType.GetTypeReference(Module, node));
+            var typeref = Module.ImportReference(node.XmlType.GetTypeReference(XmlTypeExtensions.ModeOfGetType.Both, Module, node));
             TypeDefinition typedef = typeref.ResolveCached();
 
             if (IsXaml2009LanguagePrimitive(node))
@@ -138,7 +138,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
                                                                               md.MatchXArguments(node, typeref, Module, Context));
                 if (factoryMethodInfo == null)
                 {
-                    var typeExtensionRef = Module.ImportReference(node.XmlType.GetTypeExtensionReference(Module, node));
+                    var typeExtensionRef = Module.ImportReference(node.XmlType.GetTypeReference(XmlTypeExtensions.ModeOfGetType.OnlyGetTypeExtension, Module, node));
                     typeExtensionRef = typeExtensionRef?.ResolveCached();
 
                     if (null != typeExtensionRef?.Resolve())
@@ -284,7 +284,25 @@ namespace Tizen.NUI.Xaml.Build.Tasks
                     var ctor = Module.ImportReference(ctorinforef);
                     //                    IL_0001:  newobj instance void class [Tizen.NUI.Xaml.UIComponents]Tizen.NUI.Xaml.UIComponents.Button::'.ctor'()
                     //                    IL_0006:  stloc.0 
-                    Context.IL.Emit(OpCodes.Newobj, ctor);
+                    bool isConvertValue = false;
+                    if (node.CollectionItems.Count == 1 && node.CollectionItems.First() is ValueNode valueNode)
+                    {
+                        if (valueNode.CanConvertValue(Context.Module, typeref, (TypeReference)null))
+                        {
+                            var converterType = valueNode.GetConverterType(new ICustomAttributeProvider[] { typeref.Resolve() });
+                            if (null != converterType)
+                            {
+                                isConvertValue = true;
+                                Context.IL.Append(vnode.PushConvertedValue(Context, typeref, new ICustomAttributeProvider[] { typedef },
+                                    node.PushServiceProvider(Context), false, true));
+                            }
+                        }
+                    }
+                    
+                    if (false == isConvertValue)
+                    {
+                        Context.IL.Emit(OpCodes.Newobj, ctor);
+                    }
                     Context.IL.Emit(OpCodes.Stloc, vardef);
                 }
                 else if (ctorInfo != null && node.Properties.ContainsKey(XmlName.xArguments) &&
@@ -340,7 +358,6 @@ namespace Tizen.NUI.Xaml.Build.Tasks
                     foreach (var prop in node.Properties)
                         if (!node.SkipProperties.Contains(prop.Key))
                             node.SkipProperties.Add(prop.Key);
-                    node.CollectionItems.Clear();
 
                     return;
                 }
@@ -511,7 +528,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             for (var i = arguments.Count; i < factoryCtorInfo.Parameters.Count; i++)
             {
                 var parameter = factoryCtorInfo.Parameters[i];
-                var arg = new ValueNode(parameter.Constant.ToString(), node.NamespaceResolver);
+                var arg = new ValueNode(parameter.Constant?.ToString(), node?.NamespaceResolver);
 
                 foreach (var instruction in arg.PushConvertedValue(Context,
                         parameter.ParameterType,
@@ -526,7 +543,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             if (node.NamespaceURI == XamlParser.X2009Uri)
             {
                 var n = node.XmlType.Name.Split(':')[1];
-                return n != "Array";
+                return n != "Array" && n != "Nullable" && n != "DateTime";
             }
             if (node.NamespaceURI != "clr-namespace:System;assembly=mscorlib")
                 return false;
index 2b8c851..840b1ad 100755 (executable)
@@ -181,7 +181,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
                 try
                 {
                     type = new XmlType(namespaceuri, name + "Extension", null);
-                    type.GetTypeReference(contextProvider.Context.Module, null);
+                    type.GetTypeReference(XmlTypeExtensions.ModeOfGetType.Both, contextProvider.Context.Module, null);
                 }
                 catch (XamlParseException)
                 {
index eae1d25..474ad8c 100755 (executable)
@@ -26,7 +26,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 {
     class ILContext
     {
-        public ILContext(ILProcessor il, MethodBody body, List<Instruction> insOfAddEvent, ModuleDefinition module, FieldDefinition parentContextValues = null)
+        public ILContext(ILProcessor il, MethodBody body, List<Instruction> insOfAddEvent, ModuleDefinition module, string embeddedResourceNameSpace, FieldDefinition parentContextValues = null)
         {
             IL = il;
             Body = body;
@@ -35,6 +35,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             Variables = new Dictionary<IElementNode, VariableDefinition>();
             Scopes = new Dictionary<INode, Tuple<VariableDefinition, IList<string>>>();
             TypeExtensions = new Dictionary<INode, TypeReference>();
+            EmbeddedResourceNameSpace = embeddedResourceNameSpace;
             ParentContextValues = parentContextValues;
             Module = module;
         }
@@ -47,6 +48,8 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
         public Dictionary<INode, TypeReference> TypeExtensions { get; }
 
+        public string EmbeddedResourceNameSpace { get; }
+
         public FieldDefinition ParentContextValues { get; private set; }
 
         public object Root { get; set; } //FieldDefinition or VariableDefinition
index 7e46b32..41bd449 100755 (executable)
@@ -245,6 +245,20 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             return null;
         }
 
+        private static string[] dpValueSubFixes = { "dp", "sp", "pt", "px"};
+        internal static string GetDPValueSubFix(string valueStr)
+        {
+            foreach (var subFix in dpValueSubFixes)
+            {
+                if (valueStr.EndsWith(subFix))
+                {
+                    return subFix;
+                }
+            }
+
+            return null;
+        }
+
         public static object GetBaseValue(this ValueNode node, EXamlContext context, TypeReference targetTypeRef)
         {
             var str = (string)node.Value;
@@ -252,15 +266,12 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
             if ("System.String" != targetTypeRef.FullName)
             {
-                if (str.EndsWith("dp"))
-                {
-                    var value = GetBaseValue(context, str.Substring(0, str.Length - "dp".Length), targetTypeRef);
-                    ret = new EXamlCreateDPObject(context, value, targetTypeRef, "dp");
-                }
-                else if (str.EndsWith("px"))
+                string subFix = GetDPValueSubFix(str);
+
+                if (null != subFix)
                 {
-                    var value = GetBaseValue(context, str.Substring(0, str.Length - "px".Length), targetTypeRef);
-                    ret = new EXamlCreateDPObject(context, value, targetTypeRef, "px");
+                        var value = GetBaseValue(context, str.Substring(0, str.Length - subFix.Length), targetTypeRef);
+                        ret = new EXamlCreateDPObject(context, value, targetTypeRef, subFix);
                 }
             }
 
@@ -342,8 +353,16 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             if (compiledConverterName != null && (compiledConverterType = Type.GetType (compiledConverterName)) != null) {
                 var compiledConverter = Activator.CreateInstance (compiledConverterType);
                 var converter = typeof(ICompiledTypeConverter).GetMethods ().FirstOrDefault (md => md.Name == "ConvertFromString");
-                IEnumerable<Instruction> instructions = (IEnumerable<Instruction>)converter.Invoke (compiledConverter, new object[] {
-                    node.Value as string, context, node as BaseNode});
+                IEnumerable<Instruction> instructions = null;
+
+                try
+                {
+                    instructions = (IEnumerable<Instruction>)converter.Invoke(compiledConverter, new object[] {
+                        node.Value as string, context, node as BaseNode});
+                }
+                catch 
+                {
+                }
 
                 if (null != instructions)
                 {
@@ -411,7 +430,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
                 yield return Instruction.Create(OpCodes.Ldc_I4, SByte.Parse(str, CultureInfo.InvariantCulture));
             else if (targetTypeRef.FullName == "System.Int16")
             {
-                if (str.EndsWith("dp") || str.EndsWith("px"))
+                if (null != GetDPValueSubFix(str))
                 {
                     var insOfDPValue = GetDPValue(module, node, targetTypeRef, str);
 
@@ -434,12 +453,12 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             else if (targetTypeRef.FullName == "System.UInt16")
                 yield return Instruction.Create(OpCodes.Ldc_I4, unchecked((int)UInt16.Parse(str, CultureInfo.InvariantCulture)));
             else if (targetTypeRef.FullName == "System.UInt32")
-                yield return Instruction.Create(OpCodes.Ldc_I8, unchecked((uint)UInt32.Parse(str, CultureInfo.InvariantCulture)));
+                yield return Instruction.Create(OpCodes.Ldc_I4, unchecked((int)UInt32.Parse(str, CultureInfo.InvariantCulture)));
             else if (targetTypeRef.FullName == "System.UInt64")
                 yield return Instruction.Create(OpCodes.Ldc_I8, unchecked((long)UInt64.Parse(str, CultureInfo.InvariantCulture)));
             else if (targetTypeRef.FullName == "System.Single")
             {
-                if (str.EndsWith("dp") || str.EndsWith("px"))
+                if (null != GetDPValueSubFix(str))
                 {
                     var insOfDPValue = GetDPValue(module, node, targetTypeRef, str);
 
index 1aed1d0..5b17426 100755 (executable)
@@ -156,7 +156,11 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
                 bool isAdded = false;
 
-                if (CanAddToResourceDictionary(parentVar, parentVar.VariableType, node, node, Context))
+                if (parentVar.VariableType.IsArray)
+                {
+                    isAdded = true;
+                }
+                else if (CanAddToResourceDictionary(parentVar, parentVar.VariableType, node, node, Context))
                 {
                     Context.IL.Emit(Ldloc, parentVar);
                     Context.IL.Append(AddToResourceDictionary(node, node, Context));
@@ -434,7 +438,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
             var dtXType = new XmlType(namespaceuri, dataType, null);
 
-            var tSourceRef = dtXType.GetTypeReference(module, (IXmlLineInfo)node);
+            var tSourceRef = dtXType.GetTypeReference(XmlTypeExtensions.ModeOfGetType.Both, module, (IXmlLineInfo)node);
             if (tSourceRef == null)
                 yield break; //throw
 
@@ -1421,7 +1425,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             {
                 var typename = localname.Substring(0, dotIdx);
                 localname = localname.Substring(dotIdx + 1);
-                elementType = new XmlType(namespaceURI, typename, null).GetTypeReference(context.Body.Method.Module, lineInfo);
+                elementType = new XmlType(namespaceURI, typename, null).GetTypeReference(XmlTypeExtensions.ModeOfGetType.Both, context.Body.Method.Module, lineInfo);
                 return true;
             }
             return false;
@@ -1478,7 +1482,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             //Fill the loadTemplate Body
             var templateIl = loadTemplate.Body.GetILProcessor();
             templateIl.Emit(OpCodes.Nop);
-            var templateContext = new ILContext(templateIl, loadTemplate.Body, null, module, parentValues)
+            var templateContext = new ILContext(templateIl, loadTemplate.Body, null, module, parentContext.EmbeddedResourceNameSpace, parentValues)
             {
                 Root = root
             };
index 4ff87b2..d0a3b24 100755 (executable)
@@ -240,6 +240,11 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             {
                 return true;
             }
+            else if (typeRef.IsLocalType())
+            {
+                //Avoid to resolve the type reference of XamlBuild
+                return false;
+            }
             else
             {
                 var typeDef = typeRef.ResolveCached();
@@ -290,6 +295,34 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             return typeRef.InheritsFromOrImplements(baseClass);
         }
 
+        public static TypeReference GetRealTypeIfIsMarkupExtension(this TypeReference typeRef)
+        {
+            TypeReference ret = null;
+
+            var typeDef = typeRef.ResolveCached();
+
+            foreach (var @interface in typeDef.Interfaces)
+            {
+                if (@interface.InterfaceType is GenericInstanceType instanceType)
+                {
+                    if ("Tizen.NUI.Xaml.IMarkupExtension`1" == instanceType.ElementType.FullName
+                        &&
+                        1 == instanceType.GenericArguments.Count)
+                    {
+                        ret = instanceType.GenericArguments[0];
+                        break;
+                    }
+                }
+            }
+
+            if (null == ret)
+            {
+                ret = typeDef.BaseType?.GetRealTypeIfIsMarkupExtension();
+            }
+
+            return ret;
+        }
+
         static CustomAttribute GetCustomAttribute(this TypeReference typeRef, TypeReference attribute)
         {
             var typeDef = typeRef.ResolveCached();
@@ -348,6 +381,11 @@ namespace Tizen.NUI.Xaml.Build.Tasks
         public static IEnumerable<Tuple<MethodDefinition, TypeReference>> GetMethods(this TypeReference typeRef,
             Func<MethodDefinition, TypeReference, bool> predicate, ModuleDefinition module)
         {
+            if (typeRef.IsLocalType())
+            {
+                yield break;
+            }
+
             var typeDef = typeRef.ResolveCached();
             foreach (var method in typeDef.Methods.Where(md => predicate(md, typeRef)))
                 yield return new Tuple<MethodDefinition, TypeReference>(method, typeRef);
@@ -431,6 +469,26 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             return self.GetElementType().MakeGenericInstanceType(args.ToArray());
         }
 
+        public static string GetContentPropertyNameOfLocalType(this TypeReference typeReference)
+        {
+            if ("Tizen.NUI.Xaml.Build.Tasks.ArrayExtension" == typeReference.FullName)
+            {
+                return "Items";
+            }
+
+            return null;
+        }
+
+        public static bool IsLocalType(this TypeReference typeReference)
+        {
+            if ("Tizen.NUI.Xaml.Build.Tasks.ArrayExtension" == typeReference.FullName)
+            {
+                return true;
+            }
+
+            return false;
+        }
+
         static Dictionary<TypeReference, TypeDefinition> resolves = new Dictionary<TypeReference, TypeDefinition>();
         public static TypeDefinition ResolveCached(this TypeReference typeReference)
         {
index b112b62..32ae825 100755 (executable)
@@ -47,6 +47,8 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
         public bool UseInjection { get; set; }
 
+        public int XamlOptimization { get; set; } = 2;
+
         public IAssemblyResolver DefaultAssemblyResolver { get; set; }
 
         public string Type { get; set; }
@@ -284,10 +286,16 @@ namespace Tizen.NUI.Xaml.Build.Tasks
                             continue;
                         }
 
-                        bool currentRetOfType;
-                        IList<Exception> currentExceptionsOfType;
+                        bool currentRetOfType = false;
+                        IList<Exception> currentExceptionsOfType = null;
 
-                        if (UseInjection)
+                        if(UseInjection) XamlOptimization = 1;
+                        LoggingHelper.LogWarning($"XamlOptimization is {XamlOptimization}.");
+                        if (0 == XamlOptimization)
+                        {//Use Xaml
+                            currentRetOfType = true;
+                        }
+                        else if (1 == XamlOptimization)
                         {
                             currentRetOfType = DoInjection(typeDef, resource, out currentExceptionsOfType);
                         }
@@ -372,6 +380,17 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             return success;
         }
 
+        private string GetNameSpaceOfResource(EmbeddedResource resource)
+        {
+            var index = resource.Name.LastIndexOf('.');
+            var resourceNameWithoutSubfix = resource.Name.Substring(0, index);
+
+            index = resourceNameWithoutSubfix.LastIndexOf('.');
+            var nameSpace = resourceNameWithoutSubfix.Substring(0, index);
+
+            return nameSpace;
+        }
+
         bool DoInjection(TypeDefinition typeDef, EmbeddedResource resource, out IList<Exception> thrownExceptions)
         {
             thrownExceptions = null;
@@ -423,7 +442,9 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
             LoggingHelper.LogMessage(Low, $"{new string(' ', 6)}Replacing {0}.InitializeComponent ()");
             Exception e;
-            if (!TryCoreCompile(initComp, rootnode, out e))
+
+            var embeddedResourceNameSpace = GetNameSpaceOfResource(resource);
+            if (!TryCoreCompile(initComp, rootnode, embeddedResourceNameSpace, out e))
             {
                 LoggingHelper.LogMessage(Low, $"{new string(' ', 8)}failed.");
                 (thrownExceptions = thrownExceptions ?? new List<Exception>()).Add(e);
@@ -486,7 +507,8 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             LoggingHelper.LogMessage(Low, $"{new string(' ', 6)}Replacing {0}.InitializeComponent ()");
             Exception e;
 
-            var visitorContext = new EXamlContext(typeDef, typeDef.Module);
+            var embeddedResourceNameSpace = GetNameSpaceOfResource(resource);
+            var visitorContext = new EXamlContext(typeDef, typeDef.Module, embeddedResourceNameSpace);
 
             if (!TryCoreCompile(rootnode, visitorContext, out e))
             {
@@ -501,7 +523,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
                 if (null != e.StackTrace)
                 {
-                    LoggingHelper.LogMessage(Low, e.StackTrace);
+                    LoggingHelper.LogError(e.StackTrace);
                 }
 
                 return false;
@@ -559,7 +581,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             LoggingHelper.LogMessage(Low, $"{new string(' ', 6)}Replacing {0}.InitializeComponent ()");
             Exception e;
 
-            var visitorContext = new EXamlContext(typeDef, module);
+            var visitorContext = new EXamlContext(typeDef, module, null);
 
             if (!TryCoreCompile(rootnode, visitorContext, out e))
             {
@@ -613,7 +635,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             return true;
         }
 
-        bool TryCoreCompile(MethodDefinition initComp, ILRootNode rootnode, out Exception exception)
+        bool TryCoreCompile(MethodDefinition initComp, ILRootNode rootnode, string embeddedResourceNameSpace, out Exception exception)
         {
             try
             {
@@ -638,7 +660,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
                 List<Instruction> insOfAddEvent = new List<Instruction>();
 
-                var visitorContext = new ILContext(il, body, insOfAddEvent, module);
+                var visitorContext = new ILContext(il, body, insOfAddEvent, module, embeddedResourceNameSpace);
 
                 rootnode.Accept(new XamlNodeVisitor((node, parent) => node.Parent = parent), null);
                 rootnode.Accept(new ExpandMarkupsVisitor(visitorContext), null);
index 6813ba4..76c3e1d 100755 (executable)
@@ -36,6 +36,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
         public string AssemblyName { get; set; }
         public string DependencyPaths { get; set; }
         public string ReferencePath { get; set; }
+        public int XamlOptimization {get; set;} = 2;
         public bool AddXamlCompilationAttribute { get; set; }
         public bool PrintReferenceAssemblies { get; set; }
 
@@ -88,6 +89,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
                 var generator = new XamlGenerator(xamlFile, Language, AssemblyName, outputFile, ReferencePath, Log);
                 generator.AddXamlCompilationAttribute = AddXamlCompilationAttribute;
+                generator.XamlOptimization = XamlOptimization;
                 generator.ReferencePath = ReferencePath;
 
                 try {
index d725303..beba5aa 100755 (executable)
@@ -19,6 +19,7 @@ using System.CodeDom;
 using System.CodeDom.Compiler;
 using System.Collections.Generic;
 using System.IO;
+using System.Linq;
 using System.Reflection;
 using System.Xml;
 using Microsoft.Build.Framework;
@@ -187,11 +188,13 @@ namespace Tizen.NUI.Xaml.Build.Tasks
         public string RootClrNamespace { get; private set; }
         public string RootType { get; private set; }
         public bool AddXamlCompilationAttribute { get; set; }
+        public int XamlOptimization { get; set; }
         bool GenerateDefaultCtor { get; set; }
         bool HideFromIntellisense { get; set; }
         bool XamlResourceIdOnly { get; set; }
         internal IEnumerable<CodeMemberField> NamedFields { get; set; }
         internal CodeTypeReference BaseType { get; set; }
+        string classModifier { get; set; }
 
         public XamlGenerator(
             string xamlFile,
@@ -282,6 +285,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
             NamedFields = GetCodeMemberFields(root, nsmgr);
             var typeArguments = GetAttributeValue(root, "TypeArguments", XamlParser.X2006Uri, XamlParser.X2009Uri);
+            classModifier = GetAttributeValue(root, "ClassModifier", XamlParser.X2006Uri, XamlParser.X2009Uri);
             var xmlType = new XmlType(root.NamespaceURI, root.LocalName, typeArguments != null ? TypeArgumentsParser.ParseExpression(typeArguments, nsmgr, null) : null);
             BaseType = GetType(xmlType, root.GetNamespaceOfPrefix);
 
@@ -317,6 +321,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
             var declType = new CodeTypeDeclaration(RootType) {
                 IsPartial = true,
+                TypeAttributes = GetTypeAttributes(classModifier),
                 CustomAttributes = {
                     new CodeAttributeDeclaration(new CodeTypeReference(XamlCTask.xamlNameSpace + ".XamlFilePathAttribute"),
                          new CodeAttributeArgument(new CodePrimitiveExpression(XamlFile))),
@@ -357,18 +362,40 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             declType.Members.Add(initcomp);
 
             //Create and initialize fields
-            var loadExaml_invoke = new CodeMethodInvokeExpression(
-                new CodeTypeReferenceExpression(new CodeTypeReference($"global::Tizen.NUI.EXaml.EXamlExtensions")),
-                "LoadFromEXamlByRelativePath", new CodeThisReferenceExpression(), 
-                new CodeMethodInvokeExpression()
-                { Method = new CodeMethodReferenceExpression() { MethodName = "GetEXamlPath" } });
 
-            CodeAssignStatement assignEXamlObject = new CodeAssignStatement(
-                    new CodeVariableReferenceExpression("eXamlData"), loadExaml_invoke);
+                       if(0 == XamlOptimization)
+                       {
+                initcomp.Statements.Add(new CodeMethodInvokeExpression(
+                    new CodeTypeReferenceExpression(new CodeTypeReference($"global::{typeof(Extensions).FullName}")),
+                    "LoadFromXaml", new CodeThisReferenceExpression(), new CodeTypeOfExpression(declType.Name)));
+
+                var exitXamlComp = new CodeMemberMethod()
+                {
+                    Name = "ExitXaml",
+                    CustomAttributes = { GeneratedCodeAttrDecl },
+                    Attributes = MemberAttributes.Assembly | MemberAttributes.Final
+                };
+                declType.Members.Add(exitXamlComp);
+            }
+            else
+                       {
+                var loadExaml_invoke = new CodeMethodInvokeExpression(
+                    new CodeTypeReferenceExpression(new CodeTypeReference($"global::Tizen.NUI.EXaml.EXamlExtensions")),
+                    "LoadFromEXamlByRelativePath", new CodeThisReferenceExpression(),
+                    new CodeMethodInvokeExpression()
+                    { Method = new CodeMethodReferenceExpression() { MethodName = "GetEXamlPath" } });
+
+                CodeAssignStatement assignEXamlObject = new CodeAssignStatement(
+                        new CodeVariableReferenceExpression("eXamlData"), loadExaml_invoke);
 
-            initcomp.Statements.Add(assignEXamlObject);
+                initcomp.Statements.Add(assignEXamlObject);
+                       }
 
             foreach (var namedField in NamedFields) {
+                if(namedField.Type.BaseType.Contains("-"))
+                {
+                    namedField.Type.BaseType = namedField.Type.BaseType.Replace("-", ".");
+                }
                 declType.Members.Add(namedField);
 
                 var find_invoke = new CodeMethodInvokeExpression(
@@ -383,27 +410,29 @@ namespace Tizen.NUI.Xaml.Build.Tasks
                 initcomp.Statements.Add(assign);
             }
 
-            declType.Members.Add(new CodeMemberField
-            {
-                Name = "eXamlData",
-                Type = new CodeTypeReference("System.Object"),
-                Attributes = MemberAttributes.Private,
-                CustomAttributes = { GeneratedCodeAttrDecl }
-            });
-
-            var getEXamlPathcomp = new CodeMemberMethod()
-            {
-                Name = "GetEXamlPath",
-                ReturnType = new CodeTypeReference(typeof(string)),
-                CustomAttributes = { GeneratedCodeAttrDecl }
-            };
+                       if(0 != XamlOptimization)
+                       {
+                declType.Members.Add(new CodeMemberField
+                {
+                    Name = "eXamlData",
+                    Type = new CodeTypeReference("System.Object"),
+                    Attributes = MemberAttributes.Private,
+                    CustomAttributes = { GeneratedCodeAttrDecl }
+                });
 
-            getEXamlPathcomp.Statements.Add(new CodeMethodReturnStatement(new CodeDefaultValueExpression(new CodeTypeReference(typeof(string)))));
+                var getEXamlPathcomp = new CodeMemberMethod()
+                {
+                    Name = "GetEXamlPath",
+                    ReturnType = new CodeTypeReference(typeof(string)),
+                    CustomAttributes = { GeneratedCodeAttrDecl }
+                };
 
-            declType.Members.Add(getEXamlPathcomp);
+                getEXamlPathcomp.Statements.Add(new CodeMethodReturnStatement(new CodeDefaultValueExpression(new CodeTypeReference(typeof(string)))));
 
-            GenerateMethodExitXaml(declType);
+                declType.Members.Add(getEXamlPathcomp);
 
+                GenerateMethodExitXaml(declType);
+                       }
         writeAndExit:
             //write the result
             using (var writer = new StreamWriter(outFilePath))
@@ -427,7 +456,8 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             var exitXamlComp = new CodeMemberMethod()
             {
                 Name = "ExitXaml",
-                CustomAttributes = { GeneratedCodeAttrDecl }
+                CustomAttributes = { GeneratedCodeAttrDecl },
+                Attributes = MemberAttributes.Assembly | MemberAttributes.Final
             };
 
             exitXamlComp.Statements.Add(new CodeMethodInvokeExpression(new CodeMethodReferenceExpression()
@@ -457,6 +487,26 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             declType.Members.Add(exitXamlComp);
         }
 
+        static System.Reflection.TypeAttributes GetTypeAttributes(string classModifier)
+        {
+            var access = System.Reflection.TypeAttributes.Public;
+            if (classModifier != null)
+            {
+                switch (classModifier.ToLowerInvariant())
+                {
+                    default:
+                    case "public":
+                        access = System.Reflection.TypeAttributes.Public;
+                        break;
+                    case "internal":
+                    case "notpublic": //WPF syntax
+                        access = System.Reflection.TypeAttributes.NotPublic;
+                        break;
+                }
+            }
+            return access;
+        }
+
         static IEnumerable<CodeMemberField> GetCodeMemberFields(XmlNode root, XmlNamespaceManager nsmgr)
         {
             var xPrefix = nsmgr.LookupPrefix(XamlParser.X2006Uri) ?? nsmgr.LookupPrefix(XamlParser.X2009Uri);
@@ -524,6 +574,10 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             Func<string, string> getNamespaceOfPrefix = null)
         {
             var type = xmlType.Name;
+            if (type.Contains("-"))
+            {
+                type = type.Replace('-', '.');
+            }
             var ns = GetClrNamespace(xmlType.NamespaceUri, xmlType.Name);
             if (ns != null)
                 type = $"{ns}.{type}";
index dcb2dc5..123ed60 100755 (executable)
@@ -25,11 +25,6 @@ using Microsoft.Build.Utilities;
 
 using Mono.Cecil;
 
-using Tizen.NUI.Xaml;
-using Mono.Cecil.Cil;
-using Mono.Cecil.Pdb;
-using Mono.Cecil.Mdb;
-
 namespace Tizen.NUI.Xaml.Build.Tasks
 {
     [LoadInSeparateAppDomain]
@@ -129,6 +124,42 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 
     public static class CecilExtensions
     {
+        public static bool IsResourceDictionaryXaml(this EmbeddedResource resource, ModuleDefinition module, out string classname)
+        {
+            classname = null;
+
+            if (!resource.Name.EndsWith(".xaml", StringComparison.InvariantCulture))
+                return false;
+
+            using (var resourceStream = resource.GetResourceStream())
+            {
+                var xmlDoc = new XmlDocument();
+                xmlDoc.Load(resourceStream);
+
+                var nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
+
+                var root = xmlDoc.SelectSingleNode("/*", nsmgr);
+                if (root == null)
+                    return false;
+
+                var rootClass = root.Attributes["Class", XamlParser.X2006Uri] ??
+                                root.Attributes["Class", XamlParser.X2009Uri];
+                if (rootClass != null)
+                {
+                    classname = rootClass.Value;
+                    return true;
+                }
+
+                if ("ResourceDictionary" == root.Name)
+                {
+                    classname = "Tizen.NUI.Binding.ResourceDictionary";
+                    return true;
+                }
+
+                return false;
+            }
+        }
+
         public static bool IsXaml(this EmbeddedResource resource, ModuleDefinition module, out string classname)
         {
             classname = null;
index 8941805..d3265f3 100755 (executable)
@@ -26,15 +26,22 @@ namespace Tizen.NUI.Xaml.Build.Tasks
 {
     static class XmlTypeExtensions
     {
+        internal enum ModeOfGetType
+        {
+            OnlyGetType,
+            OnlyGetTypeExtension,
+            Both
+        }
+
         static internal IList<XmlnsDefinitionAttribute> s_xmlnsDefinitions;
 
         static void GatherXmlnsDefinitionAttributes()
         {
             //this could be extended to look for [XmlnsDefinition] in all assemblies
-            s_xmlnsDefinitions = XamlTask.s_xmlnsDefinitions.OrderByDescending(a => a.Level).ToList(); ;
+            s_xmlnsDefinitions = XamlTask.s_xmlnsDefinitions.OrderByDescending(a => a.Level).ToList();
         }
 
-        public static TypeReference GetTypeReference(string xmlType, ModuleDefinition module, BaseNode node)
+        public static TypeReference GetTypeReference(string xmlType, ModuleDefinition module, BaseNode node, ModeOfGetType mode)
         {
             var split = xmlType.Split(':');
             if (split.Length > 2)
@@ -49,15 +56,15 @@ namespace Tizen.NUI.Xaml.Build.Tasks
                 name = split[0];
             }
             var namespaceuri = node.NamespaceResolver.LookupNamespace(prefix) ?? "";
-            return GetTypeReference(new XmlType(namespaceuri, name, null), module, node as IXmlLineInfo);
+            return GetTypeReference(new XmlType(namespaceuri, name, null), mode, module, node as IXmlLineInfo);
         }
 
-        public static TypeReference GetTypeReference(string namespaceURI, string typename, ModuleDefinition module, IXmlLineInfo xmlInfo)
+        public static TypeReference GetTypeReference(string namespaceURI, string typename, ModuleDefinition module, IXmlLineInfo xmlInfo, ModeOfGetType info)
         {
-            return new XmlType(namespaceURI, typename, null).GetTypeReference(module, xmlInfo);
+            return new XmlType(namespaceURI, typename, null).GetTypeReference(info, module, xmlInfo);
         }
 
-        public static TypeReference GetTypeReference(this XmlType xmlType, ModuleDefinition module, IXmlLineInfo xmlInfo, bool fromAllAssembly = false)
+        public static TypeReference GetTypeReference(this XmlType xmlType, ModeOfGetType mode, ModuleDefinition module, IXmlLineInfo xmlInfo, bool fromAllAssembly = false)
         {
             if (s_xmlnsDefinitions == null)
                 GatherXmlnsDefinitionAttributes();
@@ -106,106 +113,22 @@ namespace Tizen.NUI.Xaml.Build.Tasks
                     });
             }
 
-            lookupNames.Add(elementName);
-            lookupNames.Add(elementName + "Extension");
-
-            for (var i = 0; i < lookupNames.Count; i++)
-            {
-                var name = lookupNames[i];
-                if (name.Contains(":"))
-                    name = name.Substring(name.LastIndexOf(':') + 1);
-                if (typeArguments != null)
-                    name += "`" + typeArguments.Count; //this will return an open generic Type
-                lookupNames[i] = name;
-            }
-
-            TypeReference type = null;
-            foreach (var asm in lookupAssemblies)
+            switch (mode)
             {
-                if (type != null)
+                case ModeOfGetType.OnlyGetType:
+                    lookupNames.Add(elementName);
                     break;
-                foreach (var name in lookupNames)
-                {
-                    if (type != null)
-                        break;
-
-                    var clrNamespace = asm.ClrNamespace;
-                    var typeName = name.Replace('+', '/'); //Nested types
-                    var idx = typeName.LastIndexOf('.');
-                    if (idx >= 0) {
-                        clrNamespace += '.' + typeName.Substring(0, typeName.LastIndexOf('.'));
-                        typeName = typeName.Substring(typeName.LastIndexOf('.') + 1);
-                    }
-                    type = module.GetTypeDefinition((asm.AssemblyName, clrNamespace, typeName));
-                }
-            }
-
-            if (type != null && typeArguments != null && type.HasGenericParameters)
-            {
-                type =
-                    module.ImportReference(type)
-                        .MakeGenericInstanceType(typeArguments.Select(x => GetTypeReference(x, module, xmlInfo)).ToArray());
-            }
-
-            if (type == null)
-                throw new XamlParseException(string.Format("Type {0} not found in xmlns {1}", elementName, namespaceURI), xmlInfo);
-
-            return module.ImportReference(type);
-        }
-
-        public static TypeReference GetTypeExtensionReference(this XmlType xmlType, ModuleDefinition module, IXmlLineInfo xmlInfo, bool fromAllAssembly = false)
-        {
-            if (s_xmlnsDefinitions == null)
-                GatherXmlnsDefinitionAttributes();
-
-            var namespaceURI = xmlType.NamespaceUri;
-            var elementName = xmlType.Name;
-            var typeArguments = xmlType.TypeArguments;
-
-            if (elementName.Contains("-"))
-            {
-                elementName = elementName.Replace('-', '+');
-            }
-
-            var lookupAssemblies = new List<XmlnsDefinitionAttribute>();
 
-            var lookupNames = new List<string>();
-
-            if (true == fromAllAssembly)
-            {
-                foreach (var xmlnsDef in s_xmlnsDefinitions)
-                {
-                    lookupAssemblies.Add(xmlnsDef);
-                }
-            }
-            else
-            {
-                foreach (var xmlnsDef in s_xmlnsDefinitions)
-                {
-                    if (xmlnsDef.XmlNamespace != namespaceURI)
-                        continue;
-                    lookupAssemblies.Add(xmlnsDef);
-                }
-            }
-
-            if (lookupAssemblies.Count == 0)
-            {
-                string ns;
-                string typename;
-                string asmstring;
-                string targetPlatform;
+                case ModeOfGetType.OnlyGetTypeExtension:
+                    lookupNames.Add(elementName + "Extension");
+                    break;
 
-                XmlnsHelper.ParseXmlns(namespaceURI, out typename, out ns, out asmstring, out targetPlatform);
-                asmstring = asmstring ?? module.Assembly.Name.Name;
-                if (ns != null)
-                    lookupAssemblies.Add(new XmlnsDefinitionAttribute(namespaceURI, ns, 0)
-                    {
-                        AssemblyName = asmstring
-                    });
+                case ModeOfGetType.Both:
+                    lookupNames.Add(elementName);
+                    lookupNames.Add(elementName + "Extension");
+                    break;
             }
 
-            lookupNames.Add(elementName + "Extension");
-
             for (var i = 0; i < lookupNames.Count; i++)
             {
                 var name = lookupNames[i];
@@ -229,17 +152,11 @@ namespace Tizen.NUI.Xaml.Build.Tasks
                     var clrNamespace = asm.ClrNamespace;
                     var typeName = name.Replace('+', '/'); //Nested types
                     var idx = typeName.LastIndexOf('.');
-                    if (idx >= 0)
-                    {
+                    if (idx >= 0) {
                         clrNamespace += '.' + typeName.Substring(0, typeName.LastIndexOf('.'));
                         typeName = typeName.Substring(typeName.LastIndexOf('.') + 1);
                     }
                     type = module.GetTypeDefinition((asm.AssemblyName, clrNamespace, typeName));
-
-                    if (null == type)
-                    {
-                        type = module.GetTypeDefinition((module.Assembly.Name.Name, clrNamespace, typeName));
-                    }
                 }
             }
 
@@ -247,7 +164,7 @@ namespace Tizen.NUI.Xaml.Build.Tasks
             {
                 type =
                     module.ImportReference(type)
-                        .MakeGenericInstanceType(typeArguments.Select(x => GetTypeReference(x, module, xmlInfo)).ToArray());
+                        .MakeGenericInstanceType(typeArguments.Select(x => GetTypeReference(x, mode, module, xmlInfo)).ToArray());
             }
 
             if (type == null)
diff --git a/src/Tizen.NUI/res/close.png b/src/Tizen.NUI/res/close.png
new file mode 100644 (file)
index 0000000..c49e480
Binary files /dev/null and b/src/Tizen.NUI/res/close.png differ
diff --git a/src/Tizen.NUI/res/dark_close.png b/src/Tizen.NUI/res/dark_close.png
new file mode 100644 (file)
index 0000000..3868233
Binary files /dev/null and b/src/Tizen.NUI/res/dark_close.png differ
diff --git a/src/Tizen.NUI/res/dark_leftCorner.png b/src/Tizen.NUI/res/dark_leftCorner.png
new file mode 100644 (file)
index 0000000..283f0de
Binary files /dev/null and b/src/Tizen.NUI/res/dark_leftCorner.png differ
diff --git a/src/Tizen.NUI/res/dark_maximalize.png b/src/Tizen.NUI/res/dark_maximalize.png
new file mode 100644 (file)
index 0000000..f4e330e
Binary files /dev/null and b/src/Tizen.NUI/res/dark_maximalize.png differ
diff --git a/src/Tizen.NUI/res/dark_minimalize.png b/src/Tizen.NUI/res/dark_minimalize.png
new file mode 100644 (file)
index 0000000..9ad1355
Binary files /dev/null and b/src/Tizen.NUI/res/dark_minimalize.png differ
diff --git a/src/Tizen.NUI/res/dark_rightCorner.png b/src/Tizen.NUI/res/dark_rightCorner.png
new file mode 100644 (file)
index 0000000..a39807f
Binary files /dev/null and b/src/Tizen.NUI/res/dark_rightCorner.png differ
diff --git a/src/Tizen.NUI/res/dark_smallwindow.png b/src/Tizen.NUI/res/dark_smallwindow.png
new file mode 100644 (file)
index 0000000..0ac0bb8
Binary files /dev/null and b/src/Tizen.NUI/res/dark_smallwindow.png differ
diff --git a/src/Tizen.NUI/res/leftCorner.png b/src/Tizen.NUI/res/leftCorner.png
new file mode 100644 (file)
index 0000000..6f82440
Binary files /dev/null and b/src/Tizen.NUI/res/leftCorner.png differ
diff --git a/src/Tizen.NUI/res/maximalize.png b/src/Tizen.NUI/res/maximalize.png
new file mode 100644 (file)
index 0000000..c5cbbaf
Binary files /dev/null and b/src/Tizen.NUI/res/maximalize.png differ
diff --git a/src/Tizen.NUI/res/minimalize.png b/src/Tizen.NUI/res/minimalize.png
new file mode 100644 (file)
index 0000000..6b116b2
Binary files /dev/null and b/src/Tizen.NUI/res/minimalize.png differ
diff --git a/src/Tizen.NUI/res/rightCorner.png b/src/Tizen.NUI/res/rightCorner.png
new file mode 100644 (file)
index 0000000..68d837f
Binary files /dev/null and b/src/Tizen.NUI/res/rightCorner.png differ
diff --git a/src/Tizen.NUI/res/smallwindow.png b/src/Tizen.NUI/res/smallwindow.png
new file mode 100644 (file)
index 0000000..8f4263b
Binary files /dev/null and b/src/Tizen.NUI/res/smallwindow.png differ
index 73430e0..b434edb 100755 (executable)
@@ -1266,7 +1266,18 @@ namespace Tizen.NUI
                 return window;
             }
 
-            window = (Registry.GetManagedBaseHandleFromNativePtr(Interop.Application.GetWindow(SwigCPtr)) as Window) ?? new Window(Interop.Application.GetWindow(SwigCPtr), true);
+            var nativeWindow = Interop.Application.GetWindow(SwigCPtr);
+            window = Registry.GetManagedBaseHandleFromNativePtr(nativeWindow) as Window;
+            if (window != null)
+            {
+                HandleRef CPtr = new HandleRef(this, nativeWindow);
+                Interop.BaseHandle.DeleteBaseHandle(CPtr);
+                CPtr = new HandleRef(null, IntPtr.Zero);
+            }
+            else
+            {
+                window = new Window(nativeWindow, true);
+            }
 
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return window;
@@ -1302,7 +1313,7 @@ namespace Tizen.NUI
             List<Window> WindowList = new List<Window>();
             for (uint i = 0; i < ListSize; ++i)
             {
-                Window currWin = Registry.GetManagedBaseHandleFromNativePtr(Interop.Application.GetWindowsFromList(i)) as Window;
+                Window currWin = WindowList.GetInstanceSafely<Window>(Interop.Application.GetWindowsFromList(i));
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
                 if (currWin != null)
                 {
index b786600..f22cd94 100755 (executable)
@@ -167,6 +167,10 @@ namespace Tizen.NUI.EXaml
                         Value = valueString[0];
                         break;
 
+                    case 'y':
+                        Value = Type.Missing;
+                        break;
+
                     case 'z':
                         Value = null;
                         break;
index 32192f3..30051cf 100755 (executable)
@@ -232,6 +232,12 @@ namespace Tizen.NUI.EXaml
             {
                 globalDataList.LongStrings = opInfo[0] as string;
             };
+
+            createOperations[(int)EXamlOperationType.CreateDPObject] = (GlobalDataList globalDataList, List<object> opInfo) =>
+            {
+                var operation = new CreateDPObject(globalDataList, opInfo);
+                globalDataList.Operations.Add(operation);
+            };
         }
     }
 }
index 17fcd87..4c0e688 100755 (executable)
@@ -27,10 +27,27 @@ namespace Tizen.NUI.EXaml
             var globalDataList = new GlobalDataList();
 
             Action currentAction = new RootAction(globalDataList);
+            var rootAction = currentAction;
 
-            foreach (char c in xaml)
+            int index = 0;
+
+            for (; index < xaml.Length; index++)
+            {
+                var c = xaml[index];
+
+                if (currentAction == rootAction && '/' == c)
+                {
+                    break;
+                }
+                else
+                {
+                    currentAction = currentAction.DealChar(c);
+                }
+            }
+
+            for (index++; index < xaml.Length; index++)
             {
-                currentAction = currentAction.DealChar(c);
+                globalDataList.LongStrings += xaml[index];
             }
 
             foreach (var op in globalDataList.PreLoadOperations)
index 9f8746e..0d17015 100755 (executable)
@@ -42,8 +42,8 @@ namespace Tizen.NUI.EXaml
 
         public void Do()
         {
-            var type = globalDataList.GatheredTypes[typeIndex];
-            var array = Array.CreateInstance(type, null == items ? 0 : items.Count);
+            var type = typeIndex < 0 ? GetBaseType.GetBaseTypeByIndex(typeIndex) : globalDataList.GatheredTypes[typeIndex];
+            IList array = Array.CreateInstance(type, null == items ? 0 : items.Count);
 
             if (null != items)
             {
@@ -51,7 +51,11 @@ namespace Tizen.NUI.EXaml
                 {
                     if (items[i] is Instance instance)
                     {
-                        ((IList)array)[i] = globalDataList.GatheredInstances[instance.Index];
+                        array[i] = globalDataList.GatheredInstances[instance.Index];
+                    }
+                    else
+                    {
+                        array[i] = items[i];
                     }
                 }
             }
diff --git a/src/Tizen.NUI/src/internal/EXaml/Operation/CreateDPObject.cs b/src/Tizen.NUI/src/internal/EXaml/Operation/CreateDPObject.cs
new file mode 100755 (executable)
index 0000000..80d49cf
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * Copyright(c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Text;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Binding;
+using Tizen.NUI.Binding.Internals;
+using Tizen.NUI.Xaml;
+
+namespace Tizen.NUI.EXaml
+{
+    internal class CreateDPObject : Operation
+    {
+        public CreateDPObject(GlobalDataList globalDataList, List<object> operationInfos)
+        {
+            this.valueStr = operationInfos[0] as string;
+            this.typeIndex = (int)operationInfos[1];
+            this.globalDataList = globalDataList;
+        }
+
+        private GlobalDataList globalDataList;
+
+        public void Do()
+        {
+            if (0 > typeIndex)
+            {
+                object dpValue = null;
+
+                switch (typeIndex)
+                {
+                    case -3:
+                        dpValue = Convert.ToInt16(GraphicsTypeManager.Instance.ConvertScriptToPixel(valueStr));
+                        break;
+
+                    case -4:
+                        dpValue = Convert.ToInt32(GraphicsTypeManager.Instance.ConvertScriptToPixel(valueStr));
+                        break;
+
+                    case -5:
+                        dpValue = Convert.ToInt64(GraphicsTypeManager.Instance.ConvertScriptToPixel(valueStr));
+                        break;
+
+                    case -7:
+                        dpValue = Convert.ToUInt16(GraphicsTypeManager.Instance.ConvertScriptToPixel(valueStr));
+                        break;
+
+                    case -8:
+                        dpValue = Convert.ToUInt32(GraphicsTypeManager.Instance.ConvertScriptToPixel(valueStr));
+                        break;
+
+                    case -9:
+                        dpValue = Convert.ToUInt64(GraphicsTypeManager.Instance.ConvertScriptToPixel(valueStr));
+                        break;
+
+                    case -15:
+                        dpValue = Convert.ToSingle(GraphicsTypeManager.Instance.ConvertScriptToPixel(valueStr));
+                        break;
+
+                    case -16:
+                        dpValue = Convert.ToDouble(GraphicsTypeManager.Instance.ConvertScriptToPixel(valueStr));
+                        break;
+                }
+
+                if (null == dpValue)
+                {
+                    throw new Exception($"Can't convert {valueStr} to DP value of typeIndex {typeIndex}");
+                }
+
+                globalDataList.GatheredInstances.Add(dpValue);
+            }
+            else
+            {
+                var type = globalDataList.GatheredTypes[typeIndex];
+                throw new Exception($"Can't convert DP value of type {type.FullName}");
+            }
+        }
+
+        private int typeIndex;
+        private string valueStr;
+    }
+}
index ff0e890..a5477eb 100755 (executable)
@@ -16,6 +16,7 @@
  */
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using System.Reflection;
 using System.Text;
 using Tizen.NUI.BaseComponents;
@@ -83,7 +84,7 @@ namespace Tizen.NUI.EXaml
 
                     if (null == xFactoryMethod)
                     {
-                        obj = Activator.CreateInstance(type, paramList.ToArray());
+                        obj = Activator.CreateInstance(type, BindingFlags.CreateInstance | BindingFlags.Public | BindingFlags.Instance | BindingFlags.OptionalParamBinding, null, paramList.ToArray(), CultureInfo.CurrentCulture);
                     }
                     else
                     {
index 5db4643..5f3c06b 100755 (executable)
@@ -150,6 +150,14 @@ namespace Tizen.NUI
             public static extern global::System.IntPtr DaliAccessibilityEmitTextCursorMovedEvent(global::System.Runtime.InteropServices.HandleRef arg1, int arg2_pos);
 
             [EditorBrowsable(EditorBrowsableState.Never)]
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Accessibility_IsSuppressedEvent")]
+            public static extern bool DaliAccessibilityIsSuppressedEvent(global::System.Runtime.InteropServices.HandleRef arg1, int accessibilityEvent);
+
+            [EditorBrowsable(EditorBrowsableState.Never)]
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Accessibility_SetSuppressedEvent")]
+            public static extern void DaliAccessibilitySetSuppressedEvent(global::System.Runtime.InteropServices.HandleRef arg1, int accessibilityEvent, bool isSuppressed);
+
+            [EditorBrowsable(EditorBrowsableState.Never)]
             [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Accessibility_new_Range")]
             public static extern global::System.IntPtr DaliAccessibilityNewRange(int arg1_start, int arg2_end, string arg3_content);
 
index 363705d..174cdae 100755 (executable)
@@ -39,6 +39,9 @@ namespace Tizen.NUI
             [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_TextEditor_Property_HORIZONTAL_ALIGNMENT_get")]
             public static extern int HorizontalAlignmentGet();
 
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_TextEditor_Property_VERTICAL_ALIGNMENT_get")]
+            public static extern int VerticalAlignmentGet();
+
             [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_TextEditor_Property_SCROLL_THRESHOLD_get")]
             public static extern int ScrollThresholdGet();
 
index 97673c9..6021550 100755 (executable)
@@ -29,7 +29,7 @@ namespace Tizen.NUI.Binding
         {
             if (value != null)
             {
-                string[] parts = value.Split(',');
+                string[] parts = value.Split(TypeConverter.UnifiedDelimiter);
                 if (parts.Length == 4)
                 {
                     return new Extents((ushort)GraphicsTypeManager.Instance.ConvertScriptToPixel(parts[0].Trim()),
@@ -49,7 +49,7 @@ namespace Tizen.NUI.Binding
         public override string ConvertToString(object value)
         {
             Extents extents = (Extents)value;
-            return extents.Start.ToString() + " " + extents.End.ToString() + " " + extents.Top.ToString() + " " + extents.Bottom.ToString();
+            return extents.Start.ToString() + TypeConverter.UnifiedDelimiter + extents.End.ToString() + TypeConverter.UnifiedDelimiter + extents.Top.ToString() + TypeConverter.UnifiedDelimiter + extents.Bottom.ToString();
         }
     }
 }
index 1f5eabf..b1cdf96 100755 (executable)
@@ -30,7 +30,7 @@ namespace Tizen.NUI.Binding
             if (value == null)
                 return null;
 
-            return value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToList();
+            return value.Split(new[] { TypeConverter.UnifiedDelimiter }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToList();
         }
     }
 }
index ffd9207..f476c5f 100755 (executable)
@@ -73,7 +73,7 @@ namespace Tizen.NUI.Binding
                     }
                 }
 
-                parts = value.Split(',');
+                parts = value.Split(TypeConverter.UnifiedDelimiter);
                 if (parts.Length == 3)
                 {
                     int x = (int)GraphicsTypeManager.Instance.ConvertScriptToPixel(parts[0].Trim());
@@ -99,7 +99,7 @@ namespace Tizen.NUI.Binding
             Position position = value as Position;
             if (null != position)
             {
-                return position.X.ToString() + " " + position.Y.ToString() + " " + position.Z.ToString();
+                return position.X.ToString() + TypeConverter.UnifiedDelimiter + position.Y.ToString() + TypeConverter.UnifiedDelimiter + position.Z.ToString();
             }
             else
             {
@@ -126,7 +126,7 @@ namespace Tizen.NUI.Binding
             Position2D position = value as Position2D;
             if (null != position)
             {
-                return position.X.ToString() + " " + position.Y.ToString();
+                return position.X.ToString() + TypeConverter.UnifiedDelimiter + position.Y.ToString();
             }
             else
             {
index 8162506..35a2913 100755 (executable)
@@ -36,7 +36,7 @@ namespace Tizen.NUI.Binding
             if (value != null)
             {
                 double x, y, w, h;
-                string[] xywh = value.Split(',');
+                string[] xywh = value.Split(TypeConverter.UnifiedDelimiter);
                 if (xywh.Length == 4)
                 {
                     x = GraphicsTypeManager.Instance.ConvertScriptToPixel(xywh[0]);
@@ -57,7 +57,7 @@ namespace Tizen.NUI.Binding
             Rectangle rect = value as Rectangle;
             if (null != rect)
             {
-                return rect.X.ToString() + " " + rect.Y.ToString() + " " + rect.Width.ToString() + " " + rect.Height.ToString();
+                return rect.X.ToString() + TypeConverter.UnifiedDelimiter + rect.Y.ToString() + TypeConverter.UnifiedDelimiter + rect.Width.ToString() + TypeConverter.UnifiedDelimiter + rect.Height.ToString();
             }
             else
             {
index 56ef254..60841d3 100755 (executable)
@@ -35,7 +35,7 @@ namespace Tizen.NUI.Binding
             // Orientation="R:23, 0, 0, 1"
             if (value != null)
             {
-                string[] parts = value.Split(',');
+                string[] parts = value.Split(TypeConverter.UnifiedDelimiter);
                 if (parts.Length == 4)
                 {
                     bool useDefault = true;
index bc3de59..2d3a831 100755 (executable)
@@ -50,7 +50,7 @@ namespace Tizen.NUI.Binding
 
         internal static Vector2 FromString(string value)
         {
-            var parts = value.Split(',');
+            var parts = value.Split(TypeConverter.UnifiedDelimiter);
 
             if (parts.Length == 2)
             {
@@ -69,7 +69,7 @@ namespace Tizen.NUI.Binding
         {
             if (null != value)
             {
-                return value.X.ToString() + " " + value.Y.ToString();
+                return value.X.ToString() + TypeConverter.UnifiedDelimiter + value.Y.ToString();
             }
             else
             {
@@ -88,7 +88,7 @@ namespace Tizen.NUI.Binding
         {
             if (value != null)
             {
-                string[] parts = value.Split(',');
+                string[] parts = value.Split(TypeConverter.UnifiedDelimiter);
                 if (parts.Length == 3)
                 {
                     return new Vector3(Single.Parse(parts[0].Trim(), CultureInfo.InvariantCulture),
@@ -120,7 +120,7 @@ namespace Tizen.NUI.Binding
             Vector3 vector = value as Vector3;
             if (null != vector)
             {
-                return vector.X.ToString() + " " + vector.Y.ToString() + " " + vector.Z.ToString();
+                return vector.X.ToString() + TypeConverter.UnifiedDelimiter + vector.Y.ToString() + TypeConverter.UnifiedDelimiter + vector.Z.ToString();
             }
             else
             {
@@ -139,7 +139,7 @@ namespace Tizen.NUI.Binding
         {
             if (value != null)
             {
-                string[] parts = value.Split(',');
+                string[] parts = value.Split(TypeConverter.UnifiedDelimiter);
                 if (parts.Length == 4)
                 {
                     return new Vector4(Single.Parse(parts[0].Trim(), CultureInfo.InvariantCulture),
@@ -181,7 +181,7 @@ namespace Tizen.NUI.Binding
             Vector4 vector = value as Vector4;
             if (null != vector)
             {
-                return vector.X.ToString() + " " + vector.Y.ToString() + " " + vector.Z.ToString() + " " + vector.W.ToString();
+                return vector.X.ToString() + TypeConverter.UnifiedDelimiter + vector.Y.ToString() + TypeConverter.UnifiedDelimiter + vector.Z.ToString() + TypeConverter.UnifiedDelimiter + vector.W.ToString();
             }
             else
             {
@@ -200,7 +200,7 @@ namespace Tizen.NUI.Binding
         {
             if (value != null)
             {
-                string[] parts = value.Split(',');
+                string[] parts = value.Split(TypeConverter.UnifiedDelimiter);
                 if (parts.Length == 2)
                 {
                     return new RelativeVector2(Single.Parse(parts[0].Trim(), CultureInfo.InvariantCulture),
@@ -223,7 +223,7 @@ namespace Tizen.NUI.Binding
             RelativeVector2 vector = value as RelativeVector2;
             if (null != vector)
             {
-                return vector.X.ToString() + " " + vector.Y.ToString();
+                return vector.X.ToString() + TypeConverter.UnifiedDelimiter + vector.Y.ToString();
             }
             else
             {
@@ -242,7 +242,7 @@ namespace Tizen.NUI.Binding
         {
             if (value != null)
             {
-                string[] parts = value.Split(',');
+                string[] parts = value.Split(TypeConverter.UnifiedDelimiter);
                 if (parts.Length == 3)
                 {
                     return new RelativeVector3(Single.Parse(parts[0].Trim(), CultureInfo.InvariantCulture),
@@ -274,7 +274,7 @@ namespace Tizen.NUI.Binding
             RelativeVector3 vector = value as RelativeVector3;
             if (null != vector)
             {
-                return vector.X.ToString() + " " + vector.Y.ToString() + " " + vector.Z.ToString();
+                return vector.X.ToString() + TypeConverter.UnifiedDelimiter + vector.Y.ToString() + TypeConverter.UnifiedDelimiter + vector.Z.ToString();
             }
             else
             {
@@ -293,7 +293,7 @@ namespace Tizen.NUI.Binding
         {
             if (value != null)
             {
-                string[] parts = value.Split(',');
+                string[] parts = value.Split(TypeConverter.UnifiedDelimiter);
                 if (parts.Length == 4)
                 {
                     return new RelativeVector4(Single.Parse(parts[0].Trim(), CultureInfo.InvariantCulture),
@@ -335,7 +335,7 @@ namespace Tizen.NUI.Binding
             RelativeVector4 vector = value as RelativeVector4;
             if (null != vector)
             {
-                return vector.X.ToString() + " " + vector.Y.ToString() + " " + vector.Z.ToString() + " " + vector.W.ToString();
+                return vector.X.ToString() + TypeConverter.UnifiedDelimiter + vector.Y.ToString() + TypeConverter.UnifiedDelimiter + vector.Z.ToString() + TypeConverter.UnifiedDelimiter + vector.W.ToString();
             }
             else
             {
diff --git a/src/Tizen.NUI/src/public/Accessibility/IAtspiEditableText.cs b/src/Tizen.NUI/src/public/Accessibility/IAtspiEditableText.cs
new file mode 100644 (file)
index 0000000..4b6f538
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.ComponentModel;
+
+namespace Tizen.NUI.Accessibility
+{
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public interface IAtspiEditableText : IAtspiText
+    {
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilityCopyText(int startPosition, int endPosition);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilityCutText(int startPosition, int endPosition);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilityInsertText(int startPosition, string text);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilitySetTextContents(string newContents);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilityDeleteText(int startPosition, int endPosition);
+    }
+}
diff --git a/src/Tizen.NUI/src/public/Accessibility/IAtspiSelection.cs b/src/Tizen.NUI/src/public/Accessibility/IAtspiSelection.cs
new file mode 100644 (file)
index 0000000..2e57407
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.ComponentModel;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Accessibility
+{
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public interface IAtspiSelection
+    {
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        int AccessibilityGetSelectedChildrenCount();
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        View AccessibilityGetSelectedChild(int selectedChildIndex);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilitySelectChild(int childIndex);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilityDeselectSelectedChild(int selectedChildIndex);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilityIsChildSelected(int childIndex);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilitySelectAll();
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilityClearSelection();
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilityDeselectChild(int childIndex);
+    }
+}
diff --git a/src/Tizen.NUI/src/public/Accessibility/IAtspiText.cs b/src/Tizen.NUI/src/public/Accessibility/IAtspiText.cs
new file mode 100644 (file)
index 0000000..e610b89
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.ComponentModel;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Accessibility
+{
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public interface IAtspiText
+    {
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        string AccessibilityGetText(int startOffset, int endOffset);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        int AccessibilityGetCharacterCount();
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        int AccessibilityGetCursorOffset();
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilitySetCursorOffset(int offset);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        AccessibilityRange AccessibilityGetTextAtOffset(int offset, AccessibilityTextBoundary boundary);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        AccessibilityRange AccessibilityGetSelection(int selectionNumber);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilityRemoveSelection(int selectionNumber);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilitySetSelection(int selectionNumber, int startOffset, int endOffset);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        Rectangle AccessibilityGetRangeExtents(int startOffset, int endOffset, AccessibilityCoordinateType coordType);
+    }
+}
diff --git a/src/Tizen.NUI/src/public/Accessibility/IAtspiValue.cs b/src/Tizen.NUI/src/public/Accessibility/IAtspiValue.cs
new file mode 100644 (file)
index 0000000..338889f
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.ComponentModel;
+
+namespace Tizen.NUI.Accessibility
+{
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public interface IAtspiValue
+    {
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        double AccessibilityGetMinimum();
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        double AccessibilityGetCurrent();
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        double AccessibilityGetMaximum();
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        bool AccessibilitySetCurrent(double value);
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        double AccessibilityGetMinimumIncrement();
+    }
+}
index a11d87c..33c7898 100755 (executable)
@@ -40,6 +40,12 @@ namespace Tizen.NUI
         private static string currentLoadedXaml = null;
 
         /// <summary>
+        /// The border window
+        /// </summary>
+        private bool borderEnabled = false;
+        private IBorderInterface borderInterface = null;
+
+        /// <summary>
         /// Xaml loaded delegate.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
@@ -178,6 +184,22 @@ namespace Tizen.NUI
         }
 
         /// <summary>
+        /// The constructor with a stylesheet, window mode, size, position, theme option and boderInterface
+        /// It is the only way to create an IME window.
+        /// </summary>
+        /// <param name="styleSheet">The styleSheet URL.</param>
+        /// <param name="windowMode">The windowMode.</param>
+        /// <param name="windowSize">The window size.</param>
+        /// <param name="windowPosition">The window position.</param>
+        /// <param name="borderInterface"><see cref="Tizen.NUI.IBorderInterface"/>If borderInterface is null, defaultBorder is enabled.</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public NUIApplication(string styleSheet, Size2D windowSize, Position2D windowPosition, IBorderInterface borderInterface, WindowMode windowMode = WindowMode.Opaque) : base(new NUICoreBackend(styleSheet, windowMode, windowSize, windowPosition))
+        {
+            borderEnabled = true;
+            this.borderInterface = borderInterface;
+        }
+
+        /// <summary>
         /// Occurs whenever the application is resumed.
         /// </summary>
         /// <since_tizen> 4 </since_tizen>
@@ -454,6 +476,10 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         protected virtual void OnPreCreate()
         {
+            if (borderEnabled)
+            {
+                GetDefaultWindow().EnableBorder(borderInterface);
+            }
         }
 
         /// <summary>
@@ -486,7 +512,9 @@ namespace Tizen.NUI
         static public void Preload()
         {
             Interop.Application.PreInitialize();
+#if ExternalThemeEnabled
             ThemeManager.Preload();
+#endif
             IsPreload = true;
         }
 
index d437fde..097e430 100755 (executable)
@@ -388,7 +388,7 @@ namespace Tizen.NUI.BaseComponents
         {
             if (!imagePropertyUpdatedFlag) return;
 
-            if (resourceURLs?.Count != 0 && resourceURLs != null)
+            if (resourceURLs != null && resourceURLs.Count != 0)
             {
                 using (PropertyArray indexPropertyArray = new PropertyArray())
                 {
index 5488d86..c322b64 100755 (executable)
@@ -145,7 +145,7 @@ namespace Tizen.NUI.BaseComponents
         /// <since_tizen> 3 </since_tizen>
         public virtual void OnInitialize()
         {
-            SetAccessibilityConstructor(Role.Unknown);
+            AccessibilityRole = Role.Unknown;
             AppendAccessibilityAttribute("class", this.GetType().Name);
         }
 
index b91d0b8..b06e50e 100755 (executable)
@@ -25,7 +25,7 @@ namespace Tizen.NUI.Components
     /// Enumeration for describing the states of the view.
     /// </summary>
     [FlagsAttribute]
-    // Please remove this enum when 'Tizen.NUI.BaseComponents.Button.StateChangedEventArgs' and 'Tizen.NUI.BaseComponents.Slider.StateChangedArgs' are removed.
+    // Please remove this enum when 'Tizen.NUI.BaseComponents.Button.StateChangedEventArgs' is removed.
     [Obsolete("This will be removed in API10. Please use Tizen.NUI.BaseComponents.ControlState instead!")]
     [EditorBrowsable(EditorBrowsableState.Never)]
     public enum ControlStates
index b33d4b7..f7601fe 100755 (executable)
@@ -69,6 +69,12 @@ namespace Tizen.NUI.BaseComponents
             propertyChanged: (bindable, oldValue, newValue) => ((TextEditorStyle)bindable).horizontalAlignment = (HorizontalAlignment?)newValue,
             defaultValueCreator: (bindable) => ((TextEditorStyle)bindable).horizontalAlignment);
 
+        /// <summary> The bindable property of VerticalAlignment. </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        internal static readonly BindableProperty VerticalAlignmentProperty = BindableProperty.Create(nameof(VerticalAlignment), typeof(VerticalAlignment?), typeof(TextEditorStyle), null,
+            propertyChanged: (bindable, oldValue, newValue) => ((TextEditorStyle)bindable).verticalAlignment = (VerticalAlignment?)newValue,
+            defaultValueCreator: (bindable) => ((TextEditorStyle)bindable).verticalAlignment);
+
         /// <summary> The bindable property of SecondaryCursorColor. </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
         internal static readonly BindableProperty SecondaryCursorColorProperty = BindableProperty.Create(nameof(SecondaryCursorColor), typeof(Vector4), typeof(TextEditorStyle), null,
@@ -258,6 +264,7 @@ namespace Tizen.NUI.BaseComponents
         });
 
         private HorizontalAlignment? horizontalAlignment;
+        private VerticalAlignment? verticalAlignment;
         private Vector4 secondaryCursorColor;
         private bool? enableCursorBlink;
         private float? cursorBlinkInterval;
@@ -324,6 +331,16 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
+        /// The VerticalAlignment property.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public VerticalAlignment? VerticalAlignment
+        {
+            get => (VerticalAlignment?)GetValue(VerticalAlignmentProperty);
+            set => SetValue(VerticalAlignmentProperty, value);
+        }
+
+        /// <summary>
         /// The SecondaryCursorColor property.
         /// Note that the cascade chaining set is impossible. Please set a whole value.
         /// </summary>
index 4f151fc..c04bbd9 100755 (executable)
@@ -86,6 +86,7 @@ namespace Tizen.NUI.BaseComponents
             {
                 SetVisible(false);
             }
+            Focusable = true;
         }
 
         /// <summary>
@@ -328,6 +329,24 @@ namespace Tizen.NUI.BaseComponents
         }
 
         /// <summary>
+        /// The VerticalAlignment property.<br />
+        /// The line vertical alignment.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public VerticalAlignment VerticalAlignment
+        {
+            get
+            {
+                return (VerticalAlignment)GetValue(VerticalAlignmentProperty);
+            }
+            set
+            {
+                SetValue(VerticalAlignmentProperty, value);
+                NotifyPropertyChanged();
+            }
+        }
+
+        /// <summary>
         /// The ScrollThreshold property.<br />
         /// Horizontal scrolling will occur if the cursor is this close to the control border.<br />
         /// </summary>
@@ -2525,6 +2544,7 @@ namespace Tizen.NUI.BaseComponents
             internal static readonly int FontStyle = Interop.TextEditor.FontStyleGet();
             internal static readonly int PointSize = Interop.TextEditor.PointSizeGet();
             internal static readonly int HorizontalAlignment = Interop.TextEditor.HorizontalAlignmentGet();
+            internal static readonly int VerticalAlignment = Interop.TextEditor.VerticalAlignmentGet();
             internal static readonly int ScrollThreshold = Interop.TextEditor.ScrollThresholdGet();
             internal static readonly int ScrollSpeed = Interop.TextEditor.ScrollSpeedGet();
             internal static readonly int PrimaryCursorColor = Interop.TextEditor.PrimaryCursorColorGet();
index 38077a2..ffa0f92 100755 (executable)
@@ -132,6 +132,26 @@ namespace Tizen.NUI.BaseComponents
 
             return temp.GetValueByDescription<HorizontalAlignment>();
         }));
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public static readonly BindableProperty VerticalAlignmentProperty = BindableProperty.Create(nameof(VerticalAlignment), typeof(VerticalAlignment), typeof(TextEditor), VerticalAlignment.Bottom, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        {
+            var textEditor = (TextEditor)bindable;
+            if (newValue != null)
+            {
+                Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)textEditor.SwigCPtr, TextEditor.Property.VerticalAlignment, new Tizen.NUI.PropertyValue((int)newValue));
+            }
+        }),
+        defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
+        {
+            var textEditor = (TextEditor)bindable;
+            string temp;
+            if (Tizen.NUI.Object.GetProperty((System.Runtime.InteropServices.HandleRef)textEditor.SwigCPtr, TextEditor.Property.VerticalAlignment).Get(out temp) == false)
+            {
+                NUILog.Error("VerticalAlignment get error!");
+            }
+
+            return temp.GetValueByDescription<VerticalAlignment>();
+        }));
         /// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
         [EditorBrowsable(EditorBrowsableState.Never)]
         public static readonly BindableProperty ScrollThresholdProperty = BindableProperty.Create(nameof(ScrollThreshold), typeof(float), typeof(TextEditor), default(float), propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
index e3a808b..e9469a3 100755 (executable)
@@ -77,6 +77,7 @@ namespace Tizen.NUI.BaseComponents
             {
                 SetVisible(false);
             }
+            Focusable = true;
         }
 
         internal TextField(global::System.IntPtr cPtr, bool cMemoryOwn, bool shown = true) : base(cPtr, cMemoryOwn, null)
@@ -85,6 +86,7 @@ namespace Tizen.NUI.BaseComponents
             {
                 SetVisible(false);
             }
+            Focusable = true;
         }
 
         internal TextField(TextField handle, bool shown = true) : this(Interop.TextField.NewTextField(TextField.getCPtr(handle)), true)
index 1d7a348..16140f2 100755 (executable)
@@ -31,6 +31,7 @@ namespace Tizen.NUI.BaseComponents
         private static HashSet<BindableProperty> positionPropertyGroup = new HashSet<BindableProperty>();
         private static HashSet<BindableProperty> sizePropertyGroup = new HashSet<BindableProperty>();
         private static HashSet<BindableProperty> scalePropertyGroup = new HashSet<BindableProperty>();
+        private static bool defaultGrabTouchAfterLeave = false;
 
         internal BackgroundExtraData backgroundExtraData;
 
@@ -152,6 +153,7 @@ namespace Tizen.NUI.BaseComponents
                 SetVisible(false);
             }
 
+            GrabTouchAfterLeave = defaultGrabTouchAfterLeave;
         }
 
         internal View(ViewImpl implementation, bool shown = true) : this(Interop.View.NewViewInternal(ViewImpl.getCPtr(implementation)), true)
@@ -196,6 +198,16 @@ namespace Tizen.NUI.BaseComponents
         public static bool LayoutingDisabled { get; set; } = true;
 
         /// <summary>
+        /// If set to true, the <see cref="GrabTouchAfterLeave"/> property value is set to true when all Views are created.
+        /// </summary>
+        /// <param name="enable">Sets value of GrabTouchAfterLeave property</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public static void SetDefaultGrabTouchAfterLeave(bool enable)
+        {
+            defaultGrabTouchAfterLeave = enable;
+        }
+
+        /// <summary>
         /// Deprecate. Please do not use this.
         /// The style instance applied to this view.
         /// Note that please do not modify the ViewStyle.
index 81dd87a..be93bbe 100755 (executable)
@@ -422,6 +422,18 @@ namespace Tizen.NUI.BaseComponents
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
+        /// <summary>
+        /// Modifiable collection of suppressed AT-SPI events (D-Bus signals).
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public AccessibilityEvents AccessibilitySuppressedEvents
+        {
+            get
+            {
+                return new AccessibilityEvents {Owner = this};
+            }
+        }
+
         ///////////////////////////////////////////////////////////////////
         // ************************** Bridge *************************** //
         ///////////////////////////////////////////////////////////////////
@@ -452,22 +464,6 @@ namespace Tizen.NUI.BaseComponents
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
-        /// <summary>
-        /// Sets the specific constructor for creating accessibility structure with its role and interface.
-        /// </summary>
-        /// <remarks>
-        /// The method should be called inside OnInitialize method of all classes inheriting from View.
-        /// </remarks>
-        /// <param name="role">Accessibility role</param>
-        /// <param name="accessibilityInterface">Accessibility interface</param>
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        public void SetAccessibilityConstructor(Role role, AccessibilityInterface accessibilityInterface = AccessibilityInterface.None)
-        {
-            // We have to store the interface flags until we remove SetAccessibilityConstructor and switch to native C# interfaces
-            AtspiInterfaceFlags = (1U << (int)accessibilityInterface);
-            AccessibilityRole = role;
-        }
-
         [EditorBrowsable(EditorBrowsableState.Never)]
         protected override void Dispose(bool disposing)
         {
@@ -573,177 +569,15 @@ namespace Tizen.NUI.BaseComponents
         }
 
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual double AccessibilityGetMinimum()
-        {
-            return 0.0;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual double AccessibilityGetCurrent()
-        {
-            return 0.0;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual double AccessibilityGetMaximum()
-        {
-            return 0.0;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilitySetCurrent(double value)
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual double AccessibilityGetMinimumIncrement()
-        {
-            return 0.0;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
         protected virtual bool AccessibilityIsScrollable()
         {
             return false;
         }
 
         [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual string AccessibilityGetText(int startOffset, int endOffset)
-        {
-            return "";
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual int AccessibilityGetCharacterCount()
-        {
-            return 0;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual int AccessibilityGetCursorOffset()
-        {
-            return 0;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilitySetCursorOffset(int offset)
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual AccessibilityRange AccessibilityGetTextAtOffset(int offset, AccessibilityTextBoundary boundary)
-        {
-            return new AccessibilityRange();
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual AccessibilityRange AccessibilityGetSelection(int selectionNumber)
-        {
-            return new AccessibilityRange();
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilityRemoveSelection(int selectionNumber)
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilitySetSelection(int selectionNumber, int startOffset, int endOffset)
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual Rectangle AccessibilityGetRangeExtents(int startOffset, int endOffset, AccessibilityCoordinateType coordType)
-        {
-            return new Rectangle(0, 0, 0, 0);
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilityCopyText(int startPosition, int endPosition)
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilityCutText(int startPosition, int endPosition)
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilityInsertText(int startPosition, string text)
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilitySetTextContents(string newContents)
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilityDeleteText(int startPosition, int endPosition)
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
         protected virtual bool AccessibilityScrollToChild(View child)
         {
             return false;
         }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual int AccessibilityGetSelectedChildrenCount()
-        {
-            return 0;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual View AccessibilityGetSelectedChild(int selectedChildIndex)
-        {
-            return null;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilitySelectChild(int childIndex)
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilityDeselectSelectedChild(int selectedChildIndex)
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilityIsChildSelected(int childIndex)
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilitySelectAll()
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilityClearSelection()
-        {
-            return false;
-        }
-
-        [EditorBrowsable(EditorBrowsableState.Never)]
-        protected virtual bool AccessibilityDeselectChild(int childIndex)
-        {
-            return false;
-        }
     }
 }
index cec25b6..b89c7c1 100755 (executable)
@@ -27,7 +27,7 @@ namespace Tizen.NUI.BaseComponents
     /// </summary>
     // Values are from Dali::Accessibility::AtspiInterface
     [EditorBrowsable(EditorBrowsableState.Never)]
-    public enum AccessibilityInterface
+    internal enum AccessibilityInterface
     {
         /// <summary>
         /// Common accessibility interface
@@ -40,6 +40,11 @@ namespace Tizen.NUI.BaseComponents
         [EditorBrowsable(EditorBrowsableState.Never)]
         Value = 26,
         /// <summary>
+        /// Accessibility interface which can store text
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        Text = 25,
+        /// <summary>
         /// Accessibility interface which can store editable texts
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
@@ -564,7 +569,7 @@ namespace Tizen.NUI.BaseComponents
     };
 
     /// <summary>
-    /// A collection of AccessibilityStates
+    /// AccessibilityStates is a collection of AccessibilityState's
     /// </summary>
     /// <seealso cref="AccessibilityState"/>
     [EditorBrowsable(EditorBrowsableState.Never)]
@@ -606,6 +611,162 @@ namespace Tizen.NUI.BaseComponents
     }
 
     /// <summary>
+    /// Enumeration of possible AT-SPI events.
+    /// </summary>
+    /// <seealso cref="AccessibilityEvents"/>
+    /// <remarks>
+    /// Accessible can emit differty type of event.
+    /// </remarks>
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public enum AccessibilityEvent
+    {
+        /// <summary>
+        /// Property changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        PropertyChanged         = 0,
+        /// <summary>
+        /// Bounds changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        BoundsChanged           = 1,
+        /// <summary>
+        /// Link selected event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        LinkSelected            = 2,
+        /// <summary>
+        /// State changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        StateChanged            = 3,
+        /// <summary>
+        /// Children changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        ChildrenChanged         = 4,
+        /// <summary>
+        /// Visible data changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        VisibleDataChanged      = 5,
+        /// <summary>
+        /// Selection changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        SelectionChanged        = 6,
+        /// <summary>
+        /// Model changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        ModelChanged            = 7,
+        /// <summary>
+        /// Active descendant changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        ActiveDescendantChanged = 8,
+        /// <summary>
+        /// Row inserted event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        RowInserted             = 9,
+        /// <summary>
+        /// Row reordered event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        RowReordered            = 10,
+        /// <summary>
+        /// Row deleted event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        RowDeleted              = 11,
+        /// <summary>
+        /// Column inserted event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        ColumnInserted          = 12,
+        /// <summary>
+        /// Column reordered event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        ColumnReordered         = 13,
+        /// <summary>
+        /// Column deleted event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        ColumnDeleted           = 14,
+        /// <summary>
+        /// Text bounds changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        TextBoundsChanged       = 15,
+        /// <summary>
+        /// Text selection changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        TextSelectionChanged    = 16,
+        /// <summary>
+        /// Text changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        TextChanged             = 17,
+        /// <summary>
+        /// Text attributes changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        TextAttributesChanged   = 18,
+        /// <summary>
+        /// Text caret moved event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        TextCaretMoved          = 19,
+        /// <summary>
+        /// Attributes changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        AttributesChanged       = 20,
+        /// <summary>
+        /// Moved out event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        MovedOut                = 21,
+        /// <summary>
+        /// Window changed event.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        WindowChanged           = 22,
+    };
+
+    /// <summary>
+    /// AccessibilityEvents is a collection of AccessibilityEvent's
+    /// </summary>
+    /// <seealso cref="AccessibilityEvent"/>
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public class AccessibilityEvents
+    {
+        // Target object for interop call
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        internal View Owner { get; set; }
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public bool this[AccessibilityEvent accessibilityEvent]
+        {
+            [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations", Justification = "SWIG boilerplate, no exceptions are expected")]
+            get
+            {
+                bool result = Interop.ControlDevel.DaliAccessibilityIsSuppressedEvent(Owner.SwigCPtr, (int)accessibilityEvent);
+                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+                return result;
+            }
+            set
+            {
+                Interop.ControlDevel.DaliAccessibilitySetSuppressedEvent(Owner.SwigCPtr, (int)accessibilityEvent, value);
+                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            }
+        }
+    }
+
+    /// <summary>
     /// Notify mode for AccessibilityStates.
     /// </summary>
     [EditorBrowsable(EditorBrowsableState.Never)]
@@ -1411,7 +1572,7 @@ namespace Tizen.NUI.BaseComponents
     /// <summary>
     /// Accessibility text boundary is used in text controls.
     /// </summary>
-    /// <seealso cref="View.AccessibilityGetTextAtOffset" />
+    /// <seealso cref="Accessibility.IAtspiText.AccessibilityGetTextAtOffset" />
     /// <remarks>
     /// Currently, only AccessibilityTextBoundary.Character is supported.
     /// </remarks>
@@ -1460,7 +1621,7 @@ namespace Tizen.NUI.BaseComponents
     /// <summary>
     /// Accessibility coordinate type describing if coordinates are relative to screen or window
     /// </summary>
-    /// <seealso cref="View.AccessibilityGetRangeExtents" />
+    /// <seealso cref="Accessibility.IAtspiText.AccessibilityGetRangeExtents" />
     [EditorBrowsable(EditorBrowsableState.Never)]
     public enum AccessibilityCoordinateType
     {
index a298f58..d83ffde 100644 (file)
@@ -17,6 +17,7 @@
 
 using System;
 using System.Runtime.InteropServices;
+using Tizen.NUI.Accessibility;
 
 namespace Tizen.NUI.BaseComponents
 {
@@ -24,9 +25,6 @@ namespace Tizen.NUI.BaseComponents
     {
         private static AccessibilityStates AccessibilityInitialStates = new AccessibilityStates();
 
-        // To be removed when native C# AT-SPI interfaces are implemented.
-        private uint? AtspiInterfaceFlags = null;
-
         private static void RegisterAccessibilityDelegate()
         {
             InitializeAccessibilityDelegateAccessibleInterface();
@@ -51,6 +49,20 @@ namespace Tizen.NUI.BaseComponents
             return Registry.GetManagedBaseHandleFromRefObject(refObjectPtr) as View;
         }
 
+        private static T GetInterfaceFromRefObject<T>(IntPtr refObjectPtr)
+        {
+            var view = GetViewFromRefObject(refObjectPtr);
+
+            // NUIViewAccessible::CallMethod<T> checks whether a given interface is implemented
+            // before jumping to managed code, so this condition should always be true.
+            if (view is T atspiInterface)
+            {
+                return atspiInterface;
+            }
+
+            return default(T);
+        }
+
         private static IntPtr DuplicateString(string value)
         {
             return Interop.ControlDevel.DaliAccessibilityDuplicateString(value ?? "");
@@ -104,25 +116,30 @@ namespace Tizen.NUI.BaseComponents
 
         private static uint AccessibilityGetInterfaces(IntPtr self)
         {
-            // Currently a maximum of one AccessibilityInterface per View is supported.
-            // This will change when we implement AT-SPI interfaces as native C# interfaces.
-            // Then, this method will look like:
-            //
-            // uint flags = 0U;
-            // if (view is IAtspiSelection) flags |= (1U << (int)AccessibilityInterface.Selection)
-            // if (view is IAtspiValue) flags |= (1U << (int)AccessibilityInterface.Value)
-            // ...
-            // return flags;
-
             View view = GetViewFromRefObject(self);
+            uint flags = 0U;
+
+            if (view is IAtspiEditableText)
+            {
+                flags |= (1U << (int)AccessibilityInterface.EditableText);
+            }
+
+            if (view is IAtspiSelection)
+            {
+                flags |= (1U << (int)AccessibilityInterface.Selection);
+            }
+
+            if (view is IAtspiText)
+            {
+                flags |= (1U << (int)AccessibilityInterface.Text);
+            }
 
-            if (!view.AtspiInterfaceFlags.HasValue)
+            if (view is IAtspiValue)
             {
-                NUILog.Error("AtspiInterfaceFlags are not set!");
-                return 0U;
+                flags |= (1U << (int)AccessibilityInterface.Value);
             }
 
-            return view.AtspiInterfaceFlags.Value;
+            return flags;
         }
 
         private static IntPtr AccessibilityGetNameWrapper(IntPtr self)
@@ -195,27 +212,27 @@ namespace Tizen.NUI.BaseComponents
 
         private static bool AccessibilityCopyTextWrapper(IntPtr self, int startPosition, int endPosition)
         {
-            return GetViewFromRefObject(self).AccessibilityCopyText(startPosition, endPosition);
+            return GetInterfaceFromRefObject<IAtspiEditableText>(self).AccessibilityCopyText(startPosition, endPosition);
         }
 
         private static bool AccessibilityCutTextWrapper(IntPtr self, int startPosition, int endPosition)
         {
-            return GetViewFromRefObject(self).AccessibilityCutText(startPosition, endPosition);
+            return GetInterfaceFromRefObject<IAtspiEditableText>(self).AccessibilityCutText(startPosition, endPosition);
         }
 
         private static bool AccessibilityDeleteTextWrapper(IntPtr self, int startPosition, int endPosition)
         {
-            return GetViewFromRefObject(self).AccessibilityDeleteText(startPosition, endPosition);
+            return GetInterfaceFromRefObject<IAtspiEditableText>(self).AccessibilityDeleteText(startPosition, endPosition);
         }
 
         private static bool AccessibilityInsertTextWrapper(IntPtr self, int startPosition, IntPtr text)
         {
-            return GetViewFromRefObject(self).AccessibilityInsertText(startPosition, Marshal.PtrToStringAnsi(text));
+            return GetInterfaceFromRefObject<IAtspiEditableText>(self).AccessibilityInsertText(startPosition, Marshal.PtrToStringAnsi(text));
         }
 
         private static bool AccessibilitySetTextContentsWrapper(IntPtr self, IntPtr newContents)
         {
-            return GetViewFromRefObject(self).AccessibilitySetTextContents(Marshal.PtrToStringAnsi(newContents));
+            return GetInterfaceFromRefObject<IAtspiEditableText>(self).AccessibilitySetTextContents(Marshal.PtrToStringAnsi(newContents));
         }
 
         //
@@ -238,44 +255,44 @@ namespace Tizen.NUI.BaseComponents
 
         private static bool AccessibilityClearSelectionWrapper(IntPtr self)
         {
-            return GetViewFromRefObject(self).AccessibilityClearSelection();
+            return GetInterfaceFromRefObject<IAtspiSelection>(self).AccessibilityClearSelection();
         }
 
         private static bool AccessibilityDeselectChildWrapper(IntPtr self, int childIndex)
         {
-            return GetViewFromRefObject(self).AccessibilityDeselectChild(childIndex);
+            return GetInterfaceFromRefObject<IAtspiSelection>(self).AccessibilityDeselectChild(childIndex);
         }
 
         private static bool AccessibilityDeselectSelectedChildWrapper(IntPtr self, int selectedChildIndex)
         {
-            return GetViewFromRefObject(self).AccessibilityDeselectSelectedChild(selectedChildIndex);
+            return GetInterfaceFromRefObject<IAtspiSelection>(self).AccessibilityDeselectSelectedChild(selectedChildIndex);
         }
 
         private static IntPtr AccessibilityGetSelectedChildWrapper(IntPtr self, int selectedChildIndex)
         {
-            View child = GetViewFromRefObject(self).AccessibilityGetSelectedChild(selectedChildIndex);
+            View child = GetInterfaceFromRefObject<IAtspiSelection>(self).AccessibilityGetSelectedChild(selectedChildIndex);
 
             return View.getCPtr(child).Handle;
         }
 
         private static int AccessibilityGetSelectedChildrenCountWrapper(IntPtr self)
         {
-            return GetViewFromRefObject(self).AccessibilityGetSelectedChildrenCount();
+            return GetInterfaceFromRefObject<IAtspiSelection>(self).AccessibilityGetSelectedChildrenCount();
         }
 
         private static bool AccessibilityIsChildSelectedWrapper(IntPtr self, int childIndex)
         {
-            return GetViewFromRefObject(self).AccessibilityIsChildSelected(childIndex);
+            return GetInterfaceFromRefObject<IAtspiSelection>(self).AccessibilityIsChildSelected(childIndex);
         }
 
         private static bool AccessibilitySelectAllWrapper(IntPtr self)
         {
-            return GetViewFromRefObject(self).AccessibilitySelectAll();
+            return GetInterfaceFromRefObject<IAtspiSelection>(self).AccessibilitySelectAll();
         }
 
         private static bool AccessibilitySelectChildWrapper(IntPtr self, int childIndex)
         {
-            return GetViewFromRefObject(self).AccessibilitySelectChild(childIndex);
+            return GetInterfaceFromRefObject<IAtspiSelection>(self).AccessibilitySelectChild(childIndex);
         }
 
         //
@@ -299,55 +316,55 @@ namespace Tizen.NUI.BaseComponents
 
         private static int AccessibilityGetCharacterCountWrapper(IntPtr self)
         {
-            return GetViewFromRefObject(self).AccessibilityGetCharacterCount();
+            return GetInterfaceFromRefObject<IAtspiText>(self).AccessibilityGetCharacterCount();
         }
 
         private static int AccessibilityGetCursorOffsetWrapper(IntPtr self)
         {
-            return GetViewFromRefObject(self).AccessibilityGetCursorOffset();
+            return GetInterfaceFromRefObject<IAtspiText>(self).AccessibilityGetCursorOffset();
         }
 
         private static IntPtr AccessibilityGetRangeExtentsWrapper(IntPtr self, int startOffset, int endOffset, int coordType)
         {
-            using Rectangle rect = GetViewFromRefObject(self).AccessibilityGetRangeExtents(startOffset, endOffset, (AccessibilityCoordinateType)coordType);
+            using Rectangle rect = GetInterfaceFromRefObject<IAtspiText>(self).AccessibilityGetRangeExtents(startOffset, endOffset, (AccessibilityCoordinateType)coordType);
 
             return DuplicateAccessibilityRectangle(rect);
         }
 
         private static IntPtr AccessibilityGetSelectionWrapper(IntPtr self, int selectionNumber)
         {
-            AccessibilityRange range = GetViewFromRefObject(self).AccessibilityGetSelection(selectionNumber);
+            AccessibilityRange range = GetInterfaceFromRefObject<IAtspiText>(self).AccessibilityGetSelection(selectionNumber);
 
             return DuplicateAccessibilityRange(range);
         }
 
         private static IntPtr AccessibilityGetTextWrapper(IntPtr self, int startOffset, int endOffset)
         {
-            string text = GetViewFromRefObject(self).AccessibilityGetText(startOffset, endOffset);
+            string text = GetInterfaceFromRefObject<IAtspiText>(self).AccessibilityGetText(startOffset, endOffset);
 
             return DuplicateString(text);
         }
 
         private static IntPtr AccessibilityGetTextAtOffsetWrapper(IntPtr self, int offset, int boundary)
         {
-            AccessibilityRange range = GetViewFromRefObject(self).AccessibilityGetTextAtOffset(offset, (AccessibilityTextBoundary)boundary);
+            AccessibilityRange range = GetInterfaceFromRefObject<IAtspiText>(self).AccessibilityGetTextAtOffset(offset, (AccessibilityTextBoundary)boundary);
 
             return DuplicateAccessibilityRange(range);
         }
 
         private static bool AccessibilityRemoveSelectionWrapper(IntPtr self, int selectionNumber)
         {
-            return GetViewFromRefObject(self).AccessibilityRemoveSelection(selectionNumber);
+            return GetInterfaceFromRefObject<IAtspiText>(self).AccessibilityRemoveSelection(selectionNumber);
         }
 
         private static bool AccessibilitySetCursorOffsetWrapper(IntPtr self, int offset)
         {
-            return GetViewFromRefObject(self).AccessibilitySetCursorOffset(offset);
+            return GetInterfaceFromRefObject<IAtspiText>(self).AccessibilitySetCursorOffset(offset);
         }
 
         private static bool AccessibilitySetSelectionWrapper(IntPtr self, int selectionNumber, int startOffset, int endOffset)
         {
-            return GetViewFromRefObject(self).AccessibilitySetSelection(selectionNumber, startOffset, endOffset);
+            return GetInterfaceFromRefObject<IAtspiText>(self).AccessibilitySetSelection(selectionNumber, startOffset, endOffset);
         }
 
         //
@@ -367,27 +384,27 @@ namespace Tizen.NUI.BaseComponents
 
         private static double AccessibilityGetCurrentWrapper(IntPtr self)
         {
-            return GetViewFromRefObject(self).AccessibilityGetCurrent();
+            return GetInterfaceFromRefObject<IAtspiValue>(self).AccessibilityGetCurrent();
         }
 
         private static double AccessibilityGetMaximumWrapper(IntPtr self)
         {
-            return GetViewFromRefObject(self).AccessibilityGetMaximum();
+            return GetInterfaceFromRefObject<IAtspiValue>(self).AccessibilityGetMaximum();
         }
 
         private static double AccessibilityGetMinimumWrapper(IntPtr self)
         {
-            return GetViewFromRefObject(self).AccessibilityGetMinimum();
+            return GetInterfaceFromRefObject<IAtspiValue>(self).AccessibilityGetMinimum();
         }
 
         private static double AccessibilityGetMinimumIncrementWrapper(IntPtr self)
         {
-            return GetViewFromRefObject(self).AccessibilityGetMinimumIncrement();
+            return GetInterfaceFromRefObject<IAtspiValue>(self).AccessibilityGetMinimumIncrement();
         }
 
         private static bool AccessibilitySetCurrentWrapper(IntPtr self, double value)
         {
-            return GetViewFromRefObject(self).AccessibilitySetCurrent(value);
+            return GetInterfaceFromRefObject<IAtspiValue>(self).AccessibilitySetCurrent(value);
         }
 
         //
index 40f15c2..755671d 100755 (executable)
@@ -1203,7 +1203,7 @@ namespace Tizen.NUI.BaseComponents
         /// IsEnabledProperty
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public static readonly BindableProperty IsEnabledProperty = BindableProperty.Create(nameof(Sensitive), typeof(bool), typeof(View), false, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
+        public static readonly BindableProperty IsEnabledProperty = BindableProperty.Create(nameof(IsEnabled), typeof(bool), typeof(View), false, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
         {
             var view = (View)bindable;
             if (newValue != null)
index c05e499..adfc4cc 100755 (executable)
@@ -614,27 +614,6 @@ namespace Tizen.NUI.BaseComponents
             return ret;
         }
 
-        internal void SetPosition(float x, float y)
-        {
-            Interop.ActorInternal.SetPosition(SwigCPtr, x, y);
-            if (NDalicPINVOKE.SWIGPendingException.Pending)
-                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-        }
-
-        internal void SetPosition(float x, float y, float z)
-        {
-            Interop.ActorInternal.SetPosition(SwigCPtr, x, y, z);
-            if (NDalicPINVOKE.SWIGPendingException.Pending)
-                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-        }
-
-        internal void SetPosition(Vector3 position)
-        {
-            Interop.ActorInternal.SetPosition(SwigCPtr, Vector3.getCPtr(position));
-            if (NDalicPINVOKE.SWIGPendingException.Pending)
-                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-        }
-
         internal void SetX(float x)
         {
             Interop.ActorInternal.SetX(SwigCPtr, x);
index f78edcb..801ed1c 100755 (executable)
@@ -826,5 +826,57 @@ namespace Tizen.NUI.BaseComponents
 
         }
 
+        /// <summary>
+        /// Sets the position of the View.
+        /// The coordinates are relative to the View's parent.
+        /// The View's z position will be set to 0.0f.
+        /// </summary>
+        /// <param name="x">The new x position</param>
+        /// <param name="y">The new y position</param>
+        /// <remarks>
+        /// This is a hidden API(inhouse API) only for internal purpose.
+        /// </remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void SetPosition(float x, float y)
+        {
+            Interop.ActorInternal.SetPosition(SwigCPtr, x, y);
+            if (NDalicPINVOKE.SWIGPendingException.Pending)
+                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Sets the position of the View.
+        /// The coordinates are relative to the View's parent.
+        /// </summary>
+        /// <param name="x">The new x position</param>
+        /// <param name="y">The new y position</param>
+        /// <param name="z">The new z position</param>
+        /// <remarks>
+        /// This is a hidden API(inhouse API) only for internal purpose.
+        /// </remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void SetPosition(float x, float y, float z)
+        {
+            Interop.ActorInternal.SetPosition(SwigCPtr, x, y, z);
+            if (NDalicPINVOKE.SWIGPendingException.Pending)
+                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+        /// <summary>
+        /// Sets the position of the View.
+        /// The coordinates are relative to the View's parent.
+        /// </summary>
+        /// <param name="position">The new position</param>
+        /// <remarks>
+        /// This is a hidden API(inhouse API) only for internal purpose.
+        /// </remarks>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void SetPosition(Vector3 position)
+        {
+            Interop.ActorInternal.SetPosition(SwigCPtr, Vector3.getCPtr(position));
+            if (NDalicPINVOKE.SWIGPendingException.Pending)
+                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
     }
 }
index 886c093..84cee9e 100755 (executable)
@@ -1082,10 +1082,10 @@ namespace Tizen.NUI
         /// The red component.
         /// </summary>
         /// <remarks>
-        /// The setter is deprecated in API8 and will be removed in API10. Please use new Color(...) constructor.
+        /// The setter is deprecated in API8 and will be removed in API10. Use the new Color(...) constructor.
         /// </remarks>
         /// <code>
-        /// // DO NOT use like the followings!
+        /// // DO NOT use as follows:
         /// Color color = new Color();
         /// color.R = 0.1f; 
         /// // Please USE like this
@@ -1095,7 +1095,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public float R
         {
-            [Obsolete("Please do not use this setter, Deprecated in API8, will be removed in API10. please use new Color(...) constructor")]
+            [Obsolete("Please do not use this setter, Deprecated in API8, will be removed in API10. Use the new Color(...) constructor")]
             set
             {
                 Interop.Vector4.RSet(SwigCPtr, ValueCheck(value));
@@ -1115,10 +1115,10 @@ namespace Tizen.NUI
         /// The green component.
         /// </summary>
         /// <remarks>
-        /// The setter is deprecated in API8 and will be removed in API10. Please use new Color(...) constructor.
+        /// The setter is deprecated in API8 and will be removed in API10. Use the new Color(...) constructor.
         /// </remarks>
         /// <code>
-        /// // DO NOT use like the followings!
+        /// // DO NOT use as follows:
         /// Color color = new Color();
         /// color.G = 0.5f; 
         /// // Please USE like this
@@ -1128,7 +1128,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public float G
         {
-            [Obsolete("Please do not use this setter, Deprecated in API8, will be removed in API10. please use new Color(...) constructor")]
+            [Obsolete("Please do not use this setter, Deprecated in API8, will be removed in API10. Use the new Color(...) constructor")]
             set
             {
                 Interop.Vector4.GSet(SwigCPtr, ValueCheck(value));
@@ -1148,10 +1148,10 @@ namespace Tizen.NUI
         /// The blue component.
         /// </summary>
         /// <remarks>
-        /// The setter is deprecated in API8 and will be removed in API10. Please use new Color(...) constructor.
+        /// The setter is deprecated in API8 and will be removed in API10. Use the new Color(...) constructor.
         /// </remarks>
         /// <code>
-        /// // DO NOT use like the followings!
+        /// // DO NOT use as follows:
         /// Color color = new Color();
         /// color.B = 0.9f; 
         /// // Please USE like this
@@ -1161,7 +1161,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public float B
         {
-            [Obsolete("Please do not use this setter, Deprecated in API8, will be removed in API10. please use new Color(...) constructor")]
+            [Obsolete("Please do not use this setter, Deprecated in API8, will be removed in API10. Use the new Color(...) constructor")]
             set
             {
                 Interop.Vector4.BSet(SwigCPtr, ValueCheck(value));
@@ -1181,10 +1181,10 @@ namespace Tizen.NUI
         /// The alpha component.
         /// </summary>
         /// <remarks>
-        /// The setter is deprecated in API8 and will be removed in API10. Please use new Color(...) constructor.
+        /// The setter is deprecated in API8 and will be removed in API10. Use the new Color(...) constructor.
         /// </remarks>
         /// <code>
-        /// // DO NOT use like the followings!
+        /// // DO NOT use as follows:
         /// Color color = new Color();
         /// color.A = 1.0f; 
         /// // Please USE like this
@@ -1194,7 +1194,7 @@ namespace Tizen.NUI
         /// <since_tizen> 3 </since_tizen>
         public float A
         {
-            [Obsolete("Please do not use this setter, Deprecated in API8, will be removed in API10. please use new Color(...) constructor")]
+            [Obsolete("Please do not use this setter, Deprecated in API8, will be removed in API10. Use the new Color(...) constructor")]
             set
             {
                 Interop.Vector4.ASet(SwigCPtr, ValueCheck(value));
index a78c3cd..fa78077 100755 (executable)
@@ -466,8 +466,9 @@ namespace Tizen.NUI
             if (parentChildren != null)
             {
                 int currentIdx = parentChildren.IndexOf(this);
+                int idx = window.IsBorderEnabled ? 1 : 0;
 
-                if (currentIdx > 0 && currentIdx < parentChildren.Count)
+                if (currentIdx > idx && currentIdx < parentChildren.Count)
                 {
                     var low = parentChildren[currentIdx - 1];
                     LowerBelow(low);
@@ -507,6 +508,14 @@ namespace Tizen.NUI
                 parentChildren.Insert(0, this);
 
                 Interop.Layer.LowerToBottom(SwigCPtr);
+
+                if (window.IsBorderEnabled)
+                {
+                    Layer bottomLayer = window.GetBorderWindowBottomLayer();
+                    parentChildren.Remove(bottomLayer);
+                    parentChildren.Insert(0, bottomLayer);
+                    Interop.Layer.LowerToBottom(Layer.getCPtr(bottomLayer));
+                }
                 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             }
         }
@@ -752,13 +761,19 @@ namespace Tizen.NUI
 
                 if (value < 0) throw new global::System.ArgumentOutOfRangeException(nameof(LayoutCount), "LayoutCount(" + LayoutCount + ") should not be less than zero");
 
-                int diff = value - layoutCount;
-                layoutCount = value;
-
                 if (window != null)
                 {
-                    window.LayoutController.LayoutCount += diff;
+                    if (value == 0)
+                    {
+                        window.LayoutController.LayoutCount = 0;
+                    }
+                    else
+                    {
+                        int diff = value - layoutCount;
+                        window.LayoutController.LayoutCount += diff;
+                    }
                 }
+                layoutCount = value;
             }
         }
 
index 48b0a98..b36701b 100755 (executable)
@@ -176,9 +176,10 @@ namespace Tizen.NUI
         /// <since_tizen> 4 </since_tizen>
         public Animatable GetTarget()
         {
-            BaseHandle ret = Registry.GetManagedBaseHandleFromNativePtr(Interop.PropertyNotification.GetTarget(SwigCPtr));
+            //to fix memory leak issue, match the handle count with native side.
+            Animatable ret = this.GetInstanceSafely<Animatable>(Interop.PropertyNotification.GetTarget(SwigCPtr));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-            return ret as Animatable;
+            return ret;
         }
 
         /// <summary>
index b449569..5c972ce 100755 (executable)
@@ -110,14 +110,30 @@ namespace Tizen.NUI
 
                     if (LayoutWithTransition)
                     {
+                        var win = Window.Get(Owner);
+
                         if (!childLayout.IsReplaceFlag())
                         {
-                            NUIApplication.GetDefaultWindow().LayoutController.AddToRemovalStack(childLayout);
+                            if (win == null)
+                            {
+                                NUIApplication.GetDefaultWindow().LayoutController.AddToRemovalStack(childLayout);
+                            }
+                            else
+                            {
+                                win.LayoutController.AddToRemovalStack(childLayout);
+                            }
                         }
 
                         childLayout.ConditionForAnimation = childLayout.ConditionForAnimation | TransitionCondition.Remove;
                         // Add LayoutItem to the transition stack so can animate it out.
-                        NUIApplication.GetDefaultWindow().LayoutController.AddTransitionDataEntry(new LayoutData(layoutItem, ConditionForAnimation, 0, 0, 0, 0));
+                        if (win == null)
+                        {
+                            NUIApplication.GetDefaultWindow().LayoutController.AddTransitionDataEntry(new LayoutData(layoutItem, ConditionForAnimation, 0, 0, 0, 0));
+                        }
+                        else
+                        {
+                            win.LayoutController.AddTransitionDataEntry(new LayoutData(layoutItem, ConditionForAnimation, 0, 0, 0, 0));
+                        }
                     }
 
                     // Reset condition for animation ready for next transition when required.
@@ -610,9 +626,15 @@ namespace Tizen.NUI
         /// <param name="child">The child to measure.</param>
         /// <param name="parentWidthMeasureSpec">The width requirements for this view.</param>
         /// <param name="parentHeightMeasureSpec">The height requirements for this view.</param>
+        /// <exception cref="ArgumentNullException"> Thrown when child is null. </exception>
         [EditorBrowsable(EditorBrowsableState.Never)]
         protected void MeasureChildWithoutPadding(LayoutItem child, MeasureSpecification parentWidthMeasureSpec, MeasureSpecification parentHeightMeasureSpec)
         {
+            if (null == child)
+            {
+                throw new ArgumentNullException(nameof(child));
+            }
+
             View childOwner = child.Owner;
 
             MeasureSpecification childWidthMeasureSpec = GetChildMeasureSpecification(
index 6efc654..7f9e69a 100755 (executable)
@@ -586,7 +586,15 @@ namespace Tizen.NUI
 
                 if (ownerView?.Layout?.LayoutWithTransition ?? false)
                 {
-                    NUIApplication.GetDefaultWindow().LayoutController.AddTransitionDataEntry(layoutPositionData);
+                    var win = Window.Get(Owner);
+                    if (win == null)
+                    {
+                        NUIApplication.GetDefaultWindow().LayoutController.AddTransitionDataEntry(layoutPositionData);
+                    }
+                    else
+                    {
+                        win.LayoutController.AddTransitionDataEntry(layoutPositionData);
+                    }
                 }
                 else
                 {
index 998067d..d7e85d1 100755 (executable)
@@ -53,7 +53,9 @@ namespace Tizen.NUI
 
         static ThemeManager()
         {
+#if ExternalThemeEnabled
             ExternalThemeManager.Initialize();
+#endif
             AddPackageTheme(DefaultThemeCreator.Instance);
         }
 
diff --git a/src/Tizen.NUI/src/public/Window/BorderWindow.cs b/src/Tizen.NUI/src/public/Window/BorderWindow.cs
new file mode 100755 (executable)
index 0000000..33505b0
--- /dev/null
@@ -0,0 +1,446 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Threading;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI
+{
+    public partial class Window
+    {
+        #region Constant Fields
+        #endregion //Constant Fields
+
+        #region Fields
+        private IBorderInterface borderInterface = null;
+        private Layer borderWindowRootLayer = null;
+        private Layer borderWindowBottomLayer = null;
+        private bool isBorderWindow = false;
+        private bool isInterceptTouch = false;
+
+        private Timer overlayTimer;
+        private Color overlayBackgroundColor;
+
+        // for border area
+        private View rootView = null;
+        #endregion //Fields
+
+        #region Constructors
+        #endregion //Constructors
+
+        #region Distructors
+        #endregion //Distructors
+
+        #region Delegates
+        #endregion //Delegates
+
+        #region Events
+        #endregion //Events
+
+        #region Enums
+        /// <summary>
+        /// This is an enum for the resize direction or move value when the border area is touched.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public enum BorderDirection
+        {
+            None        = ResizeDirection.None,
+            TopLeft     = ResizeDirection.TopLeft,
+            Top         = ResizeDirection.Top,
+            TopRight    = ResizeDirection.TopRight,
+            Left        = ResizeDirection.Left,
+            Right       = ResizeDirection.Right,
+            BottomLeft  = ResizeDirection.BottomLeft,
+            Bottom      = ResizeDirection.Bottom,
+            BottomRight = ResizeDirection.BottomRight,
+            Move,
+        }
+        #endregion //Enums
+
+        #region Interfaces
+        #endregion //Interfaces
+
+        #region Properties
+        /// <summary>
+        /// Whether the border is enabled.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public bool IsBorderEnabled => isBorderWindow;
+        #endregion //Properties
+
+        #region Indexers
+        #endregion //Indexers
+
+        #region Methods
+        /// <summary>
+        /// Enable the border window with IBorderInterface.
+        /// This adds a border area to the Window.
+        /// The border's UI is configured using IBorderInterface.
+        /// Users can reisze and move by touching the border area.
+        /// </summary>
+        /// <param name="borderInterface">The IBorderInterface.</param>
+        /// <returns>Whether the border window is enabled</returns>
+        internal bool EnableBorder(IBorderInterface borderInterface = null)
+        {
+            if (isBorderWindow == true)
+            {
+                Tizen.Log.Error("NUI", $"Already EnableBorderWindow\n");
+                return false;
+            }
+
+            if (borderInterface == null)
+            {
+                borderInterface = new DefaultBorder();
+            }
+            this.borderInterface = borderInterface;
+
+            GetDefaultLayer().Name = "OriginalRootLayer";
+
+            Resized += OnBorderWindowResized;
+
+            isBorderWindow = true;
+
+            // The current window is as below
+            //    *****
+            //    *****
+            // Increase the window size as much as the border area.
+            //  +++++++
+            //  +*****+
+            //  +*****+
+            //  +=====+
+            //  +=====+
+            // '+' is BorderLineThickness
+            // '=' is BorderHeight
+            WindowSize += new Size2D((int)borderInterface.BorderLineThickness * 2, (int)(borderInterface.BorderHeight + borderInterface.BorderLineThickness));
+
+            if (CreateBorder() == false)
+            {
+                WindowSize -= new Size2D((int)borderInterface.BorderLineThickness * 2, (int)(borderInterface.BorderHeight + borderInterface.BorderLineThickness));
+                Resized -= OnBorderWindowResized;
+                isBorderWindow = false;
+                this.borderInterface = null;
+                return false;
+            }
+
+
+            SetTransparency(true);
+            BackgroundColor = Color.Transparent;
+            borderInterface.BorderWindow = this;
+
+            EnableFloatingMode(true);
+
+            borderInterface.OnCreated(rootView);
+
+            return true;
+        }
+
+        /// Create the border UI.
+        private bool CreateBorder()
+        {
+            rootView = new View()
+            {
+                WidthResizePolicy = ResizePolicyType.FillToParent,
+                HeightResizePolicy = ResizePolicyType.FillToParent,
+                BackgroundColor = Color.Transparent,
+            };
+
+            // Gets the Border's UI.
+            borderInterface.CreateBorderView(rootView);
+            if (rootView == null)
+            {
+                return false;
+            }
+            else
+            {
+                if (borderInterface.OverlayMode == true)
+                {
+                    rootView.InterceptTouchEvent += OverlayInterceptTouch;
+                }
+                // Add a view to the border layer.
+                GetBorderWindowBottomLayer().Add(rootView);
+
+                return true;
+            }
+        }
+
+        /// <summary>
+        /// Calculates which direction to resize or to move.
+        /// </summary>
+        /// <param name="xPosition">The X position.</param>
+        /// <param name="yPosition">The Y position.</param>
+        /// <returns>The BorderDirection</returns>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public BorderDirection GetDirection(float xPosition, float yPosition)
+        {
+            BorderDirection direction = BorderDirection.None;
+
+            // check bottom left corner
+            if (xPosition < borderInterface.TouchThickness && yPosition > WindowSize.Height + borderInterface.BorderHeight - borderInterface.TouchThickness)
+            {
+                direction = BorderDirection.BottomLeft;
+            }
+            // check bottom right corner
+            else if (xPosition > WindowSize.Width + borderInterface.BorderLineThickness * 2 - borderInterface.TouchThickness && yPosition > WindowSize.Height + borderInterface.BorderHeight - borderInterface.TouchThickness)
+            {
+                direction = BorderDirection.BottomRight;
+            }
+            // check top left corner
+            else if (xPosition < borderInterface.TouchThickness && yPosition <  borderInterface.TouchThickness)
+            {
+                direction = BorderDirection.TopLeft;
+            }
+            // check top right corner
+            else if (xPosition > WindowSize.Width + borderInterface.BorderLineThickness * 2 - borderInterface.TouchThickness && yPosition < borderInterface.TouchThickness)
+            {
+                direction = BorderDirection.TopRight;
+            }
+            // check left side
+            else if (xPosition < borderInterface.TouchThickness)
+            {
+                direction = BorderDirection.Left;
+            }
+            // check right side
+            else if (xPosition > WindowSize.Width + borderInterface.BorderLineThickness*2 - borderInterface.TouchThickness)
+            {
+                direction = BorderDirection.Right;
+            }
+            // check bottom side
+            else if (yPosition > WindowSize.Height + borderInterface.BorderHeight + borderInterface.BorderLineThickness - borderInterface.TouchThickness)
+            {
+                direction = BorderDirection.Bottom;
+            }
+            // check top side
+            else if (yPosition < borderInterface.TouchThickness)
+            {
+                direction = BorderDirection.Top;
+            }
+            // check move
+            else if (yPosition > WindowSize.Height)
+            {
+                direction = BorderDirection.Move;
+            }
+
+            return direction;
+        }
+
+
+        private bool OverlayInterceptTouch(object sender, View.TouchEventArgs e)
+        {
+            if (isInterceptTouch == true && overlayTimer != null)
+            {
+                overlayTimer.Start();
+            }
+            return false;
+        }
+
+        private bool OnTick(object o, Timer.TickEventArgs e)
+        {
+            GetBorderWindowBottomLayer().LowerToBottom();
+            if (rootView != null)
+            {
+                rootView.Hide();
+            }
+            isInterceptTouch = false;
+
+            overlayTimer.Stop();
+            overlayTimer.Dispose();
+            overlayTimer = null;
+            return false;
+        }
+
+        // Intercept touch on window.
+        private bool OnWinInterceptTouch(object sender, Window.TouchEventArgs e)
+        {
+            if (e.Touch.GetState(0) == PointStateType.Up)
+            {
+                if (isInterceptTouch == false && overlayTimer == null)
+                {
+                    overlayTimer = new Timer(3000);
+                    overlayTimer.Tick += OnTick;
+                    overlayTimer.Start();
+                    GetBorderWindowBottomLayer().RaiseToTop();
+                    if (rootView != null)
+                    {
+                        rootView.Show();
+                    }
+                    isInterceptTouch = true;
+                }
+            }
+            return false;
+        }
+
+        private void OverlayMode(bool enable)
+        {
+            if (borderInterface.OverlayMode == true)
+            {
+                if (enable == true)
+                {
+                    InterceptTouchEvent += OnWinInterceptTouch;
+                    if (rootView != null)
+                    {
+                        overlayBackgroundColor = new Color(rootView.BackgroundColor);
+                        rootView.BackgroundColor = new Color(1, 1, 1, 0.3f);
+                        rootView.Hide();
+                    }
+                }
+                else
+                {
+                    if (overlayTimer != null)
+                    {
+                        overlayTimer.Stop();
+                        overlayTimer.Dispose();
+                        overlayTimer = null;
+                    }
+                    isInterceptTouch = false;
+                    InterceptTouchEvent -= OnWinInterceptTouch;
+                    GetBorderWindowBottomLayer().LowerToBottom();
+                    if (rootView != null)
+                    {
+                        rootView.BackgroundColor = overlayBackgroundColor;
+                        rootView.Show();
+                    }
+                }
+            }
+        }
+
+
+        // Called when the window size has changed.
+        private void OnBorderWindowResized(object sender, Window.ResizedEventArgs e)
+        {
+            Tizen.Log.Info("NUI", $"OnBorderWindowResized {e.WindowSize.Width},{e.WindowSize.Height}\n");
+            int resizeWidth = e.WindowSize.Width;
+            int resizeHeight = e.WindowSize.Height;
+            if (borderInterface.MinSize != null)
+            {
+                resizeWidth = borderInterface.MinSize.Width > resizeWidth ? (int)borderInterface.MinSize.Width : resizeWidth;
+                resizeHeight = borderInterface.MinSize.Height > resizeHeight ? (int)borderInterface.MinSize.Height : resizeHeight;
+            }
+
+            if (borderInterface.MaxSize != null)
+            {
+                resizeWidth = borderInterface.MaxSize.Width < resizeWidth ? (int)borderInterface.MaxSize.Width : resizeWidth;
+                resizeHeight = borderInterface.MaxSize.Height < resizeHeight ? (int)borderInterface.MaxSize.Height : resizeHeight;
+            }
+
+            if (resizeWidth != e.WindowSize.Width || resizeHeight != e.WindowSize.Height)
+            {
+                WindowSize = new Size2D(resizeWidth, resizeHeight);
+            }
+
+            if (borderInterface.OverlayMode == true && IsMaximized() == true)
+            {
+                Interop.ActorInternal.SetSize(GetBorderWindowRootLayer().SwigCPtr, resizeWidth, resizeHeight);
+                Interop.ActorInternal.SetSize(GetBorderWindowBottomLayer().SwigCPtr, resizeWidth, resizeHeight);
+                OverlayMode(true);
+            }
+            else
+            {
+                Interop.ActorInternal.SetSize(GetBorderWindowRootLayer().SwigCPtr, resizeWidth, resizeHeight);
+                Interop.ActorInternal.SetSize(GetBorderWindowBottomLayer().SwigCPtr, resizeWidth + borderInterface.BorderLineThickness * 2, resizeHeight+borderInterface.BorderHeight + borderInterface.BorderLineThickness);
+                OverlayMode(false);
+            }
+
+            borderInterface.OnResized(resizeWidth, resizeHeight);
+
+            if (NDalicPINVOKE.SWIGPendingException.Pending) { throw NDalicPINVOKE.SWIGPendingException.Retrieve(); }
+        }
+
+        internal Layer GetBorderWindowBottomLayer()
+        {
+            if (borderWindowBottomLayer == null)
+            {
+                borderWindowBottomLayer = new Layer();
+                borderWindowBottomLayer.Name = "BorderWindowBottomLayer";
+                Interop.ActorInternal.SetParentOrigin(borderWindowBottomLayer.SwigCPtr, Tizen.NUI.ParentOrigin.TopCenter.SwigCPtr);
+                Interop.Actor.SetAnchorPoint(borderWindowBottomLayer.SwigCPtr, Tizen.NUI.PivotPoint.TopCenter.SwigCPtr);
+                Interop.Actor.Add(rootLayer.SwigCPtr, borderWindowBottomLayer.SwigCPtr);
+                Interop.ActorInternal.SetSize(borderWindowBottomLayer.SwigCPtr, WindowSize.Width+borderInterface.BorderLineThickness * 2, WindowSize.Height + borderInterface.BorderLineThickness);
+                borderWindowBottomLayer.SetWindow(this);
+                borderWindowBottomLayer.LowerToBottom();
+
+                if (NDalicPINVOKE.SWIGPendingException.Pending) { throw NDalicPINVOKE.SWIGPendingException.Retrieve(); }
+            }
+            return borderWindowBottomLayer;
+        }
+
+        internal Layer GetBorderWindowRootLayer()
+        {
+            if (borderWindowRootLayer == null)
+            {
+                borderWindowRootLayer = new Layer();
+                borderWindowRootLayer.Name = "RootLayer";
+                Interop.ActorInternal.SetParentOrigin(borderWindowRootLayer.SwigCPtr, Tizen.NUI.ParentOrigin.TopCenter.SwigCPtr);
+                Interop.Actor.SetAnchorPoint(borderWindowRootLayer.SwigCPtr, Tizen.NUI.PivotPoint.TopCenter.SwigCPtr);
+                Interop.Actor.Add(rootLayer.SwigCPtr, borderWindowRootLayer.SwigCPtr);
+                Interop.ActorInternal.SetSize(borderWindowRootLayer.SwigCPtr, WindowSize.Width, WindowSize.Height-borderInterface.BorderHeight - borderInterface.BorderLineThickness);
+                Interop.ActorInternal.SetPosition(borderWindowRootLayer.SwigCPtr, 0, borderInterface.BorderLineThickness);
+                Tizen.NUI.Object.SetProperty(borderWindowRootLayer.SwigCPtr, Tizen.NUI.BaseComponents.View.Property.ClippingMode, new Tizen.NUI.PropertyValue((int)Tizen.NUI.ClippingModeType.ClipToBoundingBox));
+
+                if (NDalicPINVOKE.SWIGPendingException.Pending) { throw NDalicPINVOKE.SWIGPendingException.Retrieve(); }
+            }
+
+            return borderWindowRootLayer;
+        }
+
+        internal void DisposeBorder()
+        {
+            Resized -= OnBorderWindowResized;
+            if (borderInterface.OverlayMode == true && rootView != null)
+            {
+                rootView.InterceptTouchEvent -= OverlayInterceptTouch;
+            }
+            borderInterface.Dispose();
+            GetBorderWindowBottomLayer().Dispose();
+        }
+
+        private void convertBorderWindowSizeToRealWindowSize(Uint16Pair size)
+        {
+            if (isBorderWindow == true)
+            {
+                var height = (ushort)(size.GetHeight() + borderInterface.BorderHeight + borderInterface.BorderLineThickness);
+                var width = (ushort)(size.GetWidth() + borderInterface.BorderLineThickness * 2);
+                size.SetHeight(height);
+                size.SetWidth(width);
+            }
+        }
+
+        private void convertRealWindowSizeToBorderWindowSize(Uint16Pair size)
+        {
+            if (isBorderWindow == true && !(borderInterface.OverlayMode == true && IsMaximized() == true))
+            {
+                var height = (ushort)(size.GetHeight() - borderInterface.BorderHeight - borderInterface.BorderLineThickness);
+                var width = (ushort)(size.GetWidth() - borderInterface.BorderLineThickness * 2);
+                size.SetHeight(height);
+                size.SetWidth(width);
+            }
+        }
+        #endregion //Methods
+
+        #region Structs
+        #endregion //Structs
+
+        #region Classes
+        #endregion //Classes
+    }
+
+
+
+}
diff --git a/src/Tizen.NUI/src/public/Window/DefaultBorder.cs b/src/Tizen.NUI/src/public/Window/DefaultBorder.cs
new file mode 100755 (executable)
index 0000000..eed66b4
--- /dev/null
@@ -0,0 +1,708 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.ComponentModel;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI
+{
+    /// <summary>
+    /// This class creates a border UI.
+    /// </summary>
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public class DefaultBorder : IBorderInterface
+    {
+        #region Constant Fields
+        private static readonly string ResourcePath = FrameworkInformation.ResourcePath;
+        private static readonly string MinimalizeIcon = ResourcePath + "minimalize.png";
+        private static readonly string MaximalizeIcon = ResourcePath + "maximalize.png";
+        private static readonly string CloseIcon = ResourcePath + "close.png";
+        private static readonly string LeftCornerIcon = ResourcePath + "leftCorner.png";
+        private static readonly string RightCornerIcon = ResourcePath + "rightCorner.png";
+
+        private static readonly string DarkMinimalizeIcon = ResourcePath + "dark_minimalize.png";
+        private static readonly string DarkPreviousIcon = ResourcePath + "dark_smallwindow.png";
+        private static readonly string DarkCloseIcon = ResourcePath + "dark_close.png";
+        private static readonly string DarkLeftCornerIcon = ResourcePath + "dark_leftCorner.png";
+        private static readonly string DarkRightCornerIcon = ResourcePath + "dark_rightCorner.png";
+
+
+        private const uint DefaultHeight = 50;
+        private const uint DefaultLineThickness = 5;
+        private const uint DefaultTouchThickness = 20;
+        private static readonly Color DefaultBackgroundColor = new Color(1, 1, 1, 0.3f);
+        private static readonly Color DefaultClickedBackgroundColor = new Color(1, 1, 1, 0.4f);
+        private static readonly Size2D DefaultMinSize = new Size2D(100, 0);
+        #endregion //Constant Fields
+
+
+        #region Fields
+        private Color backgroundColor;
+        private View rootView;
+        private View borderView;
+
+        private ImageView minimalizeIcon;
+        private ImageView maximalizeIcon;
+        private ImageView closeIcon;
+        private ImageView leftCornerIcon;
+        private ImageView rightCornerIcon;
+
+        private Window.BorderDirection direction = Window.BorderDirection.None;
+        private float preScale = 0;
+
+        private View windowView = null;
+        private bool isWinGestures = false;
+        private Timer timer;
+
+        private CurrentGesture currentGesture = CurrentGesture.None;
+        private bool disposed = false;
+        #endregion //Fields
+
+        #region Events
+        private PanGestureDetector borderPanGestureDetector;
+        private PinchGestureDetector borderPinchGestureDetector;
+        private PanGestureDetector winPanGestureDetector;
+        private TapGestureDetector winTapGestureDetector;
+        #endregion //Events
+
+        #region Enums
+        private enum CurrentGesture
+        {
+          None = 0,
+          TapGesture = 1,
+          PanGesture = 2,
+          PinchGesture = 3,
+        }
+        #endregion //Enums
+
+        #region Methods
+
+        /// <summary>
+        /// The thickness of the border.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public uint BorderLineThickness {get; set;}
+
+        /// <summary>
+        /// The thickness of the border's touch area.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public uint TouchThickness {get; set;}
+
+        /// <summary>
+        /// The height of the border.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public uint BorderHeight {get; set;}
+
+        /// <summary>
+        /// The minimum size by which the window will small.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Size2D MinSize {get; set;}
+
+        /// <summary>
+        /// The maximum size by which the window will big.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Size2D MaxSize {get; set;}
+
+        /// <summary>
+        /// The window with borders added.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Window BorderWindow {get; set;}
+
+        /// <summary>
+        /// Whether overlay mode.
+        /// If overlay mode is true, the border area is hidden when the window is maximized.
+        /// And if you touched at screen, the border area is shown on the screen.
+        /// Default value is false;
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public bool OverlayMode {get; set;}
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public DefaultBorder()
+        {
+            BorderLineThickness = DefaultLineThickness;
+            TouchThickness = DefaultTouchThickness;
+            BorderHeight = DefaultHeight;
+            MinSize = DefaultMinSize;
+            OverlayMode = false;
+        }
+
+
+        /// <summary>
+        /// Create border UI. Users can override this method to draw border UI.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public virtual void CreateBorderView(View rootView)
+        {
+            if (rootView == null)
+            {
+                return;
+            }
+            this.rootView = rootView;
+            rootView.BackgroundColor = DefaultBackgroundColor;
+            rootView.CornerRadius = new Vector4(0.03f, 0.03f, 0.03f, 0.03f);
+            rootView.CornerRadiusPolicy = VisualTransformPolicyType.Relative;
+
+            borderView = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearAlignment = LinearLayout.Alignment.End,
+                    LinearOrientation = LinearLayout.Orientation.Horizontal,
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+            };
+
+            minimalizeIcon = new ImageView()
+            {
+                ResourceUrl = MinimalizeIcon,
+                PositionUsesPivotPoint = true,
+                PivotPoint = PivotPoint.BottomLeft,
+                ParentOrigin = ParentOrigin.BottomLeft,
+            };
+
+            maximalizeIcon = new ImageView()
+            {
+                ResourceUrl = MaximalizeIcon,
+                PositionUsesPivotPoint = true,
+                PivotPoint = PivotPoint.BottomLeft,
+                ParentOrigin = ParentOrigin.BottomLeft,
+            };
+
+            closeIcon = new ImageView()
+            {
+                ResourceUrl = CloseIcon,
+                PositionUsesPivotPoint = true,
+                PivotPoint = PivotPoint.BottomLeft,
+                ParentOrigin = ParentOrigin.BottomLeft,
+            };
+
+            leftCornerIcon = new ImageView()
+            {
+                ResourceUrl = LeftCornerIcon,
+                PositionUsesPivotPoint = true,
+                PivotPoint = PivotPoint.BottomLeft,
+                ParentOrigin = ParentOrigin.BottomLeft,
+            };
+
+            rightCornerIcon = new ImageView()
+            {
+              ResourceUrl = RightCornerIcon,
+              PositionUsesPivotPoint = true,
+              PivotPoint = PivotPoint.BottomLeft,
+              ParentOrigin = ParentOrigin.BottomLeft,
+            };
+
+            rootView.Add(leftCornerIcon);
+            borderView.Add(minimalizeIcon);
+            borderView.Add(maximalizeIcon);
+            borderView.Add(closeIcon);
+            borderView.Add(rightCornerIcon);
+            rootView.Add(borderView);
+
+            minimalizeIcon.TouchEvent += OnMinimizeIconTouched;
+            maximalizeIcon.TouchEvent += OnMaximizeIconTouched;
+            closeIcon.TouchEvent += OnCloseIconTouched;
+            leftCornerIcon.TouchEvent += OnLeftCornerIconTouched;
+            rightCornerIcon.TouchEvent += OnRightCornerIconTouched;
+        }
+
+        /// Determines the behavior of pinch gesture.
+        private void OnPinchGestureDetected(object source, PinchGestureDetector.DetectedEventArgs e)
+        {
+            if (e == null)
+            {
+                return;
+            }
+            if (e.PinchGesture.State == Gesture.StateType.Started)
+            {
+                preScale = e.PinchGesture.Scale;
+            }
+            else if (e.PinchGesture.State == Gesture.StateType.Finished || e.PinchGesture.State == Gesture.StateType.Cancelled)
+            {
+                if (preScale > e.PinchGesture.Scale)
+                {
+                    if (BorderWindow.IsMaximized())
+                    {
+                        BorderWindow.Maximize(false);
+                    }
+                    else
+                    {
+                        BorderWindow.Minimize(true);
+                    }
+                }
+                else
+                {
+                    BorderWindow.Maximize(true);
+                }
+            }
+        }
+
+        /// Determines the behavior of borders.
+        private void OnPanGestureDetected(object source, PanGestureDetector.DetectedEventArgs e)
+        {
+            if (e == null)
+            {
+                return;
+            }
+            PanGesture panGesture = e.PanGesture;
+
+            if (panGesture.State == Gesture.StateType.Started)
+            {
+                direction = BorderWindow.GetDirection(panGesture.Position.X, panGesture.Position.Y);
+                if (direction == Window.BorderDirection.Move)
+                {
+                    if (BorderWindow.IsMaximized() == true)
+                    {
+                        BorderWindow.Maximize(false);
+                    }
+                    else
+                    {
+                        BorderWindow.RequestMoveToServer();
+                    }
+                }
+                else if (direction != Window.BorderDirection.None)
+                {
+                    OnRequestResize();
+                    BorderWindow.RequestResizeToServer((Window.ResizeDirection)direction);
+                }
+            }
+            else if (panGesture.State == Gesture.StateType.Continuing)
+            {
+                if (direction == Window.BorderDirection.BottomLeft || direction == Window.BorderDirection.BottomRight || direction == Window.BorderDirection.TopLeft || direction == Window.BorderDirection.TopRight)
+                {
+                    BorderWindow.WindowSize += new Size2D((int)panGesture.ScreenDisplacement.X, (int)panGesture.ScreenDisplacement.Y);
+                }
+                else if (direction == Window.BorderDirection.Left || direction == Window.BorderDirection.Right)
+                {
+                    BorderWindow.WindowSize += new Size2D((int)panGesture.ScreenDisplacement.X, 0);
+                }
+                else if (direction == Window.BorderDirection.Bottom || direction == Window.BorderDirection.Top)
+                {
+                    BorderWindow.WindowSize += new Size2D(0, (int)panGesture.ScreenDisplacement.Y);
+                }
+                else if (direction == Window.BorderDirection.Move)
+                {
+                    BorderWindow.WindowPosition += new Position2D((int)panGesture.ScreenDisplacement.X, (int)panGesture.ScreenDisplacement.Y);
+                }
+            }
+            else if (panGesture.State == Gesture.StateType.Finished || panGesture.State == Gesture.StateType.Cancelled)
+            {
+                direction = Window.BorderDirection.None;
+                ClearWindowGesture();
+            }
+        }
+
+
+        /// <summary>
+        /// This is an event callback when the left corner icon is touched.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public virtual bool OnLeftCornerIconTouched(object sender, View.TouchEventArgs e)
+        {
+            if (e == null)
+            {
+                return false;
+            }
+            if (e.Touch.GetState(0) == PointStateType.Down)
+            {
+              ClearWindowGesture();
+              OnRequestResize();
+              BorderWindow.RequestResizeToServer(Window.ResizeDirection.BottomLeft);
+            }
+            return true;
+        }
+
+        /// <summary>
+        ///This is an event callback when the right corner icon is touched.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public virtual bool OnRightCornerIconTouched(object sender, View.TouchEventArgs e)
+        {
+            if (e == null)
+            {
+                return false;
+            }
+            if (e.Touch.GetState(0) == PointStateType.Down)
+            {
+              ClearWindowGesture();
+              OnRequestResize();
+              BorderWindow.RequestResizeToServer(Window.ResizeDirection.BottomRight);
+            }
+            return true;
+        }
+
+
+        /// <summary>
+        /// This is an event callback when the minimize button is touched.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public virtual bool OnMinimizeIconTouched(object sender, View.TouchEventArgs e)
+        {
+            if (e == null)
+            {
+                return false;
+            }
+            if (e.Touch.GetState(0) == PointStateType.Up)
+            {
+                ClearWindowGesture();
+                BorderWindow.Minimize(true);
+            }
+            return true;
+        }
+
+        /// <summary>
+        /// This is an event callback when the maximum button is touched.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public virtual bool OnMaximizeIconTouched(object sender, View.TouchEventArgs e)
+        {
+            if (e == null)
+            {
+                return false;
+            }
+            if (e.Touch.GetState(0) == PointStateType.Up)
+            {
+                ClearWindowGesture();
+                if (BorderWindow.IsMaximized())
+                {
+                  BorderWindow.Maximize(false);
+                }
+                else
+                {
+                  BorderWindow.Maximize(true);
+                }
+            }
+            return true;
+        }
+
+        /// <summary>
+        /// This is an event callback when the close button is touched.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public virtual bool OnCloseIconTouched(object sender, View.TouchEventArgs e)
+        {
+            if (e == null)
+            {
+                return false;
+            }
+            if (e.Touch.GetState(0) == PointStateType.Up)
+            {
+                BorderWindow.Destroy();
+                BorderWindow = null;
+            }
+            return true;
+        }
+
+
+        private void UpdateIcons()
+        {
+            if (BorderWindow != null && rootView != null)
+            {
+                if (BorderWindow.IsMaximized() == true)
+                {
+                    if (maximalizeIcon != null)
+                    {
+                        maximalizeIcon.ResourceUrl = DarkPreviousIcon;
+                    }
+                    if (minimalizeIcon != null)
+                    {
+                        minimalizeIcon.ResourceUrl = DarkMinimalizeIcon;
+                    }
+                    if (closeIcon != null)
+                    {
+                        closeIcon.ResourceUrl = DarkCloseIcon;
+                    }
+                    if (leftCornerIcon != null)
+                    {
+                        leftCornerIcon.ResourceUrl = DarkLeftCornerIcon;
+                    }
+                    if (rightCornerIcon != null)
+                    {
+                        rightCornerIcon.ResourceUrl = DarkRightCornerIcon;
+                    }
+                    rootView.CornerRadius = new Vector4(0, 0, 0, 0);
+                    rootView.CornerRadiusPolicy = VisualTransformPolicyType.Relative;
+                    BorderWindow.SetTransparency(false);
+                }
+                else
+                {
+                    if (maximalizeIcon != null)
+                    {
+                        maximalizeIcon.ResourceUrl = MaximalizeIcon;
+                    }
+                    if (minimalizeIcon != null)
+                    {
+                        minimalizeIcon.ResourceUrl = MinimalizeIcon;
+                    }
+                    if (closeIcon != null)
+                    {
+                        closeIcon.ResourceUrl = CloseIcon;
+                    }
+                    if (leftCornerIcon != null)
+                    {
+                        leftCornerIcon.ResourceUrl = LeftCornerIcon;
+                    }
+                    if (rightCornerIcon != null)
+                    {
+                        rightCornerIcon.ResourceUrl = RightCornerIcon;
+                    }
+                    rootView.CornerRadius = new Vector4(0.03f, 0.03f, 0.03f, 0.03f);
+                    rootView.CornerRadiusPolicy = VisualTransformPolicyType.Relative;
+                    BorderWindow.SetTransparency(true);
+                }
+            }
+        }
+
+
+        /// <summary>
+        /// Called after the border UI is created.
+        /// </summary>
+        /// <param name="rootView">The root view on which the border.</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public virtual void OnCreated(View rootView)
+        {
+            if (rootView == null)
+            {
+                return;
+            }
+            // Register to resize and move through pan gestures.
+            borderPanGestureDetector = new PanGestureDetector();
+            borderPanGestureDetector.Attach(rootView);
+            borderPanGestureDetector.Detected += OnPanGestureDetected;
+
+            // Register touch event for effect when border is touched.
+            rootView.LeaveRequired = true;
+            rootView.TouchEvent += (s, e) =>
+            {
+                if (e.Touch.GetState(0) == PointStateType.Started)
+                {
+                    backgroundColor = new Color(rootView.BackgroundColor);
+                    rootView.BackgroundColor = DefaultClickedBackgroundColor;
+                }
+                else if (e.Touch.GetState(0) == PointStateType.Finished ||
+                         e.Touch.GetState(0) == PointStateType.Leave ||
+                         e.Touch.GetState(0) == PointStateType.Interrupted)
+                {
+                    rootView.BackgroundColor = backgroundColor;
+                }
+                return true;
+            };
+
+            borderPinchGestureDetector = new PinchGestureDetector();
+            borderPinchGestureDetector.Attach(rootView);
+            borderPinchGestureDetector.Detected += OnPinchGestureDetected;
+
+            AddInterceptGesture();
+        }
+
+
+        // Register an intercept touch event on the window.
+        private void AddInterceptGesture()
+        {
+            isWinGestures = false;
+            BorderWindow.InterceptTouchEvent += OnWinInterceptedTouch;
+        }
+
+        // Intercept touch on window.
+        private bool OnWinInterceptedTouch(object sender, Window.TouchEventArgs e)
+        {
+            if (e.Touch.GetState(0) == PointStateType.Stationary && e.Touch.GetPointCount() == 2)
+            {
+                if (isWinGestures == false && timer == null)
+                {
+                    timer = new Timer(300);
+                    timer.Tick += OnTick;
+                    timer.Start();
+                }
+            }
+            else
+            {
+                currentGesture = CurrentGesture.None;
+                if (timer != null)
+                {
+                    timer.Stop();
+                    timer.Dispose();
+                    timer = null;
+                }
+            }
+            return false;
+        }
+
+        // If two finger long press is done, create a windowView.
+        // then, Register a gesture on the windowView to do a resize or move.
+        private bool OnTick(object o, Timer.TickEventArgs e)
+        {
+            windowView = new View()
+            {
+                WidthResizePolicy = ResizePolicyType.FillToParent,
+                HeightResizePolicy = ResizePolicyType.FillToParent,
+                BackgroundColor = new Color(1, 1, 1, 0.5f),
+            };
+            windowView.TouchEvent += (s, e) =>
+            {
+                return true;
+            };
+            BorderWindow.Add(windowView);
+
+            winTapGestureDetector = new TapGestureDetector();
+            winTapGestureDetector.Attach(windowView);
+            winTapGestureDetector.SetMaximumTapsRequired(3);
+            winTapGestureDetector.Detected += OnWinTapGestureDetected;
+
+            winPanGestureDetector = new PanGestureDetector();
+            winPanGestureDetector.Attach(windowView);
+            winPanGestureDetector.Detected += OnWinPanGestureDetected;
+
+            BorderWindow.InterceptTouchEvent -= OnWinInterceptedTouch;
+            isWinGestures = true;
+            return false;
+        }
+
+        // Behavior when the window is tapped.
+        private void OnWinTapGestureDetected(object source, TapGestureDetector.DetectedEventArgs e)
+        {
+          if (currentGesture <= CurrentGesture.TapGesture)
+          {
+              currentGesture = CurrentGesture.TapGesture;
+              if (e.TapGesture.NumberOfTaps == 2)
+              {
+                  if (BorderWindow.IsMaximized() == false)
+                  {
+                    BorderWindow.Maximize(true);
+                  }
+                  else
+                  {
+                    BorderWindow.Maximize(false);
+                  }
+              }
+              else
+              {
+                  ClearWindowGesture();
+              }
+          }
+        }
+
+        // Window moves through pan gestures.
+        private void OnWinPanGestureDetected(object source, PanGestureDetector.DetectedEventArgs e)
+        {
+            if (currentGesture <= CurrentGesture.PanGesture /*&& panGesture.NumberOfTouches == 1*/)
+            {
+                PanGesture panGesture = e.PanGesture;
+
+                if (panGesture.State == Gesture.StateType.Started)
+                {
+                    currentGesture = CurrentGesture.PanGesture;
+                    if (BorderWindow.IsMaximized() == true)
+                    {
+                        BorderWindow.Maximize(false);
+                    }
+                    else
+                    {
+                        BorderWindow.RequestMoveToServer();
+                    }
+                }
+                else if (panGesture.State == Gesture.StateType.Finished || panGesture.State == Gesture.StateType.Cancelled)
+                {
+                    currentGesture = CurrentGesture.None;
+                    ClearWindowGesture();
+                }
+            }
+        }
+
+        private void ClearWindowGesture()
+        {
+            if (isWinGestures)
+            {
+                winPanGestureDetector.Dispose();
+                winTapGestureDetector.Dispose();
+
+                isWinGestures = false;
+                BorderWindow.Remove(windowView);
+                BorderWindow.InterceptTouchEvent += OnWinInterceptedTouch;
+            }
+        }
+
+        /// <summary>
+        /// Called when requesting a resize
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public virtual void OnRequestResize()
+        {
+        }
+
+        /// <summary>
+        /// Called when the window is resized.
+        /// </summary>
+        /// <param name="width">The width of the resized window</param>
+        /// <param name="height">The height of the resized window</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public virtual void OnResized(int width, int height)
+        {
+            UpdateIcons();
+        }
+
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        protected virtual void Dispose(bool disposing)
+        {
+            if (disposed)
+            {
+                return;
+            }
+            if (disposing)
+            {
+                ClearWindowGesture();
+                if (BorderWindow != null)
+                {
+                    BorderWindow.InterceptTouchEvent -= OnWinInterceptedTouch;
+                }
+                borderPanGestureDetector?.Dispose();
+                borderPinchGestureDetector?.Dispose();
+                backgroundColor?.Dispose();
+                minimalizeIcon?.Dispose();
+                maximalizeIcon?.Dispose();
+                closeIcon?.Dispose();
+                leftCornerIcon?.Dispose();
+                rightCornerIcon?.Dispose();
+                timer?.Dispose();
+                windowView?.Dispose();
+                borderView?.Dispose();
+                rootView?.Dispose();
+            }
+            disposed = true;
+        }
+
+        /// <summary>
+        /// Dispose
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void Dispose()
+        {
+            Dispose(true);
+            global::System.GC.SuppressFinalize(this);
+        }
+        #endregion //Methods
+
+    }
+}
diff --git a/src/Tizen.NUI/src/public/Window/IBorderInterface.cs b/src/Tizen.NUI/src/public/Window/IBorderInterface.cs
new file mode 100755 (executable)
index 0000000..7abc23a
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.ComponentModel;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI
+{
+    /// <summary>
+    /// This is the interface used to draw the border UI.
+    /// </summary>
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public interface IBorderInterface : IDisposable
+    {
+        /// <summary>
+        /// The thickness of the border.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public uint BorderLineThickness {get;}
+
+        /// <summary>
+        /// The thickness of the border's touch area.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public uint TouchThickness {get;}
+
+        /// <summary>
+        /// The height of the border.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public uint BorderHeight {get;}
+
+        /// <summary>
+        /// The minimum size by which the window will small.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Size2D MinSize {get;}
+
+        /// <summary>
+        /// The maximum size by which the window will big.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Size2D MaxSize {get;}
+
+        /// <summary>
+        /// The window with borders added.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Window BorderWindow {get; set;}
+
+        /// <summary>
+        /// Whether overlay mode.
+        /// If overlay mode is true, the border area is hidden when the window is maximized.
+        /// And if you touched at screen, the border area is shown on the screen.
+        /// Default value is false;
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public bool OverlayMode {get;}
+
+
+        /// <summary>
+        /// Create border UI. User can override this method to draw border UI.
+        /// </summary>
+        /// <param name="rootView">The root view on which the border.</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void CreateBorderView(View rootView);
+
+        /// <summary>
+        /// Called after the border UI is created.
+        /// </summary>
+        /// <param name="rootView">The root view on which the border.</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void OnCreated(View rootView);
+
+        /// <summary>
+        /// Called when requesting a resize
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void OnRequestResize();
+
+        /// <summary>
+        /// Called when the window is resized.
+        /// </summary>
+        /// <param name="width">The width of the resized window</param>
+        /// <param name="height">The height of the resized window</param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void OnResized(int width, int height);
+
+    }
+}
index f9ebf3b..3436578 100644 (file)
@@ -36,6 +36,7 @@ namespace Tizen.NUI
     {
         private HandleRef stageCPtr;
         private Layer rootLayer;
+        private Layer borderLayer;
         private string windowTitle;
         private List<Layer> childLayers = new List<Layer>();
         private LayoutController localController;
@@ -79,8 +80,9 @@ namespace Tizen.NUI
                 return null;
             }
 
-            Window ret = Registry.GetManagedBaseHandleFromNativePtr(Interop.Window.Get(View.getCPtr(view))) as Window;
-            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            //to fix memory leak issue, match the handle count with native side.
+            Window ret = view.GetInstanceSafely<Window>(Interop.Window.Get(View.getCPtr(view)));
+            if (NDalicPINVOKE.SWIGPendingException.Pending)throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
 
@@ -125,6 +127,30 @@ namespace Tizen.NUI
         }
 
         /// <summary>
+        /// Creates a new Window with a specific name.<br />
+        /// This creates an extra window in addition to the default main window<br />
+        /// </summary>
+        /// <param name="name">The name for extra window. </param>
+        /// <param name="borderInterface"><see cref="Tizen.NUI.IBorderInterface"/>If borderInterface is null, defaultBorder is enabled.</param>
+        /// <param name="windowPosition">The position and size of the Window.</param>
+        /// <param name="isTranslucent">Whether Window is translucent.</param>
+        /// <returns>A new Window.</returns>
+        /// <feature> http://tizen.org/feature/opengles.surfaceless_context </feature>
+        /// <exception cref="NotSupportedException">The required feature is not supported.</exception>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public Window(string name, IBorderInterface borderInterface, Rectangle windowPosition = null, bool isTranslucent = false) : this(Interop.Window.New(Rectangle.getCPtr(windowPosition), name, isTranslucent), true)
+        {
+            if (IsSupportedMultiWindow() == false)
+            {
+                NUILog.Error("This device does not support surfaceless_context. So Window cannot be created. ");
+            }
+            this.windowTitle = name;
+            this.EnableBorder(borderInterface);
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
+
+
+        /// <summary>
         /// Enumeration for orientation of the window is the way in which a rectangular page is oriented for normal viewing.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
@@ -317,6 +343,11 @@ namespace Tizen.NUI
         public enum ResizeDirection
         {
             /// <summary>
+            /// None type.
+            /// </summary>
+            [EditorBrowsable(EditorBrowsableState.Never)]
+            None = 0,
+            /// <summary>
             /// Start resizing window to the top-left edge.
             /// </summary>
             [EditorBrowsable(EditorBrowsableState.Never)]
@@ -1211,7 +1242,7 @@ namespace Tizen.NUI
             {
                 NUILog.Error("This device does not support surfaceless_context. So Window cannot be created. ");
             }
-            Window ret = Registry.GetManagedBaseHandleFromNativePtr(Interop.Window.GetParent(SwigCPtr)) as Window;
+            Window ret = this.GetInstanceSafely<Window>(Interop.Window.GetParent(SwigCPtr));
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             return ret;
         }
@@ -1344,8 +1375,17 @@ namespace Tizen.NUI
             {
                 throw new ArgumentNullException(nameof(layer));
             }
-            Interop.Window.Add(SwigCPtr, Layer.getCPtr(layer));
-            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+            if (isBorderWindow)
+            {
+                Interop.Actor.Add(GetBorderWindowRootLayer().SwigCPtr, layer.SwigCPtr);
+                if (NDalicPINVOKE.SWIGPendingException.Pending) { throw NDalicPINVOKE.SWIGPendingException.Retrieve(); }
+            }
+            else
+            {
+                Interop.Window.Add(SwigCPtr, Layer.getCPtr(layer));
+                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            }
 
             LayersChildren?.Add(layer);
             layer.SetWindow(this);
@@ -1367,6 +1407,9 @@ namespace Tizen.NUI
         internal Vector2 GetSize()
         {
             var val = new Uint16Pair(Interop.Window.GetSize(SwigCPtr), true);
+
+            convertRealWindowSizeToBorderWindowSize(val);
+
             Vector2 ret = new Vector2(val.GetWidth(), val.GetHeight());
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             val.Dispose();
@@ -1397,16 +1440,29 @@ namespace Tizen.NUI
 
         internal Layer GetRootLayer()
         {
-            // Window.IsInstalled() is actually true only when called from event thread and
-            // Core has been initialized, not when Stage is ready.
-            if (rootLayer == null && Window.IsInstalled())
+            if (isBorderWindow)
             {
-                rootLayer = new Layer(Interop.Window.GetRootLayer(SwigCPtr), true);
-                if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
-                LayersChildren?.Add(rootLayer);
-                rootLayer.SetWindow(this);
+                if(borderLayer == null)
+                {
+                    borderLayer = GetBorderWindowRootLayer();
+                    LayersChildren?.Add(borderLayer);
+                    borderLayer.SetWindow(this);
+                }
+                return borderLayer;
+            }
+            else
+            {
+                // Window.IsInstalled() is actually true only when called from event thread and
+                // Core has been initialized, not when Stage is ready.
+                if (rootLayer == null && Window.IsInstalled())
+                {
+                    rootLayer = new Layer(Interop.Window.GetRootLayer(SwigCPtr), true);
+                    if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+                    LayersChildren?.Add(rootLayer);
+                    rootLayer.SetWindow(this);
+                }
+                return rootLayer;
             }
-            return rootLayer;
         }
 
         internal void SetBackgroundColor(Vector4 color)
@@ -1457,6 +1513,9 @@ namespace Tizen.NUI
                 throw new ArgumentNullException(nameof(size));
             }
             var val = new Uint16Pair((uint)size.Width, (uint)size.Height);
+
+            convertBorderWindowSizeToRealWindowSize(val);
+
             Interop.Window.SetSize(SwigCPtr, Uint16Pair.getCPtr(val));
             val.Dispose();
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -1466,6 +1525,9 @@ namespace Tizen.NUI
         internal Size2D GetWindowSize()
         {
             var val = new Uint16Pair(Interop.Window.GetSize(SwigCPtr), true);
+
+            convertRealWindowSizeToBorderWindowSize(val);
+
             Size2D ret = new Size2D(val.GetWidth(), val.GetHeight());
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
             val.Dispose();
@@ -1496,6 +1558,17 @@ namespace Tizen.NUI
 
         internal void SetPositionSize(Rectangle positionSize)
         {
+            if (positionSize == null)
+            {
+                throw new ArgumentNullException(nameof(positionSize));
+            }
+            var val = new Uint16Pair((uint)positionSize.Width, (uint)positionSize.Height);
+
+            convertBorderWindowSizeToRealWindowSize(val);
+
+            positionSize.Width = val.GetX();
+            positionSize.Height = val.GetY();
+
             Interop.Window.SetPositionSize(SwigCPtr, Rectangle.getCPtr(positionSize));
 
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
@@ -1665,6 +1738,11 @@ namespace Tizen.NUI
                 //Release your own managed resources here.
                 //You should release all of your own disposable objects here.
 
+                if (IsBorderEnabled)
+                {
+                    DisposeBorder();
+                }
+
                 if (rootLayer != null)
                 {
                     rootLayer.Dispose();
index 36318d7..d2219b9 100755 (executable)
@@ -32,6 +32,7 @@ namespace Tizen.NUI
     {
         private WindowFocusChangedEventCallbackType windowFocusChangedEventCallback;
         private RootLayerTouchDataCallbackType rootLayerTouchDataCallback;
+        private RootLayerTouchDataCallbackType rootLayerInterceptTouchDataCallback;
         private WheelEventCallbackType wheelEventCallback;
         private EventCallbackDelegateType1 stageKeyCallbackDelegate;
         private EventCallbackDelegateType0 stageEventProcessingFinishedEventCallbackDelegate;
@@ -60,6 +61,8 @@ namespace Tizen.NUI
         private VoidSignal contextLostSignal;
         private VoidSignal contextRegainedSignal;
         private AuxiliaryMessageEventCallbackType auxiliaryMessageEventCallback;
+        private TouchDataSignal interceptTouchDataSignal;
+        private TouchSignal interceptTouchSignal;
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
         private delegate void WindowFocusChangedEventCallbackType(IntPtr window, bool focusGained);
@@ -145,6 +148,40 @@ namespace Tizen.NUI
         }
 
         /// <summary>
+        /// An event for the touched signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
+        /// The touched signal is emitted when the touch input is received.<br />
+        /// This can receive touch events before child. <br />
+        /// If it returns false, the child can receive the touch event. If it returns true, the touch event is intercepted. So child cannot receive touch event.<br />
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public event ReturnTypeEventHandler<object, TouchEventArgs, bool> InterceptTouchEvent
+        {
+            add
+            {
+                if (rootLayerInterceptTouchDataEventHandler == null)
+                {
+                    rootLayerInterceptTouchDataCallback = OnWindowInterceptTouch;
+                    interceptTouchDataSignal = this.InterceptTouchDataSignal();
+                    interceptTouchDataSignal?.Connect(rootLayerInterceptTouchDataCallback);
+                }
+                rootLayerInterceptTouchDataEventHandler += value;
+            }
+            remove
+            {
+                rootLayerInterceptTouchDataEventHandler -= value;
+                interceptTouchSignal = TouchSignal();
+                if (rootLayerInterceptTouchDataEventHandler == null && interceptTouchSignal?.Empty() == false && rootLayerInterceptTouchDataCallback != null)
+                {
+                    interceptTouchDataSignal?.Disconnect(rootLayerInterceptTouchDataCallback);
+                    if (interceptTouchDataSignal?.Empty() == true)
+                    {
+                        rootLayerInterceptTouchDataCallback = null;
+                    }
+                }
+            }
+        }
+
+        /// <summary>
         /// Emits the event when the wheel event is received.
         /// </summary>
         /// <since_tizen> 3 </since_tizen>
@@ -360,6 +397,7 @@ namespace Tizen.NUI
         public event EventHandler ViewAdded;
         private event EventHandler<FocusChangedEventArgs> windowFocusChangedEventHandler;
         private event EventHandler<TouchEventArgs> rootLayerTouchDataEventHandler;
+        private ReturnTypeEventHandler<object, TouchEventArgs, bool> rootLayerInterceptTouchDataEventHandler;
         private event EventHandler<WheelEventArgs> stageWheelHandler;
         private event EventHandler<KeyEventArgs> stageKeyHandler;
         private event EventHandler stageEventProcessingFinishedEventHandler;
@@ -518,6 +556,15 @@ namespace Tizen.NUI
             return ret;
         }
 
+        internal TouchDataSignal InterceptTouchDataSignal()
+        {
+            TouchDataSignal ret = new TouchDataSignal(Interop.ActorSignal.ActorInterceptTouchSignal(Layer.getCPtr(GetRootLayer())), false);
+            if (NDalicPINVOKE.SWIGPendingException.Pending)
+                throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+            return ret;
+        }
+
+
         internal VoidSignal ContextLostSignal()
         {
             VoidSignal ret = new VoidSignal(Interop.StageSignal.ContextLostSignal(stageCPtr), false);
@@ -571,6 +618,12 @@ namespace Tizen.NUI
                 rootLayerTouchDataCallback = null;
             }
 
+            if (rootLayerInterceptTouchDataCallback != null)
+            {
+                interceptTouchDataSignal?.Disconnect(rootLayerInterceptTouchDataCallback);
+                rootLayerInterceptTouchDataCallback = null;
+            }
+
             if (wheelEventCallback != null)
             {
                 wheelSignal?.Disconnect(wheelEventCallback);
@@ -716,6 +769,24 @@ namespace Tizen.NUI
             return false;
         }
 
+        private bool OnWindowInterceptTouch(IntPtr view, IntPtr touchData)
+        {
+            if (touchData == global::System.IntPtr.Zero)
+            {
+                NUILog.Error("touchData should not be null!");
+                return true;
+            }
+
+            bool consumed = false;
+            if (rootLayerInterceptTouchDataEventHandler != null)
+            {
+                TouchEventArgs e = new TouchEventArgs();
+                e.Touch = Tizen.NUI.Touch.GetTouchFromPtr(touchData);
+                consumed = rootLayerInterceptTouchDataEventHandler(this, e);
+            }
+            return consumed;
+        }
+
         private bool OnStageWheel(IntPtr rootLayer, IntPtr wheelEvent)
         {
             if (wheelEvent == global::System.IntPtr.Zero)
index 7150c24..6b59a3b 100755 (executable)
@@ -44,7 +44,7 @@ namespace Tizen.NUI.Binding
                     return FromHex(value);
                 }
 
-                string[] parts = value.Split(',');
+                string[] parts = value.Split(TypeConverter.UnifiedDelimiter);
                 if (parts.Length == 1) //like Red or Color.Red
                 {
                     parts = value.Split('.');
@@ -159,7 +159,7 @@ namespace Tizen.NUI.Binding
             if (value != null)
             {
                 Color color = (Color)value;
-                return color.R.ToString() + " " + color.G.ToString() + " " + color.B.ToString() + " " + color.A.ToString();
+                return color.R.ToString() + TypeConverter.UnifiedDelimiter + color.G.ToString() + TypeConverter.UnifiedDelimiter + color.B.ToString() + TypeConverter.UnifiedDelimiter + color.A.ToString();
             }
             return "";
         }
index 3909637..ca475a2 100755 (executable)
@@ -37,7 +37,7 @@ namespace Tizen.NUI.Binding
         {
             if (value != null)
             {
-                string[] parts = value.Split(',');
+                string[] parts = value.Split(TypeConverter.UnifiedDelimiter);
                 if (parts.Length == 3)
                 {
                     int x = (int)GraphicsTypeManager.Instance.ConvertScriptToPixel(parts[0].Trim());
@@ -63,7 +63,7 @@ namespace Tizen.NUI.Binding
             if (value != null)
             {
                 Size size = (Size)value;
-                return size.Width.ToString() + " " + size.Height.ToString() + " " + size.Depth.ToString();
+                return size.Width.ToString() + TypeConverter.UnifiedDelimiter + size.Height.ToString() + TypeConverter.UnifiedDelimiter + size.Depth.ToString();
             }
             return "";
         }
@@ -80,7 +80,7 @@ namespace Tizen.NUI.Binding
         {
             if (value != null)
             {
-                string[] parts = value.Split(',');
+                string[] parts = value.Split(TypeConverter.UnifiedDelimiter);
                 if (parts.Length == 2)
                 {
                     int x = (int)GraphicsTypeManager.Instance.ConvertScriptToPixel(parts[0].Trim());
@@ -99,7 +99,7 @@ namespace Tizen.NUI.Binding
             if (value != null)
             {
                 Size2D size = (Size2D)value;
-                return size.Width.ToString() + " " + size.Height.ToString();
+                return size.Width.ToString() + TypeConverter.UnifiedDelimiter + size.Height.ToString();
             }
             return "";
         }
index 959a066..dc77a20 100755 (executable)
@@ -24,6 +24,8 @@ namespace Tizen.NUI.Binding
     [EditorBrowsable(EditorBrowsableState.Never)]
     public abstract class TypeConverter
     {
+        internal const char UnifiedDelimiter = ',';
+
         /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
         [EditorBrowsable(EditorBrowsableState.Never)]
         public virtual bool CanConvertFrom(Type sourceType)
index 20a8f23..77618ce 100755 (executable)
@@ -70,7 +70,6 @@ namespace NuiCommonUiSamples
             source.Focusable = true;
             source.MinValue = MIN_VALUE;
             source.MaxValue = MAX_VALUE;
-            source.StateChangedEvent += OnStateChanged;
             source.ValueChangedEvent += OnValueChanged;
 
             source.Position2D = new Position2D(posX, posY);
@@ -102,7 +101,6 @@ namespace NuiCommonUiSamples
                 {
                     if (slider_da[i] != null)
                     {
-                        slider_da[i].StateChangedEvent -= OnStateChanged;
                         slider_da[i].ValueChangedEvent -= OnValueChanged;
                         root.Remove(slider_da[i]);
                         slider_da[i].Dispose();
@@ -133,25 +131,5 @@ namespace NuiCommonUiSamples
                 }
             }
         }
-
-        private void OnStateChanged(object sender, Tizen.NUI.CommonUI.Slider.StateChangedArgs args)
-        {
-            Console.WriteLine("args.CurrentState = " + args.CurrentState);
-            if (sender is Tizen.NUI.CommonUI.Slider)
-            {
-                Tizen.NUI.CommonUI.Slider slider = sender as Tizen.NUI.CommonUI.Slider;
-                if (slider != null)
-                {
-                    //if (args.CurrentState == States.Normal)
-                    //{
-                    //    slider_sr[0].ThumbImageURL = "*DemoRes*/images/FH3/9. Controller/controller_btn_slide_handler_normal.png";
-                    //}
-                    //else if (args.CurrentState == States.Focused || args.CurrentState == States.Pressed)
-                    //{
-                    //    slider_sr[0].ThumbImageURL = "*DemoRes*/images/FH3/9. Controller/controller_btn_slide_handler_press.png";
-                    //}
-                }
-            }
-        }
     }
 }
index a948c4c..91e4677 100644 (file)
@@ -8,23 +8,6 @@
             "name": ".NET Core Launch (console)",
             "type": "coreclr",
             "request": "launch",
-            "WARNING01": "*********************************************************************************",
-            "WARNING02": "The C# extension was unable to automatically decode projects in the current",
-            "WARNING03": "workspace to create a runnable launch.json file. A template launch.json file has",
-            "WARNING04": "been created as a placeholder.",
-            "WARNING05": "",
-            "WARNING06": "If OmniSharp is currently unable to load your project, you can attempt to resolve",
-            "WARNING07": "this by restoring any missing project dependencies (example: run 'dotnet restore')",
-            "WARNING08": "and by fixing any reported errors from building the projects in your workspace.",
-            "WARNING09": "If this allows OmniSharp to now load your project then --",
-            "WARNING10": "  * Delete this file",
-            "WARNING11": "  * Open the Visual Studio Code command palette (View->Command Palette)",
-            "WARNING12": "  * run the command: '.NET: Generate Assets for Build and Debug'.",
-            "WARNING13": "",
-            "WARNING14": "If your project requires a more complex launch configuration, you may wish to delete",
-            "WARNING15": "this configuration and pick a different template using the 'Add Configuration...'",
-            "WARNING16": "button at the bottom of this file.",
-            "WARNING17": "*********************************************************************************",
             "preLaunchTask": "build",
             "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/NUITizenGallery.dll",
             "args": [],
@@ -36,7 +19,7 @@
                 "PKG_CONFIG_PATH":"${env:HOME}/dali-env/opt/lib/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig",
                 "DOTNET_CLI_TELEMETRY_OPTOUT":"1",
                 "DALI_WINDOW_WIDTH":"720",
-                "DALI_WINDOW_HEIGHT":"1080",
+                "DALI_WINDOW_HEIGHT":"800",
             },
             "cwd": "${workspaceFolder}",
             "console": "internalConsole",
old mode 100644 (file)
new mode 100755 (executable)
index b62d63f..5c935e7
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.AbsoluteLayoutTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index cecde8b..d331dae
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.ActivityIndicatorTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 80e6383..d07ffa2
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.AlertDialogTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
diff --git a/test/NUITizenGallery/Examples/AnimatedVectorImageViewTest/AnimatedVectorImageViewTest.cs b/test/NUITizenGallery/Examples/AnimatedVectorImageViewTest/AnimatedVectorImageViewTest.cs
new file mode 100644 (file)
index 0000000..52c6c97
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright(c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using Tizen.NUI;
+using Tizen.NUI.Components;
+
+namespace NUITizenGallery
+{
+    internal class AnimatedVectorImageViewTest : IExample
+    {
+        Window window;
+
+        public void Activate()
+        {
+            window = NUIApplication.GetDefaultWindow();
+            window.GetDefaultNavigator().Push(new AnimatedVectorImageViewTestPage());
+        }
+        public void Deactivate()
+        {
+            window.GetDefaultNavigator().Pop();
+        }
+    }
+}
diff --git a/test/NUITizenGallery/Examples/AnimatedVectorImageViewTest/AnimatedVectorImageViewTest.xaml b/test/NUITizenGallery/Examples/AnimatedVectorImageViewTest/AnimatedVectorImageViewTest.xaml
new file mode 100755 (executable)
index 0000000..cd2ed3a
--- /dev/null
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ContentPage x:Class="NUITizenGallery.AnimatedVectorImageViewTestPage"
+  xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+  xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+  WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
+  HeightSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+    <!-- AppBar is top-side bar with navigation content, title, and action. If you not set any contents, back button is automatically added. -->
+    <ContentPage.AppBar>
+        <AppBar x:Name="appBar" Title="AnimatedVectorImageViewTestPage"/>
+    </ContentPage.AppBar>
+
+    <!-- Content is main placeholder of ContentPage. Add your content into this view. -->
+    <ContentPage.Content>
+        <View x:Name="ContentView"
+          WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
+          HeightSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+            <Button x:Name="ChangeCurrFrameBtn"
+                      WidthSpecification="500"
+                      HeightSpecification="100"
+                      BackgroundColor="#52c7d9"
+                      PointSize="15"
+                      TextColor="#800080"
+                      Position2D="50, 40"
+                      Text="change current frame"
+                      Weight="0.12">
+            </Button>
+
+            <Button x:Name="GetCurrFrameBtn"
+                      WidthSpecification="500"
+                      HeightSpecification="100"
+                      BackgroundColor="#52c7d9"
+                      PointSize="15"
+                      TextColor="#800080"
+                      Text="get current frame"
+                      Position2D="600, 40"
+                      Weight="0.12">
+            </Button>
+
+            <Button x:Name="PlayBtn"
+                      WidthSpecification="500"
+                      HeightSpecification="100"
+                      BackgroundColor="#52c7d9"
+                      PointSize="15"
+                      TextColor="#800080"
+                      Text="play"
+                      Position2D="50, 150"
+                      Weight="0.12">
+            </Button>
+
+            <Button x:Name="StopBtn"
+                      WidthSpecification="500"
+                      HeightSpecification="100"
+                      BackgroundColor="#52c7d9"
+                      PointSize="15"
+                      TextColor="#800080"
+                      Text="stop"
+                      Position2D="600, 150"
+                      Weight="0.12">
+            </Button>
+
+            <Button x:Name="SetMinMaxBtn"
+                      WidthSpecification="500"
+                      HeightSpecification="100"
+                      BackgroundColor="#52c7d9"
+                      PointSize="15"
+                      TextColor="#800080"
+                      Text="SetMinAndMaxFrame"
+                      Position2D="1200, 150"
+                      Weight="0.12">
+            </Button>
+
+            <AnimatedVectorImageView x:Name="aviv" Position2D="300,300" ResourceUrl="*Resource*/images/cycle_animation.json" RepeatCount="-1"/>
+
+        </View>
+    </ContentPage.Content>
+
+</ContentPage>
diff --git a/test/NUITizenGallery/Examples/AnimatedVectorImageViewTest/AnimatedVectorImageViewTest.xaml.cs b/test/NUITizenGallery/Examples/AnimatedVectorImageViewTest/AnimatedVectorImageViewTest.xaml.cs
new file mode 100644 (file)
index 0000000..fb35a70
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * Copyright(c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace NUITizenGallery
+{
+    using tlog = Tizen.Log;
+
+    public partial class AnimatedVectorImageViewTestPage : ContentPage
+    {
+        private const string tag = "NUITEST";
+        private int toggle, toggle2, toggle3;
+
+        public AnimatedVectorImageViewTestPage()
+        {
+            InitializeComponent();
+            tlog.Error(tag, $"aviv TotalFrame={aviv.TotalFrame}");
+            ChangeCurrFrameBtn.Clicked += ChangeCurrFrameBtnClicked;
+            PlayBtn.Clicked += PlayBtnClicked;
+            StopBtn.Clicked += StopBtnClicked;
+            GetCurrFrameBtn.Clicked += GetCurrFrameBtnClicked;
+            SetMinMaxBtn.Clicked += SetMinMaxBtnClicked;
+        }
+
+        private void SetMinMaxBtnClicked(object sender, ClickedEventArgs e)
+        {
+            string tmpText = "SetMinAndMaxFrame";
+            switch (++toggle3 % 3)
+            {
+                case 0:
+                    aviv.SetMinAndMaxFrame(-1, 1000);
+                    tmpText += $"(-1, 1000)";
+                    break;
+                case 1:
+                    aviv.SetMinAndMaxFrame(10, 50);
+                    tmpText += $"(10, 50)";
+                    break;
+                case 2:
+                    aviv.SetMinAndMaxFrame(51, 52);
+                    tmpText += $"(51, 52)";
+                    break;
+                default:
+                    break;
+            }
+            SetMinMaxBtn.Text = tmpText + $" CurrentFrame={aviv.CurrentFrame}";
+            tlog.Error(tag, $"case {toggle3}: aviv AnimationState={aviv.AnimationState} CurrentFrame={aviv.CurrentFrame}");
+        }
+
+        private void GetCurrFrameBtnClicked(object sender, ClickedEventArgs e)
+        {
+            GetCurrFrameBtn.Text = $"get current frame ({aviv.CurrentFrame})";
+            tlog.Error(tag, $"aviv AnimationState={aviv.AnimationState} CurrentFrame={aviv.CurrentFrame}");
+        }
+
+        private void PlayBtnClicked(object sender, ClickedEventArgs e)
+        {
+            aviv.Play();
+            PlayBtn.Text = $"play ({aviv.AnimationState}) curr frame={aviv.CurrentFrame}";
+        }
+
+        private void StopBtnClicked(object sender, ClickedEventArgs e)
+        {
+            string tmpText = "stop";
+            switch (++toggle2 % 3)
+            {
+                case 0:
+                    aviv.Stop(AnimatedVectorImageView.EndActions.Cancel);
+                    tmpText = $"stop ({aviv.AnimationState}) EndAction(Cancel)";
+                    break;
+                case 1:
+                    aviv.Stop(AnimatedVectorImageView.EndActions.Discard);
+                    tmpText = $"play/stop ({aviv.AnimationState}) EndAction(Discard)";
+                    break;
+                case 2:
+                    aviv.Stop(AnimatedVectorImageView.EndActions.StopFinal);
+                    tmpText = $"play/stop ({aviv.AnimationState}) EndAction(StopFinal)";
+                    break;
+                default:
+                    break;
+            }
+            StopBtn.Text = tmpText + $" curr frame={aviv.CurrentFrame}";
+            tlog.Error(tag, $"case {toggle2}: aviv AnimationState={aviv.AnimationState} CurrentFrame={aviv.CurrentFrame}");
+        }
+
+        private void ChangeCurrFrameBtnClicked(object sender, ClickedEventArgs e)
+        {
+            switch (++toggle % 3)
+            {
+                case 0:
+                    aviv.CurrentFrame = 0;
+                    tlog.Error(tag, $"case 0: aviv CurrentFrame={aviv.CurrentFrame}");
+                    break;
+                case 1:
+                    aviv.CurrentFrame = 5;
+                    tlog.Error(tag, $"case 1: aviv CurrentFrame={aviv.CurrentFrame}");
+                    break;
+                case 2:
+                    aviv.CurrentFrame = aviv.TotalFrame;
+                    tlog.Error(tag, $"case 2: aviv CurrentFrame={aviv.CurrentFrame}");
+                    break;
+                default:
+                    break;
+            }
+            ChangeCurrFrameBtn.Text = $"change current({aviv.CurrentFrame}) frame";
+        }
+    }
+}
old mode 100644 (file)
new mode 100755 (executable)
index 1e0dec4..4ac903b
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BackgroundColorTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 6eb0616..ab841b9
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BackgroundColorTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 2115c1a..50c3539
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BackgroundColorTest3Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 0ce93e1..570865c
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BackgroundColorTest4Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index a4eda8e..d6bb160
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BackgroundColorTest5Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 49ecd16..5902f2c
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BackgroundTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index ed2bfa9..41b2c13
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BindingTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:vm="clr-namespace:NUITizenGallery.ViewModels"
old mode 100644 (file)
new mode 100755 (executable)
index 847b88b..7dcbcaa
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BindingTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:vm="clr-namespace:NUITizenGallery.ViewModels"
old mode 100644 (file)
new mode 100755 (executable)
index 53c808c..1b06252
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BoxViewTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 8f44f8c..1baa99b
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BoxViewTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index ed1ef68..72ab4b4
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BoxViewTest3Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index cb51eda..0bf35b1
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BoxViewTest4Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index b52fbfa..a2866e3
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BrushBackgroundTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 2c4f188..82a29ab
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BrushBorderTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 0780692..c718ff7
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BrushComponentsTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index a4407f6..bb3551e
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BrushImageTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 91dcaf4..ec7c5ab
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.BrushViewerTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 1feaafb..b9d3367
@@ -34,9 +34,9 @@
                       PointSize="10"
                       TextColor="#ffffff"
                       Weight="0.12">
-                <Button.Icon>
+                <!--<Button.Icon>
                     <ImageView x:Name="imageview1" Size2D="60,60" />
-                </Button.Icon>
+                </Button.Icon>-->
             </Button>
 
             <Button x:Name="button3"
@@ -46,9 +46,9 @@
                       Text="Image and Text Button"
                       TextColor="#ffffff"
                       Weight="0.12">
-                <Button.Icon>
+                <!--<Button.Icon>
                     <ImageView x:Name="imageview2" Size2D="60,60" />
-                </Button.Icon>
+                </Button.Icon>-->
             </Button>
 
             <Button x:Name="button4"
@@ -58,9 +58,9 @@
                       Text="Color Change"
                       TextColor="#52c7d9"
                       Weight="0.12">
-                <Button.Icon>
+                <!--<Button.Icon>
                     <ImageView x:Name="imageview3" Size2D="60,60" />
-                </Button.Icon>
+                </Button.Icon>-->
             </Button>
 
             <Button x:Name="button5"
@@ -70,9 +70,9 @@
                       Text="Text Toggle"
                       TextColor="#ffffff"
                       Weight="0.12">
-                <Button.Icon>
+                <!--<Button.Icon>
                     <ImageView x:Name="imageview4" Size2D="60,60" />
-                </Button.Icon>
+                </Button.Icon>-->
             </Button>
 
             <Button x:Name="button6"
@@ -82,9 +82,9 @@
                       Text="Image Toggle"
                       TextColor="#ffffff"
                       Weight="0.12">
-                <Button.Icon>
+                <!--<Button.Icon>
                     <ImageView x:Name="imageview5" Size2D="60,60" />
-                </Button.Icon>
+                </Button.Icon>-->
             </Button>
 
             <Button x:Name="button7"
old mode 100644 (file)
new mode 100755 (executable)
index ed974e6..06e31d3
@@ -14,11 +14,16 @@ namespace NUITizenGallery
         public ButtonTest1Page()
         {
             InitializeComponent();
-            imageview1.ResourceUrl = ImageURL + "NUITizenGallery.png";
-            imageview2.ResourceUrl = ImageURL + "NUITizenGallery.png";
-            imageview3.ResourceUrl = ImageURL + "NUITizenGallery.png";
-            imageview4.ResourceUrl = ImageURL + "NUITizenGallery.png";
-            imageview5.ResourceUrl = ImageURL + "NUITizenGallery.png";
+            button2.Icon.Size2D = new Size2D(60, 60);
+            button2.Icon.ResourceUrl = ImageURL + "NUITizenGallery.png";
+            button3.Icon.Size2D = new Size2D(60, 60);
+            button3.Icon.ResourceUrl = ImageURL + "NUITizenGallery.png";
+            button4.Icon.Size2D = new Size2D(60, 60);
+            button4.Icon.ResourceUrl = ImageURL + "NUITizenGallery.png";
+            button5.Icon.Size2D = new Size2D(60, 60);
+            button5.Icon.ResourceUrl = ImageURL + "NUITizenGallery.png";
+            button6.Icon.Size2D = new Size2D(60, 60);
+            button6.Icon.ResourceUrl = ImageURL + "NUITizenGallery.png";
 
             button4.Clicked += (s, e) =>
             {
old mode 100644 (file)
new mode 100755 (executable)
index ffbaae9..924a4fc
@@ -28,9 +28,9 @@
                       Opacity="0.5"
                       PointSize="8">
 
-                <Button.Icon>
+                <!--<Button.Icon>
                     <ImageView x:Name="imageview1" Size2D="60,60" />
-                </Button.Icon>
+                </Button.Icon>-->
 
             </Button>
 
old mode 100644 (file)
new mode 100755 (executable)
index 21a27a1..c2c41b0
@@ -41,7 +41,8 @@ namespace NUITizenGallery
         public ButtonTest2Page()
         {
             InitializeComponent();
-            imageview1.ResourceUrl = ImageURL + "NUITizenGallery.png";
+            coloredButton.Icon.Size2D = new Size2D(60, 60);
+            coloredButton.Icon.ResourceUrl = ImageURL + "NUITizenGallery.png";
             coloredButton.Clicked += OnColoredButtonClicked;
             button3.Clicked += OnButton3Clicked;
         }
old mode 100644 (file)
new mode 100755 (executable)
index a36d0cf..c11db90
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CarouselPageTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index c7d8097..ffed541
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CarouselViewFocusTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index ab3dc73..68ea11a
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <View x:Class="NUITizenGallery.CarouselViewItem"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 0eda162..130f69a
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CarouselViewTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 70331ae..e554763
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CarouselViewTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 0cb3c4f..c8b0de9
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CarouselViewTest4Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 614d12e..7fe9d0b
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <RecyclerViewItem x:Class="NUITizenGallery.CollectionViewCustomItem"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
@@ -28,8 +28,8 @@
         <TextLabel x:Name="MainLabel"
                      WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
                      HeightSpecification="{Static LayoutParamPolicies.WrapContent}"
-                     CellHorizontalAlignment="Left"
-                     CellVerticalAlignment="Center"
+                     HorizontalAlignment="Begin"
+                     VerticalAlignment="Center"
                      Text="{Binding Name}"/>
 
         <CheckBox x:Name="Checkbox"
@@ -45,8 +45,8 @@
             </View.Layout>
 
             <TextLabel x:Name="IndexLebel"
-                         CellVerticalAlignment="Center"
-                         CellHorizontalAlignment="Center"
+                         VerticalAlignment="Center"
+                         HorizontalAlignment="Center"
                          Text="{Binding Index}"
                          TextColor="{Binding BgColor}"/>
             <ImageView x:Name="SubIcon"
old mode 100644 (file)
new mode 100755 (executable)
index 77259a2..476c637
@@ -38,9 +38,9 @@ namespace NUITizenGallery
 
         public CollectionViewCustomItem()
         {
-            Tizen.Log.Error("NUI", "Custom Item Created");
+            Tizen.Log.Info("NUI", "Custom Item Created");
             InitializeComponent();
-            Tizen.Log.Error("NUI", "Custom Item Initalzied");
+            Tizen.Log.Info("NUI", "Custom Item Initalzied");
             Clicked+=OnClicked;
         }
     }
old mode 100644 (file)
new mode 100755 (executable)
index 8d5303e..f63e36e
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CollectionViewCustomItemTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 6e0e8b4..d739e51
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CollectionViewFooterTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index ac89589..d508b98
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CollectionViewObservableTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 5cb4d95..9f2ffae
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CollectionViewTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 64151e2..181564b
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CollectionViewTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 11bd8b4..25de203
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CollectionViewTest3Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index b7bd852..764bdff
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CollectionViewTest4Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 9387c41..8c1d793
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CollectionViewTest5Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 6b2afbb..f8b28cc
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CollectionViewTest6Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index e950e3b..d4c71cb
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CollectionViewTest7Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index fcf67fb..41aedf4
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CollectionViewTest8Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 022d0c0..42d4aa5
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CollectionViewTest9Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index a5942a2..6c1e9e1
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.ContentPageTestPage1"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 6e638fa..2257ae4
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.ContentPageTestPage2"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index faac0b9..539e8cb
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <View x:Class="NUITizenGallery.CustomCellListItem"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 85286b6..c23d843
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.CustomCellTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 53dbcbc..e00f042
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.EntryTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 38d40e7..c387413
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.EntryTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 48d305d..acc535e
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.EntryTest4Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index c13cc6b..01448f9
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.FrameLayoutTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 676f520..bc2cff7
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.FrameLayoutTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index b04523b..5a098c6
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.FrameTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
index 9b5b19d..3d296f9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright(c) 2021 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
old mode 100644 (file)
new mode 100755 (executable)
index 2ccccc8..7e25bbb
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.GraphicsTypeTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
               HeightSpecification="500"
               BackgroundColor="#D3D6DD">
 
-                <TextLabel Text="This View is pixel based view." PointSize="12" Position2D="73,130"/>
+                <TextLabel Text="Pixels" PointSize="12" Position2D="73,130"/>
                 <View BackgroundColor="#FF0000" Position2D="32,108" Size2D="400,5"/>
                 <View BackgroundColor="#00FF00" Position2D="32,120" Size="400,5"/>
                 <View BackgroundColor="#0000FF" Position="42,100" Size2D="5,100"/>
                 <View BackgroundColor="#FF00FF" Position="54,100" Size="5,100"/>
                 <View x:Name="PixelRect" BackgroundColor="#FFFFFF"/>
                 <TextLabel x:Name="PixelText" PixelSize="20"/>
-                <TextLabel x:Name="PointText" PointSize="20"/>
             </View>
 
             <View x:Name="DpTypeView"
               HeightSpecification="500dp"
               BackgroundColor="#96D3DE">
 
-                <TextLabel Text="This View is Dp based view." PointSize="12dp" Position2D="73dp,130dp"/>
+                <TextLabel Text="DP" PointSize="12dp" Position2D="73dp,130dp"/>
                 <View BackgroundColor="#FF0000" Position2D="32dp,108dp" Size2D="400dp,5dp"/>
                 <View BackgroundColor="#00FF00" Position2D="32dp,120dp" Size="400dp,5dp"/>
                 <View BackgroundColor="#0000FF" Position="42dp,100dp" Size2D="5dp,100dp"/>
                 <View BackgroundColor="#FF00FF" Position="54dp,100dp" Size="5dp,100dp"/>
                 <View x:Name="DpRect" BackgroundColor="#FFFFFF"/>
-                <TextLabel x:Name="DpPixelText" PixelSize="20dp"/>
-                <TextLabel x:Name="DpPointText" PointSize="20dp"/>
+                <TextLabel x:Name="DpText" PixelSize="20"/>
             </View>
 
             <View x:Name="SpTypeView"
               HeightSpecification="500sp"
               BackgroundColor="#B2DAB8">
 
-                <TextLabel Text="This View is Sp based view." PointSize="12sp" Position2D="73sp,130sp"/>
+                <TextLabel Text="SP" PointSize="12sp" Position2D="73sp,130sp"/>
                 <View BackgroundColor="#FF0000" Position2D="32sp,108sp" Size2D="400sp,5sp"/>
                 <View BackgroundColor="#00FF00" Position2D="32sp,120sp" Size="400sp,5sp"/>
                 <View BackgroundColor="#0000FF" Position="42sp,100sp" Size2D="5sp,100sp"/>
                 <View x:Name="SpRect" BackgroundColor="#FFFFFF"/>
-                <TextLabel x:Name="SpPixelText" PixelSize="20sp"/>
-                <TextLabel x:Name="SpPointText" PointSize="20sp"/>
+                <TextLabel x:Name="SpText" PixelSize="20"/>
             </View>
         </ScrollableBase>
     </ContentPage.Content>
index ae739c5..8447b25 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright(c) 2021 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -34,38 +34,25 @@ namespace NUITizenGallery
             PixelRect.Size = new Size(300f, 100f);
             PixelText.Position2D = new Position2D(100, 310);
             PixelText.WidthSpecification = 300;
-            PixelText.HeightSpecification = 90;
-            PixelText.Text = "Pixel size 20";
-            PixelText.PixelSize = 20f;
-            PointText.Position2D = new Position2D(100, 410);
-            PointText.WidthSpecification = 300;
-            PointText.HeightSpecification = 90;
-            PointText.Text = "Point size 20";
-            PointText.PointSize = 20f;
+            PixelText.HeightSpecification = 100;
+            PixelText.Text = "Pixel size 100";
+            PixelText.PointSize = 20f;
 
             DpRect.Position = new Position(100f, 200f).DpToPx();
             DpRect.Size = new Size(300f, 100f).DpToPx();
-            DpPixelText.Position2D = new Position2D(100, 310).DpToPx();
-            DpPixelText.WidthSpecification = 300.DpToPx();
-            DpPixelText.HeightSpecification = 90.DpToPx();
-            DpPixelText.Text = $"Dp Pixel Size {20f.DpToPx()}";
-            DpPixelText.PixelSize = 20f.DpToPx();
-            DpPointText.Position2D = new Position2D(100, 410).DpToPx();
-            DpPointText.WidthSpecification = 300.DpToPx();
-            DpPointText.HeightSpecification = 90.DpToPx();
-            DpPointText.Text = $"Dp Point Size {20f.DpToPt()}";
+            DpText.Position2D = new Position2D(100, 310).DpToPx();
+            DpText.WidthSpecification = 300.DpToPx();
+            DpText.HeightSpecification = 100.DpToPx();
+            DpText.Text = $"Dp size {100f.DpToPx()}";
+            DpText.PointSize = 20f.DpToPt();
 
             SpRect.Position = new Position(100f, 200f).SpToPx();
             SpRect.Size = new Size(300f, 100f).SpToPx();
-            SpPixelText.Position2D = new Position2D(100, 310).SpToPx();
-            SpPixelText.WidthSpecification = 300.SpToPx();
-            SpPixelText.HeightSpecification = 90.SpToPx();
-            SpPixelText.Text = $"Sp Pixel Size {20f.SpToPx()}";
-            SpPointText.Position2D = new Position2D(100, 410).SpToPx();
-            SpPointText.WidthSpecification = 300.SpToPx();
-            SpPointText.HeightSpecification = 90.SpToPx();
-            SpPointText.Text = $"Sp Point Size {20f.SpToPt()}";
-            SpPointText.PointSize = 20f.SpToPt();
+            SpText.Position2D = new Position2D(100, 310).SpToPx();
+            SpText.WidthSpecification = 300.SpToPx();
+            SpText.HeightSpecification = 100.SpToPx();
+            SpText.Text = $"Sp size {100f.SpToPx()}";
+            SpText.PointSize = 20f.SpToPt();
         }
     }
 }
index 94db806..d57d415 100644 (file)
@@ -14,9 +14,6 @@
     <ContentPage.Content>
         <TextLabel x:Name="test1PageText"
                      Text="Hello NUI XAML !"
-                     PositionUsesPivotPoint="True"
-                     ParentOrigin="Center"
-                     PivotPoint="Center"
                      WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
                      HeightSpecification="{Static LayoutParamPolicies.MatchParent}"
                      HorizontalAlignment="Center"
old mode 100644 (file)
new mode 100755 (executable)
index efbe09e..192860c
@@ -26,9 +26,6 @@
                       TextColor="#ffffff"
                       WidthSpecification="{Static LayoutParamPolicies.WrapContent}"
                       HeightSpecification="{Static LayoutParamPolicies.WrapContent}" >
-                <Button.Icon>
-                    <ImageView x:Name="imageview1" Size2D="300, 300" />
-                </Button.Icon>
             </Button>
             <TextLabel x:Name="text1"
                          Text="ImageButton Status"
old mode 100644 (file)
new mode 100755 (executable)
index 866c2f2..105f02a
@@ -10,7 +10,8 @@ namespace NUITizenGallery
         public ImageButtonTestPage()
         {
             InitializeComponent();
-            imageview1.ResourceUrl = ImageURL + "NUITizenGallery.png";
+            button1.Icon.ResourceUrl = ImageURL + "NUITizenGallery.png";
+            button1.Icon.Size2D = new Tizen.NUI.Size2D(300, 300);
 
             button1.ControlStateChangedEvent += (o, e) =>
             {
old mode 100644 (file)
new mode 100755 (executable)
index 591d225..11f26d5
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.IndicatorViewTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 3273e58..58fd0c0
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.IndicatorViewTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index f927cee..c9beb1e
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.IndicatorViewTest3Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 2a01820..ac5a310
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.IndicatorViewTest4Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 78e921b..0b1567b
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.KeyboardTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 4313697..9123e37
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.LabelTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 8ff66b5..1041b4d
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.LabelTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 5d82ad3..710da10
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.LabelTest3Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
@@ -26,7 +26,7 @@
                     <LinearLayout LinearOrientation="Horizontal" LinearAlignment="Begin"/>
                 </View.Layout>
                 <TextLabel Text="LeftAligned"
-                        CellHorizontalAlignment="Left"
+                        HorizontalAlignment="Begin"
                         BackgroundColor="#00ffff"/>
             </View>
             <View WidthSpecification="{Static LayoutParamPolicies.MatchParent}" >
@@ -34,7 +34,7 @@
                     <LinearLayout LinearOrientation="Horizontal" LinearAlignment="Center"/>
                 </View.Layout>
                 <TextLabel Text="CenterAligned"
-                           CellHorizontalAlignment="Center"
+                           HorizontalAlignment="Center"
                            BackgroundColor="#00ffff"/>
             </View>
             <View WidthSpecification="{Static LayoutParamPolicies.MatchParent}" >
@@ -42,7 +42,7 @@
                     <LinearLayout LinearOrientation="Horizontal" LinearAlignment="End"/>
                 </View.Layout>
                 <TextLabel Text="RightAligned"
-                           CellHorizontalAlignment="Right"
+                           HorizontalAlignment="End"
                            BackgroundColor="#00ffff"/>
             </View>
             <TextLabel WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
old mode 100644 (file)
new mode 100755 (executable)
index 2057a47..9cc1f75
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.LabelTest5Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index f2fb8d4..6732c23
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.LayoutAddRemoveTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:base="clr-namespace:Tizen.NUI.BaseComponents;assembly=Tizen.NUI"
@@ -7,13 +7,12 @@
   HeightSpecification="{Static LayoutParamPolicies.MatchParent}">
 
     <ContentPage.AppBar>
-        <AppBar Title="LayoutAddRemoveTest1"/>
+        <AppBar x:Name="appBar" Title="LayoutAddRemoveTest1"/>
     </ContentPage.AppBar>
-
+    
     <ContentPage.Content>
         <ScrollableBase x:Name="rootView"
-          WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
-          HeightSpecification="{Static LayoutParamPolicies.MatchParent}">
+          WidthSpecification="{Static LayoutParamPolicies.MatchParent}" >
 
             <View.Layout>
                 <LinearLayout LinearOrientation="Vertical" CellPadding="10,10"/>
old mode 100644 (file)
new mode 100755 (executable)
index e35984c..9221bb8
@@ -26,6 +26,8 @@ namespace NUITizenGallery
         public LayoutAddRemoveTest1Page()
         {
             InitializeComponent();
+            rootView.SizeHeight = Window.Instance.WindowSize.Height - appBar.SizeHeight;
+
             addButton.Clicked += OnAddButtonClicked;
             removeButton.Clicked += OnRemoveButtonClicked;
         }
old mode 100644 (file)
new mode 100755 (executable)
index c37a71f..2c13654
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.LayoutAddRemoveTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 7881b7b..a1adaff
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.LinearLayoutTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 3ac8aca..2cdad81
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.LinearLayoutTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 9272431..bb6ae20
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.LinearLayoutTest3Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index d38805c..7428733
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.LinearLayoutTest4Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 3a1fb30..f728e76
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.LinearLayoutTest5Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index b829a88..6c7c9a5
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.LinearLayoutTest6Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 41dfc51..103cbad
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.LinearLayoutTest8Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index b26bac5..488d01b
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <Menu x:Class="NUITizenGallery.MenuTestMenu"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
old mode 100644 (file)
new mode 100755 (executable)
index 1367da7..3fa0e01
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.MenuTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 1366c66..adb2428
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.NavigatorTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
@@ -13,8 +13,7 @@
     <!-- Content is main placeholder of ContentPage. Add your content into this view. -->
     <ContentPage.Content>
         <View x:Name="ContentView"
-          WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
-          HeightSpecification="{Static LayoutParamPolicies.MatchParent}">
+          WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
 
             <View.Layout>
                 <LinearLayout LinearOrientation="Vertical" CellPadding="0, 10"/>
old mode 100644 (file)
new mode 100755 (executable)
index 6c9da21..cafb3a5
@@ -24,6 +24,7 @@ namespace NUITizenGallery
         public NavigatorTest1Page()
         {
             InitializeComponent();
+            ContentView.SizeHeight = Window.Instance.WindowSize.Height - appBar.SizeHeight;
         }
 
         private void SetButtonColor(NavigatorTest1Page page, int type)
old mode 100644 (file)
new mode 100755 (executable)
index 83cc234..a0d370b
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.NavigatorTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
@@ -13,8 +13,7 @@
     <!-- Content is main placeholder of ContentPage. Add your content into this view. -->
     <ContentPage.Content>
         <View x:Name="ContentView"
-          WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
-          HeightSpecification="{Static LayoutParamPolicies.MatchParent}">
+          WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
 
             <View.Layout>
                 <LinearLayout LinearOrientation="Vertical" CellPadding="0, 10"/>
old mode 100644 (file)
new mode 100755 (executable)
index e3c5843..60040c2
@@ -24,6 +24,7 @@ namespace NUITizenGallery
         public NavigatorTest2Page()
         {
             InitializeComponent();
+            ContentView.SizeHeight = Window.Instance.WindowSize.Height - appBar.SizeHeight;
         }
 
         private void SetButtonColor(NavigatorTest2Page page, int type)
old mode 100644 (file)
new mode 100755 (executable)
index f737664..2a23b7f
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.OpacityTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 6b3c1db..516ace3
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <View x:Class="NUITizenGallery.ListItemTitle"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 89044f2..0142fac
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <View x:Class="NUITizenGallery.ListItemTitleSwitch"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 5234df6..bb130fd
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <View x:Class="NUITizenGallery.ListItemTitleView"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 57d81b9..2794135
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.PerformanceTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 31cf123..0e2dba8
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.PerformanceTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 7c53aee..1b5fde5
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.PerformanceTest3Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 09fb498..09c9235
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.ProgressbarTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
index 36fba2e..ffdb28b 100755 (executable)
                     <LinearLayout LinearOrientation="Vertical" LinearAlignment="CenterHorizontal" CellPadding="10, 10"/>
                 </View.Layout>
 
-                <TextLabel Text="abc1" CellHorizontalAlignment="Center"/>
-                <TextLabel Text="abc2" CellHorizontalAlignment="Center"/>
-                <TextLabel Text="abc3" CellHorizontalAlignment="Center"/>
-                <TextLabel Text="abc4" CellHorizontalAlignment="Center"/>
-                <TextLabel Text="abc5" CellHorizontalAlignment="Center"/>
-                <TextLabel Text="abc6" CellHorizontalAlignment="Center"/>
-                <TextLabel Text="abc7" CellHorizontalAlignment="Center"/>
-                <TextLabel Text="abc8" CellHorizontalAlignment="Center"/>
-                <TextLabel Text="abc9" CellHorizontalAlignment="Center"/>
-                <TextLabel Text="abc0" CellHorizontalAlignment="Center"/>
+                <TextLabel Text="abc1" HorizontalAlignment="Center"/>
+                <TextLabel Text="abc2" HorizontalAlignment="Center"/>
+                <TextLabel Text="abc3" HorizontalAlignment="Center"/>
+                <TextLabel Text="abc4" HorizontalAlignment="Center"/>
+                <TextLabel Text="abc5" HorizontalAlignment="Center"/>
+                <TextLabel Text="abc6" HorizontalAlignment="Center"/>
+                <TextLabel Text="abc7" HorizontalAlignment="Center"/>
+                <TextLabel Text="abc8" HorizontalAlignment="Center"/>
+                <TextLabel Text="abc9" HorizontalAlignment="Center"/>
+                <TextLabel Text="abc0" HorizontalAlignment="Center"/>
             </View>
             <Button x:Name="btn1"
                       Text="clear"
                       WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
-                      CellHorizontalAlignment="Center"/>
+                      TextAlignment="Center"/>
         </View>
     </ContentPage.Content>
 </ContentPage>
index 6d8db07..9769544 100755 (executable)
@@ -22,7 +22,7 @@
 
                        <Button x:Name="btn1" Text="Change"
                                  WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
-                                 HeightSpecification="100" CellHorizontalAlignment="Left"/>
+                                 HeightSpecification="100" TextAlignment="Begin"/>
                        <View x:Name="lblView">
                                <ScrollableBase x:Name="Scroller" ScrollingDirection="Vertical" HideScrollbar="false" >
 
index 7252f83..2fc1821 100755 (executable)
     <!-- Content is main placeholder of ContentPage. Add your content into this view. -->
     <ContentPage.Content>
         <View x:Name="ContentView"
-          WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
-          HeightSpecification="{Static LayoutParamPolicies.MatchParent}">
+          WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
 
             <View.Layout>
                 <LinearLayout LinearOrientation="Vertical" LinearAlignment="Center" CellPadding="10, 10"/>
             </View.Layout>
 
             <Button x:Name="btn"
-                      Size2D="600, 100"
+                      Size2D="600, 90"
                       Text="WOW!!"
-                      CellHorizontalAlignment="Center"
-                      CellVerticalAlignment="Center"/>
+                      TextAlignment="Center" />
             <View x:Name="rect"
-                    Size2D="600, 100"
+                    Size2D="600, 90"
                     BackgroundColor="Blue"
                     CellHorizontalAlignment="Center"
                     CellVerticalAlignment="Center" />
             <ImageView x:Name="img"
+                         SizeHeight="300"
                          CellHorizontalAlignment="Center"
                          CellVerticalAlignment="Center"/>
             <TextLabel x:Name="label"
                          Text="Rotation"
-                         CellHorizontalAlignment="Center"
-                         CellVerticalAlignment="Center"/>
+                         HorizontalAlignment="Center"
+                         VerticalAlignment="Center"/>
             <TextLabel Text="X:"/>
             <Slider x:Name="sliderX"
-                      Size2D="600, 50"
+                      Size2D="600, 40"
                       MinValue="0"
                       MaxValue="180"
                       BgTrackColor="#b1b1b1"
@@ -47,7 +46,7 @@
                       TrackThickness="5" />
             <TextLabel Text="Y:"/>
             <Slider x:Name="sliderY"
-                      Size2D="600, 50"
+                      Size2D="600, 40"
                       MinValue="0"
                       MaxValue="180"
                       BgTrackColor="#b1b1b1"
@@ -55,7 +54,7 @@
                       TrackThickness="5"/>
             <TextLabel Text="Z:"/>
             <Slider x:Name="sliderZ"
-                      Size2D="600, 50"
+                      Size2D="600, 40"
                       MinValue="0"
                       MaxValue="180"
                       BgTrackColor="#b1b1b1"
index 315f578..88fb2fb 100755 (executable)
@@ -27,6 +27,7 @@ namespace NUITizenGallery
         public RotationTest1Page()
         {
             InitializeComponent();
+            ContentView.SizeHeight = Window.Instance.WindowSize.Height - appBar.SizeHeight;
             img.SetImage(ResourcePath + "a.jpg");
 
             int count = 0;
old mode 100644 (file)
new mode 100755 (executable)
index 28a37a1..1c0d7a6
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.ScaleTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 4407659..a5e2d70
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.ScaleTest2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
index 7e5fec9..ddc5ad7 100755 (executable)
@@ -29,7 +29,7 @@ namespace NUITizenGallery
             Button btn = new Button
             {
                 Size2D = new Size2D(230, NUIApplication.GetDefaultWindow().WindowSize.Height),
-                BackgroundColor = new Color(0.0f, 0.0f, 1.0f, 255),
+                BackgroundColor = new Color(0.0f, 0.0f, 1.0f, 1.0f),
                 Text = "Test ScrollTo"
             };
             Scroller.Add(btn);
@@ -37,13 +37,13 @@ namespace NUITizenGallery
             Random rand = new Random();
             for (int i = 0; i <= 60; ++i)
             {
-                float r = (float)rand.NextDouble();
-                float g = (float)rand.NextDouble();
-                float b = (float)rand.NextDouble();
+                float r = (float)rand.NextDouble() / 255f;
+                float g = (float)rand.NextDouble() / 255f;
+                float b = (float)rand.NextDouble() / 255f;
                 var t = new View
                 {
                     Size2D = new Size2D(230, NUIApplication.GetDefaultWindow().WindowSize.Height),
-                    BackgroundColor = new Color(r, g, b, 255),
+                    BackgroundColor = new Color(r, g, b, 1.0f),
                 };
                 Scroller.Add(t);
             }
index 6eff1e6..ab3fd43 100755 (executable)
@@ -42,13 +42,13 @@ namespace NUITizenGallery
             Random rand = new Random();
             for (int i = 0; i <= 60; ++i)
             {
-                float r = (float)rand.NextDouble();
-                float g = (float)rand.NextDouble();
-                float b = (float)rand.NextDouble();
+                float r = (float)rand.NextDouble() / 255f;
+                float g = (float)rand.NextDouble() / 255f;
+                float b = (float)rand.NextDouble() / 255f;
                 var t = new View
                 {
                     Size2D = new Size2D(200, 200),
-                    BackgroundColor = new Color(r, g, b, 255),
+                    BackgroundColor = new Color(r, g, b, 1f),
                 };
                 box.Add(t);
             }
old mode 100644 (file)
new mode 100755 (executable)
index 6e26f33..e2ddc23
                 <TextLabel x:Name="txtLbl1"
                              Text="This is what a ScrollView widget looks like."
                              TextColor="Blue"
-                             CellHorizontalAlignment="Left"/>
+                             HorizontalAlignment="Begin"/>
                 <TextLabel x:Name="txtLbl2"
                              Text="Please use the widgets to test ScrollView's behavior."
                              TextColor="Green"
-                             CellHorizontalAlignment="Left" />
+                             HorizontalAlignment="Begin" />
                 <TextLabel x:Name="txtLbl3"
                              Text="This is long horizontal text."
                              TextColor="Cyan"
-                             CellHorizontalAlignment="Left"
+                             HorizontalAlignment="Begin"
                              FontSizeScale="0.8"/>
             </ScrollableBase>
             <TextLabel x:Name="widthLbl"
old mode 100644 (file)
new mode 100755 (executable)
index 87e5967..9d2ec0e
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.SetColorTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index bfeab79..2b6d8e9
@@ -33,8 +33,13 @@ namespace NUITizenGallery
             ButtonColorName.Text = GetColorValues(ChangeColorButton.BackgroundColor);
             CheckBoxColorName.Text = GetColorValues(CheckBox2.BackgroundColor);
             ProgressBarColorName.Text = GetColorValues(ProgressBar.BackgroundColor);
+            RadioColorName.Text = GetColorValues(RadioButton2.BackgroundColor);
 
             ChangeColorButton.Clicked += OnChangeColorClicked;
+
+            RadioButtonGroup group = new RadioButtonGroup();
+            group.Add(RadioButton1);
+            group.Add(RadioButton2);
         }
 
         private Color GenerateColor(View component, TextLabel label)
old mode 100644 (file)
new mode 100755 (executable)
index 8d7fc11..e2b9543
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.SimpleTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index b159b92..d2378f5
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.StackInGridTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 9331770..01833d4
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.TabViewTestPage"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
@@ -13,8 +13,7 @@
     <!-- Content is main placeholder of ContentPage. Add your content into this view. -->
     <ContentPage.Content>
         <TabView x:Name="tabView"
-                   WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
-                   HeightSpecification="{Static LayoutParamPolicies.MatchParent}" >
+                   WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
         </TabView>
     </ContentPage.Content>
 
old mode 100644 (file)
new mode 100755 (executable)
index 26827f5..f293e52
@@ -28,6 +28,8 @@ namespace NUITizenGallery
         {
             InitializeComponent();
 
+            tabView.SizeHeight = Window.Instance.WindowSize.Height - appBar.SizeHeight;
+
             tabView.AddTab(CreateTabButton(), CreateView());
             tabCount++;
 
old mode 100644 (file)
new mode 100755 (executable)
index 4aa91b7..16c6ab0
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.Test1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
@@ -14,9 +14,6 @@
     <ContentPage.Content>
         <TextLabel x:Name="test1PageText"
                      Text="Hello NUI XAML !"
-                     PositionUsesPivotPoint="True"
-                     ParentOrigin="Center"
-                     PivotPoint="Center"
                      WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
                      HeightSpecification="{Static LayoutParamPolicies.MatchParent}"
                      HorizontalAlignment="Center"
old mode 100644 (file)
new mode 100755 (executable)
index 2d77312..116c98e
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.Test2Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index a05c027..909470c
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.TimerTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:vm="clr-namespace:NUITizenGallery.ViewModels"
old mode 100644 (file)
new mode 100755 (executable)
index 29c33af..f2dd804
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
 <ContentPage x:Class="NUITizenGallery.ToolbarItemTest1Page"
   xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
old mode 100644 (file)
new mode 100755 (executable)
index 459ef15..5d2293e
@@ -42,7 +42,9 @@ namespace NUITizenGallery
             mDrawableGroup = new DrawableGroup();
             canvasView.AddDrawable(mDrawableGroup);
 
-            for(int i = 0; i < NumberOfPictures; i++)
+            contentView.SizeHeight = Window.Instance.WindowSize.Height - appBar.SizeHeight;
+
+            for (int i = 0; i < NumberOfPictures; i++)
             {
                 mPicture[i] = new Picture();
                 mPicture[i].Load(ResourcePath + Files[i]);
old mode 100644 (file)
new mode 100755 (executable)
index 860adaa..01ee108
@@ -19,7 +19,7 @@
           <View.Layout>
             <LinearLayout LinearOrientation="Vertical" CellPadding="10,10" LinearAlignment="Top"/>
           </View.Layout>
-          <ImageView x:Name="imageView" Size="{Binding Source={x:Static Window.Instance}, Path=Size }"/>
+            <ImageView x:Name="imageView" Size="{Binding Source={x:Reference ContentView}, Path=Size }"/>
 
         </View>
     </ContentPage.Content>
old mode 100644 (file)
new mode 100755 (executable)
index 8b7549b..a257b95
@@ -34,6 +34,7 @@ namespace NUITizenGallery
         {
             InputField.GetInputMethodContext()?.HideInputPanel();
             TargetWebView.Url = InputField.Text;
+            TargetWebView.LoadUrl(TargetWebView.Url);
         }
 
         public void OnBackClicked(object sender, EventArgs e)
old mode 100644 (file)
new mode 100755 (executable)
index bc11e30..b9ddae8
@@ -150,6 +150,8 @@ namespace NUITizenGallery
     class Program : NUIApplication
     {
         private Window window;
+        private AppBar appBar;
+        private View pageContent;
         private Navigator navigator;
         private CollectionView colView;
         private ItemSelectionMode selMode;
@@ -179,7 +181,7 @@ namespace NUITizenGallery
         public void OnSelectionChanged(object sender, SelectionChangedEventArgs ev)
         {
             Console.WriteLine($"@@@ OnSelectionChanged() {ev.CurrentSelection}");
-
+            
             foreach (object item in ev.CurrentSelection)
             {
                 if (item == null)
@@ -221,6 +223,7 @@ namespace NUITizenGallery
             base.OnCreate();
             Initialize();
             SetMainPage();
+            pageContent.SizeHeight = Window.Instance.WindowSize.Height - appBar.SizeHeight;
         }
         private void Initialize()
         {
@@ -247,7 +250,7 @@ namespace NUITizenGallery
 
         private void SetMainPage()
         {
-            var appBar = new AppBar()
+            appBar = new AppBar()
             {
                 Title = "NUI Tizen Gallery",
                 AutoNavigationContent = false,
@@ -259,7 +262,7 @@ namespace NUITizenGallery
             appBar.NavigationContent = moreButton;
 
 
-            var pageContent = new View()
+            pageContent = new View()
             {
                 Layout = new LinearLayout()
                 {
@@ -299,6 +302,7 @@ namespace NUITizenGallery
                 }),
                 Header = myTitle,
                 ScrollingDirection = ScrollableBase.Direction.Vertical,
+                HideScrollbar = false,
                 WidthSpecification = LayoutParamPolicies.MatchParent,
                 HeightSpecification = LayoutParamPolicies.MatchParent,
                 SelectionMode = selMode,
@@ -362,7 +366,7 @@ namespace NUITizenGallery
             }
 
             var app = new Program();
-            app.Run(emptyArgs);
+            app.Run(args);
         }
     }
 }
index 9f31cd6..c484b00 100755 (executable)
     <Folder Include="lib\" />
   </ItemGroup>
 
-
-    <ItemGroup>
-        <PackageReference Include="Tizen.NUI.XamlBuild" Version="1.0.32" />
-    </ItemGroup>
-
     <ItemGroup>
         <ProjectReference Include="../../src/Tizen.NUI.Components/Tizen.NUI.Components.csproj" />
         <ProjectReference Include="../../src/Tizen.NUI/Tizen.NUI.csproj" />
     </ItemGroup>
 
     <PropertyGroup>
-        <NeedInjection>False</NeedInjection>
+        <XamlOptimization>2</XamlOptimization>
     </PropertyGroup>
 
+    <ImportGroup>
+        <Import Project="..\..\pkg\Tizen.NET.API10\xamlbuild\Tizen.NUI.XamlBuild.targets" />
+    </ImportGroup>
 </Project>
diff --git a/test/NUITizenGallery/res/images/cycle_animation.json b/test/NUITizenGallery/res/images/cycle_animation.json
new file mode 100644 (file)
index 0000000..41eb67f
--- /dev/null
@@ -0,0 +1 @@
+{"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":0,"ty":4,"nm":"rwrist","parent":3,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[11]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[11],"e":[14]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[14],"e":[11]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[11],"e":[2]},{"t":79.999993075758}]},"p":{"k":[162.667,47.683,0]},"a":{"k":[6.25,5,0]},"s":{"k":[286.667,286.667,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-3.617],[0,0],[0,0],[-2.477,-0.327],[0,0],[-0.583,1.955],[0.679,-0.135],[0.896,-0.016],[0,0]],"o":[[0,3.617],[0,0],[0,0],[2.477,0.328],[0,0],[0.583,-1.955],[-0.68,0.136],[-0.896,0.016],[0,0]],"v":[[-24.211,-2.03],[-18.297,1.317],[11.586,0.755],[14.965,5.014],[19.744,5.045],[23.627,3.693],[19.985,-4.633],[11.403,-4.871],[-18.297,-5.617]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"mn":"ADBE Vector Group"},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.99,0.8,0.68,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[26.272,7.347],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":4,"nm":"rhand ","parent":3,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[164.817,-72,0]},"a":{"k":[11,11.75,0]},"s":{"k":[286.667,286.667,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-3.255,0.177],[9.144,0],[0,0]],"o":[[0.425,-5.656],[-9.144,0],[0,0]],"v":[[6.429,-5.417],[-0.866,-25.5],[-8.389,-5.417]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.19,0.19,0.19,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[11.5,30.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,-5.24],[-2.96,0],[0,3.958],[0,0]],"o":[[0,0],[0,5.24],[2.96,0],[0,-3.958],[0,0]],"v":[[-7.5,-9.5],[-5.975,18.877],[-1.047,25.968],[3.689,18.877],[5.406,-9.5]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.99,0.8,0.68,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[11.5,30.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":1,"ind":2,"ty":4,"nm":"Bag ","parent":3,"ks":{"o":{"k":100},"rx":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[-18]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18,"s":[-18],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":36,"s":[0],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":52,"s":[0],"e":[-18]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":65,"s":[-18],"e":[0]},{"t":79.999993075758}]},"ry":{"k":0},"rz":{"k":15},"or":{"k":[0,0,0]},"p":{"k":[52.657,39.799,0]},"a":{"k":[20.609,7.443,0]},"s":{"k":[268.033,268.033,268.033]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.192,0],[0,0],[-0.001,0.192],[0,0],[-0.192,-0.001],[0,0],[0,-0.193]],"o":[[0,0.192],[0,0],[-0.192,0],[0,0],[0,-0.192],[0,0],[0.192,0.001],[0,0]],"v":[[3.31,0.466],[2.962,0.813],[-2.963,0.804],[-3.31,0.456],[-3.309,-0.465],[-2.961,-0.812],[2.964,-0.803],[3.311,-0.455]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"mn":"ADBE Vector Group"},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.43,0.28,0.02,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[5.273,4.134],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.192,0],[0,0],[0,0.192],[0,0],[-0.192,0],[0,0],[0.001,-0.192]],"o":[[0,0.192],[0,0],[-0.192,0],[0,0],[0,-0.192],[0,0],[0.192,0],[0,0]],"v":[[3.445,0.661],[3.098,1.008],[-3.1,0.999],[-3.447,0.65],[-3.446,-0.661],[-3.098,-1.008],[3.1,-0.999],[3.447,-0.651]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"mn":"ADBE Vector Group"},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.67,0.58,0.12,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[21.267,26.064],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.384,0.001],[0,0],[-0.001,0.384],[0,0],[-0.384,0],[0,0],[0,-0.384]],"o":[[-0.001,0.384],[0,0],[-0.384,0],[0,0],[0.001,-0.384],[0,0],[0.384,0.001],[0,0]],"v":[[4.603,1.421],[3.907,2.115],[-3.912,2.103],[-4.606,1.407],[-4.603,-1.421],[-3.908,-2.116],[3.912,-2.104],[4.607,-1.407]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"mn":"ADBE Vector Group"},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.82,0.71,0.18,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[21.267,26.056],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[1.151,0.002],[0,0],[-0.002,1.152],[0,0],[-1.151,-0.001],[0,0],[0.002,-1.152]],"o":[[-0.002,1.152],[0,0],[-1.151,-0.001],[0,0],[0.001,-1.152],[0,0],[1.151,0.002],[0,0]],"v":[[17.326,8.218],[15.239,10.3],[-15.263,10.254],[-17.345,8.165],[-17.326,-8.217],[-15.239,-10.3],[15.263,-10.254],[17.345,-8.165]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"mn":"ADBE Vector Group"},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.67,0.44,0.06,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[21.279,16.087],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.384,0],[0,0],[-0.001,0.384],[0,0],[-0.384,-0.001],[0,0],[0,-0.384]],"o":[[-0.001,0.384],[0,0],[-0.384,-0.001],[0,0],[0,-0.384],[0,0],[0.384,0.001],[0,0]],"v":[[18.574,11.898],[17.879,12.593],[-17.908,12.538],[-18.602,11.842],[-18.574,-11.898],[-17.878,-12.592],[17.908,-12.538],[18.602,-11.842]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"mn":"ADBE Vector Group"},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.6,0.38,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[21.274,20.218],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.572,-2.851],[-2.565,-2.859],[-2.572,2.851],[2.566,2.859]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"mn":"ADBE Vector Group"},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.51,0.32,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[37.308,7.016],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.572,-2.851],[-2.565,-2.859],[-2.572,2.851],[2.566,2.859]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"mn":"ADBE Vector Group"},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.51,0.32,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[5.27,6.968],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":3,"nm":"body","ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[-4]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[-4],"e":[-7]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[-7],"e":[-4.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[-4.5],"e":[0]},{"t":79.999993075758}]},"p":{"k":[297,237,0]},"a":{"k":[48,57,0]},"s":{"k":[69.767,69.767,100]}},"ao":0,"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"chest","parent":3,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[38.683,57,0]},"a":{"k":[25.484,61.419,0]},"s":{"k":[266.6,266.6,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.185,0.053],[0,0],[-0.053,0.184],[0,0],[-0.185,-0.053],[0,0],[0.053,-0.185]],"o":[[-0.053,0.184],[0,0],[-0.184,-0.053],[0,0],[0.053,-0.184],[0,0],[0.185,0.053],[0,0]],"v":[[11.375,22.971],[10.944,23.208],[5.252,21.566],[5.014,21.137],[5.268,20.252],[5.699,20.014],[11.392,21.656],[11.629,22.086]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.43,0.28,0.02,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[40,34],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.185,0.053],[0,0],[-0.053,0.184],[0,0],[-0.184,-0.054],[0,0],[0.053,-0.185]],"o":[[-0.053,0.184],[0,0],[-0.184,-0.053],[0,0],[0.053,-0.184],[0,0],[0.185,0.053],[0,0]],"v":[[-20.626,15.971],[-21.056,16.208],[-26.749,14.566],[-26.986,14.137],[-26.731,13.252],[-26.301,13.014],[-20.608,14.655],[-20.371,15.086]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.43,0.28,0.02,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[40,34],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.517,22.424],[5.58,21],[4,26.487],[8.937,27.91]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.51,0.32,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[40,34],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-21.483,15.424],[-26.42,14],[-28,19.487],[-23.063,20.91]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.51,0.32,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[40,34],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-4.953,9.665],[0,0],[0,0],[8.599,-10.328]],"o":[[0,0],[2.015,-2.563],[0,0],[0,0],[0,0]],"v":[[6,21.211],[17.004,6.078],[20.512,2.135],[23.003,0],[11.207,22.897]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.6,0.38,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[40,34],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[9.566,-32.008],[0,0],[0,0],[0,0]],"o":[[0,0],[12.045,-35.249],[3.622,-0.824],[-22.095,1.378]],"v":[[-26,14.584],[-21.442,15.937],[22.342,-26.587],[29.099,-28]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.6,0.38,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[40,34],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[-0.488,-5.848],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[31,-28.553],[33.089,-29],[35.178,-17.586],[34.385,-16.143]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.19,0.19,0.19,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[40,34],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[15.666,0.157],[0,0],[-27.165,15.109],[-11.901,1.419],[3.901,-6.071],[15.747,-26.898]],"o":[[-5.661,-0.057],[0.133,-1.6],[8.451,-4.7],[0,0],[-3.9,6.072],[0,0]],"v":[[-25.84,28.15],[-35,23.869],[1.53,-18.983],[33.09,-29],[33.09,-7.606],[5.797,22.423]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.14,0.14,0.14,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[40,34],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"Head ","parent":3,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[6]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[6],"e":[13]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[13],"e":[6]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[6],"e":[0]},{"t":79.999993075758}]},"p":{"k":[162.771,-77.156,0]},"a":{"k":[-0.464,39.201,0]},"s":{"k":[286.667,286.667,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[1.663,2.582],[-3.275,-0.55],[0.261,-0.736]],"o":[[0,0],[0,0],[0,0]],"v":[[5,11],[9.924,12.63],[9.375,14.332]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[23,24],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.326],[0.326,0],[0,0],[0,0.326],[-0.326,0],[0,0]],"o":[[0,0.326],[0,0],[-0.326,0],[0,-0.326],[0,0],[0.326,0]],"v":[[10.24,-2.409],[9.649,-1.818],[5.591,-1.818],[5,-2.409],[5.591,-3],[9.649,-3]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.39,0.15,0.02,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[23,24],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.268],[0.268,0],[0,0.268],[-0.267,0]],"o":[[0,0.268],[-0.267,0],[0,-0.268],[0.268,0]],"v":[[7.969,0.485],[7.485,0.97],[7,0.485],[7.485,0]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[1,1,1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[23,24],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.775],[0.775,0],[0,0.775],[-0.774,0]],"o":[[0,0.775],[-0.774,0],[0,-0.775],[0.775,0]],"v":[[8.804,1.403],[7.401,2.807],[6,1.403],[7.401,0]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.11,0.11,0.1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[23,24],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-0.843,-1.827],[1.498,-0.692],[0.843,1.827],[-1.498,0.691]],"o":[[0.843,1.827],[-1.498,0.692],[-0.843,-1.827],[1.497,-0.692]],"v":[[-6.176,-1.714],[-7.362,2.847],[-11.599,0.791],[-10.414,-3.77]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.99,0.8,0.68,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[23,24],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-1.677,2.172],[-0.099,4.048],[-1.605,0.208],[5.498,4.048],[0.439,-2.468],[6.315,2.567],[-0.198,-3.036],[6.018,0],[-0.888,-1.481],[9.965,-3.159],[-0.62,-2.369],[1.875,-0.395],[-1.085,1.678],[0,0],[-0.296,-0.395],[0,0]],"o":[[0,0],[1.677,-2.172],[0.099,-4.048],[1.605,-0.208],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-9.965,3.159],[0.621,2.37],[0,0],[1.085,-1.678],[0,0],[0.296,0.395],[0,0]],"v":[[-2.051,6.304],[-1.755,-0.564],[3.376,-7.573],[13.413,-6.575],[13.413,-18.532],[14.273,-14.089],[8.21,-21],[9.986,-16.138],[1.501,-21],[4.56,-18.532],[-9.747,-17.841],[-14.314,-0.07],[-15.666,5.589],[-11.187,6.312],[-9.253,1.016],[-5.998,0.917],[-5.898,6.304]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.39,0.15,0.02,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[23,24],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-2.524,-1.428],[-0.549,0.659],[-0.549,3.405],[-0.439,-0.11],[0.658,3.734],[1.756,3.844],[6.109,-6.699]],"o":[[0,0],[2.524,1.428],[0.549,-0.659],[0,0],[0,0],[0,0],[-1.756,-3.844],[-6.109,6.7]],"v":[[-10.889,10.683],[-4.743,16.394],[6.233,20.018],[10.075,9.585],[13.587,10.353],[12.38,-0.52],[11.831,-10.295],[-12.683,-12.821]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.99,0.8,0.68,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[23,24],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-10.795,6],[-26,11.223],[-22.597,21.658],[-5.457,13.551]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.99,0.8,0.68,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[23,24],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":3,"nm":"frontLeg","ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[5],"e":[13]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[13],"e":[57]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[57],"e":[36]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[36],"e":[7]},{"t":79.999993075758}]},"p":{"k":[308.5,240,0]},"a":{"k":[49,52,0]},"s":{"k":[32.292,32.292,100]}},"ao":0,"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":3,"nm":"frontKnee","parent":6,"ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[-35]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[-35],"e":[-97]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[-97],"e":[-34]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[-34],"e":[1]},{"t":79.999993075758}]},"p":{"k":[306.702,176.759,0]},"a":{"k":[52.5,50,0]},"s":{"k":[123.871,123.871,100]}},"ao":0,"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"frontPedal","parent":9,"ks":{"o":{"k":100},"r":{"k":-1},"p":{"k":[11.89,14.514,0]},"a":{"k":[-23.125,166.375,0]},"s":{"k":[62.195,50,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[31,8]},"p":{"k":[0,0]},"r":{"k":20},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect"},{"ty":"st","fillEnabled":true,"c":{"k":[0.17,0.41,0.69,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.13,0.13,0.13,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-23.25,166.25],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":9,"ty":4,"nm":"R Shoe ","parent":7,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[-4],"e":[6.6]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":9,"s":[6.6],"e":[24]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[24],"e":[35]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":30,"s":[35],"e":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[40],"e":[16.947]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":50,"s":[16.947],"e":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[0],"e":[-12.714]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":70,"s":[-12.714],"e":[-9]},{"t":79.999993075758}]},"p":{"k":[-90.571,211.61,0]},"a":{"k":[8,6.375,0]},"s":{"k":[500,500,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.827,-0.558],[13.827,-0.558],[13.827,0.558],[-13.827,0.558]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.72,0.51,0.37,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16.327,11.958],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[1.455,0.998],[1.455,0.249],[3.014,0],[0.856,0.771],[-1.394,-2.695]],"o":[[0,0],[-1.454,-0.998],[-1.455,-0.249],[-3.014,0],[-0.831,-0.748],[0,0]],"v":[[13.691,4.404],[12.115,-0.298],[-1.224,-4.074],[-8.393,-1.955],[-12.861,-4.947],[-13.963,4.404]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.37,0.18,0.06,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16.5,7],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":1,"ind":10,"ty":4,"nm":"front_leg_2 ","parent":7,"ks":{"o":{"k":100},"rx":{"k":0},"ry":{"k":0},"rz":{"k":44},"or":{"k":[0,0,0]},"p":{"k":[82.5,30,0]},"a":{"k":[9.75,4.75,0]},"s":{"k":[500,500,500]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[6.467,-0.11],[0,0]],"o":[[0,0],[0,0],[0,0],[-6.467,0.11],[0,0]],"v":[[-5.487,16.058],[5.883,16.058],[5.883,-20.744],[0.402,-27.499],[-5.487,-20.744]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.07,0.39,0.6,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[9.5,29.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.25,-3.5],[5.25,-3.5],[5.25,3.5],[-5.25,3.5]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.62,0.59,0.56,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[9.75,51.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.75,-3.5],[4.75,-3.5],[4.75,3.5],[-4.75,3.5]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.99,0.8,0.68,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[9.75,46.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":11,"ty":4,"nm":"front_leg_1 ","parent":6,"ks":{"o":{"k":100},"r":{"k":-70},"p":{"k":[41.258,52,0]},"a":{"k":[11.634,1,0]},"s":{"k":[646.679,646.679,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[-2.746,0],[0,0],[-0.271,2.764],[0,0],[10.803,-0.278]],"o":[[0,0],[0.316,2.741],[0,0],[2.758,0],[0,0],[0,0],[-9.898,0.255]],"v":[[-10.5,-20.529],[-5.904,19.283],[-0.337,24.246],[0.154,24.246],[5.637,19.262],[9.541,-20.529],[-0.113,-23.985]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.07,0.39,0.6,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[11.5,26],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":12,"ty":3,"nm":"stick","ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[90]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[90],"e":[180]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[180],"e":[270]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[270],"e":[360]},{"t":79.999993075758}]},"p":{"k":[332,398,0]},"a":{"k":[49,52,0]},"s":{"k":[33.333,33.333,100]}},"ao":0,"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":13,"ty":4,"nm":"Rim Inner","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[90]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[90],"e":[180]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[180],"e":[270]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[270],"e":[360]},{"t":79.999993075758}]},"p":{"k":[240.875,389.875,0]},"a":{"k":[9.5,9.5,0]},"s":{"k":[193.421,193.421,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.015,0],[0.024,0.38],[-0.382,0.026],[-0.133,0],[0,-0.397],[0.382,0],[0.01,0],[0.101,-0.007]],"o":[[-0.362,0],[-0.025,-0.395],[0.13,-0.008],[0.382,0],[0,0.396],[-0.01,0],[-0.074,0],[-0.015,0.001]],"v":[[-0.188,-5.054],[-0.879,-5.726],[-0.232,-6.487],[0.163,-6.5],[0.867,-5.783],[0.186,-5.065],[0.134,-5.066],[-0.143,-5.056]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[0.227,0],[0.117,0.079],[0.089,0.051],[-0.187,0.346],[-0.334,-0.194],[-0.11,-0.074],[0.208,-0.332]],"o":[[-0.13,0],[-0.085,-0.057],[-0.334,-0.193],[0.186,-0.346],[0.115,0.067],[0.321,0.216],[-0.133,0.211]],"v":[[3.167,-4.146],[2.79,-4.262],[2.529,-4.425],[2.263,-5.401],[3.206,-5.677],[3.545,-5.465],[3.748,-4.472]],"c":true}},"nm":"Path 3","mn":"ADBE Vector Shape - Group"},{"ind":2,"ty":"sh","ks":{"k":{"i":[[0.143,0],[0.135,0.19],[-0.307,0.236],[-0.111,0.074],[-0.207,-0.333],[0.322,-0.214],[0.082,-0.063]],"o":[[-0.212,0],[-0.228,-0.318],[0.106,-0.082],[0.321,-0.214],[0.207,0.333],[-0.086,0.057],[-0.124,0.095]],"v":[[-3.111,-3.953],[-3.668,-4.243],[-3.524,-5.246],[-3.197,-5.48],[-2.24,-5.264],[-2.448,-4.273],[-2.699,-4.094]],"c":true}},"nm":"Path 4","mn":"ADBE Vector Shape - Group"},{"ind":3,"ty":"sh","ks":{"k":{"i":[[0.095,0],[0.116,0.265],[0.048,0.094],[-0.338,0.186],[-0.179,-0.349],[-0.054,-0.125],[0.349,-0.163]],"o":[[-0.264,0],[-0.042,-0.097],[-0.179,-0.35],[0.337,-0.186],[0.062,0.12],[0.157,0.36],[-0.093,0.043]],"v":[[5.197,-1.703],[4.566,-2.124],[4.43,-2.41],[4.717,-3.38],[5.654,-3.083],[5.828,-2.716],[5.482,-1.767]],"c":true}},"nm":"Path 5","mn":"ADBE Vector Shape - Group"},{"ind":4,"ty":"sh","ks":{"k":{"i":[[0.278,0],[0.082,0.032],[-0.137,0.37],[-0.054,0.123],[-0.348,-0.165],[0.159,-0.36],[0.037,-0.099]],"o":[[-0.083,0],[-0.357,-0.142],[0.047,-0.128],[0.158,-0.361],[0.348,0.165],[-0.042,0.096],[-0.106,0.285]],"v":[[-4.997,-1.391],[-5.246,-1.438],[-5.644,-2.365],[-5.492,-2.74],[-4.575,-3.095],[-4.232,-2.144],[-4.351,-1.851]],"c":true}},"nm":"Path 6","mn":"ADBE Vector Shape - Group"},{"ind":5,"ty":"sh","ks":{"k":{"i":[[0.338,0],[0.034,0.006],[-0.056,0.392],[-0.008,0.106],[-0.383,-0.033],[0.032,-0.395],[0.019,-0.134]],"o":[[-0.034,0],[-0.379,-0.057],[0.015,-0.104],[0.032,-0.394],[0.381,0.033],[-0.011,0.136],[-0.05,0.356]],"v":[[5.63,1.488],[5.529,1.48],[4.944,0.666],[4.979,0.35],[5.727,-0.304],[6.359,0.47],[6.314,0.875]],"c":true}},"nm":"Path 7","mn":"ADBE Vector Shape - Group"},{"ind":6,"ty":"sh","ks":{"k":{"i":[[0.047,0],[0.068,0.338],[0.019,0.136],[-0.378,0.056],[-0.055,-0.393],[-0.021,-0.103],[0.374,-0.08]],"o":[[-0.321,0],[-0.026,-0.134],[-0.054,-0.392],[0.375,-0.052],[0.014,0.105],[0.078,0.389],[-0.048,0.01]],"v":[[-5.248,1.82],[-5.925,1.25],[-5.993,0.847],[-5.405,0.035],[-4.621,0.645],[-4.569,0.957],[-5.106,1.805]],"c":true}},"nm":"Path 8","mn":"ADBE Vector Shape - Group"},{"ind":7,"ty":"sh","ks":{"k":{"i":[[0.193,0],[0.131,0.119],[-0.252,0.299],[-0.062,0.085],[-0.303,-0.24],[0.233,-0.314],[0.087,-0.103]],"o":[[-0.162,0],[-0.288,-0.261],[0.067,-0.08],[0.233,-0.314],[0.303,0.241],[-0.081,0.108],[-0.137,0.162]],"v":[[4.327,4.414],[3.873,4.237],[3.806,3.225],[4,2.979],[4.972,2.847],[5.1,3.853],[4.849,4.169]],"c":true}},"nm":"Path 9","mn":"ADBE Vector Shape - Group"},{"ind":8,"ty":"sh","ks":{"k":{"i":[[0.175,0],[0.135,0.143],[0.086,0.102],[-0.289,0.259],[-0.251,-0.299],[-0.072,-0.076],[0.273,-0.278]],"o":[[-0.179,0],[-0.092,-0.097],[-0.251,-0.3],[0.29,-0.26],[0.068,0.08],[0.267,0.283],[-0.135,0.136]],"v":[[-3.781,4.663],[-4.275,4.447],[-4.542,4.148],[-4.472,3.136],[-3.495,3.209],[-3.286,3.444],[-3.296,4.458]],"c":true}},"nm":"Path 10","mn":"ADBE Vector Shape - Group"},{"ind":9,"ty":"sh","ks":{"k":{"i":[[0.064,0],[0.088,0.313],[-0.367,0.111],[-0.095,0.035],[-0.13,-0.373],[0.359,-0.135],[0.126,-0.038]],"o":[[-0.301,0],[-0.107,-0.381],[0.099,-0.03],[0.359,-0.135],[0.13,0.373],[-0.123,0.046],[-0.065,0.019]],"v":[[1.707,6.151],[1.042,5.634],[1.513,4.745],[1.805,4.647],[2.692,5.077],[2.276,5.996],[1.901,6.122]],"c":true}},"nm":"Path 11","mn":"ADBE Vector Shape - Group"},{"ind":10,"ty":"sh","ks":{"k":{"i":[[0.315,0],[0.052,0.013],[0.125,0.038],[-0.108,0.38],[-0.368,-0.112],[-0.101,-0.024],[0.086,-0.386]],"o":[[-0.051,0],[-0.128,-0.03],[-0.367,-0.112],[0.108,-0.38],[0.098,0.031],[0.373,0.089],[-0.074,0.332]],"v":[[-1.065,6.236],[-1.221,6.217],[-1.6,6.115],[-2.07,5.224],[-1.209,4.738],[-0.911,4.819],[-0.391,5.679]],"c":true}},"nm":"Path 12","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.8,0.89,0.89,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[9.5,9.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":13,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.455,0],[0,-4.614],[-4.455,0],[0,4.614]],"o":[[-4.455,0],[0,4.614],[4.455,0],[0,-4.614]],"v":[[0.067,-8.5],[-8,-0.145],[0.067,8.209],[8.134,-0.145]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.17,0.17,0.17,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[9.5,9.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":14,"ty":4,"nm":"Rim Inner 2","ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[90]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[90],"e":[180]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[180],"e":[270]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[270],"e":[360]},{"t":79.999993075758}]},"p":{"k":[473.375,389.875,0]},"a":{"k":[9.5,9.5,0]},"s":{"k":[193.421,193.421,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.015,0],[0.024,0.38],[-0.382,0.026],[-0.133,0],[0,-0.397],[0.382,0],[0.01,0],[0.101,-0.007]],"o":[[-0.362,0],[-0.025,-0.395],[0.13,-0.008],[0.382,0],[0,0.396],[-0.01,0],[-0.074,0],[-0.015,0.001]],"v":[[-0.188,-5.054],[-0.879,-5.726],[-0.232,-6.487],[0.163,-6.5],[0.867,-5.783],[0.186,-5.065],[0.134,-5.066],[-0.143,-5.056]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[0.227,0],[0.117,0.079],[0.089,0.051],[-0.187,0.346],[-0.334,-0.194],[-0.11,-0.074],[0.208,-0.332]],"o":[[-0.13,0],[-0.085,-0.057],[-0.334,-0.193],[0.186,-0.346],[0.115,0.067],[0.321,0.216],[-0.133,0.211]],"v":[[3.167,-4.146],[2.79,-4.262],[2.529,-4.425],[2.263,-5.401],[3.206,-5.677],[3.545,-5.465],[3.748,-4.472]],"c":true}},"nm":"Path 3","mn":"ADBE Vector Shape - Group"},{"ind":2,"ty":"sh","ks":{"k":{"i":[[0.143,0],[0.135,0.19],[-0.307,0.236],[-0.111,0.074],[-0.207,-0.333],[0.322,-0.214],[0.082,-0.063]],"o":[[-0.212,0],[-0.228,-0.318],[0.106,-0.082],[0.321,-0.214],[0.207,0.333],[-0.086,0.057],[-0.124,0.095]],"v":[[-3.111,-3.953],[-3.668,-4.243],[-3.524,-5.246],[-3.197,-5.48],[-2.24,-5.264],[-2.448,-4.273],[-2.699,-4.094]],"c":true}},"nm":"Path 4","mn":"ADBE Vector Shape - Group"},{"ind":3,"ty":"sh","ks":{"k":{"i":[[0.095,0],[0.116,0.265],[0.048,0.094],[-0.338,0.186],[-0.179,-0.349],[-0.054,-0.125],[0.349,-0.163]],"o":[[-0.264,0],[-0.042,-0.097],[-0.179,-0.35],[0.337,-0.186],[0.062,0.12],[0.157,0.36],[-0.093,0.043]],"v":[[5.197,-1.703],[4.566,-2.124],[4.43,-2.41],[4.717,-3.38],[5.654,-3.083],[5.828,-2.716],[5.482,-1.767]],"c":true}},"nm":"Path 5","mn":"ADBE Vector Shape - Group"},{"ind":4,"ty":"sh","ks":{"k":{"i":[[0.278,0],[0.082,0.032],[-0.137,0.37],[-0.054,0.123],[-0.348,-0.165],[0.159,-0.36],[0.037,-0.099]],"o":[[-0.083,0],[-0.357,-0.142],[0.047,-0.128],[0.158,-0.361],[0.348,0.165],[-0.042,0.096],[-0.106,0.285]],"v":[[-4.997,-1.391],[-5.246,-1.438],[-5.644,-2.365],[-5.492,-2.74],[-4.575,-3.095],[-4.232,-2.144],[-4.351,-1.851]],"c":true}},"nm":"Path 6","mn":"ADBE Vector Shape - Group"},{"ind":5,"ty":"sh","ks":{"k":{"i":[[0.338,0],[0.034,0.006],[-0.056,0.392],[-0.008,0.106],[-0.383,-0.033],[0.032,-0.395],[0.019,-0.134]],"o":[[-0.034,0],[-0.379,-0.057],[0.015,-0.104],[0.032,-0.394],[0.381,0.033],[-0.011,0.136],[-0.05,0.356]],"v":[[5.63,1.488],[5.529,1.48],[4.944,0.666],[4.979,0.35],[5.727,-0.304],[6.359,0.47],[6.314,0.875]],"c":true}},"nm":"Path 7","mn":"ADBE Vector Shape - Group"},{"ind":6,"ty":"sh","ks":{"k":{"i":[[0.047,0],[0.068,0.338],[0.019,0.136],[-0.378,0.056],[-0.055,-0.393],[-0.021,-0.103],[0.374,-0.08]],"o":[[-0.321,0],[-0.026,-0.134],[-0.054,-0.392],[0.375,-0.052],[0.014,0.105],[0.078,0.389],[-0.048,0.01]],"v":[[-5.248,1.82],[-5.925,1.25],[-5.993,0.847],[-5.405,0.035],[-4.621,0.645],[-4.569,0.957],[-5.106,1.805]],"c":true}},"nm":"Path 8","mn":"ADBE Vector Shape - Group"},{"ind":7,"ty":"sh","ks":{"k":{"i":[[0.193,0],[0.131,0.119],[-0.252,0.299],[-0.062,0.085],[-0.303,-0.24],[0.233,-0.314],[0.087,-0.103]],"o":[[-0.162,0],[-0.288,-0.261],[0.067,-0.08],[0.233,-0.314],[0.303,0.241],[-0.081,0.108],[-0.137,0.162]],"v":[[4.327,4.414],[3.873,4.237],[3.806,3.225],[4,2.979],[4.972,2.847],[5.1,3.853],[4.849,4.169]],"c":true}},"nm":"Path 9","mn":"ADBE Vector Shape - Group"},{"ind":8,"ty":"sh","ks":{"k":{"i":[[0.175,0],[0.135,0.143],[0.086,0.102],[-0.289,0.259],[-0.251,-0.299],[-0.072,-0.076],[0.273,-0.278]],"o":[[-0.179,0],[-0.092,-0.097],[-0.251,-0.3],[0.29,-0.26],[0.068,0.08],[0.267,0.283],[-0.135,0.136]],"v":[[-3.781,4.663],[-4.275,4.447],[-4.542,4.148],[-4.472,3.136],[-3.495,3.209],[-3.286,3.444],[-3.296,4.458]],"c":true}},"nm":"Path 10","mn":"ADBE Vector Shape - Group"},{"ind":9,"ty":"sh","ks":{"k":{"i":[[0.064,0],[0.088,0.313],[-0.367,0.111],[-0.095,0.035],[-0.13,-0.373],[0.359,-0.135],[0.126,-0.038]],"o":[[-0.301,0],[-0.107,-0.381],[0.099,-0.03],[0.359,-0.135],[0.13,0.373],[-0.123,0.046],[-0.065,0.019]],"v":[[1.707,6.151],[1.042,5.634],[1.513,4.745],[1.805,4.647],[2.692,5.077],[2.276,5.996],[1.901,6.122]],"c":true}},"nm":"Path 11","mn":"ADBE Vector Shape - Group"},{"ind":10,"ty":"sh","ks":{"k":{"i":[[0.315,0],[0.052,0.013],[0.125,0.038],[-0.108,0.38],[-0.368,-0.112],[-0.101,-0.024],[0.086,-0.386]],"o":[[-0.051,0],[-0.128,-0.03],[-0.367,-0.112],[0.108,-0.38],[0.098,0.031],[0.373,0.089],[-0.074,0.332]],"v":[[-1.065,6.236],[-1.221,6.217],[-1.6,6.115],[-2.07,5.224],[-1.209,4.738],[-0.911,4.819],[-0.391,5.679]],"c":true}},"nm":"Path 12","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.8,0.89,0.89,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[9.5,9.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":13,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.455,0],[0,-4.614],[-4.455,0],[0,4.614]],"o":[[-4.455,0],[0,4.614],[4.455,0],[0,-4.614]],"v":[[0.067,-8.5],[-8,-0.145],[0.067,8.209],[8.134,-0.145]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.17,0.17,0.17,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[9.5,9.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":15,"ty":4,"nm":"frontStick","parent":12,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[49.375,48.625,0]},"a":{"k":[-24.875,123.875,0]},"s":{"k":[300,243.563,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[8,45.5]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect"},{"ty":"st","fillEnabled":true,"c":{"k":[0.17,0.41,0.69,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.22,0.21,0.21,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-25,123.75],"ix":2},"a":{"k":[-0.25,22.25],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":-0.85,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":16,"ty":4,"nm":"Chain","ks":{"o":{"k":100},"r":{"k":-4},"p":{"k":[285.75,395.75,0]},"a":{"k":[26,14,0]},"s":{"k":[180,180,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.327,0.042],[0.024,0.006],[0,0],[0.088,0.134],[0.165,0.04],[0,0],[0.088,0.133],[0.165,0.039],[0,0],[0.088,0.134],[0.166,0.039],[0,0],[0.088,0.133],[0.167,0.04],[0,0],[0.088,0.133],[0.166,0.041],[0,0],[0.088,0.132],[0.165,0.039],[0,0],[0.088,0.134],[0.167,0.039],[0,0],[0.088,0.133],[0.166,0.039],[0,0],[0.088,0.133],[0.166,0.04],[0,0],[0.089,0.133],[0.166,0.04],[0,0],[0.089,0.133],[0.166,0.04],[0,0],[0.089,0.133],[0.165,0.039],[0,0],[0.088,0.133],[0.166,0.04],[0,0],[0.088,0.133],[0.166,0.04],[0,0],[0.088,0.133],[0.165,0.039],[0,0],[0.088,0.133],[0.165,0.039],[0,0],[0.088,0.133],[0.167,0.041],[0,0],[0.088,0.134],[0.167,0.04],[0,0],[0.088,0.133],[0.167,0.04],[0,0],[0.088,0.133],[0.166,0.039],[0,0],[0.088,0.133],[0.165,0.039],[0,0],[0.089,0.133],[0.167,0.04],[0,0],[0.088,0.133],[0.165,0.04],[0,0],[0.089,0.133],[0.166,0.039],[0,0],[0.088,0.133],[0.165,0.038],[0,0],[-0.085,0.358],[-0.354,-0.084],[0,0],[-0.089,-0.134],[-0.165,-0.04],[0,0],[-0.089,-0.133],[-0.166,-0.04],[0,0],[-0.088,-0.134],[-0.166,-0.038],[0,0],[-0.088,-0.133],[-0.166,-0.038],[0,0],[-0.088,-0.133],[-0.165,-0.04],[0,0],[-0.088,-0.132],[-0.166,-0.04],[0,0],[-0.089,-0.133],[-0.164,-0.039],[0,0],[-0.088,-0.133],[-0.165,-0.039],[0,0],[-0.088,-0.133],[-0.165,-0.038],[0,0],[-0.088,-0.133],[-0.167,-0.04],[0,0],[-0.089,-0.133],[-0.166,-0.04],[0,0],[-0.089,-0.133],[-0.164,-0.039],[0,0],[-0.089,-0.133],[-0.165,-0.039],[0,0],[-0.089,-0.133],[-0.166,-0.04],[0,0],[-0.088,-0.133],[-0.166,-0.039],[0,0],[-0.088,-0.133],[-0.165,-0.039],[0,0],[-0.088,-0.133],[-0.165,-0.04],[0,0],[-0.088,-0.133],[-0.165,-0.04],[0,0],[-0.089,-0.133],[-0.166,-0.041],[0,0],[-0.088,-0.133],[-0.167,-0.04],[0,0],[-0.088,-0.133],[-0.166,-0.039],[0,0],[-0.088,-0.133],[-0.165,-0.038],[0,0],[-0.088,-0.133],[-0.167,-0.04],[0,0],[-0.088,-0.134],[-0.165,-0.04],[0,0],[-0.089,-0.133],[-0.166,-0.039],[0,0],[0.084,-0.358]],"o":[[-0.024,-0.003],[0,0],[-0.165,-0.041],[-0.138,0.078],[0,0],[-0.165,-0.04],[-0.138,0.078],[0,0],[-0.165,-0.04],[-0.139,0.078],[0,0],[-0.166,-0.04],[-0.138,0.077],[0,0],[-0.166,-0.041],[-0.138,0.078],[0,0],[-0.166,-0.041],[-0.139,0.077],[0,0],[-0.166,-0.04],[-0.138,0.078],[0,0],[-0.166,-0.04],[-0.138,0.078],[0,0],[-0.166,-0.04],[-0.139,0.077],[0,0],[-0.166,-0.041],[-0.138,0.077],[0,0],[-0.166,-0.041],[-0.138,0.078],[0,0],[-0.165,-0.041],[-0.138,0.078],[0,0],[-0.165,-0.04],[-0.138,0.078],[0,0],[-0.165,-0.04],[-0.138,0.078],[0,0],[-0.166,-0.04],[-0.139,0.078],[0,0],[-0.166,-0.04],[-0.138,0.078],[0,0],[-0.166,-0.041],[-0.138,0.078],[0,0],[-0.165,-0.04],[-0.138,0.078],[0,0],[-0.166,-0.04],[-0.138,0.078],[0,0],[-0.166,-0.04],[-0.138,0.077],[0,0],[-0.165,-0.04],[-0.138,0.078],[0,0],[-0.165,-0.041],[-0.139,0.077],[0,0],[-0.165,-0.041],[-0.138,0.078],[0,0],[-0.165,-0.041],[-0.138,0.078],[0,0],[-0.166,-0.04],[-0.138,0.078],[0,0],[-0.352,-0.086],[0.085,-0.358],[0,0],[0.165,0.04],[0.138,-0.079],[0,0],[0.165,0.041],[0.138,-0.078],[0,0],[0.165,0.04],[0.138,-0.077],[0,0],[0.166,0.04],[0.139,-0.077],[0,0],[0.165,0.04],[0.138,-0.078],[0,0],[0.166,0.041],[0.139,-0.077],[0,0],[0.166,0.041],[0.138,-0.077],[0,0],[0.166,0.04],[0.139,-0.077],[0,0],[0.166,0.04],[0.138,-0.077],[0,0],[0.166,0.04],[0.138,-0.078],[0,0],[0.165,0.041],[0.139,-0.078],[0,0],[0.165,0.041],[0.138,-0.077],[0,0],[0.165,0.041],[0.138,-0.077],[0,0],[0.165,0.04],[0.138,-0.078],[0,0],[0.165,0.04],[0.138,-0.078],[0,0],[0.165,0.04],[0.139,-0.077],[0,0],[0.165,0.041],[0.139,-0.077],[0,0],[0.166,0.04],[0.139,-0.078],[0,0],[0.166,0.04],[0.138,-0.078],[0,0],[0.165,0.04],[0.139,-0.078],[0,0],[0.166,0.04],[0.139,-0.077],[0,0],[0.165,0.04],[0.139,-0.077],[0,0],[0.165,0.041],[0.138,-0.078],[0,0],[0.165,0.041],[0.139,-0.078],[0,0],[0.165,0.04],[0.138,-0.077],[0,0],[0.352,0.086],[-0.079,0.334]],"v":[[19.418,12.563],[19.346,12.55],[18.487,12.339],[18.097,12.065],[17.627,12.129],[16.767,11.918],[16.378,11.643],[15.907,11.708],[15.048,11.497],[14.659,11.222],[14.188,11.287],[13.329,11.077],[12.939,10.802],[12.469,10.866],[11.609,10.656],[11.219,10.381],[10.749,10.445],[9.89,10.235],[9.5,9.961],[9.03,10.024],[8.17,9.814],[7.781,9.539],[7.31,9.603],[6.451,9.393],[6.061,9.118],[5.591,9.183],[4.732,8.972],[4.342,8.698],[3.872,8.762],[3.013,8.552],[2.622,8.277],[2.153,8.341],[1.293,8.13],[0.903,7.855],[0.433,7.92],[-0.427,7.71],[-0.816,7.435],[-1.286,7.499],[-2.146,7.289],[-2.536,7.014],[-3.005,7.078],[-3.865,6.867],[-4.255,6.593],[-4.725,6.657],[-5.585,6.446],[-5.974,6.172],[-6.444,6.236],[-7.304,6.026],[-7.693,5.751],[-8.164,5.815],[-9.023,5.605],[-9.413,5.33],[-9.883,5.394],[-10.742,5.184],[-11.133,4.909],[-11.602,4.974],[-12.462,4.763],[-12.852,4.489],[-13.322,4.553],[-14.181,4.342],[-14.571,4.067],[-15.041,4.132],[-15.901,3.921],[-16.29,3.647],[-16.761,3.711],[-17.62,3.501],[-18.01,3.226],[-18.479,3.29],[-19.339,3.08],[-19.729,2.805],[-20.199,2.869],[-21.059,2.658],[-21.449,2.384],[-21.918,2.448],[-22.778,2.238],[-23.168,1.963],[-23.638,2.027],[-24.498,1.817],[-24.982,1.012],[-24.19,0.521],[-23.33,0.732],[-22.941,1.006],[-22.471,0.942],[-21.611,1.152],[-21.221,1.427],[-20.752,1.362],[-19.891,1.573],[-19.502,1.848],[-19.032,1.784],[-18.172,1.994],[-17.783,2.269],[-17.313,2.204],[-16.453,2.416],[-16.063,2.69],[-15.593,2.625],[-14.734,2.836],[-14.344,3.11],[-13.874,3.046],[-13.015,3.257],[-12.625,3.532],[-12.155,3.468],[-11.295,3.677],[-10.905,3.952],[-10.435,3.888],[-9.576,4.099],[-9.186,4.373],[-8.715,4.309],[-7.856,4.52],[-7.467,4.794],[-6.996,4.73],[-6.137,4.94],[-5.747,5.215],[-5.277,5.151],[-4.417,5.361],[-4.027,5.636],[-3.558,5.572],[-2.698,5.782],[-2.308,6.057],[-1.839,5.993],[-0.978,6.203],[-0.589,6.478],[-0.119,6.413],[0.741,6.624],[1.131,6.899],[1.601,6.834],[2.46,7.045],[2.85,7.319],[3.32,7.256],[4.179,7.465],[4.569,7.74],[5.039,7.676],[5.898,7.887],[6.288,8.161],[6.759,8.097],[7.618,8.308],[8.008,8.582],[8.478,8.518],[9.338,8.729],[9.727,9.003],[10.197,8.939],[11.057,9.149],[11.447,9.424],[11.916,9.36],[12.776,9.57],[13.166,9.845],[13.636,9.781],[14.496,9.991],[14.885,10.266],[15.356,10.202],[16.215,10.412],[16.605,10.687],[17.075,10.622],[17.934,10.833],[18.324,11.108],[18.794,11.043],[19.653,11.254],[20.138,12.058]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.33,0.36,0.36,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[26,14],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.107,0.119],[0.17,0.016],[0,0],[0.106,0.119],[0.17,0.015],[0,0],[0.106,0.119],[0.17,0.014],[0,0],[0.107,0.119],[0.171,0.016],[0,0],[0.107,0.118],[0.17,0.016],[0,0],[0.106,0.118],[0.17,0.013],[0,0],[0.106,0.119],[0.17,0.014],[0,0],[0.107,0.119],[0.17,0.015],[0,0],[0.107,0.119],[0.17,0.015],[0,0],[0.107,0.119],[0.17,0.015],[0,0],[0.107,0.119],[0.17,0.014],[0,0],[0.107,0.119],[0.17,0.014],[0,0],[0.107,0.119],[0.17,0.016],[0,0],[0.106,0.118],[0.171,0.015],[0,0],[0.106,0.119],[0.169,0.014],[0,0],[0.107,0.119],[0.17,0.014],[0,0],[0.107,0.119],[0.17,0.016],[0,0],[0.106,0.119],[0.17,0.016],[0,0],[0.107,0.119],[0.171,0.016],[0,0],[0.107,0.118],[0.169,0.014],[0,0],[0.107,0.119],[0.169,0.014],[0,0],[0.107,0.119],[0.171,0.015],[0,0],[0.107,0.119],[0.169,0.015],[0,0],[0.107,0.119],[0.17,0.014],[0,0],[0.107,0.119],[0.169,0.014],[0,0],[-0.033,0.367],[-0.363,-0.032],[0,0],[-0.106,-0.119],[-0.17,-0.016],[0,0],[-0.107,-0.119],[-0.17,-0.015],[0,0],[-0.107,-0.119],[-0.169,-0.013],[0,0],[-0.107,-0.119],[-0.17,-0.014],[0,0],[-0.107,-0.119],[-0.17,-0.015],[0,0],[-0.107,-0.118],[-0.17,-0.015],[0,0],[-0.106,-0.119],[-0.168,-0.013],[0,0],[-0.106,-0.119],[-0.169,-0.014],[0,0],[-0.107,-0.119],[-0.169,-0.014],[0,0],[-0.107,-0.119],[-0.171,-0.016],[0,0],[-0.106,-0.119],[-0.17,-0.016],[0,0],[-0.106,-0.119],[-0.169,-0.014],[0,0],[-0.107,-0.119],[-0.169,-0.014],[0,0],[-0.107,-0.119],[-0.17,-0.015],[0,0],[-0.107,-0.119],[-0.17,-0.015],[0,0],[-0.106,-0.119],[-0.17,-0.014],[0,0],[-0.107,-0.119],[-0.169,-0.015],[0,0],[-0.107,-0.119],[-0.169,-0.014],[0,0],[-0.106,-0.119],[-0.17,-0.016],[0,0],[-0.106,-0.118],[-0.171,-0.016],[0,0],[-0.107,-0.119],[-0.169,-0.013],[0,0],[-0.107,-0.119],[-0.168,-0.013],[0,0],[-0.106,-0.119],[-0.17,-0.015],[0,0],[-0.106,-0.119],[-0.17,-0.015],[0,0],[-0.107,-0.119],[-0.17,-0.014],[0,0],[0.033,-0.366],[0.33,-0.007]],"o":[[-0.17,-0.016],[-0.125,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.096],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.098],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.169,-0.016],[-0.126,0.096],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.169,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.17,-0.016],[-0.126,0.097],[0,0],[-0.361,-0.034],[0.033,-0.367],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.169,0.016],[0.126,-0.097],[0,0],[0.17,0.016],[0.126,-0.096],[0,0],[0.17,0.016],[0.126,-0.096],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.169,0.016],[0.126,-0.097],[0,0],[0.17,0.016],[0.126,-0.096],[0,0],[0.17,0.016],[0.126,-0.096],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.17,0.016],[0.125,-0.097],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.17,0.016],[0.126,-0.096],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.17,0.016],[0.126,-0.096],[0,0],[0.17,0.016],[0.126,-0.096],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.17,0.016],[0.126,-0.096],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.17,0.016],[0.126,-0.097],[0,0],[0.36,0.033],[-0.031,0.342],[-0.024,0]],"v":[[23.69,-6.59],[23.265,-6.804],[22.81,-6.671],[21.929,-6.753],[21.505,-6.967],[21.048,-6.835],[20.168,-6.916],[19.743,-7.131],[19.287,-6.997],[18.407,-7.079],[17.982,-7.294],[17.526,-7.161],[16.645,-7.243],[16.22,-7.457],[15.765,-7.324],[14.884,-7.406],[14.46,-7.62],[14.003,-7.487],[13.123,-7.569],[12.698,-7.784],[12.242,-7.651],[11.362,-7.732],[10.936,-7.947],[10.481,-7.814],[9.6,-7.895],[9.175,-8.11],[8.72,-7.977],[7.839,-8.058],[7.414,-8.273],[6.958,-8.14],[6.078,-8.222],[5.653,-8.437],[5.197,-8.303],[4.316,-8.385],[3.892,-8.6],[3.436,-8.466],[2.555,-8.548],[2.13,-8.763],[1.675,-8.63],[0.794,-8.711],[0.369,-8.926],[-0.087,-8.793],[-0.968,-8.875],[-1.392,-9.089],[-1.848,-8.956],[-2.729,-9.038],[-3.154,-9.253],[-3.609,-9.119],[-4.49,-9.201],[-4.915,-9.416],[-5.371,-9.283],[-6.251,-9.364],[-6.676,-9.579],[-7.132,-9.446],[-8.012,-9.527],[-8.437,-9.742],[-8.893,-9.609],[-9.774,-9.691],[-10.199,-9.905],[-10.654,-9.772],[-11.535,-9.854],[-11.96,-10.068],[-12.416,-9.935],[-13.297,-10.017],[-13.721,-10.232],[-14.177,-10.099],[-15.058,-10.18],[-15.482,-10.395],[-15.938,-10.262],[-16.819,-10.344],[-17.244,-10.558],[-17.7,-10.425],[-18.58,-10.507],[-19.005,-10.721],[-19.461,-10.588],[-20.342,-10.67],[-20.935,-11.395],[-20.222,-11.997],[-19.341,-11.916],[-18.917,-11.702],[-18.461,-11.834],[-17.58,-11.752],[-17.156,-11.538],[-16.7,-11.671],[-15.819,-11.59],[-15.394,-11.376],[-14.939,-11.508],[-14.058,-11.426],[-13.633,-11.212],[-13.177,-11.344],[-12.296,-11.263],[-11.872,-11.048],[-11.416,-11.182],[-10.535,-11.1],[-10.111,-10.886],[-9.655,-11.018],[-8.774,-10.937],[-8.349,-10.722],[-7.893,-10.855],[-7.013,-10.773],[-6.588,-10.559],[-6.132,-10.691],[-5.251,-10.61],[-4.827,-10.396],[-4.371,-10.529],[-3.49,-10.447],[-3.065,-10.233],[-2.609,-10.365],[-1.729,-10.283],[-1.304,-10.069],[-0.848,-10.202],[0.032,-10.121],[0.457,-9.906],[0.913,-10.039],[1.794,-9.957],[2.219,-9.743],[2.674,-9.876],[3.555,-9.794],[3.98,-9.58],[4.436,-9.713],[5.316,-9.631],[5.741,-9.416],[6.197,-9.549],[7.077,-9.468],[7.502,-9.254],[7.958,-9.386],[8.838,-9.305],[9.264,-9.09],[9.72,-9.223],[10.6,-9.142],[11.025,-8.927],[11.481,-9.06],[12.361,-8.978],[12.786,-8.764],[13.242,-8.897],[14.123,-8.815],[14.547,-8.601],[15.003,-8.734],[15.884,-8.652],[16.309,-8.437],[16.765,-8.57],[17.645,-8.489],[18.07,-8.274],[18.526,-8.407],[19.406,-8.325],[19.831,-8.111],[20.287,-8.244],[21.168,-8.162],[21.593,-7.947],[22.048,-8.081],[22.929,-7.999],[23.354,-7.785],[23.809,-7.917],[24.691,-7.836],[25.284,-7.112],[24.644,-6.506]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.33,0.36,0.36,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[26,14],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":17,"ty":4,"nm":"Rim ","parent":12,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[50.125,52,0]},"a":{"k":[13,13,0]},"s":{"k":[548.077,548.077,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.839],[0.827,0],[0,0.84],[-0.827,0]],"o":[[0,0.84],[-0.827,0],[0,-0.839],[0.827,0]],"v":[[1.41,-0.36],[-0.087,1.161],[-1.584,-0.36],[-0.087,-1.88]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.2,0.23,0.23,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[13,13],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-1.858],[1.829,0],[0,1.858],[-1.83,0]],"o":[[0,1.858],[-1.83,0],[0,-1.858],[1.829,0]],"v":[[3.225,-0.36],[-0.087,3.004],[-3.4,-0.36],[-0.087,-3.724]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.37,0.41,0.41,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[13,13],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-2.848],[2.804,0],[0,2.849],[-2.804,0]],"o":[[0,2.849],[-2.804,0],[0,-2.848],[2.804,0]],"v":[[4.99,-0.36],[-0.087,4.798],[-5.164,-0.36],[-0.087,-5.517]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.29,0.33,0.33,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[13,13],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.32,0],[0,4.389],[-4.321,0],[0,-4.388]],"o":[[-4.321,0],[0,-4.388],[4.32,0],[0,4.389]],"v":[[-0.087,7.587],[-7.911,-0.36],[-0.087,-8.306],[7.737,-0.36]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[0.527,0.658],[0.056,0.175],[-0.019,0.378],[0.626,0.875],[0.796,0.217],[0.161,0.119],[0.187,0.295],[1.031,0.341],[0.288,0],[0.558,-0.216],[0.22,0],[0.354,0.137],[0.689,0],[0.26,-0.086],[0.45,-0.707],[0.155,-0.114],[0.356,-0.097],[0.631,-0.88],[-0.042,-0.832],[0.065,-0.201],[0.214,-0.266],[0,-1.116],[-0.527,-0.657],[-0.056,-0.175],[0.019,-0.377],[-0.626,-0.874],[-0.796,-0.216],[-0.161,-0.119],[-0.188,-0.294],[-1.032,-0.341],[-0.288,0],[-0.557,0.216],[-0.22,0],[-0.354,-0.137],[-0.689,0],[-0.26,0.086],[-0.451,0.708],[-0.156,0.115],[-0.356,0.097],[-0.631,0.881],[0.042,0.833],[-0.064,0.201],[-0.214,0.266],[0,1.116]],"o":[[-0.214,-0.266],[-0.064,-0.201],[0.042,-0.832],[-0.631,-0.88],[-0.356,-0.097],[-0.155,-0.115],[-0.451,-0.707],[-0.26,-0.086],[-0.689,0],[-0.354,0.137],[-0.22,0],[-0.557,-0.216],[-0.288,0],[-1.032,0.34],[-0.188,0.295],[-0.161,0.12],[-0.796,0.217],[-0.626,0.874],[0.019,0.378],[-0.056,0.175],[-0.527,0.658],[0,1.116],[0.214,0.266],[0.065,0.201],[-0.041,0.833],[0.631,0.881],[0.356,0.097],[0.155,0.115],[0.45,0.708],[0.26,0.086],[0.689,0],[0.354,-0.137],[0.22,0],[0.558,0.216],[0.288,0],[1.031,-0.341],[0.187,-0.294],[0.161,-0.119],[0.796,-0.217],[0.626,-0.874],[-0.019,-0.377],[0.056,-0.175],[0.527,-0.657],[0,-1.116]],"v":[[10.644,-2.951],[10.108,-3.724],[10.083,-4.732],[9.55,-7.474],[7.133,-8.841],[6.213,-9.167],[5.637,-9.943],[3.594,-11.871],[2.768,-12],[0.889,-11.538],[-0.087,-11.245],[-1.064,-11.538],[-2.942,-12],[-3.769,-11.871],[-5.811,-9.943],[-6.387,-9.167],[-7.308,-8.841],[-9.724,-7.474],[-10.257,-4.732],[-10.282,-3.724],[-10.817,-2.951],[-12,-0.36],[-10.817,2.231],[-10.282,3.005],[-10.258,4.012],[-9.725,6.754],[-7.307,8.121],[-6.387,8.447],[-5.811,9.222],[-3.769,11.151],[-2.942,11.28],[-1.064,10.819],[-0.087,10.526],[0.889,10.819],[2.768,11.28],[3.594,11.151],[5.637,9.222],[6.213,8.447],[7.133,8.121],[9.55,6.754],[10.083,4.012],[10.108,3.005],[10.643,2.231],[11.826,-0.36]],"c":true}},"nm":"Path 3","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.3,0.34,0.34,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[13,13],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":4,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[8.161,-4.582],[6.839,-6.659],[0.798,-2.694],[0.798,-10],[-1.637,-10],[-1.637,-2.694],[-7.678,-6.659],[-9,-4.582],[-2.662,-0.422],[-9,3.739],[-7.678,5.816],[-1.637,1.85],[-1.637,9.156],[0.798,9.156],[0.798,1.85],[6.839,5.816],[8.161,3.739],[1.823,-0.422]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.8,0.89,0.89,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[13,13],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":18,"ty":4,"nm":"Bone","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[360.5,324,0]},"a":{"k":[66.5,47.5,0]},"s":{"k":[192.03,192.03,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-2.048],[2.015,0],[0,2.048],[-2.015,0]],"o":[[0,2.048],[-2.015,0],[0,-2.048],[2.015,0]],"v":[[48.459,-40.424],[44.809,-36.717],[41.16,-40.424],[44.809,-44.131]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.17,0.17,0.17,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[66.5,47.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-0.095,0.594],[0,0],[-0.585,-0.095],[0,0],[0.095,-0.594],[0,0],[0.585,0.096]],"o":[[-0.585,-0.095],[0,0],[0.095,-0.594],[0,0],[0.585,0.096],[0,0],[-0.094,0.594],[0,0]],"v":[[-60.566,33.142],[-61.454,31.893],[-61.202,30.31],[-59.973,29.408],[-12.533,36.708],[-11.645,37.957],[-11.897,39.54],[-13.126,40.442]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.29,0.56,0.89,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[66.5,47.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.499,0.325],[0,0],[-0.32,0.507],[0,0],[-0.499,-0.324],[0,0],[0.32,-0.507]],"o":[[-0.32,0.506],[0,0],[-0.499,-0.324],[0,0],[0.319,-0.507],[0,0],[0.498,0.325],[0,0]],"v":[[-57.785,32.266],[-59.267,32.595],[-60.596,31.73],[-60.92,30.225],[-30.706,-18.796],[-29.225,-19.126],[-27.896,-18.262],[-27.571,-16.756]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.29,0.56,0.89,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[66.5,47.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.888,-0.341],[0,0],[0.336,0.902],[0,0],[-0.888,0.341],[0,0],[-0.336,-0.902]],"o":[[0.336,0.902],[0,0],[-0.888,0.341],[0,0],[-0.336,-0.902],[0,0],[0.888,-0.341],[0,0]],"v":[[43.505,-15.434],[42.504,-13.183],[40.138,-12.275],[37.922,-13.291],[34.226,-24.552],[35.226,-26.803],[37.592,-27.711],[39.808,-26.695]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.17,0.41,0.68,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[66.5,47.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.554,-0.213],[0,0],[0.209,0.563],[0,0],[-0.554,0.213],[0,0],[-0.21,-0.563]],"o":[[0.209,0.563],[0,0],[-0.554,0.213],[0,0],[-0.209,-0.563],[0,0],[0.554,-0.213],[0,0]],"v":[[59.933,30.658],[59.309,32.063],[57.832,32.629],[56.45,31.996],[36.096,-22.748],[36.721,-24.152],[38.197,-24.719],[39.579,-24.085]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.29,0.56,0.89,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[66.5,47.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.919,-0.247],[0,0],[0.243,0.932],[0,0],[-0.918,0.247],[0,0],[-0.243,-0.932]],"o":[[0.243,0.933],[0,0],[-0.918,0.247],[0,0],[-0.243,-0.932],[0,0],[0.918,-0.247],[0,0]],"v":[[-27.28,-22.81],[-28.502,-20.674],[-30.946,-20.015],[-33.049,-21.256],[-36.587,-34.807],[-35.366,-36.942],[-32.921,-37.6],[-30.818,-36.361]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.17,0.41,0.68,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[66.5,47.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0.573,-0.154],[0,0],[0.152,0.582],[0,0],[-0.573,0.154],[0,0],[-0.151,-0.582]],"o":[[0.152,0.582],[0,0],[-0.573,0.154],[0,0],[-0.152,-0.582],[0,0],[0.573,-0.154],[0,0]],"v":[[-11.651,37.857],[-12.413,39.189],[-13.939,39.6],[-15.25,38.826],[-34.906,-32.818],[-34.145,-34.15],[-32.619,-34.562],[-31.308,-33.787]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.29,0.56,0.89,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[66.5,47.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[-0.439,-0.404],[0,0],[0.397,-0.446],[0,0],[0.439,0.404],[0,0],[-0.398,0.446]],"o":[[0.397,-0.446],[0,0],[0.439,0.404],[0,0],[-0.398,0.446],[0,0],[-0.439,-0.405],[0,0]],"v":[[35.496,-20.004],[37.011,-20.078],[38.18,-19.002],[38.254,-17.463],[-10.325,36.733],[-11.841,36.809],[-13.009,35.732],[-13.083,34.192]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.29,0.56,0.89,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[66.5,47.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,-0.602],[0,0],[0.592,0],[0,0],[0,0.601],[0,0],[-0.592,0]],"o":[[0.592,0],[0,0],[0,0.601],[0,0],[-0.592,0],[0,0],[0,-0.602],[0,0]],"v":[[37.877,-20.479],[38.949,-19.389],[38.949,-17.786],[37.877,-16.697],[-28.62,-16.697],[-29.692,-17.786],[-29.692,-19.389],[-28.62,-20.479]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.29,0.56,0.89,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[66.5,47.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0.182,0],[0.234,0.618],[0.856,3.044],[-1.178,1.586],[-2.173,0],[0,0],[0,-0.859],[0.845,0],[0,0],[0.108,-0.146],[-0.264,-0.939],[-0.651,-1.719],[0.789,-0.308]],"o":[[-0.615,0],[-0.699,-1.848],[-0.421,-1.497],[0.619,-0.834],[0,0],[0.845,0],[0,0.859],[0,0],[-1.104,0],[-0.4,0.538],[0.785,2.791],[0.303,0.801],[-0.181,0.071]],"v":[[37.375,-22.943],[35.946,-23.94],[32.796,-34.499],[33.524,-39.74],[37.511,-41.567],[45.079,-41.567],[46.61,-40.012],[45.079,-38.458],[37.511,-38.458],[35.968,-37.867],[35.738,-35.359],[38.804,-25.056],[37.925,-23.047]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.29,0.56,0.89,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[66.5,47.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":19,"ty":4,"nm":"lwrist","parent":3,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[0],"e":[11.5]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[11.5],"e":[13]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[13],"e":[9.825]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[9.825],"e":[0]},{"t":79.999993075758}]},"p":{"k":[154.067,51.267,0]},"a":{"k":[6.5,5,0]},"s":{"k":[286.667,286.667,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-3.617],[0,0],[0,0],[-2.477,-0.327],[0,0],[-0.583,1.955],[0.679,-0.135],[0.896,-0.016],[0,0]],"o":[[0,3.617],[0,0],[0,0],[2.477,0.328],[0,0],[0.583,-1.955],[-0.68,0.136],[-0.896,0.016],[0,0]],"v":[[-24.211,-2.03],[-18.297,1.317],[11.586,0.755],[14.965,5.014],[19.744,5.045],[23.627,3.693],[19.985,-4.633],[11.403,-4.871],[-18.297,-5.617]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"tr","p":{"k":[0,0],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"mn":"ADBE Vector Group"},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.9,0.7,0.56,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[26.272,7.347],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":20,"ty":4,"nm":"lhand ","parent":3,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[154.067,-67.7,0]},"a":{"k":[10.75,11.25,0]},"s":{"k":[286.667,286.667,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[-3.255,0.177],[9.144,0],[0,0]],"o":[[0.425,-5.656],[-9.144,0],[0,0]],"v":[[6.429,-5.417],[-0.866,-25.5],[-8.389,-5.417]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.09,0.09,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[11.5,30.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,-5.24],[-2.96,0],[0,3.958],[0,0]],"o":[[0,0],[0,5.24],[2.96,0],[0,-3.958],[0,0]],"v":[[-7.5,-9.5],[-5.975,18.877],[-1.047,25.968],[3.689,18.877],[5.406,-9.5]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.9,0.7,0.56,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[11.5,30.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":21,"ty":4,"nm":"Tyre Right","parent":14,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[9.565,9.565,0]},"a":{"k":[43,43.5,0]},"s":{"k":[99.698,99.698,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[18.333,0],[0,18.621],[-18.333,0],[0,-18.621]],"o":[[-18.333,0],[0,-18.621],[18.333,0],[0,18.621]],"v":[[-0.073,33.772],[-33.267,0.056],[-0.073,-33.661],[33.121,0.056]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[22.052,0],[0,-22.399],[-22.051,0],[0,22.398]],"o":[[-22.051,0],[0,22.398],[22.052,0],[0,-22.399]],"v":[[-0.073,-40.5],[-40,0.056],[-0.073,40.612],[39.855,0.056]],"c":true}},"nm":"Path 3","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.17,0.17,0.17,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[43,43.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[17.021,0],[0,17.289],[-17.021,0],[0,-17.289]],"o":[[-17.021,0],[0,-17.289],[17.021,0],[0,17.289]],"v":[[-0.075,31.342],[-30.895,0.037],[-0.075,-31.268],[30.744,0.037]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[0,-21.836],[-21.498,0],[0,21.836],[21.497,0]],"o":[[0,21.836],[21.497,0],[0,-21.836],[-21.498,0]],"v":[[-39,0.037],[-0.075,39.574],[38.849,0.037],[-0.075,-39.5]],"c":true}},"nm":"Path 3","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.8,0.89,0.89,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[43,43.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":22,"ty":4,"nm":"lTyreAni ","parent":13,"ks":{"o":{"k":30},"r":{"k":176},"p":{"k":[9.621,8.698,0]},"a":{"k":[117,115,0]},"s":{"k":[51.701,51.701,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[72.5,72.5]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[0],"e":[0]},{"t":58.9999948933716}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[18],"e":[0]},{"t":58.9999948933716}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","fillEnabled":true,"c":{"k":[0.33,0.33,0.33,1]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[115.75,115.75],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[124.244,124.244],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":4,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":23,"ty":4,"nm":"rTyreAni","parent":14,"ks":{"o":{"k":30},"r":{"k":0},"p":{"k":[9.823,8.531,0]},"a":{"k":[117,115,0]},"s":{"k":[51.701,51.701,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"k":[72.5,72.5]},"p":{"k":[0,0]},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse"},{"ty":"tm","s":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[0],"e":[0]},{"t":58.9999948933716}],"ix":1},"e":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[18],"e":[0]},{"t":58.9999948933716}],"ix":2},"o":{"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","fillEnabled":true,"c":{"k":[0.33,0.33,0.33,1]},"o":{"k":100},"w":{"k":3},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"k":[115.75,115.75],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[124.244,124.244],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":4,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":24,"ty":4,"nm":"Tyre Left","parent":13,"ks":{"o":{"k":100},"r":{"k":-180},"p":{"k":[9.435,9.694,0]},"a":{"k":[43,43.5,0]},"s":{"k":[99.698,99.698,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[18.333,0],[0,18.621],[-18.333,0],[0,-18.621]],"o":[[-18.333,0],[0,-18.621],[18.333,0],[0,18.621]],"v":[[-0.073,33.772],[-33.267,0.056],[-0.073,-33.661],[33.121,0.056]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[22.052,0],[0,-22.399],[-22.051,0],[0,22.398]],"o":[[-22.051,0],[0,22.398],[22.052,0],[0,-22.399]],"v":[[-0.073,-40.5],[-40,0.056],[-0.073,40.612],[39.855,0.056]],"c":true}},"nm":"Path 3","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.17,0.17,0.17,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[43,43.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":4,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[17.021,0],[0,17.289],[-17.021,0],[0,-17.289]],"o":[[-17.021,0],[0,-17.289],[17.021,0],[0,17.289]],"v":[[-0.075,31.342],[-30.895,0.037],[-0.075,-31.268],[30.744,0.037]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ind":1,"ty":"sh","ks":{"k":{"i":[[0,-21.836],[-21.498,0],[0,21.836],[21.497,0]],"o":[[0,21.836],[21.497,0],[0,-21.836],[-21.498,0]],"v":[[-39,0.037],[-0.075,39.574],[38.849,0.037],[-0.075,-39.5]],"c":true}},"nm":"Path 3","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.8,0.89,0.89,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[43,43.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":25,"ty":3,"nm":"backLeg","ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[15],"e":[-13]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[-13],"e":[-53]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[-53],"e":[-38]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[-38],"e":[15]},{"t":79.999993075758}]},"p":{"k":[314,244,0]},"a":{"k":[49,49,0]},"s":{"k":[45.098,45.098,100]}},"ao":0,"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":26,"ty":3,"nm":"backKnee","parent":25,"ks":{"o":{"k":0},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[-32],"e":[42]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[42],"e":[80]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[80],"e":[34]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[34],"e":[-32]},{"t":79.999993075758}]},"p":{"k":[111.087,224.174,0]},"a":{"k":[49,49,0]},"s":{"k":[56.522,56.522,100]}},"ao":0,"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":27,"ty":4,"nm":"backShoe","parent":26,"ks":{"o":{"k":100},"r":{"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[16],"e":[-27]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":20,"s":[-27],"e":[-26.718]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40,"s":[-26.718],"e":[7]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":59,"s":[7],"e":[16]},{"t":79.999993075758}]},"p":{"k":[-47.794,408.139,0]},"a":{"k":[8,6.375,0]},"s":{"k":[784.615,784.615,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.827,-0.558],[13.827,-0.558],[13.827,0.558],[-13.827,0.558]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.72,0.51,0.37,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16.327,11.958],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[1.455,0.998],[1.455,0.249],[3.014,0],[0.856,0.771],[-1.394,-2.695]],"o":[[0,0],[-1.454,-0.998],[-1.455,-0.249],[-3.014,0],[-0.831,-0.748],[0,0]],"v":[[13.691,4.404],[12.115,-0.298],[-1.224,-4.074],[-8.393,-1.955],[-12.861,-4.947],[-13.963,4.404]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.37,0.18,0.06,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16.5,7],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":28,"ty":4,"nm":"back_leg_2","parent":26,"ks":{"o":{"k":100},"r":{"k":15},"p":{"k":[64.692,9.769,0]},"a":{"k":[10.25,2.25,0]},"s":{"k":[784.615,784.615,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[6.467,-0.11],[0,0]],"o":[[0,0],[0,0],[0,0],[-6.467,0.11],[0,0]],"v":[[-5.487,16.058],[5.883,16.058],[5.883,-20.744],[0.402,-27.499],[-5.487,-20.744]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.05,0.3,0.46,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[9.5,29.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.25,-3.5],[5.25,-3.5],[5.25,3.5],[-5.25,3.5]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.62,0.59,0.56,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[9.75,51.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.75,-3.5],[4.75,-3.5],[4.75,3.5],[-4.75,3.5]],"c":true}},"nm":"Path 1","mn":"ADBE Vector Shape - Group"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.99,0.8,0.68,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[9.75,46.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":29,"ty":4,"nm":"back_leg_1 ","parent":25,"ks":{"o":{"k":100},"r":{"k":-19},"p":{"k":[45.12,24.609,0]},"a":{"k":[11.679,2.116,0]},"s":{"k":[473.443,473.443,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0],[-2.746,0],[0,0],[-0.271,2.764],[0,0],[10.803,-0.278]],"o":[[0,0],[0.316,2.741],[0,0],[2.758,0],[0,0],[0,0],[-9.898,0.255]],"v":[[-10,-20.529],[-5.404,19.283],[0.163,24.246],[0.654,24.246],[6.137,19.262],[10.041,-20.529],[0.387,-23.985]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.05,0.3,0.46,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[11.5,26],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":30,"ty":4,"nm":"backPedal","parent":27,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[8.555,14.349,0]},"a":{"k":[-23.125,166.375,0]},"s":{"k":[65,50,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[31,8]},"p":{"k":[0,0]},"r":{"k":20},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect"},{"ty":"st","fillEnabled":true,"c":{"k":[0.17,0.41,0.69,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.13,0.13,0.13,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-23.25,166.25],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":31,"ty":4,"nm":"backStick","parent":12,"ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[49.75,47.125,0]},"a":{"k":[-25,79.125,0]},"s":{"k":[300,300,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"k":[8,45.5]},"p":{"k":[0,0]},"r":{"k":0},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect"},{"ty":"st","fillEnabled":true,"c":{"k":[0.17,0.41,0.69,1]},"o":{"k":100},"w":{"k":0},"lc":1,"lj":1,"ml":4,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.22,0.21,0.21,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[-25,123.75],"ix":2},"a":{"k":[-0.25,22.25],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1}]}],"layers":[{"ddd":0,"ind":0,"ty":0,"nm":"androidCycle","refId":"comp_0","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[310,260,0]},"a":{"k":[320,260,0]},"s":{"k":[100,100,100]}},"ao":0,"w":640,"h":520,"ip":80.999992989205,"op":162.999985891857,"st":80.999992989205,"bm":0,"sr":1},{"ddd":0,"ind":1,"ty":0,"nm":"androidCycle","refId":"comp_0","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[310,260,0]},"a":{"k":[320,260,0]},"s":{"k":[100,100,100]}},"ao":0,"w":640,"h":520,"ip":0,"op":81.999992902652,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":2,"ty":4,"nm":"GrassTwo 3","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":2,"s":[735,446,0],"e":[-65,446,0],"to":[-37.9897842407227,0,0],"ti":[64.9527435302734,0,0]},{"t":89.9999922102278}]},"a":{"k":[36.5,11.5,0]},"s":{"k":[193.151,193.151,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.223],[0.224,0],[0,0.224],[-0.225,0]],"o":[[0,0.224],[-0.225,0],[0,-0.223],[0.224,0]],"v":[[10.737,-2.247],[10.331,-1.842],[9.924,-2.247],[10.331,-2.652]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.224],[0.224,0],[0,0.223],[-0.224,0]],"o":[[0,0.223],[-0.224,0],[0,-0.224],[0.224,0]],"v":[[13.098,2.384],[12.692,2.789],[12.285,2.384],[12.692,1.979]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.482],[0.484,0],[0,0.482],[-0.483,0]],"o":[[0,0.482],[-0.483,0],[0,-0.482],[0.484,0]],"v":[[25.384,1.712],[24.508,2.586],[23.632,1.712],[24.508,0.839]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.482],[0.484,0],[0,0.482],[-0.483,0]],"o":[[0,0.482],[-0.483,0],[0,-0.482],[0.484,0]],"v":[[18.311,4.309],[17.436,5.182],[16.56,4.309],[17.436,3.436]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.363],[0.364,0],[0,0.363],[-0.364,0]],"o":[[0,0.363],[-0.364,0],[0,-0.363],[0.364,0]],"v":[[18.299,0.057],[17.64,0.714],[16.981,0.057],[17.64,-0.6]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.482],[0.484,0],[0,0.482],[-0.483,0]],"o":[[0,0.482],[-0.483,0],[0,-0.482],[0.484,0]],"v":[[14.771,-1.023],[13.895,-0.15],[13.02,-1.023],[13.895,-1.896]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.482],[0.484,0],[0,0.482],[-0.483,0]],"o":[[0,0.482],[-0.483,0],[0,-0.482],[0.484,0]],"v":[[8.736,0.963],[7.86,1.836],[6.984,0.963],[7.86,0.09]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0.754],[-2.669,0.845],[-4.66,0],[-1.538,-2.613],[-1.004,0],[0,-3.937],[0.003,-0.085],[0,-2.364],[0.019,-0.179]],"o":[[-0.234,-0.675],[0,-2.94],[0.352,-4.555],[3.258,0],[0.867,-0.372],[3.949,0],[0,0.086],[2.217,0.507],[0,0.184],[0,0]],"v":[[-0.855,11.306],[-1.222,9.156],[3.38,2.881],[12.209,-5.262],[19.851,-0.894],[22.676,-1.473],[29.827,5.656],[29.821,5.912],[33.692,10.762],[33.661,11.306]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.13,0.49,0.05,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0.754],[-2.669,0.845],[-4.659,0],[-1.538,-2.613],[-1.004,0],[0,-3.937],[0.003,-0.085],[0,-2.364],[0.02,-0.179]],"o":[[-0.234,-0.675],[0,-2.94],[0.352,-4.555],[3.259,0],[0.867,-0.372],[3.949,0],[0,0.086],[2.217,0.507],[0,0.184],[0,0]],"v":[[1.85,11.306],[1.483,9.156],[6.085,2.881],[14.913,-5.262],[22.556,-0.894],[25.381,-1.473],[32.532,5.656],[32.526,5.912],[36.397,10.762],[36.366,11.306]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.14,0.55,0.05,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.302],[0.301,0],[0,0.303],[-0.302,0]],"o":[[0,0.303],[-0.302,0],[0,-0.302],[0.301,0]],"v":[[-20.077,-7.099],[-20.622,-6.551],[-21.168,-7.099],[-20.622,-7.647]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.303],[0.301,0],[0,0.302],[-0.301,0]],"o":[[0,0.302],[-0.301,0],[0,-0.303],[0.301,0]],"v":[[-16.908,-0.833],[-17.453,-0.286],[-17.999,-0.833],[-17.453,-1.381]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.652],[0.649,0],[0,0.652],[-0.649,0]],"o":[[0,0.652],[-0.649,0],[0,-0.652],[0.649,0]],"v":[[-0.419,-1.742],[-1.594,-0.561],[-2.77,-1.742],[-1.594,-2.923]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.652],[0.649,0],[0,0.652],[-0.649,0]],"o":[[0,0.652],[-0.649,0],[0,-0.652],[0.649,0]],"v":[[-9.911,1.771],[-11.086,2.953],[-12.261,1.771],[-11.086,0.59]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.491],[0.488,0],[0,0.491],[-0.489,0]],"o":[[0,0.491],[-0.489,0],[0,-0.491],[0.488,0]],"v":[[-9.927,-3.982],[-10.812,-3.093],[-11.696,-3.982],[-10.812,-4.871]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.652],[0.649,0],[0,0.652],[-0.649,0]],"o":[[0,0.652],[-0.649,0],[0,-0.652],[0.649,0]],"v":[[-14.663,-5.443],[-15.838,-4.262],[-17.013,-5.443],[-15.838,-6.624]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.652],[0.649,0],[0,0.652],[-0.649,0]],"o":[[0,0.652],[-0.649,0],[0,-0.652],[0.649,0]],"v":[[-22.762,-2.756],[-23.938,-1.575],[-25.113,-2.756],[-23.938,-3.938]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,1.02],[-3.581,1.143],[-6.254,0],[-2.064,-3.535],[-1.347,0],[0,-5.327],[0.004,-0.115],[0,-3.199],[0.026,-0.242]],"o":[[-0.315,-0.913],[0,-3.978],[0.473,-6.163],[4.373,0],[1.164,-0.503],[5.3,0],[0,0.116],[2.975,0.686],[0,0.249],[0,0]],"v":[[-35.634,11.238],[-36.127,8.329],[-29.95,-0.161],[-18.101,-11.179],[-7.845,-5.268],[-4.053,-6.052],[5.544,3.593],[5.536,3.94],[10.731,10.502],[10.69,11.238]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.13,0.49,0.05,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,1.02],[-3.581,1.143],[-6.253,0],[-2.064,-3.535],[-1.347,0],[0,-5.327],[0.004,-0.115],[0,-3.199],[0.027,-0.242]],"o":[[-0.315,-0.913],[0,-3.978],[0.472,-6.163],[4.374,0],[1.164,-0.503],[5.3,0],[0,0.116],[2.975,0.686],[0,0.249],[0,0]],"v":[[-32.004,11.238],[-32.497,8.329],[-26.32,-0.161],[-14.471,-11.179],[-4.214,-5.268],[-0.422,-6.052],[9.175,3.593],[9.166,3.94],[14.362,10.502],[14.32,11.238]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.14,0.55,0.05,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":91.9999920371218,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":3,"ty":4,"nm":"GrassTwo 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":33,"s":[735,446,0],"e":[-65,446,0],"to":[-37.9897842407227,0,0],"ti":[64.9527435302734,0,0]},{"t":120.999989527084}]},"a":{"k":[36.5,11.5,0]},"s":{"k":[193.151,193.151,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.223],[0.224,0],[0,0.224],[-0.225,0]],"o":[[0,0.224],[-0.225,0],[0,-0.223],[0.224,0]],"v":[[10.737,-2.247],[10.331,-1.842],[9.924,-2.247],[10.331,-2.652]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.224],[0.224,0],[0,0.223],[-0.224,0]],"o":[[0,0.223],[-0.224,0],[0,-0.224],[0.224,0]],"v":[[13.098,2.384],[12.692,2.789],[12.285,2.384],[12.692,1.979]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.482],[0.484,0],[0,0.482],[-0.483,0]],"o":[[0,0.482],[-0.483,0],[0,-0.482],[0.484,0]],"v":[[25.384,1.712],[24.508,2.586],[23.632,1.712],[24.508,0.839]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.482],[0.484,0],[0,0.482],[-0.483,0]],"o":[[0,0.482],[-0.483,0],[0,-0.482],[0.484,0]],"v":[[18.311,4.309],[17.436,5.182],[16.56,4.309],[17.436,3.436]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.363],[0.364,0],[0,0.363],[-0.364,0]],"o":[[0,0.363],[-0.364,0],[0,-0.363],[0.364,0]],"v":[[18.299,0.057],[17.64,0.714],[16.981,0.057],[17.64,-0.6]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.482],[0.484,0],[0,0.482],[-0.483,0]],"o":[[0,0.482],[-0.483,0],[0,-0.482],[0.484,0]],"v":[[14.771,-1.023],[13.895,-0.15],[13.02,-1.023],[13.895,-1.896]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.482],[0.484,0],[0,0.482],[-0.483,0]],"o":[[0,0.482],[-0.483,0],[0,-0.482],[0.484,0]],"v":[[8.736,0.963],[7.86,1.836],[6.984,0.963],[7.86,0.09]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0.754],[-2.669,0.845],[-4.66,0],[-1.538,-2.613],[-1.004,0],[0,-3.937],[0.003,-0.085],[0,-2.364],[0.019,-0.179]],"o":[[-0.234,-0.675],[0,-2.94],[0.352,-4.555],[3.258,0],[0.867,-0.372],[3.949,0],[0,0.086],[2.217,0.507],[0,0.184],[0,0]],"v":[[-0.855,11.306],[-1.222,9.156],[3.38,2.881],[12.209,-5.262],[19.851,-0.894],[22.676,-1.473],[29.827,5.656],[29.821,5.912],[33.692,10.762],[33.661,11.306]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.13,0.49,0.05,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0.754],[-2.669,0.845],[-4.659,0],[-1.538,-2.613],[-1.004,0],[0,-3.937],[0.003,-0.085],[0,-2.364],[0.02,-0.179]],"o":[[-0.234,-0.675],[0,-2.94],[0.352,-4.555],[3.259,0],[0.867,-0.372],[3.949,0],[0,0.086],[2.217,0.507],[0,0.184],[0,0]],"v":[[1.85,11.306],[1.483,9.156],[6.085,2.881],[14.913,-5.262],[22.556,-0.894],[25.381,-1.473],[32.532,5.656],[32.526,5.912],[36.397,10.762],[36.366,11.306]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.14,0.55,0.05,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.302],[0.301,0],[0,0.303],[-0.302,0]],"o":[[0,0.303],[-0.302,0],[0,-0.302],[0.301,0]],"v":[[-20.077,-7.099],[-20.622,-6.551],[-21.168,-7.099],[-20.622,-7.647]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.303],[0.301,0],[0,0.302],[-0.301,0]],"o":[[0,0.302],[-0.301,0],[0,-0.303],[0.301,0]],"v":[[-16.908,-0.833],[-17.453,-0.286],[-17.999,-0.833],[-17.453,-1.381]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.652],[0.649,0],[0,0.652],[-0.649,0]],"o":[[0,0.652],[-0.649,0],[0,-0.652],[0.649,0]],"v":[[-0.419,-1.742],[-1.594,-0.561],[-2.77,-1.742],[-1.594,-2.923]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.652],[0.649,0],[0,0.652],[-0.649,0]],"o":[[0,0.652],[-0.649,0],[0,-0.652],[0.649,0]],"v":[[-9.911,1.771],[-11.086,2.953],[-12.261,1.771],[-11.086,0.59]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.491],[0.488,0],[0,0.491],[-0.489,0]],"o":[[0,0.491],[-0.489,0],[0,-0.491],[0.488,0]],"v":[[-9.927,-3.982],[-10.812,-3.093],[-11.696,-3.982],[-10.812,-4.871]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.652],[0.649,0],[0,0.652],[-0.649,0]],"o":[[0,0.652],[-0.649,0],[0,-0.652],[0.649,0]],"v":[[-14.663,-5.443],[-15.838,-4.262],[-17.013,-5.443],[-15.838,-6.624]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.652],[0.649,0],[0,0.652],[-0.649,0]],"o":[[0,0.652],[-0.649,0],[0,-0.652],[0.649,0]],"v":[[-22.762,-2.756],[-23.938,-1.575],[-25.113,-2.756],[-23.938,-3.938]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,1.02],[-3.581,1.143],[-6.254,0],[-2.064,-3.535],[-1.347,0],[0,-5.327],[0.004,-0.115],[0,-3.199],[0.026,-0.242]],"o":[[-0.315,-0.913],[0,-3.978],[0.473,-6.163],[4.373,0],[1.164,-0.503],[5.3,0],[0,0.116],[2.975,0.686],[0,0.249],[0,0]],"v":[[-35.634,11.238],[-36.127,8.329],[-29.95,-0.161],[-18.101,-11.179],[-7.845,-5.268],[-4.053,-6.052],[5.544,3.593],[5.536,3.94],[10.731,10.502],[10.69,11.238]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.13,0.49,0.05,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,1.02],[-3.581,1.143],[-6.253,0],[-2.064,-3.535],[-1.347,0],[0,-5.327],[0.004,-0.115],[0,-3.199],[0.027,-0.242]],"o":[[-0.315,-0.913],[0,-3.978],[0.472,-6.163],[4.374,0],[1.164,-0.503],[5.3,0],[0,0.116],[2.975,0.686],[0,0.249],[0,0]],"v":[[-32.004,11.238],[-32.497,8.329],[-26.32,-0.161],[-14.471,-11.179],[-4.214,-5.268],[-0.422,-6.052],[9.175,3.593],[9.166,3.94],[14.362,10.502],[14.32,11.238]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.14,0.55,0.05,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[36.5,11.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":3,"mn":"ADBE Vector Group"}],"ip":30.9999973168562,"op":122.999989353978,"st":30.9999973168562,"bm":0,"sr":1},{"ddd":0,"ind":4,"ty":4,"nm":"GrassThree 2","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[430.998,455.5,0],"e":[-24.531,455.5,0],"to":[-186.956588745117,0,0],"ti":[86.6576843261719,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":79,"s":[-24.531,455.5,0],"e":[679.5,455.5,0],"to":[-1.99229145050049,0,0],"ti":[2.65938591957092,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":80,"s":[679.5,455.5,0],"e":[430.998,455.5,0],"to":[-21.2776031494141,0,0],"ti":[122.756690979004,0,0]},{"t":160.999986064963}]},"a":{"k":[16,7.5,0]},"s":{"k":[193.75,193.75,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.189],[0.189,0],[0,0.189],[-0.189,0]],"o":[[0,0.189],[-0.189,0],[0,-0.189],[0.189,0]],"v":[[-5.695,-4.749],[-6.037,-4.407],[-6.38,-4.749],[-6.037,-5.092]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.189],[0.189,0],[0,0.189],[-0.189,0]],"o":[[0,0.189],[-0.189,0],[0,-0.189],[0.189,0]],"v":[[-3.707,-0.833],[-4.049,-0.491],[-4.392,-0.833],[-4.049,-1.176]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.408],[0.407,0],[0,0.408],[-0.407,0]],"o":[[0,0.408],[-0.407,0],[0,-0.408],[0.407,0]],"v":[[6.639,-1.401],[5.902,-0.663],[5.164,-1.401],[5.902,-2.14]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.408],[0.407,0],[0,0.408],[-0.407,0]],"o":[[0,0.408],[-0.407,0],[0,-0.408],[0.407,0]],"v":[[0.683,0.795],[-0.054,1.533],[-0.791,0.795],[-0.054,0.056]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.307],[0.306,0],[0,0.307],[-0.307,0]],"o":[[0,0.307],[-0.307,0],[0,-0.307],[0.306,0]],"v":[[0.673,-2.801],[0.118,-2.246],[-0.437,-2.801],[0.118,-3.357]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.408],[0.407,0],[0,0.408],[-0.407,0]],"o":[[0,0.408],[-0.407,0],[0,-0.408],[0.407,0]],"v":[[-2.298,-3.714],[-3.036,-2.976],[-3.773,-3.714],[-3.036,-4.452]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.408],[0.407,0],[0,0.408],[-0.407,0]],"o":[[0,0.408],[-0.407,0],[0,-0.408],[0.407,0]],"v":[[-7.38,-2.035],[-8.118,-1.297],[-8.855,-2.035],[-8.118,-2.774]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0.637],[-2.247,0.715],[-3.924,0],[-1.295,-2.21],[-0.845,0],[0,-3.329],[0.002,-0.072],[0,-1.999],[0.016,-0.151]],"o":[[-0.197,-0.57],[0,-2.486],[0.297,-3.852],[2.744,0],[0.73,-0.315],[3.326,0],[0,0.073],[1.867,0.429],[0,0.156],[0,0]],"v":[[-15.457,6.711],[-15.766,4.893],[-11.89,-0.413],[-4.456,-7.299],[1.98,-3.605],[4.359,-4.095],[10.381,1.933],[10.375,2.15],[13.635,6.251],[13.609,6.711]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.13,0.49,0.05,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0.637],[-2.247,0.715],[-3.924,0],[-1.295,-2.21],[-0.845,0],[0,-3.329],[0.002,-0.072],[0,-1.999],[0.017,-0.151]],"o":[[-0.197,-0.57],[0,-2.486],[0.296,-3.852],[2.744,0],[0.73,-0.315],[3.326,0],[0,0.073],[1.867,0.429],[0,0.156],[0,0]],"v":[[-13.179,6.711],[-13.488,4.893],[-9.612,-0.413],[-2.178,-7.299],[4.258,-3.605],[6.637,-4.095],[12.659,1.933],[12.653,2.15],[15.913,6.251],[15.887,6.711]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.14,0.55,0.05,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":161.99998597841,"st":51.9999954992427,"bm":0,"sr":1},{"ddd":0,"ind":5,"ty":4,"nm":"GrassThree","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":0,"s":[679.5,455.5,0],"e":[-52.5,453.5,0],"to":[-54.4280891418457,0,0],"ti":[56.7994651794434,0,0]},{"t":92.9999919505687}]},"a":{"k":[16,7.5,0]},"s":{"k":[193.75,193.75,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.189],[0.189,0],[0,0.189],[-0.189,0]],"o":[[0,0.189],[-0.189,0],[0,-0.189],[0.189,0]],"v":[[-5.695,-4.749],[-6.037,-4.407],[-6.38,-4.749],[-6.037,-5.092]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.189],[0.189,0],[0,0.189],[-0.189,0]],"o":[[0,0.189],[-0.189,0],[0,-0.189],[0.189,0]],"v":[[-3.707,-0.833],[-4.049,-0.491],[-4.392,-0.833],[-4.049,-1.176]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.408],[0.407,0],[0,0.408],[-0.407,0]],"o":[[0,0.408],[-0.407,0],[0,-0.408],[0.407,0]],"v":[[6.639,-1.401],[5.902,-0.663],[5.164,-1.401],[5.902,-2.14]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.408],[0.407,0],[0,0.408],[-0.407,0]],"o":[[0,0.408],[-0.407,0],[0,-0.408],[0.407,0]],"v":[[0.683,0.795],[-0.054,1.533],[-0.791,0.795],[-0.054,0.056]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.307],[0.306,0],[0,0.307],[-0.307,0]],"o":[[0,0.307],[-0.307,0],[0,-0.307],[0.306,0]],"v":[[0.673,-2.801],[0.118,-2.246],[-0.437,-2.801],[0.118,-3.357]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.408],[0.407,0],[0,0.408],[-0.407,0]],"o":[[0,0.408],[-0.407,0],[0,-0.408],[0.407,0]],"v":[[-2.298,-3.714],[-3.036,-2.976],[-3.773,-3.714],[-3.036,-4.452]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,-0.408],[0.407,0],[0,0.408],[-0.407,0]],"o":[[0,0.408],[-0.407,0],[0,-0.408],[0.407,0]],"v":[[-7.38,-2.035],[-8.118,-1.297],[-8.855,-2.035],[-8.118,-2.774]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.09,0.33,0.03,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0.637],[-2.247,0.715],[-3.924,0],[-1.295,-2.21],[-0.845,0],[0,-3.329],[0.002,-0.072],[0,-1.999],[0.016,-0.151]],"o":[[-0.197,-0.57],[0,-2.486],[0.297,-3.852],[2.744,0],[0.73,-0.315],[3.326,0],[0,0.073],[1.867,0.429],[0,0.156],[0,0]],"v":[[-15.457,6.711],[-15.766,4.893],[-11.89,-0.413],[-4.456,-7.299],[1.98,-3.605],[4.359,-4.095],[10.381,1.933],[10.375,2.15],[13.635,6.251],[13.609,6.711]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.13,0.49,0.05,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"mn":"ADBE Vector Group"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[0,0],[0,0.637],[-2.247,0.715],[-3.924,0],[-1.295,-2.21],[-0.845,0],[0,-3.329],[0.002,-0.072],[0,-1.999],[0.017,-0.151]],"o":[[-0.197,-0.57],[0,-2.486],[0.296,-3.852],[2.744,0],[0.73,-0.315],[3.326,0],[0,0.073],[1.867,0.429],[0,0.156],[0,0]],"v":[[-13.179,6.711],[-13.488,4.893],[-9.612,-0.413],[-2.178,-7.299],[4.258,-3.605],[6.637,-4.095],[12.659,1.933],[12.653,2.15],[15.913,6.251],[15.887,6.711]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.14,0.55,0.05,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[16,7.5],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":161.99998597841,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":6,"ty":4,"nm":"Cloud  03","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[454,72,0]},"a":{"k":[39,27,0]},"s":{"k":[202.79,202.79,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.426,2.237],[0,2.097],[12.143,0],[3.457,-7.671],[2.012,0],[0,-7.522],[-0.081,-0.606],[0,-6.285],[-7.463,0],[0,0],[0,7.521]],"o":[[0.54,-1.922],[0,-12.237],[-8.904,0],[-1.715,-0.795],[-7.463,0],[0,0.629],[-5.743,1.57],[0,7.521],[0,0],[7.463,0],[0,-5.329]],"v":[[31.164,1.203],[32,-4.843],[10.014,-27],[-10.01,-13.99],[-15.645,-15.231],[-29.159,-1.612],[-29.032,0.239],[-39,13.381],[-25.486,27],[25.116,27],[38.63,13.381]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.95,0.97,1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[39,27],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":161.99998597841,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":7,"ty":4,"nm":"Cloud  02","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[144,161,0]},"a":{"k":[39,27,0]},"s":{"k":[127.719,127.719,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.426,2.237],[0,2.097],[12.143,0],[3.457,-7.671],[2.012,0],[0,-7.522],[-0.081,-0.606],[0,-6.285],[-7.463,0],[0,0],[0,7.521]],"o":[[0.54,-1.922],[0,-12.237],[-8.904,0],[-1.715,-0.795],[-7.463,0],[0,0.629],[-5.743,1.57],[0,7.521],[0,0],[7.463,0],[0,-5.329]],"v":[[31.164,1.203],[32,-4.843],[10.014,-27],[-10.01,-13.99],[-15.645,-15.231],[-29.159,-1.612],[-29.032,0.239],[-39,13.381],[-25.486,27],[25.116,27],[38.63,13.381]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.95,0.97,1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[39,27],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":161.99998597841,"st":0,"bm":0,"sr":1},{"ddd":0,"ind":8,"ty":4,"nm":"Cloud  01","ks":{"o":{"k":100},"r":{"k":0},"p":{"k":[575,242,0]},"a":{"k":[39,27,0]},"s":{"k":[88.889,88.889,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"k":{"i":[[4.426,2.237],[0,2.097],[12.143,0],[3.457,-7.671],[2.012,0],[0,-7.522],[-0.081,-0.606],[0,-6.285],[-7.463,0],[0,0],[0,7.521]],"o":[[0.54,-1.922],[0,-12.237],[-8.904,0],[-1.715,-0.795],[-7.463,0],[0,0.629],[-5.743,1.57],[0,7.521],[0,0],[7.463,0],[0,-5.329]],"v":[[31.164,1.203],[32,-4.843],[10.014,-27],[-10.01,-13.99],[-15.645,-15.231],[-29.159,-1.612],[-29.032,0.239],[-39,13.381],[-25.486,27],[25.116,27],[38.63,13.381]],"c":true}},"nm":"Path 2","mn":"ADBE Vector Shape - Group"},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge"},{"ty":"fl","fillEnabled":true,"c":{"k":[0.95,0.97,1,1]},"o":{"k":100},"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill"},{"ty":"tr","p":{"k":[39,27],"ix":2},"a":{"k":[0,0],"ix":1},"s":{"k":[100,100],"ix":3},"r":{"k":0,"ix":6},"o":{"k":100,"ix":7},"sk":{"k":0,"ix":4},"sa":{"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"mn":"ADBE Vector Group"}],"ip":0,"op":161.99998597841,"st":0,"bm":0,"sr":1}],"v":"4.5.0","ddd":1,"ip":0,"op":159.999986151516,"fr":23.9759979248047,"w":640,"h":520}
\ No newline at end of file
index 836219f..778503a 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" api-version="6" package="org.tizen.example.NUITizenGallery" version="1.0.0">
+<manifest xmlns="http://tizen.org/ns/packages" api-version="7" package="org.tizen.example.NUITizenGallery" version="1.0.2">
   <profile name="common" />
   <ui-application appid="org.tizen.example.NUITizenGallery"
                                        exec="NUITizenGallery.dll"
index 2060ed0..78c27a0 100644 (file)
@@ -63,7 +63,7 @@ namespace Tizen.NUI.Devel.Tests
 
             testView.IsEnabled = false;
 
-            Assert.AreEqual(false, isEnabled, "View IsEnabled should be changed by set value");
+            Assert.AreEqual(false, testView.IsEnabled, "View IsEnabled should be changed by set value");
 
             testView.Dispose();
         }
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples.sln b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples.sln
new file mode 100755 (executable)
index 0000000..f35a807
--- /dev/null
@@ -0,0 +1,121 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29613.14
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI.LayoutSamples", "Tizen.NUI.LayoutSamples\Tizen.NUI.LayoutSamples.csproj", "{B2EC3963-C77F-4D1A-9387-8BA0DB298266}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen", "..\..\src\Tizen\Tizen.csproj", "{F4ADAF15-01AA-477E-A85A-BEB297E6B07E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.Common", "..\..\src\Tizen.Applications.Common\Tizen.Applications.Common.csproj", "{0B96B17C-DACA-4745-88B1-6CFC1825A510}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Log", "..\..\src\Tizen.Log\Tizen.Log.csproj", "{1E8250DB-92C3-44A5-8D57-3CFDE0C0021D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI", "..\..\src\Tizen.NUI\Tizen.NUI.csproj", "{29B426DA-FFDE-49D2-BD73-FE155F9502E8}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI.Components", "..\..\src\Tizen.NUI.Components\Tizen.NUI.Components.csproj", "{2A669CBF-DFA8-4EA3-852D-3137493DE884}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.System.SystemSettings", "..\..\src\Tizen.System.SystemSettings\Tizen.System.SystemSettings.csproj", "{EC28F259-C790-4FA3-A834-00795E2A7E2F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.ComponentBased", "..\..\src\Tizen.Applications.ComponentBased\Tizen.Applications.ComponentBased.csproj", "{E117D074-C23D-41FD-A77D-2E9E6FF85676}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Multimedia.MediaPlayer", "..\..\src\Tizen.Multimedia.MediaPlayer\Tizen.Multimedia.MediaPlayer.csproj", "{850B0BA6-8C7F-4645-8473-15F378B9A1EB}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Multimedia", "..\..\src\Tizen.Multimedia\Tizen.Multimedia.csproj", "{8C1CA5FE-EEA0-4353-8735-B49347CF1812}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElmSharp", "..\..\src\ElmSharp\ElmSharp.csproj", "{CCDA00F7-7BDE-4913-B9F1-1AEE401EE4AD}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.System.Information", "..\..\src\Tizen.System.Information\Tizen.System.Information.csproj", "{02BEE3AD-99A6-44A5-89FC-D9F4132D9ECE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI.Wearable", "..\..\src\Tizen.NUI.Wearable\Tizen.NUI.Wearable.csproj", "{A2B607F9-5B9B-43AC-A8CA-E0FDF2A6694E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.System.Feedback", "..\..\src\Tizen.System.Feedback\Tizen.System.Feedback.csproj", "{D422D03E-7E32-4230-8306-B16DFE27E95A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Multimedia.Camera", "..\..\src\Tizen.Multimedia.Camera\Tizen.Multimedia.Camera.csproj", "{210C3F38-BD17-4583-816D-550C319FC6CF}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.ThemeManager", "..\..\src\Tizen.Applications.ThemeManager\Tizen.Applications.ThemeManager.csproj", "{FB8B42D6-76CC-4836-8A80-58A816C6A17F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI.Extension", "..\..\src\Tizen.NUI.Extension\Tizen.NUI.Extension.csproj", "{47829CA1-0E21-4687-9ABB-0C27E1A67E85}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Release|Any CPU = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {B2EC3963-C77F-4D1A-9387-8BA0DB298266}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B2EC3963-C77F-4D1A-9387-8BA0DB298266}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B2EC3963-C77F-4D1A-9387-8BA0DB298266}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B2EC3963-C77F-4D1A-9387-8BA0DB298266}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F4ADAF15-01AA-477E-A85A-BEB297E6B07E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F4ADAF15-01AA-477E-A85A-BEB297E6B07E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F4ADAF15-01AA-477E-A85A-BEB297E6B07E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F4ADAF15-01AA-477E-A85A-BEB297E6B07E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0B96B17C-DACA-4745-88B1-6CFC1825A510}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0B96B17C-DACA-4745-88B1-6CFC1825A510}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0B96B17C-DACA-4745-88B1-6CFC1825A510}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0B96B17C-DACA-4745-88B1-6CFC1825A510}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1E8250DB-92C3-44A5-8D57-3CFDE0C0021D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1E8250DB-92C3-44A5-8D57-3CFDE0C0021D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1E8250DB-92C3-44A5-8D57-3CFDE0C0021D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1E8250DB-92C3-44A5-8D57-3CFDE0C0021D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {29B426DA-FFDE-49D2-BD73-FE155F9502E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {29B426DA-FFDE-49D2-BD73-FE155F9502E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {29B426DA-FFDE-49D2-BD73-FE155F9502E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {29B426DA-FFDE-49D2-BD73-FE155F9502E8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2A669CBF-DFA8-4EA3-852D-3137493DE884}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2A669CBF-DFA8-4EA3-852D-3137493DE884}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2A669CBF-DFA8-4EA3-852D-3137493DE884}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2A669CBF-DFA8-4EA3-852D-3137493DE884}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EC28F259-C790-4FA3-A834-00795E2A7E2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EC28F259-C790-4FA3-A834-00795E2A7E2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EC28F259-C790-4FA3-A834-00795E2A7E2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EC28F259-C790-4FA3-A834-00795E2A7E2F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E117D074-C23D-41FD-A77D-2E9E6FF85676}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E117D074-C23D-41FD-A77D-2E9E6FF85676}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E117D074-C23D-41FD-A77D-2E9E6FF85676}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E117D074-C23D-41FD-A77D-2E9E6FF85676}.Release|Any CPU.Build.0 = Release|Any CPU
+               {850B0BA6-8C7F-4645-8473-15F378B9A1EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {850B0BA6-8C7F-4645-8473-15F378B9A1EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {850B0BA6-8C7F-4645-8473-15F378B9A1EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {850B0BA6-8C7F-4645-8473-15F378B9A1EB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8C1CA5FE-EEA0-4353-8735-B49347CF1812}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8C1CA5FE-EEA0-4353-8735-B49347CF1812}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8C1CA5FE-EEA0-4353-8735-B49347CF1812}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8C1CA5FE-EEA0-4353-8735-B49347CF1812}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CCDA00F7-7BDE-4913-B9F1-1AEE401EE4AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CCDA00F7-7BDE-4913-B9F1-1AEE401EE4AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CCDA00F7-7BDE-4913-B9F1-1AEE401EE4AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CCDA00F7-7BDE-4913-B9F1-1AEE401EE4AD}.Release|Any CPU.Build.0 = Release|Any CPU
+               {02BEE3AD-99A6-44A5-89FC-D9F4132D9ECE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {02BEE3AD-99A6-44A5-89FC-D9F4132D9ECE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {02BEE3AD-99A6-44A5-89FC-D9F4132D9ECE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {02BEE3AD-99A6-44A5-89FC-D9F4132D9ECE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A2B607F9-5B9B-43AC-A8CA-E0FDF2A6694E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A2B607F9-5B9B-43AC-A8CA-E0FDF2A6694E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A2B607F9-5B9B-43AC-A8CA-E0FDF2A6694E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A2B607F9-5B9B-43AC-A8CA-E0FDF2A6694E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D422D03E-7E32-4230-8306-B16DFE27E95A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D422D03E-7E32-4230-8306-B16DFE27E95A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D422D03E-7E32-4230-8306-B16DFE27E95A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D422D03E-7E32-4230-8306-B16DFE27E95A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {210C3F38-BD17-4583-816D-550C319FC6CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {210C3F38-BD17-4583-816D-550C319FC6CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {210C3F38-BD17-4583-816D-550C319FC6CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {210C3F38-BD17-4583-816D-550C319FC6CF}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FB8B42D6-76CC-4836-8A80-58A816C6A17F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FB8B42D6-76CC-4836-8A80-58A816C6A17F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FB8B42D6-76CC-4836-8A80-58A816C6A17F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FB8B42D6-76CC-4836-8A80-58A816C6A17F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {47829CA1-0E21-4687-9ABB-0C27E1A67E85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {47829CA1-0E21-4687-9ABB-0C27E1A67E85}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {47829CA1-0E21-4687-9ABB-0C27E1A67E85}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {47829CA1-0E21-4687-9ABB-0C27E1A67E85}.Release|Any CPU.Build.0 = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+               SolutionGuid = {118813F7-AD71-497A-B9AB-443A89F48D34}
+       EndGlobalSection
+EndGlobal
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/CellPaddingView.xaml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/CellPaddingView.xaml
new file mode 100644 (file)
index 0000000..37c5827
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<View x:Class="Tizen.NUI.LayoutSamples.CellPaddingView"
+    xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+    WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+    <View.Layout>
+        <LinearLayout LinearOrientation="Vertical"/>
+    </View.Layout>
+
+    <TextLabel x:Name="cellPaddingText"
+        Text="CellPadding"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}"/>
+
+    <View x:Name="cellPaddingValue"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+        <View.Layout>
+            <LinearLayout LinearOrientation="Horizontal" CellPadding="20,0"/>
+        </View.Layout>
+
+        <TextField x:Name="cellPaddingW"
+            Text="0"
+            WidthSpecification="100"
+            BorderlineColor="Black"
+            BorderlineOffset="-1"
+            BorderlineWidth="1"
+            TextChanged="CellPaddingWTextChanged"/>
+
+        <TextField x:Name="cellPaddingH"
+            Text="0"
+            WidthSpecification="100"
+            BorderlineColor="Black"
+            BorderlineOffset="-1"
+            BorderlineWidth="1"
+            TextChanged="CellPaddingHTextChanged"/>
+    </View>
+</View>
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/CellPaddingView.xaml.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/CellPaddingView.xaml.cs
new file mode 100644 (file)
index 0000000..29e4134
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public partial class CellPaddingView : View, ILayoutProperty<Size2D>
+    {
+        private Text.InputFilter inputFilter;
+        private ObjectLinearLayout linearLayout = null;
+
+        public CellPaddingView()
+        {
+            InitializeComponent();
+
+            inputFilter = new Text.InputFilter();
+            inputFilter.Accepted = "[0-9]";
+            cellPaddingW.SetInputFilter(inputFilter);
+            cellPaddingH.SetInputFilter(inputFilter);
+        }
+
+        public Size2D PropertyValue
+        {
+            get
+            {
+                return (linearLayout != null) ? linearLayout.CellPadding : new Size2D(0, 0);
+            }
+
+            set
+            {
+                if (linearLayout == null) return;
+
+                linearLayout.CellPadding = value;
+            }
+        }
+
+        public void SetLayout(IObjectLayout layout)
+        {
+            if (!(layout is LinearLayout)) return;
+
+            if (linearLayout == layout as ObjectLinearLayout) return;
+
+            linearLayout = layout as ObjectLinearLayout;
+
+            // CellPadding
+            cellPaddingW.Text = linearLayout.CellPadding.Width.ToString();
+            cellPaddingH.Text = linearLayout.CellPadding.Height.ToString();
+
+            linearLayout.CellPaddingChanged += (object sender, CellPaddingChangedEventArgs args) =>
+            {
+                cellPaddingW.Text = args.CellPadding.Width.ToString();
+                cellPaddingH.Text = args.CellPadding.Height.ToString();
+
+                linearLayout.RequestLayout();
+            };
+
+            linearLayout.RequestLayout();
+        }
+
+        private void CellPaddingWTextChanged(object sender, TextField.TextChangedEventArgs args)
+        {
+            if (linearLayout != null)
+            {
+                int changedValue;
+                if (int.TryParse(args.TextField.Text, out changedValue))
+                {
+                    linearLayout.CellPadding = new Size2D(changedValue, linearLayout.CellPadding.Height);
+                    linearLayout.RequestLayout();
+                }
+            }
+        }
+
+        private void CellPaddingHTextChanged(object sender, TextField.TextChangedEventArgs args)
+        {
+            if (linearLayout != null)
+            {
+                int changedValue;
+                if (int.TryParse(args.TextField.Text, out changedValue))
+                {
+                    linearLayout.CellPadding = new Size2D(linearLayout.CellPadding.Width, changedValue);
+                    linearLayout.RequestLayout();
+                }
+            }
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlView.xaml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlView.xaml
new file mode 100644 (file)
index 0000000..4a99e8d
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<View x:Class="Tizen.NUI.LayoutSamples.ControlView"
+    xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+    xmlns:m="clr-namespace:Tizen.NUI.LayoutSamples"
+    WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
+    HeightSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+    <View.Layout>
+        <LinearLayout LinearOrientation="Vertical" CellPadding="0,0"/>
+    </View.Layout>
+
+    <TabView x:Name="tabView"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
+        HeightSpecification="{Static LayoutParamPolicies.MatchParent}"
+        BackgroundColor="White">
+    </TabView>
+
+    <View x:Name="buttons"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
+        BackgroundColor="White">
+
+        <View.Layout>
+            <LinearLayout LinearOrientation="Horizontal" CellPadding="40,0"/>
+        </View.Layout>
+
+        <Button x:Name="addViewButton"
+            Text="Add View"
+            Clicked="AddViewButtonClicked"/>
+
+        <Button x:Name="removeViewButton"
+            Text="Remove View"
+            Clicked="RemoveViewButtonClicked"/>
+    </View>
+</View>
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlView.xaml.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlView.xaml.cs
new file mode 100644 (file)
index 0000000..03f3978
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public partial class ControlView : View
+    {
+        private ObjectView objectView = null;
+        private LinearLayoutControlView linearLayoutControlView = null;
+        private ObjectControlView objectControlView = null;
+
+        public ControlView()
+        {
+            InitializeComponent();
+
+            SetLayoutControlView();
+            SetObjectControlView();
+        }
+
+        public event EventHandler<EventArgs> ViewAdded;
+        public event EventHandler<EventArgs> ViewRemoved;
+
+        public void SetView(IObjectView view)
+        {
+            if (!(view is View)) return;
+
+            if (objectView == view as ObjectView) return;
+
+            objectView = view as ObjectView;
+
+            linearLayoutControlView.SetLayout(objectView.Layout as IObjectLayout);
+
+            objectControlView.SetView(objectView);
+
+            var parent = objectView.GetParent() as ObjectView;
+            if (parent == null)
+            {
+                removeViewButton.IsEnabled = false;
+            }
+            else
+            {
+                removeViewButton.IsEnabled = true;
+            }
+        }
+
+        private void SetLayoutControlView()
+        {
+            var layoutTab = new TabButton()
+            {
+                Text = "Layout",
+            };
+
+            var layoutContent = new TabContent()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    CellPadding = new Size2D(0, 40),
+                },
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+            };
+
+            LayoutType selectedLayoutType = LayoutType.LinearLayout;
+
+            var layoutType = new LayoutTypeView();
+            layoutType.LayoutType = selectedLayoutType;
+            layoutType.LayoutTypeChanged += (object sender, LayoutTypeChangedEventArgs args) =>
+            {
+                if (args.LayoutType == LayoutType.LinearLayout)
+                {
+                    if (linearLayoutControlView == null)
+                    {
+                        linearLayoutControlView = new LinearLayoutControlView();
+                    }
+                }
+            };
+            layoutContent.Add(layoutType);
+
+            linearLayoutControlView = new LinearLayoutControlView();
+            layoutContent.Add(linearLayoutControlView);
+
+            tabView.AddTab(layoutTab, layoutContent);
+        }
+
+        private void SetObjectControlView()
+        {
+            var viewTab = new TabButton()
+            {
+                Text = "View",
+            };
+
+            var viewContent = new TabContent()
+            {
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+            };
+
+            objectControlView = new ObjectControlView();
+            viewContent.Add(objectControlView);
+
+            tabView.AddTab(viewTab, viewContent);
+        }
+
+        private void AddViewButtonClicked(object sender, ClickedEventArgs args)
+        {
+            ViewAdded?.Invoke(objectView, new EventArgs());
+        }
+
+        private void RemoveViewButtonClicked(object sender, ClickedEventArgs args)
+        {
+            ViewRemoved?.Invoke(objectView, new EventArgs());
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlWindowLayoutTab.png b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlWindowLayoutTab.png
new file mode 100644 (file)
index 0000000..e2b6b4f
Binary files /dev/null and b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlWindowLayoutTab.png differ
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlWindowViewTab.png b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlWindowViewTab.png
new file mode 100644 (file)
index 0000000..df8c135
Binary files /dev/null and b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ControlWindowViewTab.png differ
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/DisplayWindow.png b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/DisplayWindow.png
new file mode 100644 (file)
index 0000000..ee983dc
Binary files /dev/null and b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/DisplayWindow.png differ
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/HeightSpecificationView.xaml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/HeightSpecificationView.xaml
new file mode 100644 (file)
index 0000000..ce5a030
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<View x:Class="Tizen.NUI.LayoutSamples.HeightSpecificationView"
+    xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+    WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+    <View.Layout>
+        <LinearLayout LinearOrientation="Vertical"/>
+    </View.Layout>
+
+    <TextLabel x:Name="heightSpecText"
+        Text="HeightSpecification"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}"/>
+
+    <View x:Name="heightSpecOptions"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+        <View.Layout>
+            <LinearLayout LinearOrientation="Horizontal" CellPadding="20,0"/>
+        </View.Layout>
+
+        <RadioButton x:Name="heightSpecMatchParent"
+            Text="MatchParent"
+            SelectedChanged="HeightSpecMatchParentSelectedChanged"/>
+
+        <RadioButton x:Name="heightSpecWrapContent"
+            Text="WrapContent"
+            SelectedChanged="HeightSpecWrapContentSelectedChanged"/>
+
+        <RadioButton x:Name="heightSpecValue"
+            SelectedChanged="HeightSpecValueSelectedChanged"/>
+
+        <TextField x:Name="heightSpecValueField"
+            Text="-2"
+            WidthSpecification="100"
+            BorderlineColor="Black"
+            BorderlineOffset="-1"
+            BorderlineWidth="1"
+            TextChanged="HeightSpecValueTextChanged"/>
+    </View>
+</View>
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/HeightSpecificationView.xaml.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/HeightSpecificationView.xaml.cs
new file mode 100644 (file)
index 0000000..b6cdfef
--- /dev/null
@@ -0,0 +1,167 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public partial class HeightSpecificationView : View, IObjectProperty<int>
+    {
+        private RadioButtonGroup heightSpecGroup;
+        private Text.InputFilter inputFilter;
+        private ObjectView controlView = null;
+
+        public HeightSpecificationView()
+        {
+            InitializeComponent();
+
+            heightSpecGroup = new RadioButtonGroup();
+            heightSpecGroup.Add(heightSpecMatchParent);
+            heightSpecGroup.Add(heightSpecWrapContent);
+            heightSpecGroup.Add(heightSpecValue);
+            heightSpecGroup.EnableMultiSelection = false;
+            heightSpecWrapContent.IsSelected = true;
+            // FIXME: TextField does not support IsEnabled now.
+            heightSpecValueField.EnableEditing = false;
+
+            inputFilter = new Text.InputFilter();
+            inputFilter.Accepted = "[0-9]";
+            heightSpecValueField.SetInputFilter(inputFilter);
+        }
+
+        public int PropertyValue
+        {
+            get
+            {
+                return (controlView != null) ? controlView.HeightSpecification : LayoutParamPolicies.WrapContent;
+            }
+
+            set
+            {
+                if (controlView == null) return;
+
+                controlView.HeightSpecification = value;
+            }
+        }
+
+        public void SetView(IObjectView view)
+        {
+            if (!(view is View)) return;
+
+            if (controlView == view as ObjectView) return;
+
+            controlView = view as ObjectView;
+
+            // HeightSpecification
+            if (controlView.HeightSpecification == LayoutParamPolicies.MatchParent)
+            {
+                heightSpecMatchParent.IsSelected = true;
+            }
+            else if (controlView.HeightSpecification == LayoutParamPolicies.WrapContent)
+            {
+                heightSpecWrapContent.IsSelected = true;
+            }
+            else
+            {
+                heightSpecValueField.Text = controlView.HeightSpecification.ToString();
+                heightSpecValue.IsSelected = true;
+            }
+
+            controlView.HeightSpecificationChanged += (object sender, HeightSpecificationChangedEventArgs args) =>
+            {
+                if (args.HeightSpecification == LayoutParamPolicies.MatchParent)
+                {
+                    heightSpecMatchParent.IsSelected = true;
+                }
+                else if (args.HeightSpecification == LayoutParamPolicies.WrapContent)
+                {
+                    heightSpecWrapContent.IsSelected = true;
+                }
+                else
+                {
+                    heightSpecValueField.Text = controlView.HeightSpecification.ToString();
+                    heightSpecValue.IsSelected = true;
+                }
+
+                (controlView.Layout)?.RequestLayout();
+            };
+
+            (controlView.Layout)?.RequestLayout();
+        }
+
+        private void HeightSpecMatchParentSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                heightSpecValueField.Text = LayoutParamPolicies.MatchParent.ToString();
+                if (controlView != null)
+                {
+                    controlView.HeightSpecification = LayoutParamPolicies.MatchParent;
+                }
+            }
+        }
+
+        private void HeightSpecWrapContentSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                heightSpecValueField.Text = LayoutParamPolicies.WrapContent.ToString();
+                if (controlView != null)
+                {
+                    controlView.HeightSpecification = LayoutParamPolicies.WrapContent;
+                }
+            }
+        }
+
+        private void HeightSpecValueSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                heightSpecValueField.EnableEditing = true;
+                if (controlView != null)
+                {
+                    int changedValue;
+                    if (int.TryParse(heightSpecValueField.Text, out changedValue))
+                    {
+                        if (controlView.HeightSpecification != changedValue)
+                        {
+                            controlView.HeightSpecification = changedValue;
+                            controlView.Layout?.RequestLayout();
+                        }
+                    }
+                }
+            }
+            else
+            {
+                heightSpecValueField.EnableEditing = false;
+            }
+        }
+
+        private void HeightSpecValueTextChanged(object sender, TextField.TextChangedEventArgs args)
+        {
+            if (controlView != null)
+            {
+                int changedValue;
+                if (int.TryParse(heightSpecValueField.Text, out changedValue))
+                {
+                    controlView.HeightSpecification = changedValue;
+                    controlView.Layout?.RequestLayout();
+                }
+            }
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/HorizontalAlignmentView.xaml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/HorizontalAlignmentView.xaml
new file mode 100644 (file)
index 0000000..98ddc9b
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<View x:Class="Tizen.NUI.LayoutSamples.HorizontalAlignmentView"
+    xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+    WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+    <View.Layout>
+        <LinearLayout LinearOrientation="Vertical"/>
+    </View.Layout>
+
+    <TextLabel x:Name="hAlignText"
+        Text="HorizontalAlignment"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}"/>
+
+    <View x:Name="hAlignOptions"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+        <View.Layout>
+            <LinearLayout LinearOrientation="Horizontal" CellPadding="20,0"/>
+        </View.Layout>
+
+        <RadioButton x:Name="hAlignBegin"
+            Text="Begin"
+            SelectedChanged="HAlignBeginSelectedChanged"/>
+
+        <RadioButton x:Name="hAlignCenter"
+            Text="Center"
+            SelectedChanged="HAlignCenterSelectedChanged"/>
+
+        <RadioButton x:Name="hAlignEnd"
+            Text="End"
+            SelectedChanged="HAlignEndSelectedChanged"/>
+    </View>
+</View>
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/HorizontalAlignmentView.xaml.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/HorizontalAlignmentView.xaml.cs
new file mode 100644 (file)
index 0000000..af10e8e
--- /dev/null
@@ -0,0 +1,134 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public partial class HorizontalAlignmentView : View, ILayoutProperty<HorizontalAlignment>
+    {
+        private RadioButtonGroup hAlignGroup;
+        private RadioButtonGroup vAlignGroup;
+        private ObjectLinearLayout linearLayout = null;
+
+        public HorizontalAlignmentView()
+        {
+            InitializeComponent();
+
+            hAlignGroup = new RadioButtonGroup();
+            hAlignGroup.Add(hAlignBegin);
+            hAlignGroup.Add(hAlignCenter);
+            hAlignGroup.Add(hAlignEnd);
+            hAlignGroup.EnableMultiSelection = false;
+            hAlignBegin.IsSelected = true;
+        }
+
+        public HorizontalAlignment PropertyValue
+        {
+            get
+            {
+                return (linearLayout != null) ? linearLayout.HorizontalAlignment : HorizontalAlignment.Begin;
+            }
+
+            set
+            {
+                if (linearLayout == null) return;
+                
+                linearLayout.HorizontalAlignment = value;
+            }
+        }
+
+        public void SetLayout(IObjectLayout layout)
+        {
+            if (!(layout is LinearLayout)) return;
+
+            if (linearLayout == layout as ObjectLinearLayout) return;
+
+            linearLayout = layout as ObjectLinearLayout;
+
+            // HorizontalAlignment
+            if (linearLayout.HorizontalAlignment == HorizontalAlignment.Begin)
+            {
+                hAlignBegin.IsSelected = true;
+            }
+            else if (linearLayout.HorizontalAlignment == HorizontalAlignment.Center)
+            {
+                hAlignCenter.IsSelected = true;
+            }
+            else
+            {
+                hAlignEnd.IsSelected = true;
+            }
+
+            linearLayout.HorizontalAlignmentChanged += (object sender, HorizontalAlignmentChangedEventArgs args) =>
+            {
+                if (args.HorizontalAlignment == HorizontalAlignment.Begin)
+                {
+                    hAlignBegin.IsSelected = true;
+                }
+                else if (args.HorizontalAlignment == HorizontalAlignment.Center)
+                {
+                    hAlignCenter.IsSelected = true;
+                }
+                else
+                {
+                    hAlignEnd.IsSelected = true;
+                }
+
+                linearLayout.RequestLayout();
+            };
+
+            linearLayout.RequestLayout();
+        }
+
+        private void HAlignBeginSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                if (linearLayout != null)
+                {
+                    linearLayout.HorizontalAlignment = HorizontalAlignment.Begin;
+                    linearLayout.RequestLayout();
+                }
+            }
+        }
+
+        private void HAlignCenterSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                if (linearLayout != null)
+                {
+                    linearLayout.HorizontalAlignment = HorizontalAlignment.Center;
+                    linearLayout.RequestLayout();
+                }
+            }
+        }
+
+        private void HAlignEndSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                if (linearLayout != null)
+                {
+                    linearLayout.HorizontalAlignment = HorizontalAlignment.End;
+                    linearLayout.RequestLayout();
+                }
+            }
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ILayoutProperty.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ILayoutProperty.cs
new file mode 100644 (file)
index 0000000..10e36ed
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+namespace Tizen.NUI.LayoutSamples
+{
+    public interface ILayoutProperty<T>
+    {
+        public T PropertyValue { get; set; }
+
+        public void SetLayout(IObjectLayout layout);
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/IObjectLayout.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/IObjectLayout.cs
new file mode 100644 (file)
index 0000000..0d9948d
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+namespace Tizen.NUI.LayoutSamples
+{
+    public interface IObjectLayout
+    {
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/IObjectProperty.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/IObjectProperty.cs
new file mode 100644 (file)
index 0000000..7e36ea9
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+namespace Tizen.NUI.LayoutSamples
+{
+    public interface IObjectProperty<T>
+    {
+        public T PropertyValue { get; set; }
+
+        public void SetView(IObjectView view);
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/IObjectView.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/IObjectView.cs
new file mode 100644 (file)
index 0000000..5d567be
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public class WidthSpecificationChangedEventArgs : EventArgs
+    {
+        private int widthSpecification;
+
+        public WidthSpecificationChangedEventArgs(int changedValue)
+        {
+            widthSpecification = changedValue;
+        }
+
+        public int WidthSpecification
+        {
+            get
+            {
+                return widthSpecification;
+            }
+        }
+    }
+
+    public class HeightSpecificationChangedEventArgs : EventArgs
+    {
+        private int heightSpecification;
+
+        public HeightSpecificationChangedEventArgs(int changedValue)
+        {
+            heightSpecification = changedValue;
+        }
+
+        public int HeightSpecification
+        {
+            get
+            {
+                return heightSpecification;
+            }
+        }
+    }
+
+    public class MarginChangedEventArgs : EventArgs
+    {
+        private Extents margin;
+
+        public MarginChangedEventArgs(Extents changedValue)
+        {
+            margin = new Extents(changedValue);
+        }
+
+        public Extents Margin
+        {
+            get
+            {
+                return margin;
+            }
+        }
+    }
+
+    public class PaddingChangedEventArgs : EventArgs
+    {
+        private Extents padding;
+
+        public PaddingChangedEventArgs(Extents changedValue)
+        {
+            padding = new Extents(changedValue);
+        }
+
+        public Extents Padding
+        {
+            get
+            {
+                return padding;
+            }
+        }
+    }
+
+    public interface IObjectView
+    {
+        public int WidthSpecification { get; set; }
+        public int HeightSpecification { get; set; }
+        public Extents Margin { get; set; }
+        public Extents Padding { get; set; }
+
+        public event EventHandler<WidthSpecificationChangedEventArgs> WidthSpecificationChanged;
+        public event EventHandler<HeightSpecificationChangedEventArgs> HeightSpecificationChanged;
+        public event EventHandler<MarginChangedEventArgs> MarginChanged;
+        public event EventHandler<PaddingChangedEventArgs> PaddingChanged;
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LayoutSamplesClassDiagram.png b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LayoutSamplesClassDiagram.png
new file mode 100644 (file)
index 0000000..b95c039
Binary files /dev/null and b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LayoutSamplesClassDiagram.png differ
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LayoutSamplesClassDiagram.txt b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LayoutSamplesClassDiagram.txt
new file mode 100644 (file)
index 0000000..50bdb48
--- /dev/null
@@ -0,0 +1,101 @@
+@startuml
+
+scale 2
+
+interface IObjectView {
+    +WidthSpecificationView: int
+    +HeightSpecificationView: int
+    +Margin: Extents
+    +Padding: Extents
+    <<event>>
+    +WidthSpecificationChanged: EventHandler<EventArgs>
+    +HeightSpecificationChanged: EventHandler<EventArgs>
+    +MarginSpecificationChanged: EventHandler<EventArgs>
+    +PaddingSpecificationChanged: EventHandler<EventArgs>
+}
+
+class ObjectView {
+}
+
+interface IObjectProperty<T> {
+    +PropertyValue: T
+    +void SetView(IObjectView view)
+}
+
+class ObjectControlView {
+}
+
+class WidthSpecificationView {
+}
+
+class HeightSpecificationView {
+}
+
+class MarginView {
+}
+
+class PaddingView {
+}
+
+IObjectView <|.. ObjectView
+IObjectProperty <|.. ObjectControlView
+IObjectProperty <|.. WidthSpecificationView
+IObjectProperty <|.. HeightSpecificationView
+IObjectProperty <|.. MarginView
+IObjectProperty <|.. PaddingView
+IObjectProperty o-- IObjectView
+ObjectControlView *-- WidthSpecificationView
+ObjectControlView *-- HeightSpecificationView
+ObjectControlView *-- MarginView
+ObjectControlView *-- PaddingView
+
+interface ILayoutProperty<T> {
+    +PropertyValue: T
+    +void SetLayout(IObjectLayout layout)
+}
+
+interface IObjectLayout {
+}
+
+class ObjectLinearLayout {
+    +LinearOrientation: LinearLayout.Orientation
+    +CellPadding: Size2D
+    <<event>>
+    +LinearOrientationChanged: EventHandler<EventArgs>
+    +CellPaddingChanged: EventHandler<EventArgs>
+}
+
+class LinearLayoutControlView {
+}
+
+class LinearOrientationView {
+}
+
+class CellPaddingView {
+}
+
+class HorizontalAlignmentView {
+}
+
+class VerticalAlignmentView {
+}
+
+IObjectLayout <|.. ObjectLinearLayout
+ILayoutProperty <|.. LinearLayoutControlView
+ILayoutProperty <|.. LinearOrientationView
+ILayoutProperty <|.. CellPaddingView
+ILayoutProperty <|.. HorizontalAlignmentView
+ILayoutProperty <|.. VerticalAlignmentView
+ILayoutProperty o-- IObjectLayout
+LinearLayoutControlView *-- LinearOrientationView
+LinearLayoutControlView *-- CellPaddingView
+LinearLayoutControlView *-- HorizontalAlignmentView
+LinearLayoutControlView *-- VerticalAlignmentView
+
+class ControlView {
+}
+
+ControlView *-- LinearLayoutControlView
+ControlView *-- ObjectControlView
+
+@enduml
\ No newline at end of file
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LayoutTypeView.xaml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LayoutTypeView.xaml
new file mode 100644 (file)
index 0000000..7445049
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<View x:Class="Tizen.NUI.LayoutSamples.LayoutTypeView"
+    xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+    WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
+    HeightSpecification="{Static LayoutParamPolicies.WrapContent}">
+
+    <View.Layout>
+        <LinearLayout LinearOrientation="Vertical"/>
+    </View.Layout>
+
+    <TextLabel x:Name="layoutTypeText"
+        Text="Layout Type"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}"/>
+
+    <View x:Name="layoutTypeOptions"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+        <View.Layout>
+            <LinearLayout LinearOrientation="Horizontal" CellPadding="20,0"/>
+        </View.Layout>
+
+        <RadioButton x:Name="layoutTypeLinear"
+            Text="Linear"
+            SelectedChanged="LinearSelectedChanged"/>
+    </View>
+</View>
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LayoutTypeView.xaml.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LayoutTypeView.xaml.cs
new file mode 100644 (file)
index 0000000..5059843
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public enum LayoutType
+    {
+        LinearLayout = 0,
+    }
+
+    public class LayoutTypeChangedEventArgs : EventArgs
+    {
+        public LayoutTypeChangedEventArgs(LayoutType type)
+        {
+            LayoutType = type;
+        }
+
+        public LayoutType LayoutType { get; set; }
+    }
+
+    public partial class LayoutTypeView : View
+    {
+        private RadioButtonGroup layoutTypeGroup;
+        private LayoutType layoutType = LayoutType.LinearLayout;
+
+        public LayoutTypeView()
+        {
+            InitializeComponent();
+
+            layoutTypeGroup = new RadioButtonGroup();
+            layoutTypeGroup.Add(layoutTypeLinear);
+            layoutTypeGroup.EnableMultiSelection = false;
+            layoutTypeLinear.IsSelected = true;
+        }
+
+        public event EventHandler<LayoutTypeChangedEventArgs> LayoutTypeChanged;
+
+        public LayoutType LayoutType
+        {
+            get
+            {
+                return layoutType;
+            }
+
+            set
+            {
+                if (layoutType == value) return;
+                layoutType = value;
+
+                if (layoutType == LayoutType.LinearLayout)
+                {
+                    if (layoutTypeLinear.IsSelected == false)
+                    {
+                        layoutTypeLinear.IsSelected = true;
+                    }
+                }
+                else
+                {
+                    // TODO: Add more layout types
+                }
+
+                LayoutTypeChanged?.Invoke(this, new LayoutTypeChangedEventArgs(layoutType));
+            }
+        }
+
+        private void LinearSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                LayoutType = LayoutType.LinearLayout;
+            }
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LinearLayoutControlView.xaml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LinearLayoutControlView.xaml
new file mode 100644 (file)
index 0000000..1730f71
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ScrollableBase x:Class="Tizen.NUI.LayoutSamples.LinearLayoutControlView"
+    xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+    xmlns:m="clr-namespace:Tizen.NUI.LayoutSamples"
+    WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
+    HeightSpecification="{Static LayoutParamPolicies.MatchParent}"
+    HideScrollbar="false">
+
+    <ScrollableBase.Layout>
+        <LinearLayout LinearOrientation="Vertical" CellPadding="0,40"/>
+    </ScrollableBase.Layout>
+
+    <m:LinearOrientationView x:Name="linearOrient"/>
+
+    <m:CellPaddingView x:Name="cellPadding"/>
+
+    <m:HorizontalAlignmentView x:Name="hAlign"/>
+
+    <m:VerticalAlignmentView x:Name="vAlign"/>
+</ScrollableBase>
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LinearLayoutControlView.xaml.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LinearLayoutControlView.xaml.cs
new file mode 100644 (file)
index 0000000..79775c5
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public partial class LinearLayoutControlView : ScrollableBase, ILayoutProperty<ObjectLinearLayout>
+    {
+        private ObjectLinearLayout linearLayout = null;
+
+        public LinearLayoutControlView()
+        {
+            InitializeComponent();
+        }
+
+        public ObjectLinearLayout PropertyValue
+        {
+            get
+            {
+                return linearLayout;
+            }
+
+            set
+            {
+                SetLayout(value as IObjectLayout);
+            }
+        }
+
+        public void SetLayout(IObjectLayout layout)
+        {
+            if (!(layout is LinearLayout)) return;
+
+            if (linearLayout == layout as ObjectLinearLayout) return;
+
+            linearLayout = layout as ObjectLinearLayout;
+
+            // LinearOrientation
+            linearOrient.SetLayout(linearLayout);
+
+            // CellPadding
+            cellPadding.SetLayout(linearLayout);
+
+            // HorizontalAlignment
+            hAlign.SetLayout(linearLayout);
+
+            // VerticalAlignment
+            vAlign.SetLayout(linearLayout);
+
+            linearLayout.RequestLayout();
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LinearOrientationView.xaml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LinearOrientationView.xaml
new file mode 100644 (file)
index 0000000..08ac809
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<View x:Class="Tizen.NUI.LayoutSamples.LinearOrientationView"
+    xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+    WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+    <View.Layout>
+        <LinearLayout LinearOrientation="Vertical"/>
+    </View.Layout>
+
+    <TextLabel x:Name="linearOrientText"
+        Text="LinearOrientation"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}"/>
+
+    <View x:Name="linearOrientOptions"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+        <View.Layout>
+            <LinearLayout LinearOrientation="Horizontal" CellPadding="20,0"/>
+        </View.Layout>
+
+        <RadioButton x:Name="linearOrientH"
+            Text="Horizontal"
+            SelectedChanged="LinearOrientHSelectedChanged"/>
+
+        <RadioButton x:Name="linearOrientV"
+            Text="Vertical"
+            SelectedChanged="LinearOrientVSelectedChanged"/>
+    </View>
+</View>
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LinearOrientationView.xaml.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/LinearOrientationView.xaml.cs
new file mode 100644 (file)
index 0000000..37e3bef
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public partial class LinearOrientationView : View, ILayoutProperty<LinearLayout.Orientation>
+    {
+        private RadioButtonGroup linearOrientGroup;
+        private ObjectLinearLayout linearLayout = null;
+
+        public LinearOrientationView()
+        {
+            InitializeComponent();
+
+            linearOrientGroup = new RadioButtonGroup();
+            linearOrientGroup.Add(linearOrientH);
+            linearOrientGroup.Add(linearOrientV);
+            linearOrientGroup.EnableMultiSelection = false;
+            linearOrientH.IsSelected = true;
+        }
+
+        public LinearLayout.Orientation PropertyValue
+        {
+            get
+            {
+                return (linearLayout != null) ? linearLayout.LinearOrientation : LinearLayout.Orientation.Horizontal;
+            }
+
+            set
+            {
+                if (linearLayout == null) return;
+
+                linearLayout.LinearOrientation = value;
+            }
+        }
+
+        public void SetLayout(IObjectLayout layout)
+        {
+            if (!(layout is LinearLayout)) return;
+
+            if (linearLayout == layout as ObjectLinearLayout) return;
+
+            linearLayout = layout as ObjectLinearLayout;
+
+            // LinearOrientation
+            if (linearLayout.LinearOrientation == LinearLayout.Orientation.Horizontal)
+            {
+                linearOrientH.IsSelected = true;
+            }
+            else
+            {
+                linearOrientV.IsSelected = true;
+            }
+
+            linearLayout.LinearOrientationChanged += (object sender, LinearOrientationChangedEventArgs args) =>
+            {
+                if (args.LinearOrientation == LinearLayout.Orientation.Horizontal)
+                {
+                    linearOrientH.IsSelected = true;
+                }
+                else
+                {
+                    linearOrientV.IsSelected = true;
+                }
+
+                linearLayout.RequestLayout();
+            };
+
+            linearLayout.RequestLayout();
+        }
+
+        private void LinearOrientHSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                if (linearLayout != null)
+                {
+                    linearLayout.LinearOrientation = LinearLayout.Orientation.Horizontal;
+                    linearLayout.RequestLayout();
+                }
+            }
+        }
+
+        private void LinearOrientVSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                if (linearLayout != null)
+                {
+                    linearLayout.LinearOrientation = LinearLayout.Orientation.Vertical;
+                    linearLayout.RequestLayout();
+                }
+            }
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/MarginView.xaml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/MarginView.xaml
new file mode 100644 (file)
index 0000000..fb85074
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<View x:Class="Tizen.NUI.LayoutSamples.MarginView"
+    xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+    WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+    <View.Layout>
+        <LinearLayout LinearOrientation="Vertical"/>
+    </View.Layout>
+
+    <TextLabel x:Name="marginText"
+        Text="Margin"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}"/>
+
+    <View x:Name="marginValue"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+        <View.Layout>
+            <LinearLayout LinearOrientation="Horizontal" CellPadding="20,0"/>
+        </View.Layout>
+
+        <TextField x:Name="marginStart"
+            Text="0"
+            WidthSpecification="100"
+            BorderlineColor="Black"
+            BorderlineOffset="-1"
+            BorderlineWidth="1"
+            TextChanged="MarginStartTextChanged"/>
+
+        <TextField x:Name="marginEnd"
+            Text="0"
+            WidthSpecification="100"
+            BorderlineColor="Black"
+            BorderlineOffset="-1"
+            BorderlineWidth="1"
+            TextChanged="MarginEndTextChanged"/>
+
+        <TextField x:Name="marginTop"
+            Text="0"
+            WidthSpecification="100"
+            BorderlineColor="Black"
+            BorderlineOffset="-1"
+            BorderlineWidth="1"
+            TextChanged="MarginTopTextChanged"/>
+
+        <TextField x:Name="marginBottom"
+            Text="0"
+            WidthSpecification="100"
+            BorderlineColor="Black"
+            BorderlineOffset="-1"
+            BorderlineWidth="1"
+            TextChanged="MarginBottomTextChanged"/>
+    </View>
+</View>
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/MarginView.xaml.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/MarginView.xaml.cs
new file mode 100644 (file)
index 0000000..6c50c9e
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public partial class MarginView : View, IObjectProperty<Extents>
+    {
+        private Text.InputFilter inputFilter;
+        private ObjectView controlView = null;
+
+        public MarginView()
+        {
+            InitializeComponent();
+
+            inputFilter = new Text.InputFilter();
+            inputFilter.Accepted = "[0-9]";
+            marginStart.SetInputFilter(inputFilter);
+            marginEnd.SetInputFilter(inputFilter);
+            marginTop.SetInputFilter(inputFilter);
+            marginBottom.SetInputFilter(inputFilter);
+        }
+
+        public Extents PropertyValue
+        {
+            get
+            {
+                return (controlView != null) ? controlView.Margin : new Extents(0, 0, 0, 0);
+            }
+
+            set
+            {
+                if (controlView == null) return;
+
+                controlView.Margin = value;
+            }
+        }
+
+        public void SetView(IObjectView view)
+        {
+            if (!(view is View)) return;
+
+            if (controlView == view as ObjectView) return;
+
+            controlView = view as ObjectView;
+
+            // Margin
+            marginStart.Text = controlView.Margin.Start.ToString();
+            marginEnd.Text = controlView.Margin.End.ToString();
+            marginTop.Text = controlView.Margin.Top.ToString();
+            marginBottom.Text = controlView.Margin.Bottom.ToString();
+
+            controlView.MarginChanged += (object sender, MarginChangedEventArgs args) =>
+            {
+                marginStart.Text = args.Margin.Start.ToString();
+                marginEnd.Text = args.Margin.End.ToString();
+                marginTop.Text = args.Margin.Top.ToString();
+                marginBottom.Text = args.Margin.Bottom.ToString();
+
+                controlView.Layout?.RequestLayout();
+            };
+
+            controlView.Layout?.RequestLayout();
+        }
+
+        private void MarginStartTextChanged(object sender, TextField.TextChangedEventArgs args)
+        {
+            if (controlView != null)
+            {
+                ushort changedValue;
+                if (ushort.TryParse(args.TextField.Text, out changedValue))
+                {
+                    controlView.Margin = new Extents(changedValue, controlView.Margin.End, controlView.Margin.Top, controlView.Margin.Bottom);
+                    controlView.Layout?.RequestLayout();
+                }
+            }
+        }
+
+        private void MarginEndTextChanged(object sender, TextField.TextChangedEventArgs args)
+        {
+            if (controlView != null)
+            {
+                ushort changedValue;
+                if (ushort.TryParse(args.TextField.Text, out changedValue))
+                {
+                    controlView.Margin = new Extents(controlView.Margin.Start, changedValue, controlView.Margin.Top, controlView.Margin.Bottom);
+                    controlView.Layout?.RequestLayout();
+                }
+            }
+        }
+
+        private void MarginTopTextChanged(object sender, TextField.TextChangedEventArgs args)
+        {
+            if (controlView != null)
+            {
+                ushort changedValue;
+                if (ushort.TryParse(args.TextField.Text, out changedValue))
+                {
+                    controlView.Margin = new Extents(controlView.Margin.Start, controlView.Margin.End, changedValue, controlView.Margin.Bottom);
+                    controlView.Layout?.RequestLayout();
+                }
+            }
+        }
+
+        private void MarginBottomTextChanged(object sender, TextField.TextChangedEventArgs args)
+        {
+            if (controlView != null)
+            {
+                ushort changedValue;
+                if (ushort.TryParse(args.TextField.Text, out changedValue))
+                {
+                    controlView.Margin = new Extents(controlView.Margin.Start, controlView.Margin.End, controlView.Margin.Top, changedValue);
+                    controlView.Layout?.RequestLayout();
+                }
+            }
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectControlView.xaml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectControlView.xaml
new file mode 100644 (file)
index 0000000..aadb568
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ScrollableBase x:Class="Tizen.NUI.LayoutSamples.ObjectControlView"
+    xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+    xmlns:m="clr-namespace:Tizen.NUI.LayoutSamples"
+    WidthSpecification="{Static LayoutParamPolicies.MatchParent}"
+    HeightSpecification="{Static LayoutParamPolicies.MatchParent}"
+    HideScrollbar="false">
+
+    <ScrollableBase.Layout>
+        <LinearLayout LinearOrientation="Vertical" CellPadding="0,40"/>
+    </ScrollableBase.Layout>
+
+    <m:WidthSpecificationView x:Name="widthSpec"/>
+
+    <m:HeightSpecificationView x:Name="heightSpec"/>
+
+    <m:MarginView x:Name="margin"/>
+
+    <m:PaddingView x:Name="padding"/>
+</ScrollableBase>
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectControlView.xaml.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectControlView.xaml.cs
new file mode 100644 (file)
index 0000000..6662f9f
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public partial class ObjectControlView : ScrollableBase, IObjectProperty<ObjectView>
+    {
+        private ObjectView controlView = null;
+
+        public ObjectControlView()
+        {
+            InitializeComponent();
+        }
+
+        public ObjectView PropertyValue
+        {
+            get
+            {
+                return controlView;
+            }
+
+            set
+            {
+                SetView(controlView as IObjectView);
+            }
+        }
+
+        public void SetView(IObjectView view)
+        {
+            if (!(view is View)) return;
+
+            if (controlView == view as ObjectView) return;
+
+            controlView = view as ObjectView;
+
+            // WidthSpecification
+            widthSpec.SetView(controlView);
+
+            // HeightSpecification
+            heightSpec.SetView(controlView);
+
+            // Margin
+            margin.SetView(controlView);
+
+            // Padding
+            padding.SetView(controlView);
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectLinearLayout.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectLinearLayout.cs
new file mode 100644 (file)
index 0000000..bf12e69
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public class LinearOrientationChangedEventArgs : EventArgs
+    {
+        private LinearLayout.Orientation linearOrientation;
+
+        public LinearOrientationChangedEventArgs(LinearLayout.Orientation changedValue)
+        {
+            linearOrientation = changedValue;
+        }
+
+        public LinearLayout.Orientation LinearOrientation
+        {
+            get
+            {
+                return linearOrientation;
+            }
+        }
+    }
+
+    public class CellPaddingChangedEventArgs : EventArgs
+    {
+        private Size2D cellPadding;
+
+        public CellPaddingChangedEventArgs(Size2D changedValue)
+        {
+            cellPadding = new Size2D(changedValue.Width, changedValue.Height);
+        }
+
+        public Size2D CellPadding
+        {
+            get
+            {
+                return cellPadding;
+            }
+        }
+    }
+
+    public class HorizontalAlignmentChangedEventArgs : EventArgs
+    {
+        private HorizontalAlignment horizontalAlignment;
+
+        public HorizontalAlignmentChangedEventArgs(HorizontalAlignment changedValue)
+        {
+            horizontalAlignment = changedValue;
+        }
+
+        public HorizontalAlignment HorizontalAlignment
+        {
+            get
+            {
+                return horizontalAlignment;
+            }
+        }
+    }
+
+    public class VerticalAlignmentChangedEventArgs : EventArgs
+    {
+        private VerticalAlignment verticalAlignment;
+
+        public VerticalAlignmentChangedEventArgs(VerticalAlignment changedValue)
+        {
+            verticalAlignment = changedValue;
+        }
+
+        public VerticalAlignment VerticalAlignment
+        {
+            get
+            {
+                return verticalAlignment;
+            }
+        }
+    }
+
+    public class ObjectLinearLayout : LinearLayout, IObjectLayout
+    {
+        public new LinearLayout.Orientation LinearOrientation
+        {
+            get
+            {
+                return base.LinearOrientation;
+            }
+
+            set
+            {
+                if (base.LinearOrientation == value) return;
+
+                base.LinearOrientation = value;
+                LinearOrientationChanged?.Invoke(this, new LinearOrientationChangedEventArgs(base.LinearOrientation));
+            }
+        }
+
+        public new Size2D CellPadding
+        {
+            get
+            {
+                return base.CellPadding;
+            }
+
+            set
+            {
+                if (base.CellPadding.EqualTo(value)) return;
+
+                base.CellPadding = new Size2D(value.Width, value.Height);
+                CellPaddingChanged?.Invoke(this, new CellPaddingChangedEventArgs(base.CellPadding));
+            }
+        }
+
+        public new HorizontalAlignment HorizontalAlignment
+        {
+            get
+            {
+                return base.HorizontalAlignment;
+            }
+
+            set
+            {
+                if (base.HorizontalAlignment == value) return;
+
+                base.HorizontalAlignment = value;
+                HorizontalAlignmentChanged?.Invoke(this, new HorizontalAlignmentChangedEventArgs(base.HorizontalAlignment));
+            }
+        }
+
+        public new VerticalAlignment VerticalAlignment
+        {
+            get
+            {
+                return base.VerticalAlignment;
+            }
+
+            set
+            {
+                if (base.VerticalAlignment == value) return;
+
+                base.VerticalAlignment = value;
+                VerticalAlignmentChanged?.Invoke(this, new VerticalAlignmentChangedEventArgs(base.VerticalAlignment));
+            }
+        }
+
+        public event EventHandler<LinearOrientationChangedEventArgs> LinearOrientationChanged;
+        public event EventHandler<CellPaddingChangedEventArgs> CellPaddingChanged;
+        public event EventHandler<HorizontalAlignmentChangedEventArgs> HorizontalAlignmentChanged;
+        public event EventHandler<VerticalAlignmentChangedEventArgs> VerticalAlignmentChanged;
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectView.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectView.cs
new file mode 100644 (file)
index 0000000..18ddd68
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public partial class ObjectView : SelectButton, IObjectView
+    {
+        private bool selectedAgain = false;
+
+        public new int WidthSpecification
+        {
+            get
+            {
+                return base.WidthSpecification;
+            }
+
+            set
+            {
+                if (base.WidthSpecification == value) return;
+
+                base.WidthSpecification = value;
+                WidthSpecificationChanged?.Invoke(this, new WidthSpecificationChangedEventArgs(base.WidthSpecification));
+            }
+        }
+        public new int HeightSpecification
+        {
+            get
+            {
+                return base.HeightSpecification;
+            }
+
+            set
+            {
+                if (base.HeightSpecification == value) return;
+
+                base.HeightSpecification = value;
+                HeightSpecificationChanged?.Invoke(this, new HeightSpecificationChangedEventArgs(base.HeightSpecification));
+            }
+        }
+        
+        public new Extents Margin
+        {
+            get
+            {
+                return base.Margin;
+            }
+
+            set
+            {
+                if (base.Margin.EqualTo(value)) return;
+
+                base.Margin.CopyFrom(value);
+                MarginChanged?.Invoke(this, new MarginChangedEventArgs(base.Margin));
+            }
+        }
+
+        public new Extents Padding
+        {
+            get
+            {
+                return base.Padding;
+            }
+
+            set
+            {
+                if (base.Padding.EqualTo(value)) return;
+
+                base.Padding.CopyFrom(value);
+                PaddingChanged?.Invoke(this, new PaddingChangedEventArgs(base.Padding));
+            }
+        }
+
+        public event EventHandler<WidthSpecificationChangedEventArgs> WidthSpecificationChanged;
+        public event EventHandler<HeightSpecificationChangedEventArgs> HeightSpecificationChanged;
+        public event EventHandler<MarginChangedEventArgs> MarginChanged;
+        public event EventHandler<PaddingChangedEventArgs> PaddingChanged;
+
+        public override bool OnKey(Key key)
+        {
+            if ((IsEnabled == false) || (key == null))
+            {
+                return false;
+            }
+
+            if (key.State == Key.StateType.Up)
+            {
+                if (key.KeyPressedName == "Return")
+                {
+                    if (IsSelected == true)
+                    {
+                        selectedAgain = true;
+                    }
+                }
+            }
+
+            bool ret = base.OnKey(key);
+
+            if (selectedAgain == true)
+            {
+                IsSelected = true;
+                selectedAgain = false;
+            }
+
+            return ret;
+        }
+
+        protected override bool HandleControlStateOnTouch(Touch touch)
+        {
+            if ((IsEnabled == false) || (touch == null))
+            {
+                return false;
+            }
+
+            PointStateType state = touch.GetState(0);
+            switch (state)
+            {
+                case PointStateType.Up:
+                    if (IsSelected == true)
+                    {
+                        selectedAgain = true;
+                    }
+                    break;
+                default:
+                    break;
+            }
+
+            bool ret = base.HandleControlStateOnTouch(touch);
+
+            if (selectedAgain == true)
+            {
+                IsSelected = true;
+                selectedAgain = false;
+            }
+
+            return ret;
+        }
+
+        protected override void OnControlStateChanged(ControlStateChangedEventArgs info)
+        {
+            if (info.PreviousState.Contains(ControlState.Selected) != info.CurrentState.Contains(ControlState.Selected))
+            {
+                // RadioButton does not invoke SelectedChanged if button or key
+                // is unpressed while its state is selected.
+                if (selectedAgain == true)
+                {
+                    return;
+                }
+
+                base.OnControlStateChanged(info);
+            }
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectView.xaml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectView.xaml
new file mode 100644 (file)
index 0000000..adb646d
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<SelectButton x:Class="Tizen.NUI.LayoutSamples.ObjectView"
+    xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+    xmlns:m="clr-namespace:Tizen.NUI.LayoutSamples"
+    WidthSpecification="100"
+    HeightSpecification="100"
+    TextColor="Black"
+    TextAlignment="Center"
+    BackgroundColor="Transparent"
+    BorderlineColor="Black"
+    BorderlineWidth="1"
+    BorderlineOffset="-1"
+    CornerRadius="0">
+    <View.Layout>
+        <m:ObjectLinearLayout/>
+    </View.Layout>
+</SelectButton>
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectView.xaml.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectView.xaml.cs
new file mode 100644 (file)
index 0000000..8361f21
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public partial class ObjectView : SelectButton, IObjectView
+    {
+        public ObjectView()
+        {
+            InitializeComponent();
+
+            EnableControlStatePropagation = false;
+
+            TextLabel.ExcludeLayouting = true;
+            TextLabel.ParentOrigin = new Position(0.5f, 0.5f, 0.5f);
+            TextLabel.PivotPoint = new Position(0.5f, 0.5f, 0.5f);
+            TextLabel.PositionUsesPivotPoint = true;
+
+            ObjectViewGroup.Instance.Add(this);
+        }
+
+        protected override void OnSelectedChanged()
+        {
+            if (IsSelected)
+            {
+                BorderlineColor = Color.Red;
+                BorderlineOffset = -1.0f;
+                BorderlineWidth = 2;
+            }
+            else
+            {
+                BorderlineColor = Color.Black;
+                BorderlineOffset = -1.0f;
+                BorderlineWidth = 1;
+            }
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectViewGroup.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/ObjectViewGroup.cs
new file mode 100644 (file)
index 0000000..27b918f
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public class ObjectViewGroup : SelectGroup
+    {
+        static private ObjectViewGroup instance = new ObjectViewGroup()
+        {
+            EnableMultiSelection = false,
+        };
+
+        static public ObjectViewGroup Instance
+        {
+            get
+            {
+                return instance;
+            }
+        }
+
+        public void Add(ObjectView view)
+        {
+            if (view == null) return;
+            base.AddSelection(view);
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/PaddingView.xaml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/PaddingView.xaml
new file mode 100644 (file)
index 0000000..d39a429
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<View x:Class="Tizen.NUI.LayoutSamples.PaddingView"
+    xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+    WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+    <View.Layout>
+        <LinearLayout LinearOrientation="Vertical"/>
+    </View.Layout>
+
+    <TextLabel x:Name="paddingText"
+        Text="Padding"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}"/>
+
+    <View x:Name="paddingValue"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+        <View.Layout>
+            <LinearLayout LinearOrientation="Horizontal" CellPadding="20,0"/>
+        </View.Layout>
+
+        <TextField x:Name="paddingStart"
+            Text="0"
+            WidthSpecification="100"
+            BorderlineColor="Black"
+            BorderlineOffset="-1"
+            BorderlineWidth="1"
+            TextChanged="PaddingStartTextChanged"/>
+
+        <TextField x:Name="paddingEnd"
+            Text="0"
+            WidthSpecification="100"
+            BorderlineColor="Black"
+            BorderlineOffset="-1"
+            BorderlineWidth="1"
+            TextChanged="PaddingEndTextChanged"/>
+
+        <TextField x:Name="paddingTop"
+            Text="0"
+            WidthSpecification="100"
+            BorderlineColor="Black"
+            BorderlineOffset="-1"
+            BorderlineWidth="1"
+            TextChanged="PaddingTopTextChanged"/>
+
+        <TextField x:Name="paddingBottom"
+            Text="0"
+            WidthSpecification="100"
+            BorderlineColor="Black"
+            BorderlineOffset="-1"
+            BorderlineWidth="1"
+            TextChanged="PaddingBottomTextChanged"/>
+    </View>
+</View>
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/PaddingView.xaml.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/PaddingView.xaml.cs
new file mode 100644 (file)
index 0000000..aa6de58
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public partial class PaddingView : View, IObjectProperty<Extents>
+    {
+        private Text.InputFilter inputFilter;
+        private ObjectView controlView = null;
+
+        public PaddingView()
+        {
+            InitializeComponent();
+
+            inputFilter = new Text.InputFilter();
+            inputFilter.Accepted = "[0-9]";
+            paddingStart.SetInputFilter(inputFilter);
+            paddingEnd.SetInputFilter(inputFilter);
+            paddingTop.SetInputFilter(inputFilter);
+            paddingBottom.SetInputFilter(inputFilter);
+        }
+
+        public Extents PropertyValue
+        {
+            get
+            {
+                return (controlView != null) ? controlView.Padding : new Extents(0, 0, 0, 0);
+            }
+
+            set
+            {
+                if (controlView == null) return;
+
+                controlView.Padding = value;
+            }
+        }
+
+        public void SetView(IObjectView view)
+        {
+            if (!(view is View)) return;
+
+            if (controlView == view as ObjectView) return;
+
+            controlView = view as ObjectView;
+
+            // Padding
+            paddingStart.Text = controlView.Padding.Start.ToString();
+            paddingEnd.Text = controlView.Padding.End.ToString();
+            paddingTop.Text = controlView.Padding.Top.ToString();
+            paddingBottom.Text = controlView.Padding.Bottom.ToString();
+
+            controlView.PaddingChanged += (object sender, PaddingChangedEventArgs args) =>
+            {
+                paddingStart.Text = args.Padding.Start.ToString();
+                paddingEnd.Text = args.Padding.End.ToString();
+                paddingTop.Text = args.Padding.Top.ToString();
+                paddingBottom.Text = args.Padding.Bottom.ToString();
+
+                controlView.Layout?.RequestLayout();
+            };
+
+            controlView.Layout?.RequestLayout();
+        }
+
+        private void PaddingStartTextChanged(object sender, TextField.TextChangedEventArgs args)
+        {
+            if (controlView != null)
+            {
+                ushort changedValue;
+                if (ushort.TryParse(args.TextField.Text, out changedValue))
+                {
+                    controlView.Padding = new Extents(changedValue, controlView.Padding.End, controlView.Padding.Top, controlView.Padding.Bottom);
+                    controlView.Layout?.RequestLayout();
+                }
+            }
+        }
+
+        private void PaddingEndTextChanged(object sender, TextField.TextChangedEventArgs args)
+        {
+            if (controlView != null)
+            {
+                ushort changedValue;
+                if (ushort.TryParse(args.TextField.Text, out changedValue))
+                {
+                    controlView.Padding = new Extents(controlView.Padding.Start, changedValue, controlView.Padding.Top, controlView.Padding.Bottom);
+                    controlView.Layout?.RequestLayout();
+                }
+            }
+        }
+
+        private void PaddingTopTextChanged(object sender, TextField.TextChangedEventArgs args)
+        {
+            if (controlView != null)
+            {
+                ushort changedValue;
+                if (ushort.TryParse(args.TextField.Text, out changedValue))
+                {
+                    controlView.Padding = new Extents(controlView.Padding.Start, controlView.Padding.End, changedValue, controlView.Padding.Bottom);
+                    controlView.Layout?.RequestLayout();
+                }
+            }
+        }
+
+        private void PaddingBottomTextChanged(object sender, TextField.TextChangedEventArgs args)
+        {
+            if (controlView != null)
+            {
+                ushort changedValue;
+                if (ushort.TryParse(args.TextField.Text, out changedValue))
+                {
+                    controlView.Padding = new Extents(controlView.Padding.Start, controlView.Padding.End, controlView.Padding.Top, changedValue);
+                    controlView.Layout?.RequestLayout();
+                }
+            }
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples.cs
new file mode 100644 (file)
index 0000000..e4c8349
--- /dev/null
@@ -0,0 +1,183 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using System.Collections.Generic;
+using Tizen.NUI.Components;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    class Program : NUIApplication
+    {
+        private const int WIN_WIDTH = 720;
+        private const int WIN_HEIGHT = 720;
+        private const int INIT_VIEW_COUNT = 3;
+        private Window displayWindow = null;
+        private Window controlWindow = null;
+
+        private List<ObjectView> objectViewList = new List<ObjectView>();
+        private ObjectView rootObjectView = null;
+        private ObjectView selectedObjectView = null;
+        private ControlView controlView = null;
+
+        public void OnKeyEvent(object sender, Window.KeyEventArgs e)
+        {
+            if (e.Key.State == Key.StateType.Up)
+            {
+                if (e.Key.KeyPressedName == "Escape" || e.Key.KeyPressedName == "XF86Back" || e.Key.KeyPressedName == "BackSpace")
+                {
+                    Exit();
+                }
+            }
+        }
+
+        public ObjectView SelectedObjectView
+        {
+            get
+            {
+                return selectedObjectView;
+            }
+
+            set
+            {
+                if (selectedObjectView != value)
+                {
+                    selectedObjectView = value;
+
+                    if (controlView != null)
+                    {
+                        controlView.SetView(selectedObjectView);
+                    }
+                }
+            }
+        }
+
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+            Initialize();
+        }
+
+        private void Initialize()
+        {
+            SetDisplayView();
+            SetControlView();
+        }
+
+        private void SetDisplayWindow()
+        {
+            if (displayWindow != null) return;
+
+            displayWindow = GetDefaultWindow();
+            displayWindow.Title = "Display Window";
+            displayWindow.WindowSize = new Size2D(WIN_WIDTH, WIN_HEIGHT);
+            displayWindow.KeyEvent += OnKeyEvent;
+        }
+
+        private ObjectView CreateObjectView(string name)
+        {
+            var view = new ObjectView()
+            {
+                Text = name,
+            };
+
+            view.SelectedChanged += (object sender, SelectedChangedEventArgs args) =>
+            {
+                if (args.IsSelected)
+                {
+                    SelectedObjectView = view;
+                }
+            };
+
+            view.ChildRemoved += (object sender, View.ChildRemovedEventArgs args) =>
+            {
+                SelectedObjectView = view;
+            };
+
+            objectViewList.Add(view);
+
+            return view;
+        }
+
+        private void SetDisplayView()
+        {
+            SetDisplayWindow();
+
+            if (rootObjectView != null) return;
+
+            rootObjectView = CreateObjectView("root");
+            rootObjectView.ParentOrigin = new Position(0.5f, 0.5f, 0.5f);
+            rootObjectView.PivotPoint = new Position(0.5f, 0.5f, 0.5f);
+            rootObjectView.PositionUsesPivotPoint = true;
+            rootObjectView.WidthSpecification = 600;
+            rootObjectView.HeightSpecification = 600;
+            rootObjectView.BackgroundColor = Color.White;
+            rootObjectView.IsSelected = true;
+
+            displayWindow.Add(rootObjectView);
+
+            for (int i = 0; i < INIT_VIEW_COUNT; i++)
+            {
+                rootObjectView.Add(CreateObjectView(objectViewList.Count.ToString()));
+            }
+        }
+
+        private void SetControlWindow()
+        {
+            if (controlWindow != null) return;
+
+            controlWindow = new Window();
+            controlWindow.Title = "Control Window";
+            controlWindow.WindowSize = new Size2D(WIN_WIDTH, WIN_HEIGHT);
+            controlWindow.KeyEvent += OnKeyEvent;
+        }
+
+        private void SetControlView()
+        {
+            SetControlWindow();
+
+            if (controlView != null) return;
+
+            controlView = new ControlView();
+            controlView.SetView(rootObjectView);
+
+            controlView.ViewAdded += (object sender, EventArgs args) =>
+            {
+                SelectedObjectView.Add(CreateObjectView(objectViewList.Count.ToString()));
+            };
+
+            controlView.ViewRemoved += (object sender, EventArgs args) =>
+            {
+                var parent = SelectedObjectView.GetParent() as ObjectView;
+                if (parent != null)
+                {
+                    objectViewList.Remove(SelectedObjectView);
+                    parent.Remove(SelectedObjectView);
+                    SelectedObjectView = parent;
+                }
+            };
+
+            controlWindow.Add(controlView);
+        }
+
+        static void Main(string[] args)
+        {
+            var app = new Program();
+            app.Run(args);
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples.csproj b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples.csproj
new file mode 100755 (executable)
index 0000000..fccec1a
--- /dev/null
@@ -0,0 +1,30 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+  </PropertyGroup>
+
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugType>portable</DebugType>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>None</DebugType>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <EmbeddedResource Include="*.xaml">
+      <Generator>MSBuild:Compile</Generator>
+    </EmbeddedResource>
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="../../../src/Tizen.NUI.Components/Tizen.NUI.Components.csproj" />
+    <PackageReference Include="Tizen.NUI.XamlBuild" Version="1.0.34" />
+  </ItemGroup>
+
+  <PropertyGroup>
+    <NeedInjection>False</NeedInjection>
+  </PropertyGroup>
+</Project>
+
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/VerticalAlignmentView.xaml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/VerticalAlignmentView.xaml
new file mode 100644 (file)
index 0000000..7e72619
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<View x:Class="Tizen.NUI.LayoutSamples.VerticalAlignmentView"
+    xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+    WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+    <View.Layout>
+        <LinearLayout LinearOrientation="Vertical"/>
+    </View.Layout>
+
+    <TextLabel x:Name="vAlignText"
+        Text="VerticalAlignment"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}"/>
+
+    <View x:Name="vAlignOptions"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+        <View.Layout>
+            <LinearLayout LinearOrientation="Horizontal" CellPadding="20,0"/>
+        </View.Layout>
+
+        <RadioButton x:Name="vAlignTop"
+            Text="Top"
+            SelectedChanged="VAlignTopSelectedChanged"/>
+
+        <RadioButton x:Name="vAlignCenter"
+            Text="Center"
+            SelectedChanged="VAlignCenterSelectedChanged"/>
+
+        <RadioButton x:Name="vAlignBottom"
+            Text="Bottom"
+            SelectedChanged="VAlignBottomSelectedChanged"/>
+    </View>
+</View>
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/VerticalAlignmentView.xaml.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/VerticalAlignmentView.xaml.cs
new file mode 100644 (file)
index 0000000..d1815b8
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public partial class VerticalAlignmentView : View, ILayoutProperty<VerticalAlignment>
+    {
+        private RadioButtonGroup vAlignGroup;
+        private ObjectLinearLayout linearLayout = null;
+
+        public VerticalAlignmentView()
+        {
+            InitializeComponent();
+
+            vAlignGroup = new RadioButtonGroup();
+            vAlignGroup.Add(vAlignTop);
+            vAlignGroup.Add(vAlignCenter);
+            vAlignGroup.Add(vAlignBottom);
+            vAlignGroup.EnableMultiSelection = false;
+            vAlignTop.IsSelected = true;
+        }
+
+        public VerticalAlignment PropertyValue
+        {
+            get
+            {
+                return (linearLayout != null) ? linearLayout.VerticalAlignment : VerticalAlignment.Top;
+            }
+
+            set
+            {
+                if (linearLayout == null) return;
+
+                linearLayout.VerticalAlignment = value;
+            }
+        }
+
+        public void SetLayout(IObjectLayout layout)
+        {
+            if (!(layout is LinearLayout)) return;
+
+            if (linearLayout == layout as ObjectLinearLayout) return;
+
+            linearLayout = layout as ObjectLinearLayout;
+
+            // VerticalAlignment
+            if (linearLayout.VerticalAlignment == VerticalAlignment.Top)
+            {
+                vAlignTop.IsSelected = true;
+            }
+            else if (linearLayout.VerticalAlignment == VerticalAlignment.Center)
+            {
+                vAlignCenter.IsSelected = true;
+            }
+            else
+            {
+                vAlignBottom.IsSelected = true;
+            }
+
+            linearLayout.VerticalAlignmentChanged += (object sender, VerticalAlignmentChangedEventArgs args) =>
+            {
+                if (args.VerticalAlignment == VerticalAlignment.Top)
+                {
+                    vAlignTop.IsSelected = true;
+                }
+                else if (args.VerticalAlignment == VerticalAlignment.Center)
+                {
+                    vAlignCenter.IsSelected = true;
+                }
+                else
+                {
+                    vAlignBottom.IsSelected = true;
+                }
+
+                linearLayout.RequestLayout();
+            };
+
+            linearLayout.RequestLayout();
+        }
+
+        private void VAlignTopSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                if (linearLayout != null)
+                {
+                    linearLayout.VerticalAlignment = VerticalAlignment.Top;
+                    linearLayout.RequestLayout();
+                }
+            }
+        }
+
+        private void VAlignCenterSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                if (linearLayout != null)
+                {
+                    linearLayout.VerticalAlignment = VerticalAlignment.Center;
+                    linearLayout.RequestLayout();
+                }
+            }
+        }
+
+        private void VAlignBottomSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                if (linearLayout != null)
+                {
+                    linearLayout.VerticalAlignment = VerticalAlignment.Bottom;
+                    linearLayout.RequestLayout();
+                }
+            }
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/WidthSpecificationView.xaml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/WidthSpecificationView.xaml
new file mode 100644 (file)
index 0000000..f7b4fb0
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<View x:Class="Tizen.NUI.LayoutSamples.WidthSpecificationView"
+    xmlns="http://tizen.org/Tizen.NUI/2018/XAML"
+    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+    WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+    <View.Layout>
+        <LinearLayout LinearOrientation="Vertical"/>
+    </View.Layout>
+
+    <TextLabel x:Name="widthSpecText"
+        Text="WidthSpecification"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}"/>
+
+    <View x:Name="widthSpecOptions"
+        WidthSpecification="{Static LayoutParamPolicies.MatchParent}">
+
+        <View.Layout>
+            <LinearLayout LinearOrientation="Horizontal" CellPadding="20,0"/>
+        </View.Layout>
+
+        <RadioButton x:Name="widthSpecMatchParent"
+            Text="MatchParent"
+            SelectedChanged="WidthSpecMatchParentSelectedChanged"/>
+
+        <RadioButton x:Name="widthSpecWrapContent"
+            Text="WrapContent"
+            SelectedChanged="WidthSpecWrapContentSelectedChanged"/>
+
+        <RadioButton x:Name="widthSpecValue"
+            SelectedChanged="WidthSpecValueSelectedChanged"/>
+
+        <TextField x:Name="widthSpecValueField"
+            Text="-2"
+            WidthSpecification="100"
+            BorderlineColor="Black"
+            BorderlineOffset="-1"
+            BorderlineWidth="1"
+            TextChanged="WidthSpecValueTextChanged"/>
+    </View>
+</View>
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/WidthSpecificationView.xaml.cs b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/WidthSpecificationView.xaml.cs
new file mode 100644 (file)
index 0000000..a916c54
--- /dev/null
@@ -0,0 +1,167 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.LayoutSamples
+{
+    public partial class WidthSpecificationView : View, IObjectProperty<int>
+    {
+        private RadioButtonGroup widthSpecGroup;
+        private Text.InputFilter inputFilter;
+        private ObjectView controlView = null;
+
+        public WidthSpecificationView()
+        {
+            InitializeComponent();
+
+            widthSpecGroup = new RadioButtonGroup();
+            widthSpecGroup.Add(widthSpecMatchParent);
+            widthSpecGroup.Add(widthSpecWrapContent);
+            widthSpecGroup.Add(widthSpecValue);
+            widthSpecGroup.EnableMultiSelection = false;
+            widthSpecWrapContent.IsSelected = true;
+            // FIXME: TextField does not support IsEnabled now.
+            widthSpecValueField.EnableEditing = false;
+
+            inputFilter = new Text.InputFilter();
+            inputFilter.Accepted = "[0-9]";
+            widthSpecValueField.SetInputFilter(inputFilter);
+        }
+
+        public int PropertyValue
+        {
+            get
+            {
+                return (controlView != null) ? controlView.WidthSpecification : LayoutParamPolicies.WrapContent;
+            }
+
+            set
+            {
+                if (controlView == null) return;
+
+                controlView.WidthSpecification = value;
+            }
+        }
+
+        public void SetView(IObjectView view)
+        {
+            if (!(view is View)) return;
+
+            if (controlView == view as ObjectView) return;
+
+            controlView = view as ObjectView;
+
+            // WidthSpecification
+            if (controlView.WidthSpecification == LayoutParamPolicies.MatchParent)
+            {
+                widthSpecMatchParent.IsSelected = true;
+            }
+            else if (controlView.WidthSpecification == LayoutParamPolicies.WrapContent)
+            {
+                widthSpecWrapContent.IsSelected = true;
+            }
+            else
+            {
+                widthSpecValueField.Text = controlView.WidthSpecification.ToString();
+                widthSpecValue.IsSelected = true;
+            }
+
+            controlView.WidthSpecificationChanged += (object sender, WidthSpecificationChangedEventArgs args) =>
+            {
+                if (args.WidthSpecification == LayoutParamPolicies.MatchParent)
+                {
+                    widthSpecMatchParent.IsSelected = true;
+                }
+                else if (args.WidthSpecification == LayoutParamPolicies.WrapContent)
+                {
+                    widthSpecWrapContent.IsSelected = true;
+                }
+                else
+                {
+                    widthSpecValueField.Text = controlView.WidthSpecification.ToString();
+                    widthSpecValue.IsSelected = true;
+                }
+
+                (controlView.Layout)?.RequestLayout();
+            };
+
+            (controlView.Layout)?.RequestLayout();
+        }
+
+        private void WidthSpecMatchParentSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                widthSpecValueField.Text = LayoutParamPolicies.MatchParent.ToString();
+                if (controlView != null)
+                {
+                    controlView.WidthSpecification = LayoutParamPolicies.MatchParent;
+                }
+            }
+        }
+
+        private void WidthSpecWrapContentSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                widthSpecValueField.Text = LayoutParamPolicies.WrapContent.ToString();
+                if (controlView != null)
+                {
+                    controlView.WidthSpecification = LayoutParamPolicies.WrapContent;
+                }
+            }
+        }
+
+        private void WidthSpecValueSelectedChanged(object sender, SelectedChangedEventArgs args)
+        {
+            if (args.IsSelected)
+            {
+                widthSpecValueField.EnableEditing = true;
+                if (controlView != null)
+                {
+                    int changedValue;
+                    if (int.TryParse(widthSpecValueField.Text, out changedValue))
+                    {
+                        if (controlView.WidthSpecification != changedValue)
+                        {
+                            controlView.WidthSpecification = changedValue;
+                            controlView.Layout?.RequestLayout();
+                        }
+                    }
+                }
+            }
+            else
+            {
+                widthSpecValueField.EnableEditing = false;
+            }
+        }
+
+        private void WidthSpecValueTextChanged(object sender, TextField.TextChangedEventArgs args)
+        {
+            if (controlView != null)
+            {
+                int changedValue;
+                if (int.TryParse(widthSpecValueField.Text, out changedValue))
+                {
+                    controlView.WidthSpecification = changedValue;
+                    controlView.Layout?.RequestLayout();
+                }
+            }
+        }
+    }
+}
diff --git a/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/tizen-manifest.xml b/test/Tizen.NUI.LayoutSamples/Tizen.NUI.LayoutSamples/tizen-manifest.xml
new file mode 100755 (executable)
index 0000000..9a51660
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="5.5" package="org.tizen.example.Tizen.NUI.LayoutSamples" version="1.0.0">
+  <profile name="common" />
+  <ui-application appid="org.tizen.example.Tizen.NUI.LayoutSamples"
+                                       exec="Tizen.NUI.LayoutSamples.dll"
+                                       type="dotnet"
+                                       multiple="false"
+                                       taskmanage="true"
+                                       nodisplay="false"
+                                       launch_mode="single"
+                                       api-version="6">
+    <label>Tizen.NUI.LayoutSamples</label>
+    <icon>Tizen.NUI.LayoutSamples.png</icon>
+    <metadata key="http://tizen.org/metadata/prefer_dotnet_aot" value="true" />
+  </ui-application>
+       <privileges>
+        <privilege>http://tizen.org/privilege/camera</privilege>
+  </privileges>
+</manifest>
diff --git a/test/Tizen.NUI.PerformanceTest/PerformanceTest.cs b/test/Tizen.NUI.PerformanceTest/PerformanceTest.cs
new file mode 100644 (file)
index 0000000..b74e219
--- /dev/null
@@ -0,0 +1,494 @@
+/*
+ * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// TODO : borderline, blur type need to solve partial update issue.
+// Until that issue exist, just block it.
+// #define ALLOW_BORDER_AND_BLUR
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Constants;
+
+
+class PerformanceTestExample : NUIApplication
+{
+    const uint ROWS_COUNT = 32;
+    const uint COLUMNS_COUNT = 32;
+    const uint TOTAL_COLUMNS_COUNT = 80;
+    const uint DURATION_PER_COLUMNS = 50; // miliseconds
+    const float VIEW_MARGIN_RATE = 0.1f;
+    enum ViewTestType{
+        TEST_TYPE_COLOR = 0,            ///< Test with simple color
+        TEST_TYPE_IMAGE,                ///< Test with simple image
+        TEST_TYPE_TEXT,                 ///< Test with simple text label
+        TEST_TYPE_ROUNDED_COLOR,        ///< Test with rounded color
+#if ALLOW_BORDER_AND_BLUR
+        TEST_TYPE_BORDER_COLOR,         ///< Test with borderline color
+        TEST_TYPE_ROUNDED_BORDER_COLOR, ///< Test with rounded borderline color
+        TEST_TYPE_BLUR_COLOR,           ///< Test with blur color
+        TEST_TYPE_ROUNDED_BLUR_COLOR,   ///< Test with blur color
+#endif
+        TEST_TYPE_MAX,
+    };
+
+    static string TestTypeString(ViewTestType type)
+    {
+        switch(type)
+        {
+            case ViewTestType.TEST_TYPE_COLOR:               return "COLOR";
+            case ViewTestType.TEST_TYPE_IMAGE:               return "IMAGE";
+            case ViewTestType.TEST_TYPE_TEXT:                return "TEXT";
+            case ViewTestType.TEST_TYPE_ROUNDED_COLOR:       return "ROUNDED COLOR";
+        #if ALLOW_BORDER_AND_BLUR
+            case ViewTestType.TEST_TYPE_BORDER_COLOR:        return "BORDER COLOR";
+            case ViewTestType.TEST_TYPE_ROUNDED_BORDER_COLOR:return "ROUNDED BORDER COLOR";
+            case ViewTestType.TEST_TYPE_BLUR_COLOR:          return "BLUR COLOR";
+            case ViewTestType.TEST_TYPE_ROUNDED_BLUR_COLOR:  return "ROUNDED BLUR COLOR";
+        #endif
+            default:                                         return "UNKNOWN";
+        }
+    }
+
+    static string IMAGE_DIR = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "image/";
+    readonly static string[] IMAGE_PATH = {
+    IMAGE_DIR + "gallery-medium-1.jpg",
+    IMAGE_DIR + "gallery-medium-2.jpg",
+    IMAGE_DIR + "gallery-medium-3.jpg",
+    IMAGE_DIR + "gallery-medium-4.jpg",
+    IMAGE_DIR + "gallery-medium-5.jpg",
+    IMAGE_DIR + "gallery-medium-6.jpg",
+    IMAGE_DIR + "gallery-medium-7.jpg",
+    IMAGE_DIR + "gallery-medium-8.jpg",
+    IMAGE_DIR + "gallery-medium-9.jpg",
+    IMAGE_DIR + "gallery-medium-10.jpg",
+    IMAGE_DIR + "gallery-medium-11.jpg",
+    IMAGE_DIR + "gallery-medium-12.jpg",
+    IMAGE_DIR + "gallery-medium-13.jpg",
+    IMAGE_DIR + "gallery-medium-14.jpg",
+    IMAGE_DIR + "gallery-medium-15.jpg",
+    IMAGE_DIR + "gallery-medium-16.jpg",
+    IMAGE_DIR + "gallery-medium-17.jpg",
+    IMAGE_DIR + "gallery-medium-18.jpg",
+    IMAGE_DIR + "gallery-medium-19.jpg",
+    IMAGE_DIR + "gallery-medium-20.jpg",
+    IMAGE_DIR + "gallery-medium-21.jpg",
+    IMAGE_DIR + "gallery-medium-22.jpg",
+    IMAGE_DIR + "gallery-medium-23.jpg",
+    IMAGE_DIR + "gallery-medium-24.jpg",
+    IMAGE_DIR + "gallery-medium-25.jpg",
+    IMAGE_DIR + "gallery-medium-26.jpg",
+    IMAGE_DIR + "gallery-medium-27.jpg",
+    IMAGE_DIR + "gallery-medium-28.jpg",
+    IMAGE_DIR + "gallery-medium-29.jpg",
+    IMAGE_DIR + "gallery-medium-30.jpg",
+    IMAGE_DIR + "gallery-medium-31.jpg",
+    IMAGE_DIR + "gallery-medium-32.jpg",
+    IMAGE_DIR + "gallery-medium-33.jpg",
+    IMAGE_DIR + "gallery-medium-34.jpg",
+    IMAGE_DIR + "gallery-medium-35.jpg",
+    IMAGE_DIR + "gallery-medium-36.jpg",
+    IMAGE_DIR + "gallery-medium-37.jpg",
+    IMAGE_DIR + "gallery-medium-38.jpg",
+    IMAGE_DIR + "gallery-medium-39.jpg",
+    IMAGE_DIR + "gallery-medium-40.jpg",
+    IMAGE_DIR + "gallery-medium-41.jpg",
+    IMAGE_DIR + "gallery-medium-42.jpg",
+    IMAGE_DIR + "gallery-medium-43.jpg",
+    IMAGE_DIR + "gallery-medium-44.jpg",
+    IMAGE_DIR + "gallery-medium-45.jpg",
+    IMAGE_DIR + "gallery-medium-46.jpg",
+    IMAGE_DIR + "gallery-medium-47.jpg",
+    IMAGE_DIR + "gallery-medium-48.jpg",
+    IMAGE_DIR + "gallery-medium-49.jpg",
+    IMAGE_DIR + "gallery-medium-50.jpg",
+    IMAGE_DIR + "gallery-medium-51.jpg",
+    IMAGE_DIR + "gallery-medium-52.jpg",
+    IMAGE_DIR + "gallery-medium-53.jpg",
+    };
+
+    class Statistic
+    {
+        const double trimRate = 0.34;
+        global::System.Collections.Generic.List<double> v;
+        int vcnt;
+        double vsum;
+        public Statistic()
+        {
+            clear();
+        }
+        public void clear()
+        {
+            v = new global::System.Collections.Generic.List<double>();
+            vcnt = 0;
+            vsum = 0.0;
+        }
+        public void add(double x)
+        {
+            v.Add(x);
+            vcnt++;
+            vsum += x;
+        }
+        public double getAverage()
+        {
+            if(vcnt == 0)return 0.0;
+            return vsum / vcnt;
+        }
+        public double getTrimedAverage()
+        {
+            if(vcnt == 0)return 0.0;
+            v.Sort();
+            double trimVsum = 0;
+            int removedCnt = (int)(vcnt * trimRate * 0.5);
+            int trimVcnt = vcnt - removedCnt * 2;
+            if(trimVcnt == 0)
+            {
+                trimVcnt += 2;
+                removedCnt--;
+            }
+            for(int i = removedCnt; i < vcnt - removedCnt; i++)
+            {
+                trimVsum += v[i];
+            }
+
+            return trimVsum / trimVcnt;
+        }
+    };
+    Statistic mCreationStatistic;
+    Window mWindow;
+    Vector2 mWindowSize;
+    Vector2 mSize;
+    ViewTestType mTestType = ViewTestType.TEST_TYPE_COLOR;
+
+    // To keep reference count.
+    global::System.Collections.Generic.LinkedList<View> mViewList;
+    global::System.Collections.Generic.LinkedList<Timer> mTimerList;
+    global::System.Collections.Generic.LinkedList<Animation> mAnimationList;
+
+    uint mColumnsCount = ROWS_COUNT;
+    uint mRowsCount = COLUMNS_COUNT;
+    uint mTotalColumnsCount = TOTAL_COLUMNS_COUNT;
+    uint mDurationPerColumns = DURATION_PER_COLUMNS; // miliseconds
+
+    uint tickCount;
+    uint deleteCount;
+
+    DateTime appStartTime;
+    DateTime appEndTime;
+    protected void CreateScene()
+    {
+        appStartTime = DateTime.Now;
+
+        mViewList  = new global::System.Collections.Generic.LinkedList<View>();
+        mTimerList = new global::System.Collections.Generic.LinkedList<Timer>();
+        mAnimationList = new global::System.Collections.Generic.LinkedList<Animation>();
+
+        mWindow = Window.Instance;
+        mWindow.BackgroundColor = Color.White;
+        mWindowSize = mWindow.WindowSize;
+
+        mSize = new Vector2(mWindowSize.X / mColumnsCount, mWindowSize.Y / mRowsCount);
+
+        Timer timer = new Timer(mDurationPerColumns);
+        timer.Tick += OnTick;
+        mTimerList.AddLast(timer);
+
+        tickCount = 0;
+        deleteCount = 0;
+
+        mCreationStatistic = new Statistic();
+
+        timer.Start();
+
+        mWindow.KeyEvent += OnKeyEvent;
+    }
+    bool OnTick(object o, EventArgs e)
+    {
+        tickCount++;
+        if(tickCount < mTotalColumnsCount * (int)ViewTestType.TEST_TYPE_MAX)
+        {
+            // Start next phase.
+            Timer timer = new Timer(mDurationPerColumns);
+            timer.Tick += OnTick;
+            mTimerList.AddLast(timer);
+
+            timer.Start();
+        }
+        DateTime startTime;
+        DateTime endTime;
+
+        startTime = DateTime.Now;
+
+        View columnView = new View()
+        {
+            BackgroundColor = Color.Blue,
+            Size = new Size(mSize.X, mWindowSize.Y),
+            Position = new Position(mWindowSize.X, 0.0f),
+        };
+
+        for(int i = 0; i < mRowsCount; ++i)
+        {
+            View bgView;
+            switch(mTestType)
+            {
+                case ViewTestType.TEST_TYPE_COLOR:
+                default:
+                {
+                    bgView = CreateColor();
+                    break;
+                }
+                case ViewTestType.TEST_TYPE_IMAGE:
+                {
+                    bgView = CreateImage();
+                    break;
+                }
+                case ViewTestType.TEST_TYPE_TEXT:
+                {
+                    bgView = CreateTextLabel();
+                    break;
+                }
+                case ViewTestType.TEST_TYPE_ROUNDED_COLOR:
+                {
+                    bgView = CreateRoundedColor();
+                    break;
+                }
+#if ALLOW_BORDER_AND_BLUR
+                case ViewTestType.TEST_TYPE_BORDER_COLOR:
+                {
+                    bgView = CreateBorderColor(Math.Min(mSize.X, mSize.Y) * VIEW_MARGIN_RATE);
+                    break;
+                }
+                case ViewTestType.TEST_TYPE_ROUNDED_BORDER_COLOR:
+                {
+                    bgView = CreateRoundedBorderColor(Math.Min(mSize.X, mSize.Y) * VIEW_MARGIN_RATE);
+                    break;
+                }
+                case ViewTestType.TEST_TYPE_BLUR_COLOR:
+                {
+                    bgView = CreateBlurColor(Math.Min(mSize.X, mSize.Y) * VIEW_MARGIN_RATE * 0.5f);
+                    break;
+                }
+                case ViewTestType.TEST_TYPE_ROUNDED_BLUR_COLOR:
+                {
+                    bgView = CreateRoundedBlurColor(Math.Min(mSize.X, mSize.Y) * VIEW_MARGIN_RATE * 0.5f);
+                    break;
+                }
+#endif
+            }
+            bgView.Size = new Size(mSize.X * (1.0f - VIEW_MARGIN_RATE), mSize.Y * (1.0f - VIEW_MARGIN_RATE));
+            bgView.Position = new Position(mSize.X * VIEW_MARGIN_RATE * 0.5f, (mSize.Y * VIEW_MARGIN_RATE * 0.5f) + (mSize.Y * (float)i));
+            columnView.Add(bgView);
+        }
+
+        mWindow.Add(columnView);
+        mViewList.AddLast(columnView);
+
+        // Add move animation
+        Animation animation = new Animation((int)(mDurationPerColumns * (mColumnsCount + 1)));
+        animation.AnimateTo(columnView, "PositionX", -mSize.X);
+        animation.Finished += OnAnimationFinished;
+        animation.Play();
+
+        mAnimationList.AddLast(animation);
+
+        endTime = DateTime.Now;
+
+        mCreationStatistic.add((endTime - startTime).TotalMilliseconds);
+
+        if(tickCount % mTotalColumnsCount == 0)
+        {
+            Tizen.Log.Error("NUI.PerfNew", $"Average of creation {mRowsCount} NUI({TestTypeString(mTestType)}) : {mCreationStatistic.getTrimedAverage()} ms\n");
+            mCreationStatistic.clear();
+            mTestType = (ViewTestType)(((int)(mTestType) + 1) % (int)(ViewTestType.TEST_TYPE_MAX));
+        }
+
+        return false;
+    }
+
+    void OnKeyEvent(object source, Window.KeyEventArgs e)
+    {
+        if (e.Key.State == Key.StateType.Down)
+        {
+            FullGC();
+            //Streamline.AnnotateChannelEnd(0);
+
+            switch( e.Key.KeyPressedName )
+            {
+                case "Escape":
+                case "Back":
+                {
+                    Deactivate();
+                    Exit();
+                }
+                break;
+            }
+        }
+    }
+
+    void OnAnimationFinished(object o, EventArgs e)
+    {
+        // We can assume that front of mViewLIst must be deleted.
+        mViewList.First.Value.Unparent();
+        mViewList.First.Value.Dispose();
+        mViewList.RemoveFirst();
+
+        // Dereference timer safety
+        mTimerList.First.Value.Dispose();
+        mTimerList.RemoveFirst();
+
+        // Dereference animation safety
+        mAnimationList.RemoveFirst();
+
+        deleteCount++;
+
+        Animation me = o as Animation;
+        me.Dispose();
+
+        // If all views are deleted, quit this application. byebye~
+        if(deleteCount == mTotalColumnsCount * (int)ViewTestType.TEST_TYPE_MAX)
+        {
+            appEndTime = DateTime.Now;
+            Tizen.Log.Error("NUI.PerfNew", $"Duration of all app running time : {((appEndTime - appStartTime)).TotalMilliseconds} ms\n");
+            Deactivate();
+            FullGC();
+            Exit();
+        }
+    }
+
+    private View CreateColor()
+    {
+        View bgView = new View(){
+            BackgroundColor = Color.Yellow,
+        };
+        return bgView;
+    }
+    private int gImageCount = 0;
+    private View CreateImage()
+    {
+        ImageView bgView = new ImageView(){
+            BackgroundColor = Color.Yellow,
+            ResourceUrl = IMAGE_PATH[(gImageCount++) % (IMAGE_PATH.Length)],
+        };
+        return bgView;
+    }
+    private View CreateTextLabel()
+    {
+        TextLabel bgView = new TextLabel(){
+            Text = "Hello, World!",
+        };
+        return bgView;
+    }
+    private View CreateRoundedColor()
+    {
+        View bgView = new View(){
+            BackgroundColor = Color.Yellow,
+            CornerRadius = 0.5f,
+            CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+        };
+        return bgView;
+    }
+
+#if ALLOW_BORDER_AND_BLUR
+    private View CreateBorderColor(float requiredBorderlineWidth)
+    {
+        View bgView = new View(){
+            BackgroundColor = Color.Yellow,
+            BorderlineColor = Color.Red,
+            BorderlineWidth = requiredBorderlineWidth,
+        };
+        return bgView;
+    }
+    private View CreateRoundedBorderColor(float requiredBorderlineWidth)
+    {
+        View bgView = new View(){
+            BackgroundColor = Color.Yellow,
+            CornerRadius = 0.5f,
+            CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+            BorderlineColor = Color.Red,
+            BorderlineWidth = requiredBorderlineWidth,
+        };
+        return bgView;
+    }
+    private View CreateBlurColor(float requiredBlurRadius)
+    {
+        View bgView = new View();
+
+        using(PropertyMap map = new PropertyMap())
+        {
+            map.Insert((int)Visual.Property.Type, new PropertyValue((int)Visual.Type.Color));
+            map.Insert((int)ColorVisualProperty.MixColor, new PropertyValue(Color.Yellow));
+            map.Insert((int)ColorVisualProperty.BlurRadius, new PropertyValue(requiredBlurRadius));
+
+            bgView.Background = map;
+        }
+
+        return bgView;
+    }
+    private View CreateRoundedBlurColor(float requiredBlurRadius)
+    {
+        View bgView = new View();
+
+        using(PropertyMap map = new PropertyMap())
+        {
+            map.Insert((int)Visual.Property.Type, new PropertyValue((int)Visual.Type.Color));
+            map.Insert((int)ColorVisualProperty.MixColor, new PropertyValue(Color.Yellow));
+            map.Insert((int)ColorVisualProperty.BlurRadius, new PropertyValue(requiredBlurRadius));
+            map.Insert((int)Visual.Property.CornerRadius, new PropertyValue(0.5f));
+            map.Insert((int)Visual.Property.CornerRadiusPolicy, new PropertyValue((int)VisualTransformPolicyType.Relative));
+
+            bgView.Background = map;
+        }
+
+        return bgView;
+    }
+#endif
+
+    public void Activate()
+    {
+        CreateScene();
+    }
+    public void FullGC(){
+        global::System.GC.Collect();
+        global::System.GC.WaitForPendingFinalizers();
+        global::System.GC.Collect();
+    }
+
+    public void Deactivate()
+    {
+        DestroyScene();
+    }
+    private void DestroyScene()
+    {
+    }
+
+    protected override void OnCreate()
+    {
+        // Up call to the Base class first
+        base.OnCreate();
+        Activate();
+    }
+
+    /// <summary>
+    /// The main entry point for the application.
+    /// </summary>
+    [STAThread] // Forces app to use one thread to access NUI
+    static void Main(string[] args)
+    {
+        PerformanceTestExample example = new PerformanceTestExample();
+        example.Run(args);
+    }
+}
diff --git a/test/Tizen.NUI.PerformanceTest/Tizen.NUI.PerformanceTest.code-workspace b/test/Tizen.NUI.PerformanceTest/Tizen.NUI.PerformanceTest.code-workspace
new file mode 100644 (file)
index 0000000..f12d910
--- /dev/null
@@ -0,0 +1,14 @@
+{
+       "folders": [
+               {
+                       "path": "."
+               },
+               {
+                       "path": "../../src/Tizen.NUI"
+               },
+               {
+                       "path": "../../src/Tizen.NUI.Components"
+               }
+       ],
+       "settings": {}
+}
diff --git a/test/Tizen.NUI.PerformanceTest/Tizen.NUI.PerformanceTest.csproj b/test/Tizen.NUI.PerformanceTest/Tizen.NUI.PerformanceTest.csproj
new file mode 100644 (file)
index 0000000..7f60b43
--- /dev/null
@@ -0,0 +1,25 @@
+<Project Sdk="Microsoft.NET.Sdk">
+    <PropertyGroup>
+        <OutputType>Exe</OutputType>
+        <TargetFramework>netcoreapp3.1</TargetFramework>
+        <AssemblyName>PerformanceTest</AssemblyName>
+    </PropertyGroup>
+
+    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+        <DebugType>portable</DebugType>
+    </PropertyGroup>
+    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+        <DebugType>None</DebugType>
+    </PropertyGroup>
+
+    <ItemGroup>
+        <PackageReference Include="Tizen.NET.Sdk" Version="1.0.9" />
+        <ProjectReference Include="../../src/Tizen/Tizen.csproj" />
+        <ProjectReference Include="../../src/Tizen.NUI.Components/Tizen.NUI.Components.csproj" />
+        <ProjectReference Include="../../src/Tizen.NUI/Tizen.NUI.csproj" />
+    </ItemGroup>
+
+    <PropertyGroup>
+        <NeedInjection>True</NeedInjection>
+    </PropertyGroup>
+</Project>
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-1.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-1.jpg
new file mode 100644 (file)
index 0000000..f6b9f25
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-1.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-10.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-10.jpg
new file mode 100644 (file)
index 0000000..de5e133
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-10.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-11.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-11.jpg
new file mode 100644 (file)
index 0000000..57c3d66
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-11.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-12.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-12.jpg
new file mode 100644 (file)
index 0000000..74feaec
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-12.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-13.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-13.jpg
new file mode 100644 (file)
index 0000000..b846825
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-13.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-14.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-14.jpg
new file mode 100644 (file)
index 0000000..5f03bec
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-14.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-15.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-15.jpg
new file mode 100644 (file)
index 0000000..9d9a137
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-15.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-16.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-16.jpg
new file mode 100644 (file)
index 0000000..39e596d
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-16.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-17.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-17.jpg
new file mode 100644 (file)
index 0000000..60acbfa
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-17.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-18.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-18.jpg
new file mode 100644 (file)
index 0000000..a7d2add
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-18.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-19.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-19.jpg
new file mode 100644 (file)
index 0000000..266269d
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-19.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-2.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-2.jpg
new file mode 100644 (file)
index 0000000..6a427ad
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-2.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-20.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-20.jpg
new file mode 100644 (file)
index 0000000..c44929d
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-20.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-21.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-21.jpg
new file mode 100644 (file)
index 0000000..d6a63fb
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-21.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-22.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-22.jpg
new file mode 100644 (file)
index 0000000..cfeba6a
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-22.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-23.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-23.jpg
new file mode 100644 (file)
index 0000000..5d13d1c
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-23.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-24.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-24.jpg
new file mode 100644 (file)
index 0000000..97319b3
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-24.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-25.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-25.jpg
new file mode 100644 (file)
index 0000000..2f2b516
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-25.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-26.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-26.jpg
new file mode 100644 (file)
index 0000000..9af5d02
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-26.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-27.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-27.jpg
new file mode 100644 (file)
index 0000000..352c1ce
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-27.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-28.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-28.jpg
new file mode 100644 (file)
index 0000000..022c8f3
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-28.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-29.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-29.jpg
new file mode 100644 (file)
index 0000000..f7d2cc4
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-29.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-3.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-3.jpg
new file mode 100644 (file)
index 0000000..30b1a51
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-3.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-30.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-30.jpg
new file mode 100644 (file)
index 0000000..49ea26d
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-30.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-31.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-31.jpg
new file mode 100644 (file)
index 0000000..eff521e
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-31.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-32.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-32.jpg
new file mode 100644 (file)
index 0000000..030e554
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-32.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-33.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-33.jpg
new file mode 100644 (file)
index 0000000..863df6d
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-33.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-34.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-34.jpg
new file mode 100644 (file)
index 0000000..b533798
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-34.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-35.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-35.jpg
new file mode 100644 (file)
index 0000000..ec76ee7
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-35.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-36.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-36.jpg
new file mode 100644 (file)
index 0000000..728f528
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-36.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-37.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-37.jpg
new file mode 100644 (file)
index 0000000..a3bbd0e
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-37.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-38.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-38.jpg
new file mode 100644 (file)
index 0000000..d1da82f
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-38.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-39.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-39.jpg
new file mode 100644 (file)
index 0000000..942e37a
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-39.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-4.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-4.jpg
new file mode 100644 (file)
index 0000000..2da2ceb
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-4.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-40.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-40.jpg
new file mode 100644 (file)
index 0000000..e42dba7
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-40.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-41.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-41.jpg
new file mode 100644 (file)
index 0000000..b0a418a
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-41.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-42.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-42.jpg
new file mode 100644 (file)
index 0000000..1fe2961
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-42.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-43.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-43.jpg
new file mode 100644 (file)
index 0000000..2321c36
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-43.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-44.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-44.jpg
new file mode 100644 (file)
index 0000000..61b3bef
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-44.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-45.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-45.jpg
new file mode 100644 (file)
index 0000000..beba787
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-45.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-46.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-46.jpg
new file mode 100644 (file)
index 0000000..7317ea5
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-46.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-47.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-47.jpg
new file mode 100644 (file)
index 0000000..fe28fe0
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-47.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-48.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-48.jpg
new file mode 100644 (file)
index 0000000..e8ffed9
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-48.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-49.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-49.jpg
new file mode 100644 (file)
index 0000000..7dafa96
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-49.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-5.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-5.jpg
new file mode 100644 (file)
index 0000000..902b711
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-5.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-50.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-50.jpg
new file mode 100644 (file)
index 0000000..ae6e1b2
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-50.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-51.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-51.jpg
new file mode 100644 (file)
index 0000000..69af56d
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-51.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-52.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-52.jpg
new file mode 100644 (file)
index 0000000..ac65a2d
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-52.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-53.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-53.jpg
new file mode 100644 (file)
index 0000000..ebf58b9
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-53.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-6.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-6.jpg
new file mode 100644 (file)
index 0000000..490fb56
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-6.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-7.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-7.jpg
new file mode 100644 (file)
index 0000000..607073b
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-7.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-8.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-8.jpg
new file mode 100644 (file)
index 0000000..f95a6b8
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-8.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-9.jpg b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-9.jpg
new file mode 100644 (file)
index 0000000..226dc3a
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/res/image/gallery-medium-9.jpg differ
diff --git a/test/Tizen.NUI.PerformanceTest/shared/res/Tizen.NUI.PerformanceTest.png b/test/Tizen.NUI.PerformanceTest/shared/res/Tizen.NUI.PerformanceTest.png
new file mode 100644 (file)
index 0000000..bf5f90f
Binary files /dev/null and b/test/Tizen.NUI.PerformanceTest/shared/res/Tizen.NUI.PerformanceTest.png differ
diff --git a/test/Tizen.NUI.PerformanceTest/tizen-manifest.xml b/test/Tizen.NUI.PerformanceTest/tizen-manifest.xml
new file mode 100755 (executable)
index 0000000..3b34ebc
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="6" package="org.tizen.example.Tizen.NUI.PerformanceTest" version="1.0.0">
+  <profile name="common" />
+  <ui-application appid="org.tizen.example.Tizen.NUI.PerformanceTest"
+                                       exec="PerformanceTest.dll"
+                                       type="dotnet-nui"
+                                       multiple="false"
+                                       taskmanage="true"
+                                       nodisplay="false"
+                                       launch_mode="single"
+                                       >
+    <label>Tizen.NUI.PerformanceTest</label>
+    <icon>Tizen.NUI.PerformanceTest.png</icon>
+    <metadata key="http://tizen.org/metadata/prefer_dotnet_aot" value="true" />
+  </ui-application>
+</manifest>
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/AllAppsSample.cs b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/AllAppsSample.cs
new file mode 100644 (file)
index 0000000..953c437
--- /dev/null
@@ -0,0 +1,298 @@
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+using System.Collections.Generic;
+
+
+namespace Tizen.NUI.Samples
+{
+  public class AllApps : IExample
+  {
+    private Window win;
+    private Window subWindowOne = null;
+    private Window subWindowTwo = null;
+
+    private static readonly string imagePath = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "/images/Dali/";
+
+    private string [] itemNameArr = new string [] {
+                               "igtv", "netflix", "spoti",
+                               "google chrome", "instagram", "pinterest",
+                               "hbo", "linkedin", "youtube"
+                               };
+
+    class TestWindow : DefaultBorder
+    {
+      public override void CreateBorderView(View rootView)
+      {
+        rootView.BackgroundColor = Color.Red;
+        rootView.CornerRadius = new Vector4(0.03f, 0.03f, 0.03f, 0.03f);
+        rootView.CornerRadiusPolicy = VisualTransformPolicyType.Relative;
+
+
+        View borderView = new View()
+        {
+            Layout = new LinearLayout()
+            {
+                LinearOrientation = LinearLayout.Orientation.Horizontal,
+            },
+            WidthSpecification = LayoutParamPolicies.MatchParent,
+            HeightSpecification = LayoutParamPolicies.MatchParent,
+        };
+
+        var minimalizeIcon = new Button()
+        {
+            Text = "min",
+            PositionUsesPivotPoint = true,
+            PivotPoint = PivotPoint.BottomLeft,
+            ParentOrigin = ParentOrigin.BottomLeft,
+        };
+
+        var maximalizeIcon = new Button()
+        {
+            Text = "Max",
+            PositionUsesPivotPoint = true,
+            PivotPoint = PivotPoint.BottomLeft,
+            ParentOrigin = ParentOrigin.BottomLeft,
+        };
+
+        var closeIcon = new Button()
+        {
+            Text = "Close",
+            PositionUsesPivotPoint = true,
+            PivotPoint = PivotPoint.BottomLeft,
+            ParentOrigin = ParentOrigin.BottomLeft,
+        };
+
+        borderView.Add(minimalizeIcon);
+        borderView.Add(maximalizeIcon);
+        borderView.Add(closeIcon);
+        rootView.Add(borderView);
+
+        minimalizeIcon.TouchEvent += OnMinimizeIconTouched;
+        maximalizeIcon.TouchEvent += OnMaximizeIconTouched;
+        closeIcon.TouchEvent += OnCloseIconTouched;
+      }
+    }
+
+    View CreateItem(string file, string name)
+    {
+      var itemView = new View()
+      {
+        WidthSpecification = 150,
+        HeightSpecification = 150,
+        BackgroundImage = Tizen.Applications.Application.Current.DirectoryInfo.SharedResource + "frame.png",
+        Layout = new LinearLayout()
+        {
+          LinearOrientation = LinearLayout.Orientation.Vertical,
+          HorizontalAlignment = HorizontalAlignment.Center,
+          VerticalAlignment = VerticalAlignment.Center,
+        },
+      };
+
+      var child = new ImageView() {
+        WidthSpecification = 120,
+        HeightSpecification = 90,
+        ResourceUrl = file,
+        Margin = 2,
+      };
+
+      var itemName = new TextLabel() {
+        Text = name,
+        PointSize = 3,
+        HorizontalAlignment = HorizontalAlignment.Center,
+        Margin = 5,
+      };
+
+      itemView.Add(child);
+      itemView.Add(itemName);
+
+      GridLayout.SetHorizontalStretch(itemView, GridLayout.StretchFlags.Expand);
+      GridLayout.SetVerticalStretch(itemView, GridLayout.StretchFlags.Expand);
+      GridLayout.SetHorizontalAlignment(itemView, GridLayout.Alignment.Center);
+      GridLayout.SetVerticalAlignment(itemView, GridLayout.Alignment.Center);
+
+      return itemView;
+    }
+
+    void CreateSubWindowOne()
+    {
+      if (subWindowOne == null)
+      {
+        subWindowOne = new Window("subwin1", null, new Rectangle(1300, 250, 550, 500), false);
+
+        var mainView = new View()
+        {
+         Layout = new LinearLayout()
+         {
+           LinearOrientation = LinearLayout.Orientation.Vertical,
+         },
+         WidthSpecification = LayoutParamPolicies.MatchParent,
+         HeightSpecification = LayoutParamPolicies.MatchParent,
+         BackgroundColor = Color.White,
+         CornerRadius = new Vector4(0.03f, 0.03f, 0.03f, 0.03f),
+         CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+        };
+
+        var title = new TextLabel() {
+            Text = "All apps",
+            PointSize = 4,
+            HorizontalAlignment = HorizontalAlignment.Center,
+            Padding = new Extents(35,0,20,0),
+        };
+
+        // Create All Apps Items
+        var view = new View()
+        {
+          Layout = new GridLayout()
+          {
+            Columns = 3,
+            Rows = 3,
+          },
+          WidthSpecification = LayoutParamPolicies.MatchParent,
+          HeightSpecification = LayoutParamPolicies.MatchParent,
+        };
+
+        subWindowOne.Add(mainView);
+        mainView.Add(title);
+        mainView.Add(view);
+
+        for(int i = 0;  i < 9; i++)
+        {
+          var itemView = CreateItem(Tizen.Applications.Application.Current.DirectoryInfo.SharedResource + itemNameArr[i] + ".png", itemNameArr[i]);
+          itemView.Name = itemNameArr[i];
+          view.Add(itemView);
+        }
+      }
+      else
+      {
+        subWindowOne.Minimize(false);
+      }
+    }
+    void CreateSubWindowTwo()
+    {
+      if (subWindowTwo == null)
+      {
+        subWindowTwo = new Window("subwin1", null, new Rectangle(60, 600, 600, 250), false);
+
+        var mainView = new View()
+        {
+         Layout = new LinearLayout()
+         {
+           LinearOrientation = LinearLayout.Orientation.Vertical,
+         },
+         WidthSpecification = LayoutParamPolicies.MatchParent,
+         HeightSpecification = LayoutParamPolicies.MatchParent,
+         BackgroundColor = Color.White,
+         CornerRadius = new Vector4(0.03f, 0.03f, 0.03f, 0.03f),
+         CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+        };
+
+        var title = new TextLabel() {
+            Text = "My apps",
+            PointSize = 4,
+            HorizontalAlignment = HorizontalAlignment.Center,
+            Padding = new Extents(35,0,20,0),
+        };
+
+        mainView.Add(title);
+
+        // Create My Apps Items
+        var view = new View()
+        {
+          Layout = new GridLayout()
+          {
+            Columns = 3,
+            Rows = 1,
+          },
+          WidthSpecification = LayoutParamPolicies.MatchParent,
+          HeightSpecification = LayoutParamPolicies.MatchParent,
+        };
+
+        subWindowTwo.Add(mainView);
+        mainView.Add(view);
+
+        var itemView = CreateItem(Tizen.Applications.Application.Current.DirectoryInfo.SharedResource + "spoti.png", "spotify");
+        view.Add(itemView);
+        var itemView2 = CreateItem(Tizen.Applications.Application.Current.DirectoryInfo.SharedResource + "instagram.png", "instagram");
+        view.Add(itemView2);
+      }
+      else
+      {
+        subWindowTwo.Minimize(false);
+      }
+    }
+
+    void Initialize()
+    {
+        win = NUIApplication.GetDefaultWindow();
+        var root = new ImageView()
+        {
+          WidthResizePolicy = ResizePolicyType.FillToParent,
+          HeightResizePolicy = ResizePolicyType.FillToParent,
+          ResourceUrl = imagePath + "download2.jpeg",
+          Layout = new LinearLayout()
+          {
+              LinearAlignment = LinearLayout.Alignment.CenterHorizontal,
+              LinearOrientation = LinearLayout.Orientation.Horizontal,
+              CellPadding = new Size(10, 10),
+          }
+
+
+        };
+        win.Add(root);
+
+        var imageViewA = new ImageView()
+        {
+          PositionUsesPivotPoint = true,
+          PivotPoint = PivotPoint.BottomLeft,
+          ParentOrigin = ParentOrigin.BottomLeft,
+          Size = new Size(150, 150),
+          ResourceUrl = imagePath + "background.jpg",
+          CornerRadius = 0.3f,
+          CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+        };
+        root.Add(imageViewA);
+        imageViewA.TouchEvent += (s, e) =>
+        {
+          if (e.Touch.GetState(0) == PointStateType.Up)
+          {
+            CreateSubWindowOne();
+          }
+          return true;
+        };
+
+        var imageViewB = new ImageView()
+        {
+          PositionUsesPivotPoint = true,
+          PivotPoint = PivotPoint.BottomLeft,
+          ParentOrigin = ParentOrigin.BottomLeft,
+          Size = new Size(150, 150),
+          ResourceUrl = imagePath+"netflex.png",
+          CornerRadius = 0.3f,
+          CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+        };
+        root.Add(imageViewB);
+        imageViewB.TouchEvent += (s, e) =>
+        {
+          if (e.Touch.GetState(0) == PointStateType.Up)
+          {
+            CreateSubWindowTwo();
+          }
+          return true;
+        };
+    }
+
+    public void Activate()
+    {
+      Initialize();
+    }
+
+    public void Deactivate()
+    {
+    }
+
+
+  }
+}
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/AtspiSample.cs b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/AtspiSample.cs
new file mode 100755 (executable)
index 0000000..4240a28
--- /dev/null
@@ -0,0 +1,51 @@
+
+using System;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Samples
+{
+    public class AtspiSample : IExample
+    {
+        public void Activate()
+        {
+            Window window = NUIApplication.GetDefaultWindow();
+            window.BackgroundColor = Color.White;
+
+            TextLabel text = new TextLabel("PASS");
+            text.HorizontalAlignment = HorizontalAlignment.Center;
+            text.VerticalAlignment = VerticalAlignment.Center;
+            text.TextColor = Color.Blue;
+            text.PointSize = 12.0f;
+            text.HeightResizePolicy = ResizePolicyType.FillToParent;
+            text.WidthResizePolicy = ResizePolicyType.FillToParent;
+            window.Add(text);
+
+            if (text.AccessibilitySuppressedEvents[AccessibilityEvent.MovedOut])
+            {
+                text.Text = "FAIL";
+                Tizen.Log.Error("NUITEST", "Default value shoud be false\n");
+                return;
+            }
+
+            text.AccessibilitySuppressedEvents[AccessibilityEvent.MovedOut] = true;
+            if (!text.AccessibilitySuppressedEvents[AccessibilityEvent.MovedOut])
+            {
+                text.Text = "FAIL";
+                Tizen.Log.Error("NUITEST", "Cannot set to true\n");
+                return;
+            }
+
+            text.AccessibilitySuppressedEvents[AccessibilityEvent.MovedOut] = false;
+            if (text.AccessibilitySuppressedEvents[AccessibilityEvent.MovedOut])
+            {
+                text.Text = "FAIL";
+                Tizen.Log.Error("NUITEST", "Cannot set to false\n");
+                return;
+            }
+        }
+
+        public void Deactivate()
+        {
+        }
+    }
+}
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/BorderWindowTest.cs b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/BorderWindowTest.cs
new file mode 100755 (executable)
index 0000000..ef42430
--- /dev/null
@@ -0,0 +1,298 @@
+
+using System;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+using System.Collections.Generic;
+
+
+namespace Tizen.NUI.Samples
+{
+  public class BorderWindowTest : IExample
+  {
+    private Window win;
+    private Window subWindowOne = null;
+    private Window subWindowTwo = null;
+    private static readonly string imagePath = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "/images/Dali/CubeTransitionEffect/";
+
+
+    class CustomBorder : DefaultBorder
+    {
+      private int width = 500;
+      private bool hide = false;
+      private View rootView;
+      private View borderView;
+      private TextLabel title;
+
+      public CustomBorder() : base()
+      {
+        BorderHeight = 60;
+      }
+
+      public override void CreateBorderView(View rootView)
+      {
+          this.rootView = rootView;
+          rootView.CornerRadius = new Vector4(0.03f, 0.03f, 0.03f, 0.03f);
+          rootView.CornerRadiusPolicy = VisualTransformPolicyType.Relative;
+
+          borderView = new View()
+          {
+              Layout = new LinearLayout()
+              {
+                  LinearAlignment = LinearLayout.Alignment.End,
+                  LinearOrientation = LinearLayout.Orientation.Horizontal,
+              },
+              WidthSpecification = LayoutParamPolicies.MatchParent,
+              HeightSpecification = LayoutParamPolicies.MatchParent,
+          };
+          title = new TextLabel()
+          {
+            Text = "CustomBorder",
+            Size = new Size(300, 50),
+            Position = new Position(60, 0),
+            PositionUsesPivotPoint = true,
+            PivotPoint = PivotPoint.BottomLeft,
+            ParentOrigin = ParentOrigin.BottomLeft,
+          };
+
+          var minimalizeIcon = new Button()
+          {
+              Text = "m",
+              PositionUsesPivotPoint = true,
+              PivotPoint = PivotPoint.BottomLeft,
+              ParentOrigin = ParentOrigin.BottomLeft,
+              Size = new Size(50, 50),
+          };
+
+          var maximalizeIcon = new Button()
+          {
+              Text = "M",
+              PositionUsesPivotPoint = true,
+              PivotPoint = PivotPoint.BottomLeft,
+              ParentOrigin = ParentOrigin.BottomLeft,
+              Size = new Size(50, 50),
+          };
+
+          var closeIcon = new Button()
+          {
+              Text = "C",
+              PositionUsesPivotPoint = true,
+              PivotPoint = PivotPoint.BottomLeft,
+              ParentOrigin = ParentOrigin.BottomLeft,
+              Size = new Size(50, 50),
+          };
+
+
+          var leftPadding = new View()
+          {
+              PositionUsesPivotPoint = true,
+              PivotPoint = PivotPoint.BottomLeft,
+              ParentOrigin = ParentOrigin.BottomLeft,
+              Size = new Size(50, 50),
+          };
+
+          var rightPadding = new View()
+          {
+              PositionUsesPivotPoint = true,
+              PivotPoint = PivotPoint.BottomLeft,
+              ParentOrigin = ParentOrigin.BottomLeft,
+              Size = new Size(50, 50),
+          };
+
+          rootView.Add(leftPadding);
+          rootView.Add(title);
+          borderView.Add(minimalizeIcon);
+          borderView.Add(maximalizeIcon);
+          borderView.Add(closeIcon);
+          borderView.Add(rightPadding);
+          rootView.Add(borderView);
+
+          minimalizeIcon.TouchEvent += OnMinimizeIconTouched;
+          maximalizeIcon.TouchEvent += OnMaximizeIconTouched;
+          closeIcon.TouchEvent += OnCloseIconTouched;
+          leftPadding.TouchEvent += OnLeftCornerIconTouched;
+          rightPadding.TouchEvent += OnRightCornerIconTouched;
+      }
+
+      public override void OnCreated(View rootView)
+      {
+        base.OnCreated(rootView);
+      }
+
+      public override bool  OnCloseIconTouched(object sender, View.TouchEventArgs e)
+      {
+        base.OnCloseIconTouched(sender, e);
+        return true;
+      }
+
+      public override bool  OnMinimizeIconTouched(object sender, View.TouchEventArgs e)
+      {
+        base.OnMinimizeIconTouched(sender, e);
+        return true;
+      }
+
+      public override void OnResized(int width, int height)
+      {
+        if (rootView != null)
+        {
+          if (this.width > width && hide == false)
+          {
+            title.Hide();
+            hide = true;
+          }
+          else if (this.width < width && hide == true)
+          {
+            title.Show();
+            hide = false;
+          }
+          base.OnResized(width, height);
+        }
+      }
+
+    }
+
+    void CreateSubWindowOne()
+    {
+      if (subWindowOne == null)
+      {
+        subWindowOne = new Window("subwin1", null, new Rectangle(20, 20, 800, 800), false);
+
+        var root = new ImageView()
+        {
+          WidthResizePolicy = ResizePolicyType.FillToParent,
+          HeightResizePolicy = ResizePolicyType.FillToParent,
+          ResourceUrl = imagePath + "gallery-large-9.jpg",
+          CornerRadius = new Vector4(0.03f, 0.03f, 0.03f, 0.03f),
+          CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+        };
+        subWindowOne.Add(root);
+
+        TextLabel text = new TextLabel("Hello Tizen NUI World");
+        text.HorizontalAlignment = HorizontalAlignment.Center;
+        text.VerticalAlignment = VerticalAlignment.Center;
+        text.TextColor = Color.CornflowerBlue;
+        text.HeightResizePolicy = ResizePolicyType.FillToParent;
+        text.WidthResizePolicy = ResizePolicyType.FillToParent;
+        root.Add(text);
+
+        Animation animation = new Animation(2000);
+        animation.AnimateTo(text, "Orientation", new Rotation(new Radian(new Degree(180.0f)), PositionAxis.X), 0, 500);
+        animation.AnimateTo(text, "Orientation", new Rotation(new Radian(new Degree(0.0f)), PositionAxis.X), 500, 1000);
+        animation.Looping = true;
+        animation.Play();
+      }
+      else
+      {
+        subWindowOne.Minimize(false);
+      }
+    }
+
+    void CreateSubWindowTwo()
+    {
+      if (subWindowTwo == null)
+      {
+        IBorderInterface customBorder = new CustomBorder();
+        subWindowTwo = new Window("subwin1", customBorder, new Rectangle(60, 20, 800, 800), false);
+
+        subWindowTwo.BackgroundColor = Color.Red;
+
+        var root = new View(){
+          Layout = new LinearLayout()
+          {
+              LinearAlignment = LinearLayout.Alignment.CenterHorizontal,
+          },
+          WidthResizePolicy = ResizePolicyType.FillToParent,
+          HeightResizePolicy = ResizePolicyType.FillToParent,
+          BackgroundColor = Color.Yellow,
+        };
+
+        var image = new ImageView()
+        {
+          Size = new Size(300, 300),
+          ResourceUrl = imagePath + "gallery-large-5.jpg",
+          CornerRadius = new Vector4(0.03f, 0.03f, 0, 0),
+          CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+        };
+        root.Add(image);
+        subWindowTwo.Add(root);
+      }
+      else
+      {
+        subWindowTwo.Minimize(false);
+      }
+    }
+
+
+
+    void Initialize()
+    {
+        win = NUIApplication.GetDefaultWindow();
+        var root = new ImageView()
+        {
+          WidthResizePolicy = ResizePolicyType.FillToParent,
+          HeightResizePolicy = ResizePolicyType.FillToParent,
+          ResourceUrl = imagePath + "gallery-large-14.jpg",
+          Layout = new LinearLayout()
+          {
+              LinearAlignment = LinearLayout.Alignment.CenterHorizontal,
+              LinearOrientation = LinearLayout.Orientation.Horizontal,
+              CellPadding = new Size(10, 10),
+          }
+
+
+        };
+        win.Add(root);
+
+        var imageViewA = new ImageView()
+        {
+          PositionUsesPivotPoint = true,
+          PivotPoint = PivotPoint.BottomLeft,
+          ParentOrigin = ParentOrigin.BottomLeft,
+          Size = new Size(150, 150),
+          ResourceUrl = imagePath + "gallery-large-9.jpg",
+          CornerRadius = 0.3f,
+          CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+        };
+        root.Add(imageViewA);
+        imageViewA.TouchEvent += (s, e) =>
+        {
+          if (e.Touch.GetState(0) == PointStateType.Up)
+          {
+            CreateSubWindowOne();
+          }
+          return true;
+        };
+
+        var imageViewB = new ImageView()
+        {
+          PositionUsesPivotPoint = true,
+          PivotPoint = PivotPoint.BottomLeft,
+          ParentOrigin = ParentOrigin.BottomLeft,
+          Size = new Size(150, 150),
+          ResourceUrl = imagePath + "gallery-large-5.jpg",
+          CornerRadius = 0.3f,
+          CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+        };
+        root.Add(imageViewB);
+        imageViewB.TouchEvent += (s, e) =>
+        {
+          if (e.Touch.GetState(0) == PointStateType.Up)
+          {
+            CreateSubWindowTwo();
+          }
+          return true;
+        };
+    }
+
+    public void Activate()
+    {
+      Initialize();
+    }
+
+    public void Deactivate()
+    {
+    }
+
+
+  }
+}
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/DefaultGrabTouchAfterLeaveSample.cs b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/DefaultGrabTouchAfterLeaveSample.cs
new file mode 100644 (file)
index 0000000..53234cf
--- /dev/null
@@ -0,0 +1,110 @@
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+using Tizen.NUI.Events;
+
+
+namespace Tizen.NUI.Samples
+{
+    public class DefaultGrabTouchAfterLeaveSample : IExample
+    {
+        private View root;
+
+        public void Activate()
+        {
+            Window window = NUIApplication.GetDefaultWindow();
+            // If this is set to true, all views are created with GrabTouchAfterLeave set to true.
+            View.SetDefaultGrabTouchAfterLeave(true);
+
+            root = new View
+            {
+                Layout = new AbsoluteLayout(),
+                WidthResizePolicy = ResizePolicyType.FillToParent,
+                HeightResizePolicy = ResizePolicyType.FillToParent,
+            };
+
+            var textLabel = new TextLabel
+            {
+                Size = new Size(300, 300),
+                MultiLine = true,
+                BackgroundColor = Color.Grey,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+            };
+
+            // greenView is created with the size 250x250 and GrabTouchAfterLeave=true
+            var greenView = new View()
+            {
+                Size = new Size(300, 300),
+                Position = new Position(50, 320),
+                BackgroundColor = Color.Green,
+            };
+            textLabel.Text ="greenView GrabTouchAfterLeave : "+greenView.GrabTouchAfterLeave;
+
+            greenView.TouchEvent += (s, e) =>
+            {
+                Tizen.Log.Error("NUI", $"greenView {e.Touch.GetState(0)}\n");
+                return true;
+            };
+
+            // If userTheme is applied,
+            Theme userTheme = new Theme();
+            userTheme.AddStyle("Tizen.NUI.BaseComponents.TextLabel",  new TextLabelStyle()
+            {
+                Size = new Size(500, 500),
+            });
+            ThemeManager.ApplyTheme(userTheme);
+
+            // BlueView is created with size 500x500 defined in userTheme and GrabTouchAfterLeave=true
+            var blueView = new TextLabel
+            (new TextLabelStyle
+            {
+                Size = new Size(300, 300),
+                Text = "BlueView",
+            })
+            {
+                Position = new Position(10, 100),
+                BackgroundColor = Color.Blue,
+            };
+            textLabel.Text +="\nblueView GrabTouchAfterLeave : "+blueView.GrabTouchAfterLeave;
+            blueView.TouchEvent += (s, e) =>
+            {
+                Tizen.Log.Error("NUI", $"blueView {e.Touch.GetState(0)}\n");
+                return true;
+            };
+
+            // BlueView is created with size 100x100 defined in userStyle and GrabTouchAfterLeave=true
+            var redView = new TextLabel
+            (new TextLabelStyle
+            {
+                PixelSize = 24,
+                Size = new Size(100, 100),
+            })
+            {
+                Text = "RedView",
+                Position = new Position(50, 120),
+                BackgroundColor = Color.Red,
+            };
+            textLabel.Text +="\redView GrabTouchAfterLeave : "+redView.GrabTouchAfterLeave;
+            redView.TouchEvent += (s, e) =>
+            {
+                Tizen.Log.Error("NUI", $"redView {e.Touch.GetState(0)}\n");
+                return true;
+            };
+
+            greenView.Add(blueView);
+            blueView.Add(redView);
+            root.Add(textLabel);
+            root.Add(greenView);
+            window.Add(root);
+        }
+
+        public void Deactivate()
+        {
+            if (root != null)
+            {
+                NUIApplication.GetDefaultWindow().Remove(root);
+                root.Dispose();
+            }
+        }
+    }
+}
index 2a0f2ef..ad0d485 100755 (executable)
@@ -246,7 +246,6 @@ namespace Tizen.NUI.Samples
             source.FocusableInTouch =  true;
             source.MinValue = MIN_VALUE;
             source.MaxValue = MAX_VALUE;
-            source.StateChangedEvent += OnStateChanged;
             source.ValueChanged += OnValueChanged;
             source.SlidingStarted += OnSlidingStarted;
             source.SlidingFinished += OnSlidingFinished;
@@ -264,7 +263,6 @@ namespace Tizen.NUI.Samples
             source.FocusableInTouch = true;
             source.MinValue = MIN_VALUE;
             source.MaxValue = MAX_VALUE;
-            source.StateChangedEvent += OnStateChanged;
             source.ValueChanged += OnValueChanged;
             source.SlidingStarted += OnSlidingStarted;
             source.SlidingFinished += OnSlidingFinished;
@@ -320,17 +318,5 @@ namespace Tizen.NUI.Samples
                 }
             }
         }
-
-        private void OnStateChanged(object sender, Slider.StateChangedArgs args)
-        {
-            if (sender is Tizen.NUI.Components.Slider)
-            {
-                Tizen.NUI.Components.Slider slider = sender as Tizen.NUI.Components.Slider;
-                if (slider != null)
-                {
-                    // Do something
-                }
-            }
-        }
     }
 }
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/frame.png b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/frame.png
new file mode 100755 (executable)
index 0000000..41890a9
Binary files /dev/null and b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/frame.png differ
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/google chrome.png b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/google chrome.png
new file mode 100755 (executable)
index 0000000..325287d
Binary files /dev/null and b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/google chrome.png differ
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/hbo.png b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/hbo.png
new file mode 100755 (executable)
index 0000000..7fa2af2
Binary files /dev/null and b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/hbo.png differ
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/igtv.png b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/igtv.png
new file mode 100755 (executable)
index 0000000..c2f7780
Binary files /dev/null and b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/igtv.png differ
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/instagram.png b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/instagram.png
new file mode 100755 (executable)
index 0000000..8a6d336
Binary files /dev/null and b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/instagram.png differ
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/linkedin.png b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/linkedin.png
new file mode 100755 (executable)
index 0000000..ddd39d4
Binary files /dev/null and b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/linkedin.png differ
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/netflix.png b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/netflix.png
new file mode 100755 (executable)
index 0000000..83d1e60
Binary files /dev/null and b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/netflix.png differ
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/pinterest.png b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/pinterest.png
new file mode 100755 (executable)
index 0000000..8edac33
Binary files /dev/null and b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/pinterest.png differ
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/soundcloud.png b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/soundcloud.png
new file mode 100755 (executable)
index 0000000..8e04f79
Binary files /dev/null and b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/soundcloud.png differ
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/spoti.png b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/spoti.png
new file mode 100755 (executable)
index 0000000..c664631
Binary files /dev/null and b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/spoti.png differ
diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/youtube.png b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/youtube.png
new file mode 100755 (executable)
index 0000000..7e394c0
Binary files /dev/null and b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/shared/res/youtube.png differ
index d1cf732..9ed2863 100755 (executable)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" api-version="5.5" package="org.tizen.example.Tizen.NUI.Samples" version="1.0.0">
+<manifest xmlns="http://tizen.org/ns/packages" api-version="7" package="org.tizen.example.Tizen.NUI.Samples" version="1.0.2">
   <profile name="common" />
   <ui-application appid="org.tizen.example.Tizen.NUI.Samples"
                                        exec="Tizen.NUI.Samples.dll"
@@ -7,8 +7,7 @@
                                        multiple="false"
                                        taskmanage="true"
                                        nodisplay="false"
-                                       launch_mode="single"
-                                       api-version="6">
+                                       launch_mode="single">
     <label>Tizen.NUI.Samples</label>
     <icon>Tizen.NUI.Samples.png</icon>
     <metadata key="http://tizen.org/metadata/prefer_dotnet_aot" value="true" />
old mode 100755 (executable)
new mode 100644 (file)
index 8352c69..45ff6dd
Binary files a/test/Tizen.NUI.StyleGuide/.pic/csproj-file.png and b/test/Tizen.NUI.StyleGuide/.pic/csproj-file.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 9125090..6606757
Binary files a/test/Tizen.NUI.StyleGuide/.pic/launch.png and b/test/Tizen.NUI.StyleGuide/.pic/launch.png differ
index 807ff68..2f78a39 100644 (file)
@@ -19,7 +19,7 @@
                 "PKG_CONFIG_PATH":"${env:HOME}/dali-env/opt/lib/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig",
                 "DOTNET_CLI_TELEMETRY_OPTOUT":"1",
                 "DALI_WINDOW_WIDTH":"720",
-                "DALI_WINDOW_HEIGHT":"1080",
+                "DALI_WINDOW_HEIGHT":"800",
             },
             "cwd": "${workspaceFolder}",
             "console": "internalConsole",
diff --git a/test/Tizen.NUI.StyleGuide/Examples/ContentPageExample.cs b/test/Tizen.NUI.StyleGuide/Examples/ContentPageExample.cs
new file mode 100644 (file)
index 0000000..1fa1726
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using System.ComponentModel;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.StyleGuide
+{
+    // IExample inehrited class will be automatically added in the main examples list.
+    internal class ContentPageExample : ContentPage, IExample
+    {
+        private Window window;
+        private Navigator navigator;
+        private ContentPage contentPage1, contentPage2;
+        private int pageCount = 0;
+
+        public void Activate()
+        {
+        }
+        public void Deactivate()
+        {
+        }
+
+        /// Modify this method for adding other examples.
+        public ContentPageExample() : base()
+        {
+            window = NUIApplication.GetDefaultWindow();
+
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+
+            // Navigator bar title is added here.
+            AppBar = new AppBar()
+            {
+                Title = "ContentPage Default Style",
+            };
+
+            navigator = window.GetDefaultNavigator();
+            pageCount = navigator.PageCount;
+
+            contentPage1 = new ContentPage()
+            {
+                AppBar = new AppBar()
+                {
+                    Title = "ContentPageTestPage1",
+                },
+            };
+            var buttonOne = new Button()
+            {
+                Text = "ONE",
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+            };
+            buttonOne.Clicked += (s, e) =>
+            {
+                navigator?.Push(contentPage2);
+            };
+
+            contentPage1.Content = buttonOne;
+
+            contentPage2 = new ContentPage()
+            {
+                AppBar = new AppBar()
+                {
+                    Title = "ContentPageTestPage2",
+                },
+            };
+            var buttonTwo = new Button()
+            {
+                Text = "TWO",
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+            };
+            buttonTwo.Clicked += (s, e) =>
+            {
+                navigator?.Pop();
+            };
+            contentPage2.Content = buttonTwo;
+
+            Content = contentPage1;
+        }
+    }
+}
@@ -23,7 +23,7 @@ using Tizen.NUI.Components;
 namespace Tizen.NUI.StyleGuide
 {
     // IExample inehrited class will be automatically added in the main examples list.
-    internal class AlertDialogExample : ContentPage, IExample
+    internal class DialogAndAlertDialogExample : ContentPage, IExample
     {
         private View rootContent;
         private Button buttonOneAction, buttonTwoAction, buttonNoTitle, buttonNoMessage;
@@ -36,7 +36,7 @@ namespace Tizen.NUI.StyleGuide
         }
 
         /// Modify this method for adding other examples.
-        public AlertDialogExample() : base()
+        public DialogAndAlertDialogExample() : base()
         {
             WidthSpecification = LayoutParamPolicies.MatchParent;
             HeightSpecification = LayoutParamPolicies.MatchParent;
@@ -44,7 +44,7 @@ namespace Tizen.NUI.StyleGuide
             // Navigator bar title is added here.
             AppBar = new AppBar()
             {
-                Title = "AlertDialog Default Style",
+                Title = "Dialog AlertDialog Default Style",
             };
 
             // Example root content view.
diff --git a/test/Tizen.NUI.StyleGuide/Examples/NavigatorExample.cs b/test/Tizen.NUI.StyleGuide/Examples/NavigatorExample.cs
new file mode 100644 (file)
index 0000000..716d4f0
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using System.ComponentModel;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.StyleGuide
+{
+    // IExample inehrited class will be automatically added in the main examples list.
+    internal class NavigatorExample : ContentPage, IExample
+    {
+        private const int numberOfDifferentColor = 4;
+        private const int colorOne = 0, colorTwo = 1, colorThree = 2;
+        private Navigator navigator;
+
+        public void Activate()
+        {
+        }
+        public void Deactivate()
+        {
+        }
+
+        /// Modify this method for adding other examples.
+        public NavigatorExample() : base()
+        {
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+
+            // Navigator bar title is added here.
+            AppBar = new AppBar()
+            {
+                Title = "Navigator Default Style",
+            };
+
+            navigator = NUIApplication.GetDefaultWindow().GetDefaultNavigator();
+            Content = generatePage();
+        }
+
+        private ContentPage generatePage()
+        {
+            var page = new ContentPage();
+            page.AppBar = new AppBar()
+            {
+                Title = "NavigatorTestPage",
+            };
+
+            var contentView = new View()
+            {
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    CellPadding = new Size2D(0, 10),
+                },
+            };
+            page.Content = contentView;
+
+            var buttonPush = new Button()
+            {
+                Text = "Push",
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+            };
+            buttonPush.Clicked += (s, e) =>
+            {
+                if (navigator == null)
+                {
+                    Tizen.Log.Error("NUITEST", "The page should be pushed to a Navigator");
+                    return;
+                }
+                var newPage = generatePage();
+                newPage.AppBar.Title = "NavigatorTestPage" + navigator.PageCount.ToString();
+                navigator.Push(newPage);
+            };
+            contentView.Add(buttonPush);
+
+            var buttonPop = new Button()
+            {
+                Text = "Pop",
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+            };
+            buttonPop.Clicked += (s, e) =>
+            {
+                if (navigator == null)
+                {
+                    Tizen.Log.Error("NUITEST", "The page should be pushed to a Navigator");
+                    return;
+                }
+                navigator.Pop();
+            };
+            contentView.Add(buttonPop);
+
+            Color backgroundColor;
+            switch (navigator.PageCount % numberOfDifferentColor)
+            {
+                case colorOne:
+                    backgroundColor = Color.DarkGreen;
+                    break;
+                case colorTwo:
+                    backgroundColor = Color.DarkRed;
+                    break;
+                case colorThree:
+                    backgroundColor = Color.DarkBlue;
+                    break;
+                default:
+                    backgroundColor = Color.SaddleBrown;
+                    break;
+            };
+            buttonPush.BackgroundColor = backgroundColor;
+            buttonPop.BackgroundColor = backgroundColor;
+            return page;
+        }
+    }
+}
diff --git a/test/Tizen.NUI.StyleGuide/Examples/TabViewExample.cs b/test/Tizen.NUI.StyleGuide/Examples/TabViewExample.cs
new file mode 100644 (file)
index 0000000..d5d73a3
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * Copyright(c) 2022 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+using System;
+using System.ComponentModel;
+using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Components;
+
+namespace Tizen.NUI.StyleGuide
+{
+    // IExample inehrited class will be automatically added in the main examples list.
+    internal class TabViewExample : ContentPage, IExample
+    {
+        private const int maxTabCount = 4;
+        private const int colorOne = 0, colorTwo = 1, colorThree = 2;
+        private int tabCount = 0;
+        private TabView tabView;
+
+        public void Activate()
+        {
+        }
+        public void Deactivate()
+        {
+        }
+
+        /// Modify this method for adding other examples.
+        public TabViewExample() : base()
+        {
+            WidthSpecification = LayoutParamPolicies.MatchParent;
+            HeightSpecification = LayoutParamPolicies.MatchParent;
+
+            // Navigator bar title is added here.
+            AppBar = new AppBar()
+            {
+                Title = "TabView Default Style",
+            };
+
+            tabView = new TabView()
+            {
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+            };
+            Content = tabView;
+
+            tabView.AddTab(CreateTabButton(), CreateView());
+            tabCount++;
+
+            tabView.AddTab(CreateTabButton(), CreateView());
+            tabCount++;
+        }
+
+        private TabButton CreateTabButton()
+        {
+            return new TabButton()
+            {
+                Text = "Tab" + (tabCount + 1),
+            };
+        }
+
+        private View CreateView()
+        {
+            Color backgroundColor;
+            Color buttonBackgroundColor;
+
+            if ((tabCount + 1) % maxTabCount == colorOne)
+            {
+                backgroundColor = Color.DarkGreen;
+                buttonBackgroundColor = Color.Green;
+            }
+            else if ((tabCount + 1) % maxTabCount == colorTwo)
+            {
+                backgroundColor = Color.DarkRed;
+                buttonBackgroundColor = Color.Red;
+            }
+            else if ((tabCount + 1) % maxTabCount == colorThree)
+            {
+                backgroundColor = Color.DarkBlue;
+                buttonBackgroundColor = Color.Blue;
+            }
+            else
+            {
+                backgroundColor = Color.SaddleBrown;
+                buttonBackgroundColor = Color.Orange;
+            }
+
+            var container = new View()
+            {
+                Layout = new LinearLayout()
+                {
+                    LinearOrientation = LinearLayout.Orientation.Vertical,
+                    HorizontalAlignment = HorizontalAlignment.Center,
+                    VerticalAlignment = VerticalAlignment.Center,
+                    CellPadding = new Size2D(0, 20),
+                },
+                BackgroundColor = backgroundColor,
+                WidthSpecification = LayoutParamPolicies.MatchParent,
+                HeightSpecification = LayoutParamPolicies.MatchParent,
+            };
+
+            var buttonAddTab = new Button()
+            {
+                Text = "Add Tab",
+                BackgroundColor = buttonBackgroundColor,
+            };
+            buttonAddTab.Clicked += (object sender, ClickedEventArgs args) =>
+            {
+                if (tabCount < maxTabCount)
+                {
+                    tabView.AddTab(CreateTabButton(), CreateView());
+                    tabCount++;
+                }
+            };
+            container.Add(buttonAddTab);
+
+            var buttonRemoveTab = new Button()
+            {
+                Text = "Remove Tab",
+                BackgroundColor = buttonBackgroundColor,
+            };
+            buttonRemoveTab.Clicked += (object sender, ClickedEventArgs args) =>
+            {
+                if (tabCount > 1)
+                {
+                    tabView.RemoveTab(tabCount - 1);
+                    tabCount--;
+                }
+            };
+            container.Add(buttonRemoveTab);
+
+            return container;
+        }
+
+    }
+}
index 642b7b3..2e218a3 100755 (executable)
@@ -15,6 +15,7 @@
 ### csproj file
 - Set the target framework installed in your environment.
 - Tizen.NUI.StyleGuide.csproj
+- Please check .NET version like below. Should be 3.1 version.
 ![](./.pic/csproj-file.png)
 
 ### Start debugging
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/GlobalSuppressions.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/GlobalSuppressions.cs
new file mode 100755 (executable)
index 0000000..6d0ee61
--- /dev/null
@@ -0,0 +1,19 @@
+// This file is used by Code Analysis to maintain SuppressMessage
+// attributes that are applied to this project.
+// Project-level suppressions either have no target or are given
+// a specific target and scoped to a namespace, type, member, etc.
+
+using System.Diagnostics.CodeAnalysis;
+
+[assembly: SuppressMessage("Security", "Reflection:The code contains reflection", Justification = "<Pending>", Scope = "member", Target = "~M:Tizen.NUI.Components.Devel.Tests.TSGridLayouter.GridLayouterInitialize")]
+[assembly: SuppressMessage("Security", "Reflection:The code contains reflection", Justification = "<Pending>", Scope = "member", Target = "~M:Tizen.NUI.Components.Devel.Tests.TSGridLayouter.GridLayouterRequestLayout")]
+[assembly: SuppressMessage("Security", "Reflection:The code contains reflection", Justification = "<Pending>", Scope = "member", Target = "~M:Tizen.NUI.Components.Devel.Tests.TSGridLayouter.GridLayouterClear")]
+[assembly: SuppressMessage("Security", "Reflection:The code contains reflection", Justification = "<Pending>", Scope = "member", Target = "~M:Tizen.NUI.Components.Devel.Tests.TSGridLayouter.GridLayouterNotifyItemInserted")]
+[assembly: SuppressMessage("Security", "Reflection:The code contains reflection", Justification = "<Pending>", Scope = "member", Target = "~M:Tizen.NUI.Components.Devel.Tests.TSGridLayouter.GridLayouterNotifyItemRangeInserted")]
+[assembly: SuppressMessage("Security", "Reflection:The code contains reflection", Justification = "<Pending>", Scope = "member", Target = "~M:Tizen.NUI.Components.Devel.Tests.TSGridLayouter.GridLayouterNotifyItemRemoved")]
+[assembly: SuppressMessage("Security", "Reflection:The code contains reflection", Justification = "<Pending>", Scope = "member", Target = "~M:Tizen.NUI.Components.Devel.Tests.TSGridLayouter.GridLayouterNotifyItemRangeRemoved")]
+[assembly: SuppressMessage("Security", "Reflection:The code contains reflection", Justification = "<Pending>", Scope = "member", Target = "~M:Tizen.NUI.Components.Devel.Tests.TSGridLayouter.GridLayouterNotifyItemMoved")]
+[assembly: SuppressMessage("Security", "Reflection:The code contains reflection", Justification = "<Pending>", Scope = "member", Target = "~M:Tizen.NUI.Components.Devel.Tests.TSGridLayouter.GridLayouterNotifyItemRangeMoved")]
+[assembly: SuppressMessage("Security", "Reflection:The code contains reflection", Justification = "<Pending>", Scope = "member", Target = "~M:Tizen.NUI.Components.Devel.Tests.TSGridLayouter.GridLayouterRequestNextFocusableView")]
+[assembly: SuppressMessage("Security", "Reflection:The code contains reflection", Justification = "<Pending>", Scope = "member", Target = "~M:Tizen.NUI.Components.Devel.Tests.TSGridLayouter.GridLayouterGetVisibleItem")]
+[assembly: SuppressMessage("Security", "Reflection:The code contains reflection", Justification = "<Pending>", Scope = "member", Target = "~M:Tizen.NUI.Components.Devel.Tests.TSGridLayouter.GridLayouterGetItemSize")]
index 90e368f..ac2760f 100755 (executable)
@@ -23,7 +23,7 @@ using System.Threading;
 using System.Diagnostics;
 using System.Threading.Tasks;
 
-namespace Tizen.NUI.Devel.Tests
+namespace Tizen.NUI.Components.Devel.Tests
 {
     using tlog = Tizen.Log;
     public class App : Tizen.NUI.NUIApplication
@@ -8,10 +8,10 @@
 // </auto-generated>
 //------------------------------------------------------------------------------
 
-namespace Tizen.NUI.Devel.Tests {
+namespace Tizen.NUI.Components.Devel.Tests.Properties {
     using System;
-    
-    
+
+
     /// <summary>
     ///   A strongly-typed resource class, for looking up localized strings, etc.
     /// </summary>
@@ -22,16 +22,16 @@ namespace Tizen.NUI.Devel.Tests {
     [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class Resource {
-        
+    internal class Resources {
+
         private static global::System.Resources.ResourceManager resourceMan;
-        
+
         private static global::System.Globalization.CultureInfo resourceCulture;
-        
+
         [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal Resource() {
+        internal Resources() {
         }
-        
+
         /// <summary>
         ///   Returns the cached ResourceManager instance used by this class.
         /// </summary>
@@ -39,13 +39,13 @@ namespace Tizen.NUI.Devel.Tests {
         internal static global::System.Resources.ResourceManager ResourceManager {
             get {
                 if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Tizen.NUI.Devel.Tests.Resource", typeof(Resource).Assembly);
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Tizen.NUI.Components.Tests.Properties.Resources", typeof(Resources).Assembly);
                     resourceMan = temp;
                 }
                 return resourceMan;
             }
         }
-        
+
         /// <summary>
         ///   Overrides the current thread's CurrentUICulture property for all
         ///   resource lookups using this strongly typed resource class.
@@ -59,14 +59,5 @@ namespace Tizen.NUI.Devel.Tests {
                 resourceCulture = value;
             }
         }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Test.
-        /// </summary>
-        internal static string Test {
-            get {
-                return ResourceManager.GetString("Test", resourceCulture);
-            }
-        }
     }
 }
@@ -1,17 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>
 <root>
-  <!-- 
-    Microsoft ResX Schema 
-    
+  <!--
+    Microsoft ResX Schema
+
     Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
+
+    The primary goals of this format is to allow a simple XML format
+    that is mostly human readable. The generation and parsing of the
+    various data types are done through the TypeConverter classes
     associated with the data types.
-    
+
     Example:
-    
+
     ... ado.net/XML headers & schema ...
     <resheader name="resmimetype">text/microsoft-resx</resheader>
     <resheader name="version">2.0</resheader>
         <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
         <comment>This is a comment</comment>
     </data>
-                
-    There are any number of "resheader" rows that contain simple 
+
+    There are any number of "resheader" rows that contain simple
     name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
+
+    Each data row contains a name, and value. The row also contains a
+    type or mimetype. Type corresponds to a .NET class that support
+    text/value conversion through the TypeConverter architecture.
+    Classes that don't support this are serialized and stored with the
     mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
+
+    The mimetype is used for serialized objects, and tells the
+    ResXResourceReader how to depersist the object. This is currently not
     extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
+
+    Note - application/x-microsoft.net.object.binary.base64 is the format
+    that the ResXResourceWriter will generate, however the reader can
     read any of the formats listed below.
-    
+
     mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
+    value   : The object must be serialized with
             : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
             : and then encoded with base64 encoding.
-    
+
     mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
+    value   : The object must be serialized with
             : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
             : and then encoded with base64 encoding.
 
     mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
+    value   : The object must be serialized into a byte array
             : using a System.ComponentModel.TypeConverter
             : and then encoded with base64 encoding.
     -->
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <data name="Test" xml:space="preserve">
-    <value>Test</value>
+  <data name="String1" xml:space="preserve">
+    <value />
+    <comment>test</comment>
   </data>
 </root>
\ No newline at end of file
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/README.md b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/README.md
new file mode 100644 (file)
index 0000000..de1b0d4
--- /dev/null
@@ -0,0 +1,14 @@
+This (Tizen.NUI.Components.Devel.Tests) is an auto TCT project for the internal API of Tizen.NUI.Components.Tests.
+
+You can use it like below.
+
+1. download or do "git clone" the csharp-tct project from review.tizen.org : https://review.tizen.org/gerrit/#/admin/projects/test/tct/csharp/api
+
+2. copy this Tizen.NUI.Components.Devel.Tests project into the below of "api/tct-suite-vs/" folder
+  ex) $ cp -rf Tizen.NUI.Components.Devel.Tests ~/SomePath/api/tct-suite-vs/
+
+3. package Tizen.NUI.Components.Devel.Tests tpk into csharp-tct. execute the following command in "api/tool/script" folder
+  ex) $ sudo python pack.py auto NUI.Components.Devel
+
+4. execute csharp-tct and you can see the Tizen.NUI.Components.Devel.Tests item shown
+  ex) $ sudo tct-mgr  
index efce8cd..ac20da7 100755 (executable)
@@ -1,9 +1,10 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
 
   <!-- Property Group for .NET Core Project -->
   <PropertyGroup>
     <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>tizen10.0</TargetFramework>
+    <TargetFrameworkIdentifier>Tizen</TargetFrameworkIdentifier>
   </PropertyGroup>
 
   <!-- Property Group for Tizen Project -->
     <DebugType>None</DebugType>
   </PropertyGroup>
 
+  <ItemGroup>
+       <Folder Include="lib\" />
+  </ItemGroup>
+
   <Import Project="..\Common\dependencies.props" />
   <ItemGroup>
-    <PackageReference Include="Tizen.NET" Version="9.0.0.16715">
+    <PackageReference Include="Tizen.NET" Version="10.0.0.17099">
       <ExcludeAssets>Runtime</ExcludeAssets>
     </PackageReference>
     <PackageReference Include="Tizen.NET.Sdk" Version="1.1.6" />
   </ItemGroup>
+
+  <!-- Include Nuget Package for Tizen Project building -->
   <ItemGroup>
-    <ProjectReference Include="..\..\..\src\Tizen.NUI.Components\Tizen.NUI.Components.csproj" />
-    <ProjectReference Include="..\..\..\src\Tizen.NUI\Tizen.NUI.csproj" />
     <ProjectReference Include="..\nunit.framework\nunit.framework.csproj" />
     <ProjectReference Include="..\nunitlite\nunitlite.csproj" />
   </ItemGroup>
 
-  <!-- Include Nuget Package for Tizen Project building -->
-
   <PropertyGroup>
     <SignAssembly>true</SignAssembly>
     <AssemblyOriginatorKeyFile>./NuiTest.snk</AssemblyOriginatorKeyFile>
     <PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
-    <UserSecretsId>5cd04a1b-2080-411b-935e-62d2a4971abc</UserSecretsId>
   </PropertyGroup>
 
 </Project>
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/Tizen.NUI.Components.Devel.Tests.sln b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/Tizen.NUI.Components.Devel.Tests.sln
deleted file mode 100755 (executable)
index 6410d43..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31112.23
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.NUI.Components.Devel.Tests", "Tizen.NUI.Components.Devel.Tests.csproj", "{FDD59395-4BD7-4F1A-A7A1-9C95929A0902}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunit.framework", "..\nunit.framework\nunit.framework.csproj", "{400E7822-8340-4AB7-A78F-9CC41CBE1969}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunitlite", "..\nunitlite\nunitlite.csproj", "{68DA4488-EF9F-4497-8681-DE094BDD5744}"
-EndProject
-Global
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|Any CPU = Debug|Any CPU
-               Release|Any CPU = Release|Any CPU
-       EndGlobalSection
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {FDD59395-4BD7-4F1A-A7A1-9C95929A0902}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {FDD59395-4BD7-4F1A-A7A1-9C95929A0902}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {FDD59395-4BD7-4F1A-A7A1-9C95929A0902}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {FDD59395-4BD7-4F1A-A7A1-9C95929A0902}.Release|Any CPU.Build.0 = Release|Any CPU
-               {400E7822-8340-4AB7-A78F-9CC41CBE1969}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {400E7822-8340-4AB7-A78F-9CC41CBE1969}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {400E7822-8340-4AB7-A78F-9CC41CBE1969}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {400E7822-8340-4AB7-A78F-9CC41CBE1969}.Release|Any CPU.Build.0 = Release|Any CPU
-               {68DA4488-EF9F-4497-8681-DE094BDD5744}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {68DA4488-EF9F-4497-8681-DE094BDD5744}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {68DA4488-EF9F-4497-8681-DE094BDD5744}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {68DA4488-EF9F-4497-8681-DE094BDD5744}.Release|Any CPU.Build.0 = Release|Any CPU
-       EndGlobalSection
-       GlobalSection(SolutionProperties) = preSolution
-               HideSolutionNode = FALSE
-       EndGlobalSection
-       GlobalSection(ExtensibilityGlobals) = postSolution
-               SolutionGuid = {913AE2D0-5429-42FF-9269-B40FA5D29E84}
-       EndGlobalSection
-EndGlobal
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/nui-components-tct.png b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/nui-components-tct.png
new file mode 100644 (file)
index 0000000..bdd0690
Binary files /dev/null and b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/nui-components-tct.png differ
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/res/demoVideo.mp4 b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/res/demoVideo.mp4
deleted file mode 100755 (executable)
index 9232219..0000000
Binary files a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/res/demoVideo.mp4 and /dev/null differ
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/shared/res/Tizen.NUI.Components.Devel.Tests.png b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/shared/res/Tizen.NUI.Components.Devel.Tests.png
new file mode 100755 (executable)
index 0000000..9765b1b
Binary files /dev/null and b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/shared/res/Tizen.NUI.Components.Devel.Tests.png differ
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/shared/res/nui-csharp.png b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/shared/res/nui-csharp.png
deleted file mode 100755 (executable)
index 673d6c7..0000000
Binary files a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/shared/res/nui-csharp.png and /dev/null differ
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/CheckBox.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/CheckBox.cs
new file mode 100755 (executable)
index 0000000..3e489ee
--- /dev/null
@@ -0,0 +1,64 @@
+using global::System;
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using Tizen.NUI;
+using Tizen.NUI.Components;
+using Tizen.NUI.BaseComponents;
+using System.Threading.Tasks;
+
+namespace Tizen.NUI.Components.Devel.Tests
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [Description("Controls/CheckBox")]
+    class CheckBoxText
+    {
+        private const string tag = "NUITEST";
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("CheckBox ItemGroup.")]
+        [Property("SPEC", "Tizen.NUI.Components.CheckBox.ItemGroup A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void CheckBoxItemGroup()
+        {
+            tlog.Debug(tag, $"CheckBoxItemGroup START");
+
+            CheckBox cb = new CheckBox()
+            {
+                Size = new Size(48, 48),
+                IsEnabled = true,
+                IsSelectable = true,
+                IsSelected = true,
+            };
+            Assert.IsNotNull(cb, "null handle");
+            Assert.IsInstanceOf<CheckBox>(cb, "Should return CheckBox instance.");
+
+            CheckBoxGroup cbGroup = new CheckBoxGroup();
+            cbGroup.Add(cb);
+
+            var testingTarget = cb.ItemGroup;
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<CheckBoxGroup>(testingTarget, "Should return CheckBoxGroup instance.");
+
+            cb.Dispose();
+            tlog.Debug(tag, $"CheckBoxItemGroup END (OK)");
+        }
+    }
+}
index ccde026..d5f7eeb 100755 (executable)
@@ -55,6 +55,17 @@ namespace Tizen.NUI.Components.Devel.Tests
             throw new NotImplementedException();
         }
 
+        internal class FlexibleViewImpl : FlexibleView
+        {
+            public FlexibleViewImpl() : base()
+            { }
+
+            public void OnCreateViewStyle()
+            {
+                base.CreateViewStyle();
+            }
+        }
+
         [SetUp]
         public void Init()
         {
@@ -504,5 +515,124 @@ namespace Tizen.NUI.Components.Devel.Tests
             scrollBar.Dispose();
             tlog.Debug(tag, $"FlexibleViewDetachScrollBar END (OK)");
         }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleView CreateViewStyle.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleView.CreateViewStyle M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void FlexibleViewCreateViewStyle()
+        {
+            tlog.Debug(tag, $"FlexibleViewCreateViewStyle START");
+
+            var testingTarget = new FlexibleViewImpl();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<FlexibleView>(testingTarget, "Should return FlexibleView instance.");
+
+            try
+            {
+                testingTarget.OnCreateViewStyle();
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"FlexibleViewCreateViewStyle END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewItemClickedEventArgs ClickedView.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewItemClickedEventArgs.ClickedView A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "huayong.xu@samsung.com")]
+        public void FlexibleViewItemClickedEventArgsClickedView()
+        {
+            tlog.Debug(tag, $"FlexibleViewItemClickedEventArgsClickedView START");
+
+            var testingTarget = new FlexibleViewItemClickedEventArgs();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<FlexibleViewItemClickedEventArgs>(testingTarget, "Should return FlexibleViewItemClickedEventArgs instance.");
+
+            using (View view = new View() { Size = new Size(100, 200) })
+            {
+                FlexibleViewViewHolder holder = new FlexibleViewViewHolder(view);
+                testingTarget.ClickedView = holder;
+                tlog.Debug(tag, "ClickedView : " + testingTarget.ClickedView);
+            }
+
+            tlog.Debug(tag, $"FlexibleViewItemClickedEventArgsClickedView END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleView.ChildHelper RemoveViewAt.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleView.ChildHelper.RemoveViewAt M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "huayong.xu@samsung.com")]
+        public void FlexibleViewChildHelperRemoveViewAt()
+        {
+            tlog.Debug(tag, $"FlexibleViewChildHelperRemoveViewAt START");
+
+            FlexibleView owner = new FlexibleView()
+            { 
+                Padding = new Extents(10, 10, 10, 10),
+            };
+
+            var testingTarget = new FlexibleView.ChildHelper(owner);
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<FlexibleView.ChildHelper>(testingTarget, "Should return FlexibleView.ChildHelper instance.");
+
+            View view = new View()
+            {
+                Size = new Size(100, 200),
+            };
+            FlexibleViewViewHolder holder = new FlexibleViewViewHolder(view);
+
+            testingTarget.AttachView(holder, 0);
+            var result = testingTarget.RemoveViewAt(0);
+            tlog.Debug(tag, "RemoveViewAt : " + result);
+
+            owner.Dispose();
+            view.Dispose();
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"FlexibleViewChildHelperRemoveViewAt END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewItemTouchEventArgs  TouchedView .")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewItemTouchEventArgs.TouchedView  A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "huayong.xu@samsung.com")]
+        public void FlexibleViewItemTouchEventArgsTouchedView()
+        {
+            tlog.Debug(tag, $"FlexibleViewItemTouchEventArgsTouchedView START");
+
+            var testingTarget = new FlexibleViewItemTouchEventArgs();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<FlexibleViewItemTouchEventArgs>(testingTarget, "Should return FlexibleViewItemTouchEventArgs instance.");
+
+            using (View view = new View() { Size = new Size(100, 200) })
+            {
+                FlexibleViewViewHolder holder = new FlexibleViewViewHolder(view);
+                testingTarget.TouchedView = holder;
+                tlog.Debug(tag, "TouchedView : " + testingTarget.TouchedView);
+            }
+
+            tlog.Debug(tag, $"FlexibleViewItemTouchEventArgsTouchedView END (OK)");
+        }
     }
 }
index 7801a6b..61a79d8 100755 (executable)
@@ -243,6 +243,72 @@ namespace Tizen.NUI.Components.Devel.Tests
             return horizontalFlexibleView;
         }
 
+        internal class FlexibleViewLayoutManagerImpl : FlexibleViewLayoutManager
+        {
+            public FlexibleViewLayoutManagerImpl() : base()
+            { }
+
+            public override void OnLayoutChildren(FlexibleViewRecycler recycler)
+            {
+                throw new NotImplementedException();
+            }
+
+            protected override int GetNextPosition(int position, Direction direction)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override bool CanScrollHorizontally() 
+            {
+                return base.CanScrollHorizontally();
+            }
+
+            public override bool CanScrollVertically()
+            {
+                return base.CanScrollVertically();
+            }
+
+            public override float ScrollHorizontallyBy(float dy, FlexibleViewRecycler recycler, bool immediate)
+            {
+                return base.ScrollHorizontallyBy(dy, recycler, immediate);
+            }
+
+            public override float ScrollVerticallyBy(float dy, FlexibleViewRecycler recycler, bool immediate)
+            {
+                return base.ScrollVerticallyBy(dy, recycler, immediate);
+            }
+
+            public override float ComputeScrollExtent()
+            {
+                return base.ComputeScrollExtent();
+            }
+
+            public override float ComputeScrollOffset()
+            {
+                return base.ComputeScrollOffset();
+            }
+
+            public override float ComputeScrollRange()
+            {
+                return base.ComputeScrollRange();
+            }
+
+            public FlexibleViewViewHolder OnFindFirstVisibleItemView()
+            {
+                return base.FindFirstVisibleItemView();
+            }
+
+            public FlexibleViewViewHolder OnFindLastVisibleItemView()
+            {
+                return base.FindLastVisibleItemView();
+            }
+
+            internal override FlexibleViewViewHolder OnFocusSearchFailed(FlexibleViewViewHolder focused, FlexibleViewLayoutManager.Direction direction, FlexibleViewRecycler recycler)
+            {
+                return base.OnFocusSearchFailed(focused, direction, recycler);
+            }
+        }
+
         [SetUp]
         public void Init()
         {
@@ -354,5 +420,288 @@ namespace Tizen.NUI.Components.Devel.Tests
 
             tlog.Debug(tag, $"FlexibleViewLayoutManagerOffsetChildrenVertical END (OK)");
         }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewLayoutManager CanScrollHorizontally.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewLayoutManager.CanScrollHorizontally M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void FlexibleViewLayoutManagerCanScrollHorizontally()
+        {
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerCanScrollHorizontally START");
+
+            var testingTarget = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(testingTarget, "should be an instance of testing target class!");
+
+            var result = horizontalLayoutManager.CanScrollHorizontally();
+            tlog.Debug(tag, "CanScrollHorizontally : " + result);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerCanScrollHorizontally END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewLayoutManager CanScrollVertically.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewLayoutManager.CanScrollVertically M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void FlexibleViewLayoutManagerCanScrollVertically()
+        {
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerCanScrollVertically START");
+
+            var testingTarget = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(testingTarget, "should be an instance of testing target class!");
+
+            var result = horizontalLayoutManager.CanScrollVertically();
+            tlog.Debug(tag, "CanScrollVertically : " + result);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerCanScrollVertically END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewLayoutManager ScrollHorizontallyBy.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewLayoutManager.ScrollHorizontallyBy M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void FlexibleViewLayoutManagerScrollHorizontallyBy()
+        {
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerScrollHorizontallyBy START");
+
+            var testingTarget = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(testingTarget, "should be an instance of testing target class!");
+
+            using (FlexibleView view = new FlexibleView() { Padding = new Extents(10, 10, 10, 10) })
+            {
+                FlexibleViewRecycler recycler = new FlexibleViewRecycler(view);
+                var result = testingTarget.ScrollHorizontallyBy(1.0f, recycler, false);
+                tlog.Debug(tag, "ScrollHorizontallyBy : " + result);
+            }
+                
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerScrollHorizontallyBy END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewLayoutManager ScrollVerticallyBy.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewLayoutManager.ScrollVerticallyBy M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void FlexibleViewLayoutManagerScrollVerticallyBy()
+        {
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerScrollVerticallyBy START");
+
+            var testingTarget = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(testingTarget, "should be an instance of testing target class!");
+
+            using (FlexibleView view = new FlexibleView() { Padding = new Extents(10, 10, 10, 10) })
+            {
+                FlexibleViewRecycler recycler = new FlexibleViewRecycler(view);
+                var result = testingTarget.ScrollVerticallyBy(1.0f, recycler, false);
+                tlog.Debug(tag, "ScrollVerticallyBy : " + result);
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerScrollVerticallyBy END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewLayoutManager ComputeScrollExtent.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewLayoutManager.ComputeScrollExtent M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void FlexibleViewLayoutManagerComputeScrollExtent()
+        {
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerComputeScrollExtent START");
+
+            var testingTarget = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(testingTarget, "should be an instance of testing target class!");
+
+            var result = testingTarget.ComputeScrollExtent();
+            tlog.Debug(tag, "ComputeScrollExtent : " + result);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerComputeScrollExtent END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewLayoutManager ComputeScrollOffset.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewLayoutManager.ComputeScrollOffset M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void FlexibleViewLayoutManagerComputeScrollOffset()
+        {
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerComputeScrollOffset START");
+
+            var testingTarget = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(testingTarget, "should be an instance of testing target class!");
+
+            var result = testingTarget.ComputeScrollOffset();
+            tlog.Debug(tag, "ComputeScrollOffset : " + result);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerComputeScrollOffset END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewLayoutManager ComputeScrollRange.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewLayoutManager.ComputeScrollRange M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void FlexibleViewLayoutManagerComputeScrollRange()
+        {
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerComputeScrollRange START");
+
+            var testingTarget = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(testingTarget, "should be an instance of testing target class!");
+
+            var result = testingTarget.ComputeScrollRange();
+            tlog.Debug(tag, "ComputeScrollRange : " + result);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerComputeScrollRange END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewLayoutManager RemoveAndRecycleViewAt.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewLayoutManager.RemoveAndRecycleViewAt M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void FlexibleViewLayoutManagerRemoveAndRecycleViewAt()
+        {
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerRemoveAndRecycleViewAt START");
+
+            var testingTarget = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(testingTarget, "should be an instance of testing target class!");
+
+            using (FlexibleView view = new FlexibleView() { Padding = new Extents(10, 10, 10, 10) })
+            {
+                FlexibleViewRecycler recycler = new FlexibleViewRecycler(view);
+
+                try
+                {
+                    testingTarget.RemoveAndRecycleViewAt(0, recycler);
+                }
+                catch (Exception e)
+                {
+                    tlog.Debug(tag, e.Message.ToString());
+                    Assert.Fail("Caught Exception : Failed!");
+                }
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerRemoveAndRecycleViewAt END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewLayoutManager FindFirstVisibleItemView.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewLayoutManager.FindFirstVisibleItemView M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void FlexibleViewLayoutManagerFindFirstVisibleItemView()
+        {
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerFindFirstVisibleItemView START");
+
+            var testingTarget = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(testingTarget, "should be an instance of testing target class!");
+
+            var result = testingTarget.OnFindFirstVisibleItemView();
+            tlog.Debug(tag, "FindFirstVisibleItemView : " + result);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerFindFirstVisibleItemView END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewLayoutManager FindLastVisibleItemView.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewLayoutManager.FindLastVisibleItemView M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void FlexibleViewLayoutManagerFindLastVisibleItemView()
+        {
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerFindLastVisibleItemView START");
+
+            var testingTarget = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(testingTarget, "should be an instance of testing target class!");
+
+            var result = testingTarget.OnFindLastVisibleItemView();
+            tlog.Debug(tag, "FindLastVisibleItemView : " + result);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerFindLastVisibleItemView END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewLayoutManager OnFocusSearchFailed.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewLayoutManager.OnFocusSearchFailed M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void FlexibleViewLayoutManagerOnFocusSearchFailed()
+        {
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerOnFocusSearchFailed START");
+
+            var testingTarget = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(testingTarget, "should be an instance of testing target class!");
+
+            using (View view = new View() { Size = new Size(100, 200) })
+            {
+                FlexibleViewViewHolder focused = new FlexibleViewViewHolder(view);
+
+                using (FlexibleView recyclerView = new FlexibleView() { Padding = new Extents(10, 10, 10, 10) })
+                {
+                    FlexibleViewRecycler recycler = new FlexibleViewRecycler(recyclerView);
+
+                    var result = testingTarget.OnFocusSearchFailed(focused, FlexibleViewLayoutManager.Direction.Down, recycler);
+                    tlog.Debug(tag, "OnFocusSearchFailed : " + result);
+                }
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"FlexibleViewLayoutManagerOnFocusSearchFailed END (OK)");
+        }
     }
 }
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/FlexibleView/TSFlexibleViewRecycler.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/FlexibleView/TSFlexibleViewRecycler.cs
new file mode 100755 (executable)
index 0000000..d61227a
--- /dev/null
@@ -0,0 +1,62 @@
+using NUnit.Framework;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Components.Devel.Tests
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [Description("Controls/FlexibleView/FlexibleViewRecycler")]
+    public class FlexibleViewRecyclerTest
+    {
+        private const string tag = "NUITEST";
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FlexibleViewRecycler SetViewCacheSize.")]
+        [Property("SPEC", "Tizen.NUI.Components.FlexibleViewRecycler.SetViewCacheSize M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void FlexibleViewRecyclerSetViewCacheSize()
+        {
+            tlog.Debug(tag, $"FlexibleViewRecyclerSetViewCacheSize START");
+
+            using (FlexibleView recyclerView = new FlexibleView() { Padding = new Extents(10, 10, 10, 10) })
+            {
+                var testingTarget = new FlexibleViewRecycler(recyclerView);
+                Assert.IsNotNull(testingTarget, "should be not null");
+                Assert.IsInstanceOf<FlexibleViewRecycler>(testingTarget, "should be an instance of testing target class!");
+
+                try
+                {
+                    testingTarget.SetViewCacheSize(5);
+                }
+                catch (Exception e)
+                {
+                    tlog.Debug(tag, e.Message.ToString());
+                    Assert.Fail("Caught Exception : Failed!");
+                }
+            }
+
+            tlog.Debug(tag, $"FlexibleViewRecyclerSetViewCacheSize END (OK)");
+        }
+    }
+}
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/FlexibleView/TSOrientationHelper.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/FlexibleView/TSOrientationHelper.cs
new file mode 100755 (executable)
index 0000000..28144f6
--- /dev/null
@@ -0,0 +1,210 @@
+using NUnit.Framework;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Components.Devel.Tests
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [Description("Controls/FlexibleView/OrientationHelper")]
+    public class OrientationHelperTest
+    {
+        private const string tag = "NUITEST";
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        internal class OrientationHelperImpl : OrientationHelper
+        {
+            public OrientationHelperImpl(FlexibleViewLayoutManager layoutManager) : base(layoutManager)
+            { 
+                
+            }
+
+            public override float GetEnd()
+            {
+                throw new NotImplementedException();
+            }
+
+            public override float GetEndAfterPadding()
+            {
+                throw new NotImplementedException();
+            }
+
+            public override float GetEndPadding()
+            {
+                throw new NotImplementedException();
+            }
+
+            public override float GetStartAfterPadding()
+            {
+                throw new NotImplementedException();
+            }
+
+            public override float GetTotalSpace()
+            {
+                throw new NotImplementedException();
+            }
+
+            public override float GetViewHolderEnd(FlexibleViewViewHolder holder)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override float GetViewHolderMeasurement(FlexibleViewViewHolder holder)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override float GetViewHolderMeasurementInOther(FlexibleViewViewHolder holder)
+            {
+                return holder.Bottom - holder.Top;
+            }
+
+            public override float GetViewHolderStart(FlexibleViewViewHolder holder)
+            {
+                throw new NotImplementedException();
+            }
+
+            public override void OffsetChildren(float amount, bool immediate)
+            {
+                throw new NotImplementedException();
+            }
+
+            internal override void OffsetChild(FlexibleViewViewHolder holder, int offset)
+            {
+                throw new NotImplementedException();
+            }
+        }
+
+        internal class FlexibleViewLayoutManagerImpl : FlexibleViewLayoutManager
+        {
+            public FlexibleViewLayoutManagerImpl() : base()
+            { }
+
+            public override void OnLayoutChildren(FlexibleViewRecycler recycler)
+            {
+                throw new NotImplementedException();
+            }
+
+            protected override int GetNextPosition(int position, Direction direction)
+            {
+                throw new NotImplementedException();
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("OrientationHelper OnLayoutComplete.")]
+        [Property("SPEC", "Tizen.NUI.Components.OrientationHelper.OnLayoutComplete M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void OrientationHelperOnLayoutComplete()
+        {
+            tlog.Debug(tag, $"OrientationHelperOnLayoutComplete START");
+
+            FlexibleViewLayoutManager manager = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(manager, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(manager, "should be an instance of testing target class!");
+
+            var testingTarget = new OrientationHelperImpl(manager);
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<OrientationHelper>(testingTarget, "should be an instance of testing target class!");
+
+            try
+            {
+                testingTarget.OnLayoutComplete();
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            manager.Dispose();
+            tlog.Debug(tag, $"OrientationHelperOnLayoutComplete END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("OrientationHelper GetTotalSpaceChange.")]
+        [Property("SPEC", "Tizen.NUI.Components.OrientationHelper.GetTotalSpaceChange M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void OrientationHelperGetTotalSpaceChange()
+        {
+            tlog.Debug(tag, $"OrientationHelperGetTotalSpaceChange START");
+
+            FlexibleViewLayoutManager manager = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(manager, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(manager, "should be an instance of testing target class!");
+
+            var testingTarget = new OrientationHelperImpl(manager);
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<OrientationHelper>(testingTarget, "should be an instance of testing target class!");
+
+            try
+            {
+                var result = testingTarget.GetTotalSpaceChange();
+                tlog.Debug(tag, "GetTotalSpaceChange : " + result);
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            manager.Dispose();
+            tlog.Debug(tag, $"OrientationHelperGetTotalSpaceChange END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("OrientationHelper GetViewHolderMeasurementInOther.")]
+        [Property("SPEC", "Tizen.NUI.Components.OrientationHelper.GetViewHolderMeasurementInOther M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void OrientationHelperGetViewHolderMeasurementInOther()
+        {
+            tlog.Debug(tag, $"OrientationHelperGetViewHolderMeasurementInOther START");
+
+            FlexibleViewLayoutManager manager = new FlexibleViewLayoutManagerImpl();
+            Assert.IsNotNull(manager, "should be not null");
+            Assert.IsInstanceOf<FlexibleViewLayoutManager>(manager, "should be an instance of testing target class!");
+
+            var testingTarget = new OrientationHelperImpl(manager);
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<OrientationHelper>(testingTarget, "should be an instance of testing target class!");
+
+            using (View view = new View() { Size = new Size(100, 200) })
+            {
+                FlexibleViewViewHolder holder = new FlexibleViewViewHolder(view);
+
+                var result = testingTarget.GetViewHolderMeasurementInOther(holder);
+                tlog.Debug(tag, "GetViewHolderMeasurementInOther : " + result);
+            }
+
+            manager.Dispose();
+            tlog.Debug(tag, $"OrientationHelperGetViewHolderMeasurementInOther END (OK)");
+        }
+    }
+}
index 2df1bc3..bb599dc 100755 (executable)
@@ -25,6 +25,11 @@ namespace Tizen.NUI.Components.Devel.Tests
             {
                 base.Dispose(types);
             }
+
+            public void OnCreateViewStyle()
+            {
+                base.CreateViewStyle();
+            }
         }
 
         [SetUp]
@@ -123,5 +128,35 @@ namespace Tizen.NUI.Components.Devel.Tests
 
             tlog.Debug(tag, $"AppBarDispose END (OK)");
         }
+
+        [Test]
+        [Category("P1")]
+        [Description("AppBar CreateViewStyle.")]
+        [Property("SPEC", "Tizen.NUI.Components.AppBar.CreateViewStyle M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void AppBarCreateViewStyle()
+        {
+            tlog.Debug(tag, $"AppBarCreateViewStyle START");
+
+            var testingTarget = new MyAppBar();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<AppBar>(testingTarget, "Should return AppBar instance.");
+
+            try
+            {
+                testingTarget.OnCreateViewStyle();
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"AppBarCreateViewStyle END (OK)");
+        }
     }
 }
index 559e03a..fa4d1a1 100755 (executable)
@@ -62,7 +62,7 @@ namespace Tizen.NUI.Components.Devel.Tests
         {
             tlog.Debug(tag, $"NavigatorTransition START");
 
-            var testingTarget = new Navigator();
+            var testingTarget = NUIApplication.GetDefaultWindow().GetDefaultNavigator();
             Assert.IsNotNull(testingTarget, "null handle");
             Assert.IsInstanceOf<Navigator>(testingTarget, "Should return Navigator instance.");
 
@@ -75,7 +75,6 @@ namespace Tizen.NUI.Components.Devel.Tests
             testingTarget.Transition = ts;
             tlog.Debug(tag, "AppearingTransition : " + testingTarget.Transition);
 
-            testingTarget.Dispose();
             tlog.Debug(tag, $"NavigatorTransition END (OK)");
         }
 
@@ -91,11 +90,7 @@ namespace Tizen.NUI.Components.Devel.Tests
         {
             tlog.Debug(tag, $"NavigatorPushWithTransition START");
 
-            var testingTarget = new Navigator()
-            {
-                WidthResizePolicy = ResizePolicyType.FillToParent,
-                HeightResizePolicy = ResizePolicyType.FillToParent
-            };
+            var testingTarget = NUIApplication.GetDefaultWindow().GetDefaultNavigator();
             Assert.IsNotNull(testingTarget, "null handle");
             Assert.IsInstanceOf<Navigator>(testingTarget, "Should return Navigator instance.");
 
@@ -103,7 +98,6 @@ namespace Tizen.NUI.Components.Devel.Tests
 
             var page1 = CreateFirstPage(testingTarget);
             var page2 = CreateSecondPage(testingTarget);
-            testingTarget.Pop();
             var page3 = CreateThirdPage(testingTarget);
             var page4 = CreateFourthPage(testingTarget);
 
@@ -120,6 +114,15 @@ namespace Tizen.NUI.Components.Devel.Tests
             {
                 testingTarget.PushWithTransition(page1);
                 testingTarget.PopWithTransition();
+
+                testingTarget.PushWithTransition(page2);
+                testingTarget.PopWithTransition();
+
+                testingTarget.PushWithTransition(page3);
+                testingTarget.PopWithTransition();
+
+                testingTarget.PushWithTransition(page4);
+                testingTarget.PopWithTransition();
             }
             catch (Exception e)
             {
@@ -127,9 +130,6 @@ namespace Tizen.NUI.Components.Devel.Tests
                 Assert.Fail("Caught Exception : Failed!");
             }
 
-            Window.Instance.Remove(testingTarget);
-
-            testingTarget.Dispose();
             tlog.Debug(tag, $"NavigatorPushWithTransition END (OK)");
         }
 
@@ -145,16 +145,11 @@ namespace Tizen.NUI.Components.Devel.Tests
         {
             tlog.Debug(tag, $"NavigatorPushWithTransitionWithNullPage START");
 
-            var testingTarget = new Navigator()
-            {
-                WidthResizePolicy = ResizePolicyType.FillToParent,
-                HeightResizePolicy = ResizePolicyType.FillToParent
-            };
+            var testingTarget = NUIApplication.GetDefaultWindow().GetDefaultNavigator();
+
             Assert.IsNotNull(testingTarget, "null handle");
             Assert.IsInstanceOf<Navigator>(testingTarget, "Should return Navigator instance.");
 
-            Window.Instance.Add(testingTarget);
-
             Transition ts = new Transition()
             {
                 AlphaFunction = new AlphaFunction(Tizen.NUI.AlphaFunction.BuiltinFunctions.EaseIn),
@@ -171,8 +166,6 @@ namespace Tizen.NUI.Components.Devel.Tests
             }
             catch (ArgumentNullException)
             {
-                Window.Instance.Remove(testingTarget);
-                testingTarget.Dispose();
                 tlog.Debug(tag, $"NavigatorPushWithTransitionWithNullPage END (OK)");
                 Assert.Pass("Caught ArgumentNullException : Passed!");
             }
@@ -199,7 +192,7 @@ namespace Tizen.NUI.Components.Devel.Tests
             };
 
             navigator.Push(page);
-            
+
             return page;
         }
 
index 926ac69..6847a64 100755 (executable)
@@ -161,7 +161,8 @@ namespace Tizen.NUI.Components.Devel.Tests
             tlog.Debug(tag, $"DefaultGridItem END (OK)");
         }
 
-        [Test]
+        //Todo: this causes BLOCK, should be fixed.
+        //[Test]
         [Category("P2")]
         [Description("DefaultGridItem Image.")]
         [Property("SPEC", "Tizen.NUI.Components.DefaultGridItem.Image A")]
index f831c19..ecea497 100755 (executable)
@@ -264,7 +264,8 @@ namespace Tizen.NUI.Components.Devel.Tests
             tlog.Debug(tag, $"DefaultLinearItem END (OK)");
         }
 
-        [Test]
+        //Todo: this causes BLOCK, should be fixed.
+        //[Test]
         [Category("P1")]
         [Description("DefaultLinearItem Extra.")]
         [Property("SPEC", "Tizen.NUI.Components.DefaultLinearItem.Extra A")]
index 695d124..76508ff 100755 (executable)
@@ -496,5 +496,86 @@ namespace Tizen.NUI.Components.Devel.Tests
 
             tlog.Debug(tag, $"GridLayouterRequestNextFocusableView END (OK)");
         }
+
+        [Test]
+        [Category("P1")]
+        [Description("GridLayouter GetVisibleItem.")]
+        [Property("SPEC", "Tizen.NUI.Components.GridLayouter.GetVisibleItem M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void GridLayouterGetVisibleItem()
+        {
+            tlog.Debug(tag, $"GridLayouterGetVisibleItem START");
+
+            var view = new CollectionView(new List<string>() { "123" }) // 4. Get item if visible or realize new.
+            {
+                Header = new RecyclerViewItem(),
+                Footer = new RecyclerViewItem(),
+                IsGrouped = true,
+            };
+            Assert.IsNotNull(view, "Should not be null");
+
+            view.GroupFooterTemplate = new DataTemplate(typeof(RecyclerViewItem));
+            view.GroupHeaderTemplate = new DataTemplate(typeof(RecyclerViewItem));
+            view.ItemTemplate = new DataTemplate(typeof(RecyclerViewItem));
+
+            var gridLayouter = new GridLayouter();
+            Assert.IsNotNull(gridLayouter, "Should not be null");
+
+            gridLayouter.Initialize(view);
+
+            gridLayouter.RequestLayout(5.0f);
+            gridLayouter.RequestLayout(150.0f, true);
+
+            view.Dispose();
+            gridLayouter.Dispose();
+
+            tlog.Debug(tag, $"GridLayouterGetVisibleItem END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("GridLayouter GetItemSize.")]
+        [Property("SPEC", "Tizen.NUI.Components.GridLayouter.GetItemSize M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void GridLayouterGetItemSize()
+        {
+            tlog.Debug(tag, $"GridLayouterGetItemSize START");
+
+            var view = new CollectionView(new List<string>() { "123", "456", "789" })
+            {
+                Header = new RecyclerViewItem(),
+                Footer = new RecyclerViewItem(),
+                IsGrouped = true,
+            };
+            Assert.IsNotNull(view, "Should not be null");
+
+            view.GroupFooterTemplate = new DataTemplate(typeof(RecyclerViewItem));
+            view.GroupHeaderTemplate = new DataTemplate(typeof(RecyclerViewItem));
+            view.ItemTemplate = new DataTemplate(typeof(RecyclerViewItem));
+
+            var gridLayouter = new GridLayouter();
+            Assert.IsNotNull(gridLayouter, "Should not be null");
+
+            gridLayouter.Initialize(view);
+
+            try
+            {
+                gridLayouter.GetItemSize(1);
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            view.Dispose();
+            gridLayouter.Dispose();
+
+            tlog.Debug(tag, $"GridLayouterGetItemSize END (OK)");
+        }
     }
 }
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/Layouter/TSItemsLayouter.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/Layouter/TSItemsLayouter.cs
new file mode 100755 (executable)
index 0000000..ecb44fa
--- /dev/null
@@ -0,0 +1,266 @@
+using global::System;
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using Tizen.NUI;
+using Tizen.NUI.Components;
+using Tizen.NUI.BaseComponents;
+using System.Collections.Generic;
+using Tizen.NUI.Binding;
+
+namespace Tizen.NUI.Components.Devel.Tests
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [Description("Controls/RecyclerView/Layouter")]
+    public class ItemsLayouterTest
+    {
+        private const string tag = "NUITEST";
+
+        internal class ItemsLayouterImpl : ItemsLayouter
+        {
+            public ItemsLayouterImpl() : base()
+            { }
+
+            public override float CalculateLayoutOrientationSize()
+            {
+                return base.CalculateLayoutOrientationSize();
+            }
+
+            public override float CalculateCandidateScrollPosition(float scrollPosition)
+            {
+                return base.CalculateCandidateScrollPosition(scrollPosition);
+            }
+
+            public override void NotifyDataSetChanged()
+            {
+                base.NotifyDataSetChanged();
+            }
+        }
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("ItemsLayouter CalculateLayoutOrientationSize.")]
+        [Property("SPEC", "Tizen.NUI.Components.ItemsLayouter.CalculateLayoutOrientationSize M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ItemsLayouterCalculateLayoutOrientationSize()
+        {
+            tlog.Debug(tag, $"ItemsLayouterCalculateLayoutOrientationSize START");
+
+            var view = new CollectionView(new List<string>() { "123", "456", "789" })
+            {
+                Header = new RecyclerViewItem(),
+                Footer = new RecyclerViewItem(),
+                IsGrouped = true,
+            };
+            Assert.IsNotNull(view, "Should not be null");
+
+#pragma warning disable Reflection // The code contains reflection
+            view.GroupFooterTemplate = new DataTemplate(typeof(RecyclerViewItem));
+#pragma warning restore Reflection // The code contains reflection
+#pragma warning disable Reflection // The code contains reflection
+            view.GroupHeaderTemplate = new DataTemplate(typeof(RecyclerViewItem));
+#pragma warning restore Reflection // The code contains reflection
+#pragma warning disable Reflection // The code contains reflection
+            view.ItemTemplate = new DataTemplate(typeof(RecyclerViewItem));
+#pragma warning restore Reflection // The code contains reflection
+
+            var itemsLayouter = new ItemsLayouterImpl();
+            Assert.IsNotNull(itemsLayouter, "Should not be null");
+
+            itemsLayouter.Initialize(view);
+
+            try
+            {
+                itemsLayouter.CalculateLayoutOrientationSize();
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            view.Dispose();
+            itemsLayouter.Dispose();
+
+            tlog.Debug(tag, $"ItemsLayouterCalculateLayoutOrientationSize END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("ItemsLayouter CalculateCandidateScrollPosition.")]
+        [Property("SPEC", "Tizen.NUI.Components.ItemsLayouter.CalculateCandidateScrollPosition M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ItemsLayouterCalculateCandidateScrollPosition()
+        {
+            tlog.Debug(tag, $"ItemsLayouterCalculateCandidateScrollPosition START");
+
+            var view = new CollectionView(new List<string>() { "123", "456", "789" })
+            {
+                Header = new RecyclerViewItem(),
+                Footer = new RecyclerViewItem(),
+                IsGrouped = true,
+            };
+            Assert.IsNotNull(view, "Should not be null");
+
+#pragma warning disable Reflection // The code contains reflection
+            view.GroupFooterTemplate = new DataTemplate(typeof(RecyclerViewItem));
+#pragma warning restore Reflection // The code contains reflection
+#pragma warning disable Reflection // The code contains reflection
+            view.GroupHeaderTemplate = new DataTemplate(typeof(RecyclerViewItem));
+#pragma warning restore Reflection // The code contains reflection
+#pragma warning disable Reflection // The code contains reflection
+            view.ItemTemplate = new DataTemplate(typeof(RecyclerViewItem));
+#pragma warning restore Reflection // The code contains reflection
+
+            var itemsLayouter = new ItemsLayouterImpl();
+            Assert.IsNotNull(itemsLayouter, "Should not be null");
+
+            itemsLayouter.Initialize(view);
+
+            try
+            {
+                itemsLayouter.CalculateCandidateScrollPosition(0.3f);
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            view.Dispose();
+            itemsLayouter.Dispose();
+
+            tlog.Debug(tag, $"ItemsLayouterCalculateCandidateScrollPosition END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("ItemsLayouter NotifyDataSetChanged.")]
+        [Property("SPEC", "Tizen.NUI.Components.ItemsLayouter.NotifyDataSetChanged M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ItemsLayouterNotifyDataSetChanged()
+        {
+            tlog.Debug(tag, $"ItemsLayouterNotifyDataSetChanged START");
+
+            var view = new CollectionView(new List<string>() { "123", "456", "789" })
+            {
+                Header = new RecyclerViewItem(),
+                Footer = new RecyclerViewItem(),
+                IsGrouped = true,
+            };
+            Assert.IsNotNull(view, "Should not be null");
+
+#pragma warning disable Reflection // The code contains reflection
+            view.GroupFooterTemplate = new DataTemplate(typeof(RecyclerViewItem));
+#pragma warning restore Reflection // The code contains reflection
+#pragma warning disable Reflection // The code contains reflection
+            view.GroupHeaderTemplate = new DataTemplate(typeof(RecyclerViewItem));
+#pragma warning restore Reflection // The code contains reflection
+#pragma warning disable Reflection // The code contains reflection
+            view.ItemTemplate = new DataTemplate(typeof(RecyclerViewItem));
+#pragma warning restore Reflection // The code contains reflection
+
+            var itemsLayouter = new ItemsLayouterImpl();
+            Assert.IsNotNull(itemsLayouter, "Should not be null");
+
+            itemsLayouter.Initialize(view);
+
+            try
+            {
+                itemsLayouter.NotifyDataSetChanged();
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            view.Dispose();
+            itemsLayouter.Dispose();
+
+            tlog.Debug(tag, $"ItemsLayouterNotifyDataSetChanged END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("ItemsLayouter RequestNextFocusableView.")]
+        [Property("SPEC", "Tizen.NUI.Components.ItemsLayouter.RequestNextFocusableView M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "xiaohui.fang@samsung.com")]
+        public void ItemsLayouterRequestNextFocusableView()
+        {
+            tlog.Debug(tag, $"ItemsLayouterRequestNextFocusableView");
+
+            var view = new CollectionView(new List<string>() { "123", "456" })
+            {
+                Header = new RecyclerViewItem(),
+                Footer = new RecyclerViewItem(),
+                IsGrouped = true,
+            };
+            Assert.IsNotNull(view, "Should not be null");
+
+#pragma warning disable Reflection // The code contains reflection
+            view.GroupFooterTemplate = new DataTemplate(typeof(RecyclerViewItem));
+#pragma warning restore Reflection // The code contains reflection
+#pragma warning disable Reflection // The code contains reflection
+            view.GroupHeaderTemplate = new DataTemplate(typeof(RecyclerViewItem));
+#pragma warning restore Reflection // The code contains reflection
+#pragma warning disable Reflection // The code contains reflection
+            view.ItemTemplate = new DataTemplate(typeof(RecyclerViewItem));
+#pragma warning restore Reflection // The code contains reflection
+
+            var itemsLayouter = new ItemsLayouterImpl();
+            Assert.IsNotNull(itemsLayouter, "Should not be null");
+
+            itemsLayouter.Initialize(view);
+            itemsLayouter.RequestLayout(100.0f);
+
+            var source = new CustomGroupItemSource(view)
+            {
+                Position = 1,
+            };
+
+            var orientationSize = itemsLayouter.CalculateLayoutOrientationSize();
+            tlog.Debug(tag, "orientationSize : " + orientationSize);
+
+            var scrollPosition = itemsLayouter.CalculateCandidateScrollPosition(0.0f);
+            tlog.Debug(tag, "scrollPosition : " + scrollPosition);
+
+            itemsLayouter.NotifyItemRangeInserted(source, 0, 10);
+
+            itemsLayouter.RequestNextFocusableView(view, View.FocusDirection.Up, true);
+            itemsLayouter.RequestNextFocusableView(view, View.FocusDirection.Down, true);
+            itemsLayouter.RequestNextFocusableView(view, View.FocusDirection.PageUp, true);
+            itemsLayouter.RequestNextFocusableView(view, View.FocusDirection.PageDown, true);
+            itemsLayouter.RequestNextFocusableView(view, View.FocusDirection.Left, true);
+            itemsLayouter.RequestNextFocusableView(view, View.FocusDirection.Right, true);
+
+            view.Dispose();
+            itemsLayouter.Dispose();
+
+            source.Dispose();
+
+            tlog.Debug(tag, $"ItemsLayouterRequestNextFocusableView END (OK)");
+        }
+    }
+}
index 1b38d0f..4de0b13 100755 (executable)
@@ -685,7 +685,8 @@ namespace Tizen.NUI.Components.Devel.Tests
             tlog.Debug(tag, $"CollectionViewScrollToIndex END (OK)");
         }
 
-        [Test]
+        //Todo: this causes BLOCK, should be fixed.
+        //[Test]
         [Category("P1")]
         [Description("CollectionView GetNextFocusableView.")]
         [Property("SPEC", "Tizen.NUI.Components.CollectionView.GetNextFocusableView M")]
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/TSRecyclerView.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/TSRecyclerView.cs
new file mode 100755 (executable)
index 0000000..59fa583
--- /dev/null
@@ -0,0 +1,206 @@
+using NUnit.Framework;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Binding;
+
+namespace Tizen.NUI.Components.Devel.Tests
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [NUnit.Framework.Description("Controls/RecyclerView/RecyclerView")]
+    class RecyclerViewTest
+    {
+        private const string tag = "NUITEST";
+        public List<TestItem> Source { get; private set; } = new List<TestItem>();
+
+        public void CreateTestSource(int count)
+        {
+            var Rand = new Random();
+
+            for (int i = 0; i < count; i++)
+                Source.Add(new TestItem(i, $"Test Item [{i}]", new Color(((float)(Rand.Next(255)) / 255), ((float)(Rand.Next(255)) / 255), ((float)(Rand.Next(255)) / 255), 1)));
+        }
+
+        internal class RecyclerViewImpl : RecyclerView
+        {
+            public RecyclerViewImpl() : base()
+            { }
+
+            public float OnAdjustTargetPositionOfScrollAnimation(float position)
+            {
+                return base.AdjustTargetPositionOfScrollAnimation(position);
+            }
+        }
+
+        internal class TestItem
+        {
+            int index;
+            string name;
+            Color color;
+            bool isSelected;
+
+            public TestItem(int itemIndex, string itemName, Color itemColor)
+            {
+                Index = itemIndex;
+                Name = itemName;
+                BgColor = itemColor;
+                IsSelected = false;
+            }
+
+            public int Index
+            {
+                get => index;
+                set { index = value; }
+            }
+
+            public string Name
+            {
+                get => name;
+                set { name = value; }
+            }
+
+            public Color BgColor
+            {
+                get => color;
+                set { color = value; }
+            }
+
+            public bool IsSelected
+            {
+                get => isSelected;
+                set { isSelected = value; }
+            }
+        }
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("RecyclerView ItemsSource.")]
+        [Property("SPEC", "Tizen.NUI.Components.RecyclerView.ItemsSource A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void RecyclerViewItemsSource()
+        {
+            tlog.Debug(tag, $"RecyclerViewItemsSource START");
+
+            var testingTarget = new RecyclerViewImpl()
+            { 
+                Size = new Size(Window.Instance.WindowSize.Width, Window.Instance.WindowSize.Height),
+            };
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<RecyclerView>(testingTarget, "should be an instance of testing target class!");
+
+            CreateTestSource(50);
+            testingTarget.ItemsSource = Source;
+            tlog.Debug(tag, "ItemSouce : " + testingTarget.ItemsSource);
+
+            testingTarget.ItemTemplate = new DataTemplate(() =>
+            {
+                var item = new RecyclerViewItem()
+                {
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    WidthSpecification = 200,
+                };
+                item.SetBinding(View.BackgroundColorProperty, "BgColor");
+
+                var label = new TextLabel()
+                {
+                    ParentOrigin = Tizen.NUI.ParentOrigin.Center,
+                    PivotPoint = Tizen.NUI.PivotPoint.Center,
+                    PositionUsesPivotPoint = true,
+                };
+                label.PixelSize = 30;
+                label.SetBinding(TextLabel.TextProperty, "Index");
+                item.Add(label);
+
+                return item;
+            });
+            tlog.Debug(tag, "ItemTemplate : " + testingTarget.ItemTemplate);
+
+            // OnRelayout
+            CreateTestSource(100);
+            testingTarget.ItemsSource = Source;
+            tlog.Debug(tag, "ItemSouce : " + testingTarget.ItemsSource);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"RecyclerViewItemsSource END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("RecyclerView AdjustTargetPositionOfScrollAnimation.")]
+        [Property("SPEC", "Tizen.NUI.Components.RecyclerView.AdjustTargetPositionOfScrollAnimation M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void RecyclerViewAdjustTargetPositionOfScrollAnimation()
+        {
+            tlog.Debug(tag, $"RecyclerViewAdjustTargetPositionOfScrollAnimation START");
+
+            var testingTarget = new RecyclerViewImpl()
+            {
+                Size = new Size(Window.Instance.WindowSize.Width, Window.Instance.WindowSize.Height),
+            };
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<RecyclerView>(testingTarget, "should be an instance of testing target class!");
+
+            CreateTestSource(50);
+            testingTarget.ItemsSource = Source;
+            tlog.Debug(tag, "ItemSouce : " + testingTarget.ItemsSource);
+
+            testingTarget.ItemTemplate = new DataTemplate(() =>
+            {
+                var item = new RecyclerViewItem()
+                {
+                    HeightSpecification = LayoutParamPolicies.MatchParent,
+                    WidthSpecification = 200,
+                };
+                item.SetBinding(View.BackgroundColorProperty, "BgColor");
+
+                var label = new TextLabel()
+                {
+                    ParentOrigin = Tizen.NUI.ParentOrigin.Center,
+                    PivotPoint = Tizen.NUI.PivotPoint.Center,
+                    PositionUsesPivotPoint = true,
+                };
+                label.PixelSize = 30;
+                label.SetBinding(TextLabel.TextProperty, "Index");
+                item.Add(label);
+
+                return item;
+            });
+            tlog.Debug(tag, "ItemTemplate : " + testingTarget.ItemTemplate);
+
+            try
+            {
+                testingTarget.OnAdjustTargetPositionOfScrollAnimation(300.0f);
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"RecyclerViewAdjustTargetPositionOfScrollAnimation END (OK)");
+        }
+    }
+}
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/TSSelectionChangedEventArgs.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/TSSelectionChangedEventArgs.cs
new file mode 100755 (executable)
index 0000000..95a9aac
--- /dev/null
@@ -0,0 +1,60 @@
+using NUnit.Framework;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Collections.Specialized;
+using System.Text;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Binding;
+
+namespace Tizen.NUI.Components.Devel.Tests
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [NUnit.Framework.Description("Controls/RecyclerView/SelectionChangedEventArgs")]
+    public class SelectionChangedEventArgsTest
+    {
+        private const string tag = "NUITEST";
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("SelectionChangedEventArgs PreviousSelection .")]
+        [Property("SPEC", "Tizen.NUI.Components.SelectionChangedEventArgs.PreviousSelection A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void SelectionChangedEventArgsPreviousSelection()
+        {
+            tlog.Debug(tag, $"SelectionChangedEventArgsPreviousSelection START");
+
+            List<string> list = new List<string>();
+            list.Add("Russia");
+            list.Add("Ukraine");
+            list.Add("America");
+
+            var testingTarget = new SelectionChangedEventArgs(list[1], list[2]);
+            Assert.IsNotNull(testingTarget, "should be not null");
+            Assert.IsInstanceOf<SelectionChangedEventArgs>(testingTarget, "should be an instance of testing target class!");
+
+            tlog.Debug(tag, "PreviousSelection : " + testingTarget.PreviousSelection);
+            tlog.Debug(tag, "CurrentSelection : " + testingTarget.CurrentSelection);
+
+            tlog.Debug(tag, $"SelectionChangedEventArgsPreviousSelection END (OK)");
+        }
+    }
+}
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/TSSelectionList.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/RecyclerView/TSSelectionList.cs
new file mode 100755 (executable)
index 0000000..6c7ed7b
--- /dev/null
@@ -0,0 +1,243 @@
+using NUnit.Framework;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Collections.Specialized;
+using System.Text;
+using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Binding;
+
+namespace Tizen.NUI.Components.Devel.Tests
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [NUnit.Framework.Description("Controls/RecyclerView/SelectionList")]
+    public class SelectionListTest
+    {
+        private const string tag = "NUITEST";
+        private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { }
+
+        private class TestModel : ObservableCollection<string>
+        {
+            private string[] namePool = {
+                "Cat",
+                "Boy",
+                "Arm muscle",
+                "Girl",
+                "House",
+                "Cafe",
+                "Statue",
+                "Sea",
+                "hosepipe",
+                "Police",
+                "Rainbow",
+                "Icicle",
+                "Tower with the Moon",
+                "Giraffe",
+                "Camel",
+                "Zebra",
+                "Red Light",
+                "Banana",
+                "Lion",
+                "Espresso",
+            };
+
+            public TestModel()
+            {
+                CreateData(this, 20);
+            }
+
+            private ObservableCollection<string> CreateData(ObservableCollection<string> result, int count)
+            {
+                for (int i = 0; i < count; i++)
+                {
+                    result.Add(namePool[i % 20]);
+                }
+                return result;
+            }
+        }
+
+        private DataTemplate testDataTemplate;
+
+        internal class NCImpl : INotifyCollectionChanged
+        {
+            public event NotifyCollectionChangedEventHandler CollectionChanged;
+        }
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+
+            testDataTemplate = new DataTemplate(() =>
+            {
+                var rand = new Random();
+                DefaultLinearItem item = new DefaultLinearItem();
+                //Set Width Specification as MatchParent to fit the Item width with parent View.
+                item.WidthSpecification = LayoutParamPolicies.MatchParent;
+
+                //Decorate Label
+                item.Label.SetBinding(TextLabel.TextProperty, "ViewLabel");
+                item.Label.HorizontalAlignment = HorizontalAlignment.Begin;
+
+                //Decorate SubLabel
+                if ((rand.Next() % 2) == 0)
+                {
+                    item.SubLabel.SetBinding(TextLabel.TextProperty, "Name");
+                    item.SubLabel.HorizontalAlignment = HorizontalAlignment.Begin;
+                }
+
+                return item;
+            });
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("SelectionList Contains.")]
+        [Property("SPEC", "Tizen.NUI.Components.SelectionList.Contains M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void SelectionListContains()
+        {
+            tlog.Debug(tag, $"SelectionListContains START");
+
+            var model = new TestModel();
+
+            using (CollectionView cv = new CollectionView(model))
+            {
+                var testingTarget = new SelectionList(cv);
+                Assert.IsNotNull(testingTarget, "should be not null");
+                Assert.IsInstanceOf<SelectionList>(testingTarget, "should be an instance of testing target class!");
+
+                tlog.Debug(tag, "IsReadOnly : " + testingTarget.IsReadOnly.ToString());
+
+                try
+                {
+                    testingTarget.Add("TEST");
+                    var result = testingTarget.Contains("TEST");
+                    tlog.Debug(tag, "Contains : " + result);
+                }
+                catch (Exception e)
+                {
+                    tlog.Debug(tag, e.Message.ToString());
+                    Assert.Fail("Caught Exception : Failed!");
+                }
+            }
+                
+            tlog.Debug(tag, $"SelectionListContains END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("SelectionList CopyTo.")]
+        [Property("SPEC", "Tizen.NUI.Components.SelectionList.CopyTo M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void SelectionListCopyTo()
+        {
+            tlog.Debug(tag, $"SelectionListCopyTo START");
+
+            var model = new TestModel();
+            string[] list = { "Jiangsu", "Zhejiang", "Shanghai" };
+
+            using (CollectionView cv = new CollectionView(model))
+            {
+                var testingTarget = new SelectionList(cv);
+                Assert.IsNotNull(testingTarget, "should be not null");
+                Assert.IsInstanceOf<SelectionList>(testingTarget, "should be an instance of testing target class!");
+
+                testingTarget.CopyTo(list, 1);
+
+                var result = testingTarget.Remove("Zhejiang");
+                tlog.Debug(tag, "Remove : " + result);
+
+                testingTarget.Insert(0, "Beijing");
+                tlog.Debug(tag, "Contains : " + testingTarget.Contains("Beijing"));
+
+                testingTarget.RemoveAt(0);
+                tlog.Debug(tag, "Contains : " + testingTarget.Contains("Beijing"));
+            }
+
+            tlog.Debug(tag, $"SelectionListCopyTo END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("SelectionList OnCollectionChanged.")]
+        [Property("SPEC", "Tizen.NUI.Components.SelectionList.OnCollectionChanged M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void SelectionListOnCollectionChanged()
+        {
+            tlog.Debug(tag, $"SelectionListOnCollectionChanged START");
+
+            var model = new TestModel();
+            string[] list = { "Jiangsu", "Zhejiang", "Shanghai" };
+
+            var incc = new NCImpl();
+            incc.CollectionChanged += OnCollectionChanged;
+
+            List<object> item = new List<object>();
+            item.Add(item);
+
+            using (CollectionView cv = new CollectionView(model))
+            {
+                var testingTarget = new SelectionList(cv, item);
+                Assert.IsNotNull(testingTarget, "should be not null");
+                Assert.IsInstanceOf<SelectionList>(testingTarget, "should be an instance of testing target class!");
+
+                testingTarget.Insert(0, "Beijing");
+                tlog.Debug(tag, "Contains : " + testingTarget.Contains("Beijing"));
+            }
+
+            tlog.Debug(tag, $"SelectionListOnCollectionChanged END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("SelectionList GetEnumerator.")]
+        [Property("SPEC", "Tizen.NUI.Components.SelectionList.GetEnumerator M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void SelectionListGetEnumerator()
+        {
+            tlog.Debug(tag, $"SelectionListGetEnumerator START");
+
+            var model = new TestModel();
+            string[] list = { "Jiangsu", "Zhejiang", "Shanghai" };
+
+            using (CollectionView cv = new CollectionView(model))
+            {
+                var testingTarget = new SelectionList(cv);
+                Assert.IsNotNull(testingTarget, "should be not null");
+                Assert.IsInstanceOf<SelectionList>(testingTarget, "should be an instance of testing target class!");
+
+                testingTarget.Insert(0, "China");
+
+                var index = testingTarget.IndexOf("China");
+                tlog.Debug(tag, "IndexOf : " + index);
+
+                var result = testingTarget.GetEnumerator();
+                tlog.Debug(tag, "Enumerator : " + result);
+            }
+
+            tlog.Debug(tag, $"SelectionListGetEnumerator END (OK)");
+        }
+    }
+}
index ca3c935..0a8b1a6 100755 (executable)
@@ -180,5 +180,48 @@ namespace Tizen.NUI.Components.Devel.Tests
             testingTarget.Dispose();
             tlog.Debug(tag, $"ButtonOnRelayout END (OK)");
         }
+
+        [Test]
+        [Category("P2")]
+        [Description("Button OnRelayout.")]
+        [Property("SPEC", "Tizen.NUI.Components.Button.OnRelayout M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public async Task ButtonOnRelayoutOriginalSize()
+        {
+            tlog.Debug(tag, $"ButtonOnRelayoutOriginalSize START");
+
+            var testingTarget = new MyButton()
+            {
+                Text = "Button",
+                Size = new Size(100, 200),
+                BackgroundColor = Color.Green,
+                IsEnabled = true,
+                IconURL = image_path,
+                IconPadding = 4,
+                IconRelativeOrientation = Button.IconOrientation.Right
+            };
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<Button>(testingTarget, "Should return Button instance.");
+
+            NUIApplication.GetDefaultWindow().GetDefaultLayer().Add(testingTarget);
+
+            try
+            {
+                testingTarget.Size = new Size(100, 200);
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+            }
+
+            await Task.Delay(200);
+            NUIApplication.GetDefaultWindow().GetDefaultLayer().Remove(testingTarget);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ButtonOnRelayoutOriginalSize END (OK)");
+        }
     }
 }
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSButton.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Controls/TSButton.cs
new file mode 100755 (executable)
index 0000000..b3d6d60
--- /dev/null
@@ -0,0 +1,414 @@
+using global::System;
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using Tizen.NUI;
+using Tizen.NUI.Components;
+using Tizen.NUI.BaseComponents;
+using System.Threading.Tasks;
+
+
+namespace Tizen.NUI.Components.Devel.Tests.testcase.Controls
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [Description("Controls/Button")]
+    class ButtonTest
+    {
+        private const string tag = "NUITEST";
+        private string image_path = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "picture.png";
+
+        [Obsolete]
+        private void OnStateChangedEvent(object sender, Button.StateChangedEventArgs e) { }
+
+        internal class MyButton : Button
+        {
+            public MyButton() : base()
+            { }
+
+            public override bool OnKey(Key key)
+            {
+                return base.OnKey(key);
+            }
+
+            public override void OnFocusGained()
+            {
+                base.OnFocusGained();
+            }
+
+            public override void OnFocusLost()
+            {
+                base.OnFocusLost();
+            }
+        }
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Button StateChangedEvent.")]
+        [Property("SPEC", "Tizen.NUI.Components.Button.StateChangedEvent A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        [Obsolete]
+        public void ButtonStateChangedEvent()
+        {
+            tlog.Debug(tag, $"ButtonStateChangedEvent START");
+
+            var testingTarget = new MyButton()
+            {
+                Text = "Button",
+                Size = new Size(100, 200),
+                BackgroundColor = Color.Green,
+                IsEnabled = true,
+                IconURL = image_path,
+                IconPadding = 4,
+                IconRelativeOrientation = Button.IconOrientation.Right
+            };
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<Button>(testingTarget, "Should return Button instance.");
+
+            NUIApplication.GetDefaultWindow().GetDefaultLayer().Add(testingTarget);
+
+            testingTarget.StateChangedEvent += OnStateChangedEvent;
+            testingTarget.StateChangedEvent -= OnStateChangedEvent;
+
+            NUIApplication.GetDefaultWindow().GetDefaultLayer().Remove(testingTarget);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ButtonStateChangedEvent END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Button OverlayImage.")]
+        [Property("SPEC", "Tizen.NUI.Components.Button.OverlayImage A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ButtonOverlayImage()
+        {
+            tlog.Debug(tag, $"ButtonOverlayImage START");
+
+            var testingTarget = new MyButton()
+            {
+                Text = "Button",
+                Size = new Size(100, 200),
+                BackgroundColor = Color.Green,
+                IsEnabled = true,
+                IconURL = image_path,
+                IconPadding = 4,
+                IconRelativeOrientation = Button.IconOrientation.Right
+            };
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<Button>(testingTarget, "Should return Button instance.");
+
+            NUIApplication.GetDefaultWindow().GetDefaultLayer().Add(testingTarget);
+
+            testingTarget.OverlayImage.Border = new Rectangle(5, 5, 5, 5);
+            tlog.Debug(tag, "testingTarget.OverlayImage.Border : " + testingTarget.OverlayImage.Border);
+
+            NUIApplication.GetDefaultWindow().GetDefaultLayer().Remove(testingTarget);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ButtonOverlayImage END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Button TextLabel.")]
+        [Property("SPEC", "Tizen.NUI.Components.Button.TextLabel A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ButtonTextLabel()
+        {
+            tlog.Debug(tag, $"ButtonTextLabel START");
+
+            var testingTarget = new MyButton()
+            {
+                Text = "Button",
+                Size = new Size(100, 200),
+                BackgroundColor = Color.Green,
+                IsEnabled = true,
+                IconURL = image_path,
+                IconPadding = 4,
+                IconRelativeOrientation = Button.IconOrientation.Right
+            };
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<Button>(testingTarget, "Should return Button instance.");
+
+            NUIApplication.GetDefaultWindow().GetDefaultLayer().Add(testingTarget);
+
+            testingTarget.TextLabel.PointSize = 20.0f;
+            tlog.Debug(tag, "testingTarget.TextLabel.PointSize : " + testingTarget.TextLabel.PointSize);
+
+            NUIApplication.GetDefaultWindow().GetDefaultLayer().Remove(testingTarget);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ButtonTextLabel END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Button TranslatableText.")]
+        [Property("SPEC", "Tizen.NUI.Components.Button.TranslatableText A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ButtonTranslatableText()
+        {
+            tlog.Debug(tag, $"ButtonTranslatableText START");
+
+            var testingTarget = new MyButton()
+            {
+                Text = "Button",
+                Size = new Size(100, 200),
+                BackgroundColor = Color.Green,
+                IsEnabled = true,
+                IconURL = image_path,
+                IconPadding = 4,
+                IconRelativeOrientation = Button.IconOrientation.Right
+            };
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<Button>(testingTarget, "Should return Button instance.");
+
+            NUIApplication.GetDefaultWindow().GetDefaultLayer().Add(testingTarget);
+
+            testingTarget.TranslatableText = "TranslatableText";
+            tlog.Debug(tag, "testingTarget.TranslatableText : " + testingTarget.TranslatableText);
+
+            NUIApplication.GetDefaultWindow().GetDefaultLayer().Remove(testingTarget);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ButtonTranslatableText END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Button IconSize.")]
+        [Property("SPEC", "Tizen.NUI.Components.Button.IconSize A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ButtonIconSize()
+        {
+            tlog.Debug(tag, $"ButtonIconSize START");
+
+            var testingTarget = new MyButton()
+            {
+                Text = "Button",
+                Size = new Size(100, 200),
+                BackgroundColor = Color.Green,
+                IsEnabled = true,
+                IconURL = image_path,
+                IconPadding = 4,
+                IconRelativeOrientation = Button.IconOrientation.Right
+            };
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<Button>(testingTarget, "Should return Button instance.");
+
+            NUIApplication.GetDefaultWindow().GetDefaultLayer().Add(testingTarget);
+
+            testingTarget.IconSize = new Size(100, 200);
+            tlog.Debug(tag, "testingTarget.IconSize.Width : " + testingTarget.IconSize.Width);
+
+            NUIApplication.GetDefaultWindow().GetDefaultLayer().Remove(testingTarget);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ButtonIconSize END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Button OnKey.")]
+        [Property("SPEC", "Tizen.NUI.Components.Button.OnKey M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        [Obsolete]
+        public void ButtonOnKey()
+        {
+            tlog.Debug(tag, $"ButtonOnKey START");
+
+            var testingTarget = new MyButton();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<Button>(testingTarget, "Should return Button instance.");
+
+            testingTarget.IsEnabled = true;
+            testingTarget.IsSelected = true;
+
+            Key key = null;
+            var result = testingTarget.OnKey(key);
+            Assert.AreEqual(false, result, "should be equal here!");
+
+            key = new Key()
+            {
+                State = Key.StateType.Up,
+                KeyPressedName = "Return"
+            };
+            result = testingTarget.OnKey(key);
+            tlog.Debug(tag, "OnKey : " + result);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ButtonOnKey END (OK)");
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Button OnKey.")]
+        [Property("SPEC", "Tizen.NUI.Components.Button.OnKey M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        [Obsolete]
+        public void ButtonOnKeyIsSelectableAsFalse()
+        {
+            tlog.Debug(tag, $"ButtonOnKeyIsSelectableAsFalse START");
+
+            var testingTarget = new MyButton();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<Button>(testingTarget, "Should return Button instance.");
+
+            testingTarget.IsEnabled = true;
+            testingTarget.IsSelected = false;
+
+            Key key = null;
+            var result = testingTarget.OnKey(key);
+            Assert.AreEqual(false, result, "should be equal here!");
+
+            key = new Key()
+            {
+                State = Key.StateType.Up,
+                KeyPressedName = "Return"
+            };
+            result = testingTarget.OnKey(key);
+            tlog.Debug(tag, "OnKey : " + result);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ButtonOnKeyIsSelectableAsFalse END (OK)");
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("Button OnKey.")]
+        [Property("SPEC", "Tizen.NUI.Components.Button.OnKey M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        [Obsolete]
+        public void ButtonOnKeyIsEnabledAsFalse()
+        {
+            tlog.Debug(tag, $"ButtonOnKeyIsEnabledAsFalse START");
+
+            var testingTarget = new MyButton();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<Button>(testingTarget, "Should return Button instance.");
+
+            testingTarget.IsEnabled = false;
+            testingTarget.IsSelected = false;
+
+            Key key = null;
+            var result = testingTarget.OnKey(key);
+            Assert.AreEqual(false, result, "should be equal here!");
+
+            key = new Key()
+            {
+                State = Key.StateType.Up,
+                KeyPressedName = "Return"
+            };
+            result = testingTarget.OnKey(key);
+            tlog.Debug(tag, "OnKey : " + result);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ButtonOnKeyIsEnabledAsFalse END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Button OnFocusGained.")]
+        [Property("SPEC", "Tizen.NUI.Components.Button.OnFocusGained M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        [Obsolete]
+        public void ButtonOnFocusGained()
+        {
+            tlog.Debug(tag, $"ButtonOnFocusGained START");
+
+            var testingTarget = new MyButton();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<Button>(testingTarget, "Should return Button instance.");
+
+            testingTarget.IsEnabled = true;
+            testingTarget.IsSelected = true;
+            testingTarget.Focusable = true;
+
+            try
+            {
+                testingTarget.OnFocusGained();
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ButtonOnFocusGained END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Button OnFocusLost.")]
+        [Property("SPEC", "Tizen.NUI.Components.Button.OnFocusLost M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        [Obsolete]
+        public void ButtonOnFocusLost()
+        {
+            tlog.Debug(tag, $"ButtonOnFocusLost START");
+
+            var testingTarget = new MyButton();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<Button>(testingTarget, "Should return Button instance.");
+
+            testingTarget.IsEnabled = true;
+            testingTarget.IsSelected = true;
+            testingTarget.Focusable = true;
+
+            try
+            {
+                testingTarget.OnFocusLost();
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ButtonOnFocusLost END (OK)");
+        }
+    }
+}
index b87e674..ebef9d1 100755 (executable)
@@ -375,5 +375,284 @@ namespace Tizen.NUI.Components.Devel.Tests
 
             tlog.Debug(tag, $"ButtonGroupItemImageShadow END (OK)");
         }
+
+        [Test]
+        [Category("P2")]
+        [Description("ButtonGroup GetItem.")]
+        [Property("SPEC", "Tizen.NUI.Components.ButtonGroup.GetItem M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ButtonGroupGetItemWithWrongIndex()
+        {
+            tlog.Debug(tag, $"ButtonGroupGetItemWithWrongIndex START");
+
+            using (View view = new View() { Size = new Size(100, 200) })
+            {
+                var testingTarget = new ButtonGroup(view);
+                Assert.IsNotNull(testingTarget, "null handle");
+                Assert.IsInstanceOf<ButtonGroup>(testingTarget, "Should return ButtonGroup instance.");
+
+                using (Button bt = new Button() { Size = new Size(20, 30) })
+                {
+                    testingTarget.AddItem(bt);
+                    tlog.Debug(tag, "Count : " + testingTarget.Count);
+                    tlog.Debug(tag, "Contains : " + testingTarget.Contains(bt));
+
+                    try
+                    {
+                        testingTarget.GetItem(-1);
+                    }
+                    catch (Exception e)
+                    {
+                        testingTarget.Dispose();
+                        tlog.Debug(tag, e.Message.ToString());
+                        tlog.Debug(tag, $"ButtonGroupGetItemWithWrongIndex End");
+                        Assert.Pass("Caught exception : Passed!");
+                    }
+                }
+            }
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("ButtonGroup AddItem.")]
+        [Property("SPEC", "Tizen.NUI.Components.ButtonGroup.AddItem M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ButtonGroupAddItemPrexisting()
+        {
+            tlog.Debug(tag, $"ButtonGroupAddItemPrexisting START");
+
+            using (View view = new View() { Size = new Size(100, 200) })
+            {
+                var testingTarget = new ButtonGroup(view);
+                Assert.IsNotNull(testingTarget, "null handle");
+                Assert.IsInstanceOf<ButtonGroup>(testingTarget, "Should return ButtonGroup instance.");
+
+                using (Button bt = new Button() { Size = new Size(20, 30) })
+                {
+                    testingTarget.AddItem(bt);
+                    tlog.Debug(tag, "Count : " + testingTarget.Count);
+                    tlog.Debug(tag, "Contains : " + testingTarget.Contains(bt));
+
+                    testingTarget.AddItem(bt);
+                    Assert.AreEqual(1, testingTarget.Count, "Should be equal!");
+                }
+
+                testingTarget.Dispose();
+            }
+
+            tlog.Debug(tag, $"ButtonGroupAddItemPrexisting End");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("ButtonGroup RemoveItem.")]
+        [Property("SPEC", "Tizen.NUI.Components.ButtonGroup.RemoveItem M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ButtonGroupRemoveItem()
+        {
+            tlog.Debug(tag, $"ButtonGroupRemoveItem START");
+
+            using (View view = new View() { Size = new Size(100, 200) })
+            {
+                var testingTarget = new ButtonGroup(view);
+                Assert.IsNotNull(testingTarget, "null handle");
+                Assert.IsInstanceOf<ButtonGroup>(testingTarget, "Should return ButtonGroup instance.");
+
+                using (Button bt = new Button() { Size = new Size(20, 30) })
+                {
+                    testingTarget.AddItem(bt);
+                    tlog.Debug(tag, "Count : " + testingTarget.Count);
+                    tlog.Debug(tag, "Contains : " + testingTarget.Contains(bt));
+
+                    testingTarget.RemoveItem(bt);
+                    Assert.AreEqual(0, testingTarget.Count, "Should be equal!");
+                }
+
+                testingTarget.Dispose();
+            }
+
+            tlog.Debug(tag, $"ButtonGroupRemoveItem End");
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("ButtonGroup RemoveItem.")]
+        [Property("SPEC", "Tizen.NUI.Components.ButtonGroup.RemoveItem M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ButtonGroupRemoveItemWithNull()
+        {
+            tlog.Debug(tag, $"ButtonGroupRemoveItemWithNull START");
+
+            using (View view = new View() { Size = new Size(100, 200) })
+            {
+                var testingTarget = new ButtonGroup(view);
+                Assert.IsNotNull(testingTarget, "null handle");
+                Assert.IsInstanceOf<ButtonGroup>(testingTarget, "Should return ButtonGroup instance.");
+
+                try
+                {
+                    Button bt = null;
+                    testingTarget.RemoveItem(bt);
+                }
+                catch (Exception e)
+                {
+                    tlog.Debug(tag, e.Message.ToString());
+                    Assert.Fail("Caught Exception : Failed!");
+                }
+
+                testingTarget.Dispose();
+            }
+
+            tlog.Debug(tag, $"ButtonGroupRemoveItemWithNull End");
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("ButtonGroup RemoveItem.")]
+        [Property("SPEC", "Tizen.NUI.Components.ButtonGroup.RemoveItem M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ButtonGroupRemoveItemNotBelongToTheGroup()
+        {
+            tlog.Debug(tag, $"ButtonGroupRemoveItemNotBelongToTheGroup START");
+
+            using (View view = new View() { Size = new Size(100, 200) })
+            {
+                var testingTarget = new ButtonGroup(view);
+                Assert.IsNotNull(testingTarget, "null handle");
+                Assert.IsInstanceOf<ButtonGroup>(testingTarget, "Should return ButtonGroup instance.");
+
+                try
+                {
+                    using (Button bt = new Button() { Size = new Size(20, 30) })
+                    {
+                        // bt not added into the group
+                        testingTarget.RemoveItem(bt);
+                    }
+                }
+                catch (Exception e)
+                {
+                    tlog.Debug(tag, e.Message.ToString());
+                    Assert.Fail("Caught Exception : Failed!");
+                }
+
+                testingTarget.Dispose();
+            }
+
+            tlog.Debug(tag, $"ButtonGroupRemoveItemNotBelongToTheGroup End");
+        }
+
+        [Test]
+        [Category("P2")]
+        [Description("ButtonGroup RemoveItem.")]
+        [Property("SPEC", "Tizen.NUI.Components.ButtonGroup.GetItem M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ButtonGroupRemoveItemWithWrongIndex()
+        {
+            tlog.Debug(tag, $"ButtonGroupRemoveItemWithWrongIndex START");
+
+            using (View view = new View() { Size = new Size(100, 200) })
+            {
+                var testingTarget = new ButtonGroup(view);
+                Assert.IsNotNull(testingTarget, "null handle");
+                Assert.IsInstanceOf<ButtonGroup>(testingTarget, "Should return ButtonGroup instance.");
+
+                using (Button bt = new Button() { Size = new Size(20, 30) })
+                {
+                    testingTarget.AddItem(bt);
+                    tlog.Debug(tag, "Count : " + testingTarget.Count);
+                    tlog.Debug(tag, "Contains : " + testingTarget.Contains(bt));
+
+                    try
+                    {
+                        testingTarget.RemoveItem(-1);
+                    }
+                    catch (Exception e)
+                    {
+                        testingTarget.Dispose();
+                        tlog.Debug(tag, e.Message.ToString());
+                        tlog.Debug(tag, $"ButtonGroupRemoveItemWithWrongIndex End");
+                        Assert.Pass("Caught exception : Passed!");
+                    }
+                }
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("ButtonGroup UpdateButton.")]
+        [Property("SPEC", "Tizen.NUI.Components.ButtonGroup.UpdateButton M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ButtonGroupUpdateButton()
+        {
+            tlog.Debug(tag, $"ButtonGroupUpdateButton START");
+
+            using (View view = new View() { Size = new Size(100, 200) , LayoutDirection = ViewLayoutDirectionType.RTL})
+            {
+                var testingTarget = new ButtonGroup(view);
+                Assert.IsNotNull(testingTarget, "null handle");
+                Assert.IsInstanceOf<ButtonGroup>(testingTarget, "Should return ButtonGroup instance.");
+
+                Button bt1 = new Button()
+                {
+                    Size = new Size(20, 30)
+                };
+                testingTarget.AddItem(bt1);
+                tlog.Debug(tag, "Count : " + testingTarget.Count);
+
+                Button bt2 = new Button()
+                {
+                    Size = new Size(20, 40)
+                };
+                testingTarget.AddItem(bt2);
+                tlog.Debug(tag, "Count : " + testingTarget.Count);
+
+                try
+                {
+                    ButtonStyle btStyle = new ButtonStyle()
+                    {
+                        Size = new Size(100, 80),
+                        Text = new TextLabelStyle()
+                        {
+                            TextColor = new Selector<Color> { All = Color.Yellow },
+                        }
+                    };
+                    testingTarget.UpdateButton(btStyle);
+                }
+                catch (Exception e)
+                {
+                    tlog.Debug(tag, e.Message.ToString());
+                    Assert.Fail("Caught Exception : Failed!");
+                }
+
+                testingTarget.RemoveAll();
+
+                bt1.Dispose();
+                bt2.Dispose();
+                testingTarget.Dispose();
+            }
+
+            tlog.Debug(tag, $"ButtonGroupUpdateButton End");
+        }
     }
 }
index 52633ba..dcbabe9 100755 (executable)
@@ -163,5 +163,54 @@ namespace Tizen.NUI.Components.Devel.Tests
 
             tlog.Debug(tag, $"CheckBoxGroupCheckAll END (OK)");
         }
+
+        [Test]
+        [Category("P1")]
+        [Description("CheckBoxGroup IsCheckedAll.")]
+        [Property("SPEC", "Tizen.NUI.Components.CheckBoxGroup.IsCheckedAll M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void CheckBoxGroupIsCheckedAll()
+        {
+            tlog.Debug(tag, $"CheckBoxGroupIsCheckedAll START");
+
+            var testingTarget = new CheckBoxGroup();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<CheckBoxGroup>(testingTarget, "Should return CheckBoxGroup instance.");
+
+            CheckBox cb1 = new CheckBox()
+            {
+                Size = new Size(48, 48),
+                IsEnabled = true,
+                IsSelectable = true,
+                IsSelected = true,
+            };
+
+            CheckBox cb2 = new CheckBox()
+            {
+                Size = new Size(48, 48),
+                IsEnabled = true,
+                IsSelectable = true,
+                IsSelected = false,
+            };
+
+            try
+            {
+                testingTarget.Add(cb1);
+                testingTarget.Add(cb2);
+
+                var result = testingTarget.IsCheckedAll();
+                Assert.AreEqual(false, result, "Should be equal!");
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            tlog.Debug(tag, $"CheckBoxGroupIsCheckedAll END (OK)");
+        }
     }
 }
index cafc431..93977de 100755 (executable)
@@ -52,98 +52,139 @@ namespace Tizen.NUI.Components.Devel.Tests
             tlog.Info(tag, "Destroy() is called!");
         }
 
-        //[Test]
-        //[Category("P1")]
-        //[Description("DatePicker constructor.")]
-        //[Property("SPEC", "Tizen.NUI.Components.DatePicker.constructor C")]
-        //[Property("SPEC_URL", "-")]
-        //[Property("CRITERIA", "CONSTR")]
-        //[Property("COVPARAM", "")]
-        //[Property("AUTHOR", "guowei.wang@samsung.com")]
-        //public void DatePickerConstructor()
-        //{
-        //    tlog.Debug(tag, $"DatePickerConstructor START");
-
-        //    var testingTarget = new MyDatePicker();
-        //    Assert.IsNotNull(testingTarget, "null handle");
-        //    Assert.IsInstanceOf<DatePicker>(testingTarget, "Should return DatePicker instance.");
-
-        //    try
-        //    {
-        //        testingTarget.OnDispose(DisposeTypes.Explicit);
-        //    }
-        //    catch (Exception e)
-        //    {
-        //        tlog.Debug(tag, e.Message.ToString());
-        //        Assert.Fail("Caught Exception : Failed!");
-        //    }
-
-        //    testingTarget.Dispose();
-        //    tlog.Debug(tag, $"DatePickerConstructor END (OK)");
-        //}
-
-        //[Test]
-        //[Category("P1")]
-        //[Description("DatePicker OnInitialize.")]
-        //[Property("SPEC", "Tizen.NUI.Components.DatePicker.OnInitialize M")]
-        //[Property("SPEC_URL", "-")]
-        //[Property("CRITERIA", "MR")]
-        //[Property("COVPARAM", "")]
-        //[Property("AUTHOR", "guowei.wang@samsung.com")]
-        //public void DatePickerOnInitialize()
-        //{
-        //    tlog.Debug(tag, $"DatePickerOnInitialize START");
-
-        //    var testingTarget = new MyDatePicker();
-        //    Assert.IsNotNull(testingTarget, "null handle");
-        //    Assert.IsInstanceOf<DatePicker>(testingTarget, "Should return DatePicker instance.");
-
-        //    try
-        //    {
-        //        testingTarget.OnInitialize();
-        //    }
-        //    catch (Exception e)
-        //    {
-        //        tlog.Debug(tag, e.Message.ToString());
-        //        Assert.Fail("Caught Exception : Failed!");
-        //    }
-
-        //    testingTarget.Dispose();
-        //    tlog.Debug(tag, $"DatePickerOnInitialize END (OK)");
-        //}
-
-        //[Test]
-        //[Category("P1")]
-        //[Description("DatePicker ApplyStyle.")]
-        //[Property("SPEC", "Tizen.NUI.Components.DatePicker.ApplyStyle M")]
-        //[Property("SPEC_URL", "-")]
-        //[Property("CRITERIA", "MR")]
-        //[Property("COVPARAM", "")]
-        //[Property("AUTHOR", "guowei.wang@samsung.com")]
-        //public void DatePickerApplyStyle()
-        //{
-        //    tlog.Debug(tag, $"DatePickerApplyStyle START");
-
-        //    var testingTarget = new MyDatePicker();
-        //    Assert.IsNotNull(testingTarget, "null handle");
-        //    Assert.IsInstanceOf<DatePicker>(testingTarget, "Should return DatePicker instance.");
-
-        //    try
-        //    {
-        //        ViewStyle style = new ViewStyle()
-        //        {
-        //            Size = new Size(30, 200)
-        //        };
-        //        testingTarget.ApplyStyle(style);
-        //    }
-        //    catch (Exception e)
-        //    {
-        //        tlog.Debug(tag, e.Message.ToString());
-        //        Assert.Fail("Caught Exception : Failed!");
-        //    }
-
-        //    testingTarget.Dispose();
-        //    tlog.Debug(tag, $"DatePickerApplyStyle END (OK)");
-        //}
+        [Test]
+        [Category("P1")]
+        [Description("DatePicker constructor.")]
+        [Property("SPEC", "Tizen.NUI.Components.DatePicker.DatePicker C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void DatePickerConstructor()
+        {
+            tlog.Debug(tag, $"DatePickerConstructor START");
+
+            var testingTarget = new DatePicker()
+            {
+                Size = new Size(600, 339),
+                Date = DateTime.Now,
+            };
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<DatePicker>(testingTarget, "Should return DatePicker instance.");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"DatePickerConstructor END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("DatePicker constructor.")]
+        [Property("SPEC", "Tizen.NUI.Components.DatePicker.DatePicker M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void DatePickerConstructorWithDatePickerStyle()
+        {
+            tlog.Debug(tag, $"DatePickerConstructorWithDatePickerStyle START");
+
+            DatePickerStyle dpStyle = new DatePickerStyle()
+            {
+                Pickers = new PickerStyle()
+                {
+                    StartScrollOffset = new Size(10, 10)
+                },
+                CellPadding = new Size2D(20, 20),
+            };
+            var testingTarget = new DatePicker(dpStyle);
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<DatePicker>(testingTarget, "Should return DatePicker instance.");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"DatePickerConstructorWithDatePickerStyle END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("DatePicker Date.")]
+        [Property("SPEC", "Tizen.NUI.Components.DatePicker.Date A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void DatePickerDate()
+        {
+            tlog.Debug(tag, $"DatePickerDate START");
+
+            var testingTarget = new DatePicker();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<DatePicker>(testingTarget, "Should return DatePicker instance.");
+
+            testingTarget.Date = DateTime.Now;
+            tlog.Debug(tag, "Date : " + testingTarget.Date);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"DatePickerDate END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("DatePicker ApplyStyle.")]
+        [Property("SPEC", "Tizen.NUI.Components.DatePicker.ApplyStyle M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void DatePickerApplyStyle()
+        {
+            tlog.Debug(tag, $"DatePickerApplyStyle START");
+
+            var testingTarget = new DatePicker()
+            {
+                Size = new Size(600, 339),
+                Date = DateTime.Now,
+            };
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<DatePicker>(testingTarget, "Should return DatePicker instance.");
+
+            try
+            {
+                ViewStyle style = new ViewStyle()
+                {
+                    Size = new Size(30, 200)
+                };
+                testingTarget.ApplyStyle(style);
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"DatePickerApplyStyle END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("DateChangedEventArgs constructor.")]
+        [Property("SPEC", "Tizen.NUI.Components.DateChangedEventArgs.DateChangedEventArgs  C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void DateChangedEventArgsConstructor()
+        {
+            tlog.Debug(tag, $"DateChangedEventArgsConstructor START");
+
+            var testingTarget = new DateChangedEventArgs(new DateTime(2100, 12, 31));
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<DateChangedEventArgs>(testingTarget, "Should return DateChangedEventArgs instance.");
+
+            var result = testingTarget.Date;
+            tlog.Debug(tag, "Date : " + result);
+
+            tlog.Debug(tag, $"DateChangedEventArgsConstructor END (OK)");
+        }
     }
 }
index 46fcfa5..c8bd58e 100755 (executable)
@@ -234,5 +234,47 @@ namespace Tizen.NUI.Components.Devel.Tests
             testingTarget.Dispose();
             tlog.Debug(tag, $"ScrollBarCreateViewStyle END (OK)");
         }
+
+        [Test]
+        [Category("P2")]
+        [Description("ScrollBar SetCurrentValue.")]
+        [Property("SPEC", "Tizen.NUI.Components.ScrollBar.SetCurrentValue M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        [Obsolete]
+        public void ScrollBarSetCurrentValue()
+        {
+            tlog.Debug(tag, $"ScrollBarSetCurrentValue START");
+
+            var testingTarget = new ScrollBar();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<ScrollBar>(testingTarget, "Should return ScrollBar instance.");
+
+            testingTarget.MinValue = 0;
+            tlog.Debug(tag, "MinValue : " + testingTarget.MinValue);
+
+            testingTarget.MaxValue = 100;
+            tlog.Debug(tag, "MaxValue : " + testingTarget.MaxValue);
+
+            testingTarget.Duration = 3;
+            tlog.Debug(tag, "Duration : " + testingTarget.Duration);
+
+            testingTarget.CurrentValue = 30;
+            tlog.Debug(tag, "CurrentValue : " + testingTarget.CurrentValue);
+
+            try
+            {
+                testingTarget.SetCurrentValue(-10, true);
+            }
+            catch (ArgumentOutOfRangeException e)
+            {
+                testingTarget.Dispose();
+                tlog.Debug(tag, e.Message.ToString());
+                tlog.Debug(tag, $"ScrollBarSetCurrentValue END (OK)");
+                Assert.Pass("Caught ArgumentOutOfRangeException : Passed!");
+            }
+        }
     }
 }
index 4b690a4..9e5f950 100755 (executable)
@@ -92,7 +92,8 @@ namespace Tizen.NUI.Components.Devel.Tests
             tlog.Debug(tag, $"MenuScrim END (OK)");
         }
 
-        [Test]
+        //Todo: this causes BLOCK, should be fixed.
+        //[Test]
         [Category("P1")]
         [Description("Menu GetRootView.")]
         [Property("SPEC", "Tizen.NUI.Components.Menu.GetRootView M")]
@@ -120,6 +121,10 @@ namespace Tizen.NUI.Components.Devel.Tests
             testingTarget.VerticalPositionToAnchor = Menu.RelativePosition.Center;
             tlog.Debug(tag, "HorizontalPositionToAnchor :" + testingTarget.HorizontalPositionToAnchor);
 
+            // horizontalPosition == value
+            testingTarget.HorizontalPositionToAnchor = Menu.RelativePosition.Center;
+            tlog.Debug(tag, "HorizontalPositionToAnchor :" + testingTarget.HorizontalPositionToAnchor);
+
             List<MenuItem> items = new List<MenuItem>();
             MenuItem item = new MenuItem();
             items.Add(item);
@@ -156,13 +161,28 @@ namespace Tizen.NUI.Components.Devel.Tests
             };
             testingTarget.Anchor = anchor2;
 
+            // anchor == value
+            testingTarget.Anchor = anchor2;
+
+            try
+            {
+                // anchor == null
+                testingTarget.Anchor = null;
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
             NUIApplication.GetDefaultWindow().GetDefaultLayer().Remove(testingTarget);
 
             testingTarget.OnDispose(DisposeTypes.Explicit);
             tlog.Debug(tag, $"MenuGetRootView END (OK)");
         }
 
-        [Test]
+        //Todo: this causes BLOCK, should be fixed.
+        //[Test]
         [Category("P1")]
         [Description("Menu OnRelayout.")]
         [Property("SPEC", "Tizen.NUI.Components.Menu.OnRelayout M")]
@@ -182,12 +202,29 @@ namespace Tizen.NUI.Components.Devel.Tests
             Assert.IsNotNull(testingTarget, "null handle");
             Assert.IsInstanceOf<Menu>(testingTarget, "Should return Menu instance.");
 
+            View scrim = new View()
+            {
+                BackgroundColor = Color.Red,
+            };
+            testingTarget.MyScrim = scrim;
+
             View content = new View()
             {
                 Size = new Size2D(100, 30),
             };
             testingTarget.MyContent = content;
 
+            // content == value
+            testingTarget.MyContent = content;
+
+            View content2 = new View()
+            {
+                Size = new Size2D(200, 60),
+                BackgroundColor = Color.Yellow
+            };
+            // content != null
+            testingTarget.MyContent = content2;
+
             NUIApplication.GetDefaultWindow().GetDefaultLayer().Add(testingTarget);
 
             testingTarget.Size = new Size(50, 80);
@@ -199,5 +236,76 @@ namespace Tizen.NUI.Components.Devel.Tests
             testingTarget.Dispose();
             tlog.Debug(tag, $"MenuOnRelayout END (OK)");
         }
+
+        [Test]
+        [Category("P1")]
+        [Description("Menu Post.")]
+        [Property("SPEC", "Tizen.NUI.Components.Menu.Post M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void MenuPost()
+        {
+            tlog.Debug(tag, $"MenuPost START");
+
+            var testingTarget = new MyMenu()
+            {
+                Size = new Size(100, 200),
+                BackgroundColor = Color.Green,
+                LayoutDirection = ViewLayoutDirectionType.LTR
+            };
+            Assert.IsNotNull(testingTarget, "Can't create success object Menu");
+            Assert.IsInstanceOf<Menu>(testingTarget, "Costruct Menu Fail");
+
+            View anchor = new View()
+            {
+                Size = new Size(100, 30),
+                BackgroundColor = Color.Cyan
+            };
+            testingTarget.Anchor = anchor;
+
+            View content = new View()
+            {
+                Size = new Size2D(100, 30),
+            };
+            testingTarget.MyContent = content;
+
+            List<MenuItem> items = new List<MenuItem>();
+            MenuItem item = new MenuItem();
+            items.Add(item);
+            testingTarget.Items = items;
+
+            testingTarget.HorizontalPositionToAnchor = Menu.RelativePosition.Start;
+            testingTarget.VerticalPositionToAnchor = Menu.RelativePosition.Start;
+            testingTarget.Post();
+            testingTarget.Dismiss();
+
+            testingTarget.HorizontalPositionToAnchor = Menu.RelativePosition.Center;
+            testingTarget.VerticalPositionToAnchor = Menu.RelativePosition.Center;
+            testingTarget.Post();
+            testingTarget.Dismiss();
+
+            testingTarget.HorizontalPositionToAnchor = Menu.RelativePosition.End;
+            testingTarget.VerticalPositionToAnchor = Menu.RelativePosition.End;
+            testingTarget.Post();
+            testingTarget.Dismiss();
+
+            // LayoutDirection == ViewLayoutDirectionType.LTR
+            testingTarget.LayoutDirection = ViewLayoutDirectionType.RTL;
+
+            testingTarget.HorizontalPositionToAnchor = Menu.RelativePosition.Start;
+            testingTarget.VerticalPositionToAnchor = Menu.RelativePosition.Start;
+            testingTarget.Post();
+            testingTarget.Dismiss();
+
+            testingTarget.HorizontalPositionToAnchor = Menu.RelativePosition.End;
+            testingTarget.VerticalPositionToAnchor = Menu.RelativePosition.End;
+            testingTarget.Post();
+            testingTarget.Dismiss();
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"MenuPost END (OK)");
+        }
     }
 }
index a345d5f..e410817 100755 (executable)
@@ -21,15 +21,17 @@ namespace Tizen.NUI.Components.Devel.Tests
             public MyPagination() : base()
             { }
 
-            public void MyAccessibilitySetCurrent(double value)
-            {
-                base.AccessibilitySetCurrent(value);
-            }
-
-            public void MyAccessibilityGetMinimumIncrement()
-            {
-                base.AccessibilityGetMinimumIncrement();
-            }
+            //Todo: no symbol error, should be fixed.
+            //public void MyAccessibilitySetCurrent(double value)
+            //{
+            //    base.AccessibilitySetCurrent(value);
+            //}
+
+            //Todo: no symbol error, should be fixed.
+            //public void MyAccessibilityGetMinimumIncrement()
+            //{
+            //    base.AccessibilityGetMinimumIncrement();
+            //}
         }
 
         [SetUp]
@@ -77,39 +79,6 @@ namespace Tizen.NUI.Components.Devel.Tests
 
         [Test]
         [Category("P1")]
-        [Description("Pagination AccessibilitySetCurrent.")]
-        [Property("SPEC", "Tizen.NUI.Components.Pagination.AccessibilitySetCurrent M")]
-        [Property("SPEC_URL", "-")]
-        [Property("CRITERIA", "MR")]
-        [Property("COVPARAM", "")]
-        [Property("AUTHOR", "guowei.wang@samsung.com")]
-        public void PaginationAccessibilitySetCurrent()
-        {
-            tlog.Debug(tag, $"PaginationAccessibilitySetCurrent START");
-
-            var testingTarget = new MyPagination();
-            Assert.IsNotNull(testingTarget, "null handle");
-            Assert.IsInstanceOf<Pagination>(testingTarget, "Should return Pagination instance.");
-
-            testingTarget.IndicatorCount = 8;
-
-            try
-            {
-                testingTarget.MyAccessibilitySetCurrent(5.0f);
-                testingTarget.MyAccessibilityGetMinimumIncrement();
-            }
-            catch (Exception e)
-            {
-                tlog.Debug(tag, e.Message.ToString());
-                Assert.Fail("Caught Exception : Failed!");
-            }
-
-            testingTarget.Dispose();
-            tlog.Debug(tag, $"PaginationAccessibilitySetCurrent END (OK)");
-        }
-
-        [Test]
-        [Category("P1")]
         [Description("Pagination SelectedIndex.")]
         [Property("SPEC", "Tizen.NUI.Components.Pagination.SelectedIndex A")]
         [Property("SPEC_URL", "-")]
index be26137..7e67f5f 100755 (executable)
@@ -46,7 +46,8 @@ namespace Tizen.NUI.Components.Devel.Tests
             Assert.IsNotNull(testingTarget, "null handle");
             Assert.IsInstanceOf<Popup>(testingTarget, "Should return Popup instance.");
 
-            testingTarget.Dispose();
+            //Todo: this means that letting the Popup implicitly disposed. but explicit dispose causes BLOCK. this need be fixed!
+            //testingTarget.Dispose();
             tlog.Debug(tag, $"PopupConstructor END (OK)");
         }
 
@@ -72,7 +73,8 @@ namespace Tizen.NUI.Components.Devel.Tests
             Assert.IsNotNull(testingTarget, "null handle");
             Assert.IsInstanceOf<Popup>(testingTarget, "Should return Popup instance.");
 
-            testingTarget.Dispose();
+            //Todo: this means that letting the Popup implicitly disposed. but explicit dispose causes BLOCK. this need be fixed!
+            //testingTarget.Dispose();
             tlog.Debug(tag, $"PopupConstructorWithPopupStyle END (OK)");
         }
 
@@ -150,7 +152,8 @@ namespace Tizen.NUI.Components.Devel.Tests
             tlog.Debug(tag, $"PopupAddContentText END (OK)");
         }
 
-        [Test]
+        //Todo: this causes BLOCK, should be fixed.
+        //[Test]
         [Category("P1")]
         [Description("Popup AddButton.")]
         [Property("SPEC", "Tizen.NUI.Components.Popup.AddButton M")]
index 34e6223..7a6345d 100755 (executable)
@@ -116,7 +116,7 @@ namespace Tizen.NUI.Components.Devel.Tests
         [Obsolete]
         public void RadioHandleControlStateOnTouch()
         {
-            tlog.Debug(tag, $"RadioButtonOnKey START");
+            tlog.Debug(tag, $"RadioHandleControlStateOnTouch START");
 
             var testingTarget = new MyRadioButton();
             Assert.IsNotNull(testingTarget, "null handle");
@@ -136,7 +136,7 @@ namespace Tizen.NUI.Components.Devel.Tests
             }
 
             testingTarget.Dispose();
-            tlog.Debug(tag, $"RadioButtonOnKey END (OK)");
+            tlog.Debug(tag, $"RadioHandleControlStateOnTouch END (OK)");
         }
     }
 }
index eea26ad..821e137 100755 (executable)
@@ -36,6 +36,11 @@ namespace Tizen.NUI.Components.Devel.Tests
             {
                 base.Decelerating(velocity, animation);
             }
+
+            public bool MyAccessibilityScrollToChild(View child)
+            {
+                return base.AccessibilityScrollToChild(child);
+            }
         }
 
         [SetUp]
@@ -385,5 +390,109 @@ namespace Tizen.NUI.Components.Devel.Tests
             testingTarget.Dispose();
             tlog.Debug(tag, $"ScrollableBaseDecelerating END (OK)");
         }
+
+        [Test]
+        [Category("P1")]
+        [Description("ScrollableBase DecelerationThreshold")]
+        [Property("SPEC", "Tizen.NUI.Components.ScrollableBase.DecelerationThreshold A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ScrollableBaseDecelerationThreshold()
+        {
+            tlog.Debug(tag, $"ScrollableBaseDecelerationThreshold START");
+
+            var testingTarget = new MyScrollableBase()
+            {
+                Size = new Size(100, 2),
+                BackgroundColor = Color.Cyan,
+                ScrollingDirection = ScrollableBase.Direction.Vertical,
+            };
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<ScrollableBase>(testingTarget, "Should return ScrollableBase instance.");
+
+            testingTarget.DecelerationThreshold = 0.8f;
+            tlog.Debug(tag, "DecelerationThreshold : " + testingTarget.DecelerationThreshold);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ScrollableBaseDecelerationThreshold END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("ScrollableBase ScrollAlphaFunction")]
+        [Property("SPEC", "Tizen.NUI.Components.ScrollableBase.ScrollAlphaFunction A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ScrollableBaseScrollAlphaFunction()
+        {
+            tlog.Debug(tag, $"ScrollableBaseScrollAlphaFunction START");
+
+            var testingTarget = new MyScrollableBase()
+            {
+                Size = new Size(100, 2),
+                BackgroundColor = Color.Cyan,
+                ScrollingDirection = ScrollableBase.Direction.Vertical,
+            };
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<ScrollableBase>(testingTarget, "Should return ScrollableBase instance.");
+
+            testingTarget.ScrollAlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseIn);
+            tlog.Debug(tag, "ScrollAlphaFunction : " + testingTarget.ScrollAlphaFunction);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ScrollableBaseScrollAlphaFunction END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("ScrollableBase AccessibilityScrollToChild")]
+        [Property("SPEC", "Tizen.NUI.Components.ScrollableBase.AccessibilityScrollToChild M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void ScrollableBaseAccessibilityScrollToChild()
+        {
+            tlog.Debug(tag, $"ScrollableBaseAccessibilityScrollToChild START");
+
+            var testingTarget = new MyScrollableBase()
+            {
+                Size = new Size(2000, 200),
+                BackgroundColor = Color.Cyan,
+                ScrollingDirection = ScrollableBase.Direction.Horizontal,
+            };
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<ScrollableBase>(testingTarget, "Should return ScrollableBase instance.");
+
+            testingTarget.ScrollAlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseIn);
+            tlog.Debug(tag, "ScrollAlphaFunction : " + testingTarget.ScrollAlphaFunction);
+
+            View[] views = new View[10];
+            for (int i = 0; i < 10; i++)
+            {
+                views[i].Size = new Size(200, 200);
+                testingTarget.Add(views[i]);
+            }
+
+            var result = testingTarget.MyAccessibilityScrollToChild(views[9]);
+            tlog.Debug(tag, "AccessibilityScrollToChild : " + result);
+
+            try
+            {
+                testingTarget.RemoveAllChildren(true);
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"ScrollableBaseAccessibilityScrollToChild END (OK)");
+        }
     }
 }
index b381b82..e3cb9dc 100755 (executable)
@@ -4,6 +4,7 @@ using NUnit.Framework.TUnit;
 using Tizen.NUI;
 using Tizen.NUI.Components;
 using Tizen.NUI.BaseComponents;
+using Tizen.NUI.Accessibility;
 
 namespace Tizen.NUI.Components.Devel.Tests
 {
@@ -16,14 +17,12 @@ namespace Tizen.NUI.Components.Devel.Tests
         private const string tag = "NUITEST";
         private string image_path = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "picture.png";
 
-        [Obsolete]
-        private EventHandler<Slider.ValueChangedArgs> OnValueChangedEvent()
+        private EventHandler<SliderValueChangedEventArgs> OnValueChangedEvent()
         {
             return null;
         }
 
-        [Obsolete]
-        private EventHandler<Slider.SlidingFinishedArgs> OnSlidingFinishedEvent()
+        private EventHandler<SliderSlidingFinishedEventArgs> OnSlidingFinishedEvent()
         {
             return null;
         }
@@ -43,8 +42,7 @@ namespace Tizen.NUI.Components.Devel.Tests
             return null;
         }
 
-        [Obsolete]
-        private EventHandler<Slider.StateChangedArgs> OnStateChangedEvent()
+        private EventHandler<View.ControlStateChangedEventArgs> OnStateChangedEvent()
         {
             return null;
         }
@@ -59,31 +57,6 @@ namespace Tizen.NUI.Components.Devel.Tests
                 return base.AccessibilityShouldReportZeroChildren();
             }
 
-            public double OnAccessibilityGetMinimum()
-            {
-                return base.AccessibilityGetMinimum();
-            }
-
-            public double OnAccessibilityGetCurrent()
-            {
-                return base.AccessibilityGetCurrent();
-            }
-
-            public double OnAccessibilityGetMaximum()
-            {
-                return base.AccessibilityGetMaximum();
-            }
-
-            public bool OnAccessibilitySetCurrent(double value)
-            {
-                return base.AccessibilitySetCurrent(value);
-            }
-
-            public double OnAccessibilityGetMinimumIncrement()
-            {
-                return base.AccessibilityGetMinimumIncrement();
-            }
-
             public void MyOnUpdate()
             {
                 base.OnUpdate();
@@ -121,8 +94,9 @@ namespace Tizen.NUI.Components.Devel.Tests
             Assert.IsNotNull(testingTarget, "null handle");
             Assert.IsInstanceOf<Slider>(testingTarget, "Should return Slider instance.");
 
-            testingTarget.IsEnabled = true;
-            tlog.Debug(tag, "IsEnabled : " + testingTarget.IsEnabled);
+            testingTarget.MinValue = 0.0f;
+            testingTarget.MaxValue = 100.0f;
+            testingTarget.CurrentValue = 30.0f;
 
             testingTarget.TrackThickness = 30;
             tlog.Debug(tag, "TrackThickness : " + testingTarget.TrackThickness);
@@ -330,7 +304,6 @@ namespace Tizen.NUI.Components.Devel.Tests
         [Property("CRITERIA", "PRW")]
         [Property("COVPARAM", "")]
         [Property("AUTHOR", "guowei.wang@samsung.com")]
-        [Obsolete]
         public void SliderValueChangedEvent()
         {
             tlog.Debug(tag, $"SliderValueChangedEvent START");
@@ -338,13 +311,12 @@ namespace Tizen.NUI.Components.Devel.Tests
             var testingTarget = new Slider()
             {
                 Direction = Slider.DirectionType.Vertical,
-                IsEnabled = true,
             };
             Assert.IsNotNull(testingTarget, "null handle");
             Assert.IsInstanceOf<Slider>(testingTarget, "Should return Slider instance.");
 
-            testingTarget.ValueChangedEvent += OnValueChangedEvent();
-            testingTarget.ValueChangedEvent -= OnValueChangedEvent();
+            testingTarget.ValueChanged += OnValueChangedEvent();
+            testingTarget.ValueChanged -= OnValueChangedEvent();
 
             testingTarget.Dispose();
             tlog.Debug(tag, $"SliderValueChangedEvent END (OK)");
@@ -358,7 +330,6 @@ namespace Tizen.NUI.Components.Devel.Tests
         [Property("CRITERIA", "PRW")]
         [Property("COVPARAM", "")]
         [Property("AUTHOR", "guowei.wang@samsung.com")]
-        [Obsolete]
         public void SliderSlidingFinishedEvent()
         {
             tlog.Debug(tag, $"SliderSlidingFinishedEvent START");
@@ -366,13 +337,12 @@ namespace Tizen.NUI.Components.Devel.Tests
             var testingTarget = new Slider()
             {
                 Direction = Slider.DirectionType.Vertical,
-                IsEnabled = true,
             };
             Assert.IsNotNull(testingTarget, "null handle");
             Assert.IsInstanceOf<Slider>(testingTarget, "Should return Slider instance.");
 
-            testingTarget.SlidingFinishedEvent += OnSlidingFinishedEvent();
-            testingTarget.SlidingFinishedEvent -= OnSlidingFinishedEvent();
+            testingTarget.SlidingFinished += OnSlidingFinishedEvent();
+            testingTarget.SlidingFinished -= OnSlidingFinishedEvent();
 
             testingTarget.Dispose();
             tlog.Debug(tag, $"SliderValueChangedEvent END (OK)");
@@ -492,7 +462,6 @@ namespace Tizen.NUI.Components.Devel.Tests
         [Property("CRITERIA", "PRW")]
         [Property("COVPARAM", "")]
         [Property("AUTHOR", "guowei.wang@samsung.com")]
-        [Obsolete]
         public void SliderStateChangedEvent()
         {
             tlog.Debug(tag, $"SliderStateChangedEvent START");
@@ -500,13 +469,12 @@ namespace Tizen.NUI.Components.Devel.Tests
             var testingTarget = new Slider()
             {
                 Direction = Slider.DirectionType.Vertical,
-                IsEnabled = true,
             };
             Assert.IsNotNull(testingTarget, "null handle");
             Assert.IsInstanceOf<Slider>(testingTarget, "Should return Slider instance.");
 
-            testingTarget.StateChangedEvent += OnStateChangedEvent();
-            testingTarget.StateChangedEvent -= OnStateChangedEvent();
+            testingTarget.ControlStateChangedEvent += OnStateChangedEvent();
+            testingTarget.ControlStateChangedEvent -= OnStateChangedEvent();
 
             testingTarget.Dispose();
             tlog.Debug(tag, $"SliderStateChangedEvent END (OK)");
@@ -609,106 +577,6 @@ namespace Tizen.NUI.Components.Devel.Tests
 
         [Test]
         [Category("P1")]
-        [Description("Slider AccessibilityGetMinimum.")]
-        [Property("SPEC", "Tizen.NUI.Components.Slider.AccessibilityGetMinimum M")]
-        [Property("SPEC_URL", "-")]
-        [Property("CRITERIA", "MR")]
-        [Property("COVPARAM", "")]
-        [Property("AUTHOR", "guowei.wang@samsung.com")]
-        [Obsolete]
-        public void SliderAccessibilityGetMinimum()
-        {
-            tlog.Debug(tag, $"SliderAccessibilityGetMinimum START");
-
-            var testingTarget = new MySlider()
-            {
-                Direction = Slider.DirectionType.Vertical,
-                IsEnabled = true,
-            };
-            Assert.IsNotNull(testingTarget, "null handle");
-            Assert.IsInstanceOf<Slider>(testingTarget, "Should return Slider instance.");
-
-            testingTarget.MinValue = 0.0f;
-            testingTarget.MaxValue = 100.0f;
-            testingTarget.CurrentValue = 30.0f;
-
-            var result = testingTarget.OnAccessibilityGetMinimum();
-            tlog.Debug(tag, "AccessibilityGetMinimum : " + result);
-
-            result = testingTarget.OnAccessibilityGetMaximum();
-            tlog.Debug(tag, "AccessibilityGetMaximum : " + result);
-
-            result = testingTarget.OnAccessibilityGetCurrent();
-            tlog.Debug(tag, "AccessibilityGetCurrent : " + result);
-
-            testingTarget.Dispose();
-            tlog.Debug(tag, $"SliderAccessibilityGetMinimum END (OK)");
-        }
-
-        [Test]
-        [Category("P1")]
-        [Description("Slider AccessibilitySetCurrent.")]
-        [Property("SPEC", "Tizen.NUI.Components.Slider.AccessibilitySetCurrent M")]
-        [Property("SPEC_URL", "-")]
-        [Property("CRITERIA", "MR")]
-        [Property("COVPARAM", "")]
-        [Property("AUTHOR", "guowei.wang@samsung.com")]
-        [Obsolete]
-        public void SliderAccessibilitySetCurrent()
-        {
-            tlog.Debug(tag, $"SliderAccessibilitySetCurrent START");
-
-            var testingTarget = new MySlider()
-            {
-                Direction = Slider.DirectionType.Vertical,
-                IsEnabled = true,
-            };
-            Assert.IsNotNull(testingTarget, "null handle");
-            Assert.IsInstanceOf<Slider>(testingTarget, "Should return Slider instance.");
-
-            testingTarget.MinValue = 0.0f;
-            testingTarget.MaxValue = 100.0f;
-
-            var result = testingTarget.OnAccessibilitySetCurrent(30.0f);
-            tlog.Debug(tag, "AccessibilitySetCurrent : " + result);
-
-            testingTarget.Dispose();
-            tlog.Debug(tag, $"SliderAccessibilitySetCurrent END (OK)");
-        }
-
-        [Test]
-        [Category("P1")]
-        [Description("Slider AccessibilityGetMinimumIncrement.")]
-        [Property("SPEC", "Tizen.NUI.Components.Slider.AccessibilityGetMinimumIncrement M")]
-        [Property("SPEC_URL", "-")]
-        [Property("CRITERIA", "MR")]
-        [Property("COVPARAM", "")]
-        [Property("AUTHOR", "guowei.wang@samsung.com")]
-        [Obsolete]
-        public void SliderAccessibilityGetMinimumIncrement()
-        {
-            tlog.Debug(tag, $"SliderAccessibilityGetMinimumIncrement START");
-
-            var testingTarget = new MySlider()
-            {
-                Direction = Slider.DirectionType.Vertical,
-                IsEnabled = true,
-            };
-            Assert.IsNotNull(testingTarget, "null handle");
-            Assert.IsInstanceOf<Slider>(testingTarget, "Should return Slider instance.");
-
-            testingTarget.MinValue = 0.0f;
-            testingTarget.MaxValue = 100.0f;
-
-            var result = testingTarget.OnAccessibilityGetMinimumIncrement();
-            tlog.Debug(tag, "AccessibilityGetMinimumIncrement : " + result);
-
-            testingTarget.Dispose();
-            tlog.Debug(tag, $"SliderAccessibilityGetMinimumIncrement END (OK)");
-        }
-
-        [Test]
-        [Category("P1")]
         [Description("Slider OnUpdate.")]
         [Property("SPEC", "Tizen.NUI.Components.Slider.OnUpdate M")]
         [Property("SPEC_URL", "-")]
index 2845b2c..b82ca49 100755 (executable)
@@ -44,138 +44,106 @@ namespace Tizen.NUI.Components.Devel.Tests
             tlog.Info(tag, "Destroy() is called!");
         }
 
-        //[Test]
-        //[Category("P1")]
-        //[Description("TimePicker Time.")]
-        //[Property("SPEC", "Tizen.NUI.Components.TimePicker.Time A")]
-        //[Property("SPEC_URL", "-")]
-        //[Property("CRITERIA", "PRW")]
-        //[Property("COVPARAM", "")]
-        //[Property("AUTHOR", "guowei.wang@samsung.com")]
-        //public void TimePickerTime()
-        //{
-        //    tlog.Debug(tag, $"TimePickerTime START");
-
-        //    var testingTarget = new MyTimePicker();
-        //    Assert.IsNotNull(testingTarget, "null handle");
-        //    Assert.IsInstanceOf<TimePicker>(testingTarget, "Should return TimePicker instance.");
-
-        //    tlog.Debug(tag, "Time : " + testingTarget.Time);
-
-        //    testingTarget.Time = new DateTime(1000);
-        //    tlog.Debug(tag, "Time : " + testingTarget.Time);
-
-        //    testingTarget.Dispose();
-        //    tlog.Debug(tag, $"TimePickerTime END (OK)");
-        //}
-
-        //[Test]
-        //[Category("P1")]
-        //[Description("TimePicker Is24HourView.")]
-        //[Property("SPEC", "Tizen.NUI.Components.TimePicker.Is24HourView A")]
-        //[Property("SPEC_URL", "-")]
-        //[Property("CRITERIA", "PRW")]
-        //[Property("COVPARAM", "")]
-        //[Property("AUTHOR", "guowei.wang@samsung.com")]
-        //public void TimePickerIs24HourView()
-        //{
-        //    tlog.Debug(tag, $"TimePickerIs24HourView START");
-
-        //    var testingTarget = new TimePicker();
-        //    Assert.IsNotNull(testingTarget, "null handle");
-        //    Assert.IsInstanceOf<TimePicker>(testingTarget, "Should return TimePicker instance.");
-
-        //    testingTarget.Is24HourView = true;
-        //    tlog.Debug(tag, "Is24HourView : " + testingTarget.Is24HourView);
-
-        //    testingTarget.Is24HourView = false;
-        //    tlog.Debug(tag, "Is24HourView : " + testingTarget.Is24HourView);
-
-        //    testingTarget.Dispose();
-        //    tlog.Debug(tag, $"TimePickerIs24HourView END (OK)");
-        //}
-
-        //[Test]
-        //[Category("P1")]
-        //[Description("TimePicker OnInitialize.")]
-        //[Property("SPEC", "Tizen.NUI.Components.TimePicker.OnInitialize M")]
-        //[Property("SPEC_URL", "-")]
-        //[Property("CRITERIA", "MR")]
-        //[Property("COVPARAM", "")]
-        //[Property("AUTHOR", "guowei.wang@samsung.com")]
-        //public void TimePickerOnInitialize()
-        //{
-        //    tlog.Debug(tag, $"TimePickerOnInitialize START");
-
-        //    var testingTarget = new MyTimePicker();
-        //    Assert.IsNotNull(testingTarget, "null handle");
-        //    Assert.IsInstanceOf<TimePicker>(testingTarget, "Should return TimePicker instance.");
-
-        //    try
-        //    {
-        //        testingTarget.OnInitialize();
-        //    }
-        //    catch (Exception e)
-        //    {
-        //        tlog.Debug(tag, e.Message.ToString());
-        //        Assert.Fail("Caught Exception : Failed!");
-        //    }
-
-        //    testingTarget.Dispose();
-        //    tlog.Debug(tag, $"TimePickerOnInitialize END (OK)");
-        //}
-
-        //[Test]
-        //[Category("P1")]
-        //[Description("TimePicker ApplyStyle.")]
-        //[Property("SPEC", "Tizen.NUI.Components.TimePicker.ApplyStyle M")]
-        //[Property("SPEC_URL", "-")]
-        //[Property("CRITERIA", "MR")]
-        //[Property("COVPARAM", "")]
-        //[Property("AUTHOR", "guowei.wang@samsung.com")]
-        //public void TimePickerApplyStyle()
-        //{
-        //    tlog.Debug(tag, $"TimePickerApplyStyle START");
-
-        //    var testingTarget = new MyTimePicker();
-        //    Assert.IsNotNull(testingTarget, "null handle");
-        //    Assert.IsInstanceOf<TimePicker>(testingTarget, "Should return TimePicker instance.");
-
-        //    try
-        //    {
-        //        testingTarget.ApplyStyle(new ViewStyle() { Size = new Size(100, 200) });
-        //    }
-        //    catch (Exception e)
-        //    {
-        //        tlog.Debug(tag, e.Message.ToString());
-        //        Assert.Fail("Caught Exception : Failed!");
-        //    }
-
-        //    testingTarget.Dispose();
-        //    tlog.Debug(tag, $"TimePickerApplyStyle END (OK)");
-        //}
-
-        //[Test]
-        //[Category("P1")]
-        //[Description("TimeChangedEventArgs constructor.")]
-        //[Property("SPEC", "Tizen.NUI.Components.TimeChangedEventArgs.TimeChangedEventArgs C")]
-        //[Property("SPEC_URL", "-")]
-        //[Property("CRITERIA", "CONSTR")]
-        //[Property("COVPARAM", "")]
-        //[Property("AUTHOR", "guowei.wang@samsung.com")]
-        //public void TimeChangedEventArgsConstructor()
-        //{
-        //    tlog.Debug(tag, $"TimeChangedEventArgsConstructor START");
-
-        //    DateTime dt = new DateTime(1000);
-
-        //    var testingTarget = new TimeChangedEventArgs(dt);
-        //    Assert.IsNotNull(testingTarget, "null handle");
-        //    Assert.IsInstanceOf<TimePicker>(testingTarget, "Should return TimePicker instance.");
-
-        //    tlog.Debug(tag, "Time : " + testingTarget.Time);
-
-        //    tlog.Debug(tag, $"TimeChangedEventArgsConstructor END (OK)");
-        //}
+        [Test]
+        [Category("P1")]
+        [Description("TimePicker Time.")]
+        [Property("SPEC", "Tizen.NUI.Components.TimePicker.Time A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void TimePickerTime()
+        {
+            tlog.Debug(tag, $"TimePickerTime START");
+
+            var testingTarget = new TimePicker();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<TimePicker>(testingTarget, "Should return TimePicker instance.");
+
+            tlog.Debug(tag, "Time : " + testingTarget.Time);
+
+            testingTarget.Time = DateTime.Now;
+            tlog.Debug(tag, "Time : " + testingTarget.Time);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TimePickerTime END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TimePicker Is24HourView.")]
+        [Property("SPEC", "Tizen.NUI.Components.TimePicker.Is24HourView A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRW")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void TimePickerIs24HourView()
+        {
+            tlog.Debug(tag, $"TimePickerIs24HourView START");
+
+            var testingTarget = new TimePicker();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<TimePicker>(testingTarget, "Should return TimePicker instance.");
+
+            testingTarget.Is24HourView = true;
+            tlog.Debug(tag, "Is24HourView : " + testingTarget.Is24HourView);
+
+            testingTarget.Is24HourView = false;
+            tlog.Debug(tag, "Is24HourView : " + testingTarget.Is24HourView);
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TimePickerIs24HourView END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TimePicker ApplyStyle.")]
+        [Property("SPEC", "Tizen.NUI.Components.TimePicker.ApplyStyle M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void TimePickerApplyStyle()
+        {
+            tlog.Debug(tag, $"TimePickerApplyStyle START");
+
+            var testingTarget = new TimePicker();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<TimePicker>(testingTarget, "Should return TimePicker instance.");
+
+            try
+            {
+                testingTarget.ApplyStyle(new ViewStyle() { Size = new Size(100, 200) });
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TimePickerApplyStyle END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TimeChangedEventArgs constructor.")]
+        [Property("SPEC", "Tizen.NUI.Components.TimeChangedEventArgs.TimeChangedEventArgs C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void TimeChangedEventArgsConstructor()
+        {
+            tlog.Debug(tag, $"TimeChangedEventArgsConstructor START");
+
+            var testingTarget = new TimeChangedEventArgs(DateTime.Now);
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<TimePicker>(testingTarget, "Should return TimePicker instance.");
+
+            tlog.Debug(tag, "Time : " + testingTarget.Time);
+
+            tlog.Debug(tag, $"TimeChangedEventArgsConstructor END (OK)");
+        }
     }
 }
index 1a351f3..dd0008c 100755 (executable)
@@ -18,6 +18,22 @@ namespace Tizen.NUI.Components.Devel.Tests
         private const string tag = "NUITEST";
         private string image_path = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "picture.png";
 
+        internal class LottieSwitchExtensionImpl : LottieSwitchExtension
+        {
+            public LottieSwitchExtensionImpl() : base()
+            { }
+
+            public override ImageView OnCreateIcon(Button button, ImageView icon)
+            {
+                return base.OnCreateIcon(button, icon);
+            }
+
+            public override void OnControlStateChanged(Button button, View.ControlStateChangedEventArgs args)
+            {
+                base.OnControlStateChanged(button, args);
+            }
+        }
+
         [SetUp]
         public void Init()
         {
@@ -48,5 +64,78 @@ namespace Tizen.NUI.Components.Devel.Tests
 
             tlog.Debug(tag, $"LottieSwitchExtensionConstructor END (OK)");
         }
+
+        [Test]
+        [Category("P1")]
+        [Description("LottieSwitchExtension OnCreateIcon.")]
+        [Property("SPEC", "Tizen.NUI.Components.LottieSwitchExtension.OnCreateIcon M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void LottieSwitchExtensionOnCreateIcon()
+        {
+            tlog.Debug(tag, $"LottieSwitchExtensionOnCreateIcon START");
+
+            var testingTarget = new LottieSwitchExtensionImpl();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<LottieSwitchExtension>(testingTarget, "Should return LottieSwitchExtension instance.");
+
+            Button button = new Button()
+            {
+                Size = new Size(100, 80),
+            };
+
+            ImageView icon = new ImageView()
+            { 
+                ResourceUrl = image_path,
+            };
+
+            var result = testingTarget.OnCreateIcon(button, icon);
+            Assert.IsNotNull(result, "null handle");
+            Assert.IsInstanceOf<ImageView>(result, "Should return LottieSwitchExtension instance.");
+
+            icon.Dispose();
+            button.Dispose();
+            result.Dispose();
+            tlog.Debug(tag, $"LottieSwitchExtensionOnCreateIcon END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("LottieSwitchExtension OnControlStateChanged.")]
+        [Property("SPEC", "Tizen.NUI.Components.LottieSwitchExtension.OnControlStateChanged M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void LottieSwitchExtensionOnControlStateChanged()
+        {
+            tlog.Debug(tag, $"LottieSwitchExtensionOnControlStateChanged START");
+
+            var testingTarget = new LottieSwitchExtensionImpl();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<LottieSwitchExtension>(testingTarget, "Should return LottieSwitchExtension instance.");
+
+            Button button = new Button()
+            {
+                Size = new Size(100, 80),
+            };
+
+            ControlStateChangedEventArgs args = new ControlStateChangedEventArgs(ControlState.Focused, ControlState.Selected);
+
+            try
+            {
+                testingTarget.OnControlStateChanged(button, args);
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            button.Dispose();
+            tlog.Debug(tag, $"LottieSwitchExtensionOnControlStateChanged END (OK)");
+        }
     }
 }
index e875652..f14c292 100755 (executable)
@@ -93,5 +93,34 @@ namespace Tizen.NUI.Components.Devel.Tests
             testingTarget.MyDispose(true);
             tlog.Debug(tag, $"SlidingSwitchExtensionOnSelectedChanged END (OK)");
         }
+
+        [Test]
+        [Category("P1")]
+        [Description("SlidingSwitchExtension Dispose.")]
+        [Property("SPEC", "Tizen.NUI.Components.SlidingSwitchExtension.Dispose M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void SlidingSwitchExtensionDispose()
+        {
+            tlog.Debug(tag, $"SlidingSwitchExtensionDispose START");
+
+            var testingTarget = new SlidingSwitchExtension();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<SlidingSwitchExtension>(testingTarget, "Should return SlidingSwitchExtension instance.");
+
+            try
+            {
+                testingTarget.Dispose();
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            tlog.Debug(tag, $"SlidingSwitchExtensionDispose END (OK)");
+        }
     }
 }
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSDatePickerStyle.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSDatePickerStyle.cs
new file mode 100755 (executable)
index 0000000..2ed0576
--- /dev/null
@@ -0,0 +1,106 @@
+using global::System;
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using Tizen.NUI;
+using Tizen.NUI.Components;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Components.Devel.Tests
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [Description("Style/DatePickerStyle")]
+    public class DatePickerStyleTest
+    {
+        private const string tag = "NUITEST";
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("DatePickerStyle Constructor.")]
+        [Property("SPEC", "Tizen.NUI.Components.DatePickerStyle.DatePickerStyle C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void DatePickerStyleConstructor()
+        {
+            tlog.Debug(tag, $"DatePickerStyleConstructor START");
+
+            DatePickerStyle style = new DatePickerStyle()
+            {
+                CellPadding = new Size2D(100, 200),
+                Pickers = new PickerStyle()
+                {
+                    ItemTextLabel = new TextLabelStyle()
+                    {
+                        EnableAutoScroll = true,
+                        Ellipsis = true,
+                    }
+                }
+            };
+
+            var testingTarget = new DatePickerStyle(style);
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<DatePickerStyle>(testingTarget, "Should return DatePickerStyle instance.");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"DatePickerStyleConstructor END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("DatePickerStyle CopyFrom.")]
+        [Property("SPEC", "Tizen.NUI.Components.DatePickerStyle.CopyFrom M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void DatePickerStyleCopyFrom()
+        {
+            tlog.Debug(tag, $"DatePickerStyleCopyFrom START");
+
+            DatePickerStyle style = new DatePickerStyle()
+            {
+                CellPadding = new Size2D(100, 200),
+                Pickers = new PickerStyle()
+                {
+                    ItemTextLabel = new TextLabelStyle()
+                    {
+                        EnableAutoScroll = true,
+                        Ellipsis = true,
+                    }
+                }
+            };
+
+            var testingTarget = new DatePickerStyle();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<DatePickerStyle>(testingTarget, "Should return DatePickerStyle instance.");
+
+            try
+            {
+                testingTarget.CopyFrom(style);
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"DatePickerStyleCopyFrom END (OK)");
+        }
+    }
+}
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSDefaultGridItemStyle.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSDefaultGridItemStyle.cs
new file mode 100755 (executable)
index 0000000..11c6ea6
--- /dev/null
@@ -0,0 +1,120 @@
+using global::System;
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using Tizen.NUI;
+using Tizen.NUI.Components;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Components.Devel.Tests
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [Description("Style/DefaultGridItemStyle")]
+    public class DefaultGridItemStyleTest
+    {
+        private const string tag = "NUITEST";
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("DefaultGridItemStyle Constructor.")]
+        [Property("SPEC", "Tizen.NUI.Components.DefaultGridItemStyle.DefaultGridItemStyle C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void DefaultGridItemStyleConstructor()
+        {
+            tlog.Debug(tag, $"DefaultGridItemStyleConstructor START");
+
+            DefaultGridItemStyle style = new DefaultGridItemStyle()
+            {
+                Label = new TextLabelStyle()
+                {
+                    EnableAutoScroll = true,
+                    Ellipsis = true,
+                },
+                Image = new ImageViewStyle()
+                {
+                    BorderOnly = true,
+                    ResourceUrl = new StringSelector
+                    {
+                        Normal = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "picture.png",
+                        Selected = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "arrow.png",
+                        Disabled = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "button_9patch.png",
+                        DisabledSelected = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "picture.png",
+                    },
+                }
+            };
+
+            var testingTarget = new DefaultGridItemStyle(style);
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<DefaultGridItemStyle>(testingTarget, "Should return DefaultGridItemStyle instance.");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"DefaultGridItemStyleConstructor END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("DefaultGridItemStyle CopyFrom.")]
+        [Property("SPEC", "Tizen.NUI.Components.DefaultGridItemStyle.CopyFrom M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void DefaultGridItemStyleCopyFrom()
+        {
+            tlog.Debug(tag, $"DefaultGridItemStyleCopyFrom START");
+
+            DefaultGridItemStyle style = new DefaultGridItemStyle()
+            {
+                Label = new TextLabelStyle()
+                {
+                    EnableAutoScroll = true,
+                    Ellipsis = true,
+                },
+                Image = new ImageViewStyle()
+                {
+                    BorderOnly = true,
+                    ResourceUrl = new StringSelector
+                    {
+                        Normal = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "picture.png",
+                        Selected = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "arrow.png",
+                        Disabled = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "button_9patch.png",
+                        DisabledSelected = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "picture.png",
+                    },
+                }
+            };
+
+            var testingTarget = new DefaultGridItemStyle();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<DefaultGridItemStyle>(testingTarget, "Should return DefaultGridItemStyle instance.");
+
+            try
+            {
+                testingTarget.CopyFrom(style);
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"DefaultGridItemStyleCopyFrom END (OK)");
+        }
+    }
+}
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSDefaultLinearItemStyle.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSDefaultLinearItemStyle.cs
new file mode 100755 (executable)
index 0000000..1f5e671
--- /dev/null
@@ -0,0 +1,112 @@
+using global::System;
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using Tizen.NUI;
+using Tizen.NUI.Components;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Components.Devel.Tests
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [Description("Style/DefaultLinearItemStyle")]
+    public class DefaultLinearItemStyleTest
+    {
+        private const string tag = "NUITEST";
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("DefaultLinearItemStyle Constructor.")]
+        [Property("SPEC", "Tizen.NUI.Components.DefaultLinearItemStyle.DefaultLinearItemStyle C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void DefaultLinearItemStyleConstructor()
+        {
+            tlog.Debug(tag, $"DefaultLinearItemStyleConstructor START");
+
+            DefaultLinearItemStyle style = new DefaultLinearItemStyle()
+            {
+                Label = new TextLabelStyle()
+                {
+                    EnableAutoScroll = true,
+                    Ellipsis = true,
+                },
+                Icon = new ViewStyle()
+                {
+                    Color = new ColorSelector
+                    {
+                        Normal = Color.Cyan,
+                    },
+                }
+            };
+
+            var testingTarget = new DefaultLinearItemStyle(style);
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<DefaultLinearItemStyle>(testingTarget, "Should return DefaultLinearItemStyle instance.");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"DefaultLinearItemStyleConstructor END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("DefaultLinearItemStyle CopyFrom.")]
+        [Property("SPEC", "Tizen.NUI.Components.DefaultLinearItemStyle.CopyFrom M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void DefaultLinearItemStyleCopyFrom()
+        {
+            tlog.Debug(tag, $"DefaultLinearItemStyleCopyFrom START");
+
+            DefaultLinearItemStyle style = new DefaultLinearItemStyle()
+            {
+                Label = new TextLabelStyle()
+                {
+                    EnableAutoScroll = true,
+                    Ellipsis = true,
+                },
+                Icon = new ViewStyle()
+                {
+                    Color = new ColorSelector
+                    {
+                        Normal = Color.Cyan,
+                    },
+                }
+            };
+
+            var testingTarget = new DefaultLinearItemStyle();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<DefaultLinearItemStyle>(testingTarget, "Should return DefaultLinearItemStyle instance.");
+
+            try
+            {
+                testingTarget.CopyFrom(style);
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"DefaultLinearItemStyleCopyFrom END (OK)");
+        }
+    }
+}
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSDefaultTitleItemStyle.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSDefaultTitleItemStyle.cs
new file mode 100755 (executable)
index 0000000..956712b
--- /dev/null
@@ -0,0 +1,112 @@
+using global::System;
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using Tizen.NUI;
+using Tizen.NUI.Components;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Components.Devel.Tests
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [Description("Style/DefaultTitleItemStyle")]
+    class DefaultTitleItemStyleTest
+    {
+        private const string tag = "NUITEST";
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("DefaultTitleItemStyle Constructor.")]
+        [Property("SPEC", "Tizen.NUI.Components.DefaultTitleItemStyle.DefaultTitleItemStyle C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void DefaultTitleItemStyleConstructor()
+        {
+            tlog.Debug(tag, $"DefaultTitleItemStyleConstructor START");
+
+            DefaultTitleItemStyle style = new DefaultTitleItemStyle()
+            {
+                Label = new TextLabelStyle()
+                {
+                    EnableAutoScroll = true,
+                    Ellipsis = true,
+                },
+                Icon = new ViewStyle()
+                {
+                    Color = new ColorSelector
+                    {
+                        Normal = Color.Cyan,
+                    },
+                }
+            };
+
+            var testingTarget = new DefaultTitleItemStyle(style);
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<DefaultTitleItemStyle>(testingTarget, "Should return DefaultTitleItemStyle instance.");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"DefaultTitleItemStyleConstructor END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("DefaultTitleItemStyle CopyFrom.")]
+        [Property("SPEC", "Tizen.NUI.Components.DefaultTitleItemStyle.CopyFrom M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void DefaultTitleItemStyleCopyFrom()
+        {
+            tlog.Debug(tag, $"DefaultTitleItemStyleCopyFrom START");
+
+            DefaultTitleItemStyle style = new DefaultTitleItemStyle()
+            {
+                Label = new TextLabelStyle()
+                {
+                    EnableAutoScroll = true,
+                    Ellipsis = true,
+                },
+                Icon = new ViewStyle()
+                {
+                    Color = new ColorSelector
+                    {
+                        Normal = Color.Cyan,
+                    },
+                }
+            };
+
+            var testingTarget = new DefaultTitleItemStyle();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<DefaultTitleItemStyle>(testingTarget, "Should return DefaultTitleItemStyle instance.");
+
+            try
+            {
+                testingTarget.CopyFrom(style);
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"DefaultTitleItemStyleCopyFrom END (OK)");
+        }
+    }
+}
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSSliderStyle.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Components.Devel.Tests/testcase/Style/TSSliderStyle.cs
new file mode 100755 (executable)
index 0000000..02f8ccf
--- /dev/null
@@ -0,0 +1,70 @@
+using global::System;
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using Tizen.NUI;
+using Tizen.NUI.Components;
+using Tizen.NUI.BaseComponents;
+
+namespace Tizen.NUI.Components.Devel.Tests
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [Description("Style/SliderStyle")]
+    public class SliderStyleTest
+    {
+        private const string tag = "NUITEST";
+
+        internal class MySliderStyle : SliderStyle
+        {
+            public MySliderStyle() : base()
+            { }
+
+            public void OnDispose(bool disposing)
+            {
+                base.Dispose(disposing);
+            }
+        }
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("SliderStyle Dispose.")]
+        [Property("SPEC", "Tizen.NUI.Components.SliderStyle.Dispose M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        public void SliderStyleDispose()
+        {
+            tlog.Debug(tag, $"SliderStyleDispose START");
+
+            var testingTarget = new MySliderStyle();
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<SliderStyle>(testingTarget, "Should return SliderStyle instance.");
+
+            try
+            {
+                testingTarget.OnDispose(true);
+            }
+            catch (Exception e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Fail("Caught Exception : Failed!");
+            }
+
+            tlog.Debug(tag, $"SliderStyleDispose END (OK)");
+        }
+    }
+}
index 055b5d5..93d2093 100755 (executable)
@@ -60,7 +60,8 @@ namespace Tizen.NUI.Components.Devel.Tests
             tlog.Info(tag, "Destroy() is called!");
         }
 
-        [Test]
+        //Todo: this causes BLOCK, should be fixed.
+        //[Test]
         [Category("P1")]
         [Description("StyleManager Theme.")]
         [Property("SPEC", "Tizen.NUI.Components.StyleManager.Theme A")]
@@ -164,6 +165,35 @@ namespace Tizen.NUI.Components.Devel.Tests
         }
 
         [Test]
+        [Category("P2")]
+        [Description("StyleManager RegisterComponentStyle.")]
+        [Property("SPEC", "Tizen.NUI.Components.StyleManager.RegisterComponentStyle M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("COVPARAM", "")]
+        [Property("AUTHOR", "guowei.wang@samsung.com")]
+        [Obsolete]
+        public void StyleManagerRegisterComponentStyleWithNullStyle()
+        {
+            tlog.Debug(tag, $"StyleManagerRegisterComponentStyleWithNullStyle START");
+
+            var testingTarget = StyleManager.Instance;
+            Assert.IsNotNull(testingTarget, "null handle");
+            Assert.IsInstanceOf<StyleManager>(testingTarget, "Should return StyleManager instance.");
+            
+            try
+            {
+                StyleManager.Instance.RegisterComponentStyle("RadioButton", typeof(RadioButton), null);
+            }
+            catch (ArgumentException e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                tlog.Debug(tag, $"StyleManagerRegisterComponentStyleWithNullStyle END (OK)");
+                Assert.Pass("Caught Exception : Passed!");
+            }
+        }
+
+        [Test]
         [Category("P1")]
         [Description("ThemeChangeEventArgs CurrentTheme.")]
         [Property("SPEC", "Tizen.NUI.Components.ThemeChangeEventArgs.CurrentTheme M")]
index 848e3cb..3bbdfbd 100755 (executable)
@@ -1,17 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" api-version="9" package="Tizen.NUI.Components.Devel.Tests" version="1.0.0">
+<manifest package="Tizen.NUI.Components.Devel.Tests" version="1.0.2" api-version="7" xmlns="http://tizen.org/ns/packages">
     <profile name="common" />
-    <ui-application appid="Tizen.NUI.Components.Devel.Tests"
-                    exec="Tizen.NUI.Components.Devel.Tests.dll"
-                    type="dotnet"
-                    multiple="false"
-                    taskmanage="true"
-                    launch_mode="single">
-    <icon>Tizen.NUI.Components.Devel.Tests.png</icon>
-    <label>Tizen.NUI.Components.Devel.Tests</label>
+    <ui-application appid="Tizen.NUI.Components.Devel.Tests" exec="Tizen.NUI.Components.Devel.Tests.dll" multiple="false" taskmanage="true" splash-screen-display="true" type="dotnet" launch_mode="single">
+        <icon>Tizen.NUI.Components.Devel.Tests.png</icon>
+        <label>Tizen.NUI.Components.Devel.Tests</label>
     </ui-application>
     <privileges>
-          <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
-          <privilege>http://tizen.org/privilege/window.priority.set</privilege>
-  </privileges>
+        <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+        <privilege>http://tizen.org/privilege/window.priority.set</privilege>
+    </privileges>
+    <provides-appdefined-privileges />
 </manifest>
diff --git a/test/Tizen.NUI.Tests/Tizen.NUI.Devel.Tests/testcase/public/BaseComponents/TSTextConstants.cs b/test/Tizen.NUI.Tests/Tizen.NUI.Devel.Tests/testcase/public/BaseComponents/TSTextConstants.cs
new file mode 100755 (executable)
index 0000000..43867a7
--- /dev/null
@@ -0,0 +1,280 @@
+using global::System;
+using NUnit.Framework;
+using NUnit.Framework.TUnit;
+using Tizen.NUI.Components;
+using Tizen.NUI.BaseComponents;
+using System.Collections.Generic;
+
+namespace Tizen.NUI.Devel.Tests
+{
+    using tlog = Tizen.Log;
+
+    [TestFixture]
+    [Description("public/BaseComponents/TextConstants")]
+    public class PublicTextConstantsTest
+    {
+        private const string tag = "NUITEST";
+
+        [SetUp]
+        public void Init()
+        {
+            tlog.Info(tag, "Init() is called!");
+        }
+
+        [TearDown]
+        public void Destroy()
+        {
+            tlog.Info(tag, "Destroy() is called!");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("InputFilter Equals")]
+        [Property("SPEC", "Tizen.NUI.Text.InputFilter.Equals M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void InputFilterEquals()
+        {
+            tlog.Debug(tag, $"InputFilterEquals START");
+
+            var inputFilter = new Tizen.NUI.Text.InputFilter();
+            Assert.IsNotNull(inputFilter, "Can't create success object inputFilter");
+            Assert.IsInstanceOf<Tizen.NUI.Text.InputFilter>(inputFilter, "Should be an instance of inputFilter type.");
+
+            var compare = new Tizen.NUI.Text.InputFilter();
+            Assert.IsTrue(inputFilter == compare, "Should be true!");
+            Assert.AreEqual(inputFilter.GetHashCode(), compare.GetHashCode(), "Should be true!");
+
+            compare.Accepted = @"[\d]";
+            Assert.IsTrue(inputFilter != compare, "Should be true!");
+
+            tlog.Debug(tag, $"InputFilterEquals END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Strikethrough Equals")]
+        [Property("SPEC", "Tizen.NUI.Text.Strikethrough.Equals M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void StrikethroughEquals()
+        {
+            tlog.Debug(tag, $"StrikethroughEquals START");
+
+            var strikethrough = new Tizen.NUI.Text.Strikethrough();
+            Assert.IsNotNull(strikethrough, "Can't create success object strikethrough");
+            Assert.IsInstanceOf<Tizen.NUI.Text.Strikethrough>(strikethrough, "Should be an instance of strikethrough type.");
+
+            var compare = new Tizen.NUI.Text.Strikethrough();
+            Assert.IsTrue(strikethrough == compare, "Should be true!");
+            Assert.AreEqual(strikethrough.GetHashCode(), compare.GetHashCode(), "Should be true!");
+
+            compare.Height = 2.0f;
+            Assert.IsTrue(strikethrough != compare, "Should be true!");
+
+            tlog.Debug(tag, $"StrikethroughEquals END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("FontStyle Equals")]
+        [Property("SPEC", "Tizen.NUI.Text.FontStyle.Equals M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void FontStyleEquals()
+        {
+            tlog.Debug(tag, $"FontStyleEquals START");
+
+            var fontStyle = new Tizen.NUI.Text.FontStyle();
+            Assert.IsNotNull(fontStyle, "Can't create success object strikethrough");
+            Assert.IsInstanceOf<Tizen.NUI.Text.FontStyle>(fontStyle, "Should be an instance of fontStyle type.");
+
+            var compare = new Tizen.NUI.Text.FontStyle();
+            Assert.IsTrue(fontStyle == compare, "Should be true!");
+            Assert.AreEqual(fontStyle.GetHashCode(), compare.GetHashCode(), "Should be true!");
+
+            compare.Slant = FontSlantType.Italic;
+            Assert.IsTrue(fontStyle != compare, "Should be true!");
+
+            tlog.Debug(tag, $"FontStyleEquals END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Underline Equals")]
+        [Property("SPEC", "Tizen.NUI.Text.Underline.Equals M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void UnderlineEquals()
+        {
+            tlog.Debug(tag, $"UnderlineEquals START");
+
+            var underline = new Tizen.NUI.Text.Underline();
+            Assert.IsNotNull(underline, "Can't create success object strikethrough");
+            Assert.IsInstanceOf<Tizen.NUI.Text.Underline>(underline, "Should be an instance of underline type.");
+
+            var compare = new Tizen.NUI.Text.Underline();
+            Assert.IsTrue(underline == compare, "Should be true!");
+            Assert.AreEqual(underline.GetHashCode(), compare.GetHashCode(), "Should be true!");
+
+            compare.Color = Color.Red;
+            Assert.IsTrue(underline != compare, "Should be true!");
+
+            tlog.Debug(tag, $"UnderlineEquals END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Shadow Equals")]
+        [Property("SPEC", "Tizen.NUI.Text.Shadow.Equals M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void ShadowEquals()
+        {
+            tlog.Debug(tag, $"ShadowEquals START");
+
+            var shadow = new Tizen.NUI.Text.Shadow();
+            Assert.IsNotNull(shadow, "Can't create success object strikethrough");
+            Assert.IsInstanceOf<Tizen.NUI.Text.Shadow>(shadow, "Should be an instance of shadow type.");
+
+            var compare = new Tizen.NUI.Text.Shadow();
+            Assert.IsTrue(shadow == compare, "Should be true!");
+            Assert.AreEqual(shadow.GetHashCode(), compare.GetHashCode(), "Should be true!");
+
+            compare.BlurRadius = 5.0f;
+            Assert.IsTrue(shadow != compare, "Should be true!");
+
+            tlog.Debug(tag, $"ShadowEquals END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Outline Equals")]
+        [Property("SPEC", "Tizen.NUI.Text.Outline.Equals M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void OutlineEquals()
+        {
+            tlog.Debug(tag, $"OutlineEquals START");
+
+            var outline = new Tizen.NUI.Text.Outline();
+            Assert.IsNotNull(outline, "Can't create success object strikethrough");
+            Assert.IsInstanceOf<Tizen.NUI.Text.Outline>(outline, "Should be an instance of outline type.");
+
+            var compare = new Tizen.NUI.Text.Outline();
+            Assert.IsTrue(outline == compare, "Should be true!");
+            Assert.AreEqual(outline.GetHashCode(), compare.GetHashCode(), "Should be true!");
+
+            compare.Width = 2.0f;
+            Assert.IsTrue(outline != compare, "Should be true!");
+
+            tlog.Debug(tag, $"OutlineEquals END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextFit Equals")]
+        [Property("SPEC", "Tizen.NUI.Text.TextFit.Equals M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextFitEquals()
+        {
+            tlog.Debug(tag, $"TextFitEquals START");
+
+            var textFit = new Tizen.NUI.Text.TextFit();
+            Assert.IsNotNull(textFit, "Can't create success object strikethrough");
+            Assert.IsInstanceOf<Tizen.NUI.Text.TextFit>(textFit, "Should be an instance of textFit type.");
+
+            var compare = new Tizen.NUI.Text.TextFit();
+            Assert.IsTrue(textFit == compare, "Should be true!");
+            Assert.AreEqual(textFit.GetHashCode(), compare.GetHashCode(), "Should be true!");
+
+            compare.StepSize = 10.0f;
+            Assert.IsTrue(textFit != compare, "Should be true!");
+
+            tlog.Debug(tag, $"TextFitEquals END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Placeholder Equals")]
+        [Property("SPEC", "Tizen.NUI.Text.Placeholder.Equals M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void PlaceholderEquals()
+        {
+            tlog.Debug(tag, $"PlaceholderEquals START");
+
+            var placeholder = new Tizen.NUI.Text.Placeholder();
+            Assert.IsNotNull(placeholder, "Can't create success object strikethrough");
+            Assert.IsInstanceOf<Tizen.NUI.Text.Placeholder>(placeholder, "Should be an instance of placeholder type.");
+
+            var compare = new Tizen.NUI.Text.Placeholder();
+            Assert.IsTrue(placeholder == compare, "Should be true!");
+            Assert.AreEqual(placeholder.GetHashCode(), compare.GetHashCode(), "Should be true!");
+
+            compare.Ellipsis = true;
+             Assert.IsTrue(placeholder != compare, "Should be true!");
+
+            tlog.Debug(tag, $"PlaceholderEquals END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("HiddenInput Equals")]
+        [Property("SPEC", "Tizen.NUI.Text.HiddenInput.Equals M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void HiddenInputEquals()
+        {
+            tlog.Debug(tag, $"HiddenInputEquals START");
+
+            var hiddenInput = new Tizen.NUI.Text.HiddenInput();
+            Assert.IsNotNull(hiddenInput, "Can't create success object strikethrough");
+            Assert.IsInstanceOf<Tizen.NUI.Text.HiddenInput>(hiddenInput, "Should be an instance of hiddenInput type.");
+
+            var compare = new Tizen.NUI.Text.HiddenInput();
+            Assert.IsTrue(hiddenInput == compare, "Should be true!");
+            Assert.AreEqual(hiddenInput.GetHashCode(), compare.GetHashCode(), "Should be true!");
+
+            compare.ShowLastCharacterDuration = 10000;
+            Assert.IsTrue(hiddenInput != compare, "Should be true!");
+
+            tlog.Debug(tag, $"HiddenInputEquals END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("SelectionHandleImage Equals")]
+        [Property("SPEC", "Tizen.NUI.Text.SelectionHandleImage.Equals M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void SelectionHandleImageEquals()
+        {
+            tlog.Debug(tag, $"SelectionHandleImageEquals START");
+
+            var selectionHandleImage = new Tizen.NUI.Text.SelectionHandleImage();
+            Assert.IsNotNull(selectionHandleImage, "Can't create success object strikethrough");
+            Assert.IsInstanceOf<Tizen.NUI.Text.SelectionHandleImage>(selectionHandleImage, "Should be an instance of selectionHandleImage type.");
+
+            var compare = new Tizen.NUI.Text.SelectionHandleImage();
+            Assert.IsTrue(selectionHandleImage == compare, "Should be true!");
+            Assert.AreEqual(selectionHandleImage.GetHashCode(), compare.GetHashCode(), "Should be true!");
+
+            compare.LeftImageUrl = "left image url";
+            Assert.IsTrue(selectionHandleImage != compare, "Should be true!");
+
+            tlog.Debug(tag, $"SelectionHandleImageEquals END (OK)");
+        }
+    }
+}
index 3244871..1dec2da 100755 (executable)
@@ -4,6 +4,7 @@ using NUnit.Framework.TUnit;
 using Tizen.NUI.Components;
 using Tizen.NUI.BaseComponents;
 using System.Collections.Generic;
+using System.Threading.Tasks;
 
 namespace Tizen.NUI.Devel.Tests
 {
@@ -43,6 +44,14 @@ namespace Tizen.NUI.Devel.Tests
             return false;
         }
 
+        public bool CheckVector2(Vector2 vectorSrc, Vector2 vectorDst)
+        {
+            if (vectorSrc.X == vectorDst.X && vectorSrc.Y == vectorDst.Y)
+                return true;
+
+            return false;
+        }
+
         [Test]
         [Category("P1")]
         [Description("TextEditor constructor. With status of Shown.")]
@@ -229,5 +238,598 @@ namespace Tizen.NUI.Devel.Tests
             testingTarget.Dispose();
             tlog.Debug(tag, $"TextEditorCharacterSpacing END (OK)");
         }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor VerticalAlignment.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.VerticalAlignment A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorVerticalAlignment()
+        {
+            tlog.Debug(tag, $"TextEditorVerticalAlignment START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            testingTarget.VerticalAlignment = VerticalAlignment.Bottom;
+            Assert.AreEqual(VerticalAlignment.Bottom, testingTarget.VerticalAlignment, "Should be equal!");
+
+            testingTarget.VerticalAlignment = VerticalAlignment.Top;
+            Assert.AreEqual(VerticalAlignment.Top, testingTarget.VerticalAlignment, "Should be equal!");
+
+            testingTarget.VerticalAlignment = VerticalAlignment.Center;
+            Assert.AreEqual(VerticalAlignment.Center, testingTarget.VerticalAlignment, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorVerticalAlignment END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor GetFontStyle.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.GetFontStyle M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorGetFontStyle()
+        {
+            tlog.Debug(tag, $"TextEditorGetFontStyle START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            var setFontStyle = new Tizen.NUI.Text.FontStyle()
+            {
+                Width = FontWidthType.Condensed,
+                Weight = FontWeightType.Light,
+                Slant = FontSlantType.Italic,
+            };
+
+            testingTarget.SetFontStyle(setFontStyle);
+
+            var getFontStyle = testingTarget.GetFontStyle();
+            Assert.AreEqual(getFontStyle.Width, setFontStyle.Width, "Should be equal!");
+            Assert.AreEqual(getFontStyle.Weight, setFontStyle.Weight, "Should be equal!");
+            Assert.AreEqual(getFontStyle.Slant, setFontStyle.Slant, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorGetFontStyle END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor GetUnderline.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.GetUnderline M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorGetUnderline()
+        {
+            tlog.Debug(tag, $"TextEditorGetUnderline START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            var setUnderline = new Tizen.NUI.Text.Underline()
+            {
+                Enable = true,
+                Color = new Color("#3498DB"),
+                Height = 2.0f,
+                Type = UnderlineType.Dashed,
+                DashWidth = 4.0f,
+                DashGap = 6.0f,
+            };
+
+            testingTarget.SetUnderline(setUnderline);
+
+            var getUnderline = testingTarget.GetUnderline();
+            Assert.AreEqual(getUnderline.Enable, setUnderline.Enable, "Should be equal!");
+            Assert.AreEqual(true, CheckColor(getUnderline.Color, setUnderline.Color), "Should be true!");
+            Assert.AreEqual(getUnderline.Height, setUnderline.Height, "Should be equal!");
+            Assert.AreEqual(getUnderline.Type, setUnderline.Type, "Should be equal!");
+            Assert.AreEqual(getUnderline.DashWidth, setUnderline.DashWidth, "Should be equal!");
+            Assert.AreEqual(getUnderline.DashGap, setUnderline.DashGap, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorGetUnderline END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor GetShadow.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.GetShadow M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorGetShadow()
+        {
+            tlog.Debug(tag, $"TextEditorGetShadow START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            var setShadow = new Tizen.NUI.Text.Shadow()
+            {
+                BlurRadius = 5.0f,
+                Color = Color.Red,
+                Offset = new Vector2(3, 3),
+            };
+
+            testingTarget.SetShadow(setShadow);
+
+            var getShadow = testingTarget.GetShadow();
+            Assert.AreEqual(getShadow.BlurRadius, setShadow.BlurRadius, "Should be equal!");
+            Assert.AreEqual(true, CheckColor(getShadow.Color, setShadow.Color), "Should be true!");
+            Assert.AreEqual(true, CheckVector2(getShadow.Offset, setShadow.Offset), "Should be true!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorGetShadow END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor GetOutline.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.GetOutline M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorGetOutline()
+        {
+            tlog.Debug(tag, $"TextEditorGetOutline START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            var setOutline = new Tizen.NUI.Text.Outline()
+            {
+                Width = 2.0f,
+                Color = Color.Red,
+            };
+
+            testingTarget.SetOutline(setOutline);
+
+            var getOutline = testingTarget.GetOutline();
+            Assert.AreEqual(getOutline.Width, setOutline.Width, "Should be equal!");
+            Assert.AreEqual(true, CheckColor(getOutline.Color, setOutline.Color), "Should be true!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorGetOutline END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor GetSelectionHandleImage.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.GetSelectionHandleImage M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorGetSelectionHandleImage()
+        {
+            tlog.Debug(tag, $"TextEditorGetSelectionHandleImage START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            var setSelectionHandleImage = new Tizen.NUI.Text.SelectionHandleImage()
+            {
+                LeftImageUrl = "leftImage",
+                RightImageUrl = "rightImage",
+            };
+
+            testingTarget.SetSelectionHandleImage(setSelectionHandleImage);
+
+            var getSelectionHandleImage = testingTarget.GetSelectionHandleImage();
+            Assert.AreEqual(getSelectionHandleImage.LeftImageUrl, setSelectionHandleImage.LeftImageUrl, "Should be equal!");
+            Assert.AreEqual(getSelectionHandleImage.RightImageUrl, setSelectionHandleImage.RightImageUrl, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorGetSelectionHandleImage END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor GetSelectionHandlePressedImage.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.GetSelectionHandlePressedImage M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorGetSelectionHandlePressedImage()
+        {
+            tlog.Debug(tag, $"TextEditorGetSelectionHandlePressedImage START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            var setSelectionHandleImage = new Tizen.NUI.Text.SelectionHandleImage()
+            {
+                LeftImageUrl = "leftImage",
+                RightImageUrl = "rightImage",
+            };
+
+            testingTarget.SetSelectionHandlePressedImage(setSelectionHandleImage);
+
+            var getSelectionHandleImage = testingTarget.GetSelectionHandlePressedImage();
+            Assert.AreEqual(getSelectionHandleImage.LeftImageUrl, setSelectionHandleImage.LeftImageUrl, "Should be equal!");
+            Assert.AreEqual(getSelectionHandleImage.RightImageUrl, setSelectionHandleImage.RightImageUrl, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorGetSelectionHandlePressedImage END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor GetSelectionHandleMarkerImage.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.GetSelectionHandleMarkerImage M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorGetSelectionHandleMarkerImage()
+        {
+            tlog.Debug(tag, $"TextEditorGetSelectionHandleMarkerImage START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            var setSelectionHandleImage = new Tizen.NUI.Text.SelectionHandleImage()
+            {
+                LeftImageUrl = "leftImage",
+                RightImageUrl = "rightImage",
+            };
+
+            testingTarget.SetSelectionHandleMarkerImage(setSelectionHandleImage);
+
+            var getSelectionHandleImage = testingTarget.GetSelectionHandleMarkerImage();
+            Assert.AreEqual(getSelectionHandleImage.LeftImageUrl, setSelectionHandleImage.LeftImageUrl, "Should be equal!");
+            Assert.AreEqual(getSelectionHandleImage.RightImageUrl, setSelectionHandleImage.RightImageUrl, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorGetSelectionHandleMarkerImage END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor GetInputFilter.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.GetInputFilter M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorGetInputFilter()
+        {
+            tlog.Debug(tag, $"TextEditorGetInputFilter START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            var setInputFilter = new Tizen.NUI.Text.InputFilter()
+            {
+                Accepted = @"[\d]",
+                Rejected = "[0-3]",
+            };
+
+            testingTarget.SetInputFilter(setInputFilter);
+
+            var getInputFilter = testingTarget.GetInputFilter();
+            Assert.AreEqual(getInputFilter.Accepted, setInputFilter.Accepted, "Should be equal!");
+            Assert.AreEqual(getInputFilter.Rejected, setInputFilter.Rejected, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorGetInputFilter END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor GetPlaceholder.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.GetPlaceholder M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorGetPlaceholder()
+        {
+            tlog.Debug(tag, $"TextEditorGetPlaceholder START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            var setPlaceholder = new Tizen.NUI.Text.Placeholder()
+            {
+                Text = "placeholder text",
+                TextFocused = "placeholder TextFocused",
+                Color = Color.Red,
+                FontFamily = "BreezeSans",
+                FontStyle = new Tizen.NUI.Text.FontStyle()
+                {
+                    Width = FontWidthType.Expanded,
+                    Weight = FontWeightType.ExtraLight,
+                    Slant = FontSlantType.Italic,
+                },
+                PointSize = 15.0f,
+                Ellipsis = true,
+            };
+
+            testingTarget.SetPlaceholder(setPlaceholder);
+
+            var getPlaceholder = testingTarget.GetPlaceholder();
+            Assert.AreEqual(getPlaceholder.Text, setPlaceholder.Text, "Should be equal!");
+            Assert.AreEqual(getPlaceholder.TextFocused, setPlaceholder.TextFocused, "Should be equal!");
+            Assert.AreEqual(true, CheckColor(getPlaceholder.Color, setPlaceholder.Color), "Should be true!");
+            Assert.AreEqual(getPlaceholder.FontFamily, setPlaceholder.FontFamily, "Should be equal!");
+            Assert.AreEqual(true, getPlaceholder.FontStyle == setPlaceholder.FontStyle, "Should be true!");
+            Assert.AreEqual(getPlaceholder.PointSize, setPlaceholder.PointSize, "Should be equal!");
+            Assert.AreEqual(getPlaceholder.Ellipsis, setPlaceholder.Ellipsis, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorGetPlaceholder END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor MinLineSize.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.MinLineSize A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorMinLineSize()
+        {
+            tlog.Debug(tag, $"TextEditorMinLineSize START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            testingTarget.MinLineSize = 20;
+            Assert.AreEqual(20, testingTarget.MinLineSize, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorMinLineSize END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor EnableEditing.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.EnableEditing A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorEnableEditing()
+        {
+            tlog.Debug(tag, $"TextEditorEnableEditing START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            testingTarget.EnableEditing = false;
+            Assert.AreEqual(false, testingTarget.EnableEditing, "Should be equal!");
+
+            testingTarget.EnableEditing = true;
+            Assert.AreEqual(true, testingTarget.EnableEditing, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorEnableEditing END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor PrimaryCursorPosition.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.PrimaryCursorPosition A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorPrimaryCursorPosition()
+        {
+            tlog.Debug(tag, $"TextEditorPrimaryCursorPosition START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            testingTarget.Text = "0123456789";
+            testingTarget.PrimaryCursorPosition = 5;
+            Assert.AreEqual(5, testingTarget.PrimaryCursorPosition, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorPrimaryCursorPosition END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor EnableSelection.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.EnableSelection A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorEnableSelection()
+        {
+            tlog.Debug(tag, $"TextEditorEnableSelection START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            testingTarget.EnableSelection = true;
+            Assert.AreEqual(true, testingTarget.EnableSelection, "Should be equal!");
+
+            testingTarget.EnableSelection = false;
+            Assert.AreEqual(false, testingTarget.EnableSelection, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorEnableSelection END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor EnableGrabHandle.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.EnableGrabHandle A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorEnableGrabHandle()
+        {
+            tlog.Debug(tag, $"TextEditorEnableGrabHandle START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            testingTarget.EnableGrabHandle = true;
+            Assert.AreEqual(true, testingTarget.EnableGrabHandle, "Should be equal!");
+
+            testingTarget.EnableGrabHandle = false;
+            Assert.AreEqual(false, testingTarget.EnableGrabHandle, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorEnableGrabHandle END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor EnableGrabHandlePopup.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.EnableGrabHandlePopup A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorEnableGrabHandlePopup()
+        {
+            tlog.Debug(tag, $"TextEditorEnableGrabHandlePopup START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            testingTarget.EnableGrabHandlePopup = true;
+            Assert.AreEqual(true, testingTarget.EnableGrabHandlePopup, "Should be equal!");
+
+            testingTarget.EnableGrabHandlePopup = false;
+            Assert.AreEqual(false, testingTarget.EnableGrabHandlePopup, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorEnableGrabHandlePopup END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor GrabHandleColor.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.GrabHandleColor A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextEditorGrabHandleColor()
+        {
+            tlog.Debug(tag, $"TextEditorGrabHandleColor START");
+
+            var testingTarget = new TextEditor(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            testingTarget.GrabHandleColor = new Color(1.0f, 1.0f, 0.8f, 0.0f);
+            var color = new Color(1.0f, 1.0f, 0.8f, 0.0f);
+            Assert.AreEqual(true, CheckColor(color, testingTarget.GrabHandleColor), "Should be true!");
+
+            color.Dispose();
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextEditorGrabHandleColor END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor SelectText.")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.SelectText M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public async Task TextEditorSelectText()
+        {
+            tlog.Debug(tag, $"TextEditorSelectText START");
+
+            var testingTarget = new TextEditor();
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            testingTarget.Text = "0123456789";
+            testingTarget.EnableSelection = true;
+            Window.Instance.GetDefaultLayer().Add(testingTarget);
+
+            testingTarget.SelectText(2, 6);
+            await Task.Delay(500);
+            Assert.AreEqual(testingTarget.SelectedText, "2345", "Should be equal!");
+            Assert.AreEqual(testingTarget.SelectedTextStart, 2, "Should be equal!");
+            Assert.AreEqual(testingTarget.SelectedTextEnd, 6, "Should be equal!");
+
+            tlog.Debug(tag, $"TextEditorSelectText END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor SelectText.StartIndexException")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.SelectText M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public async Task TextEditorSelectTextStartIndexException()
+        {
+            tlog.Debug(tag, $"TextEditorSelectTextStartIndexException START");
+
+            var testingTarget = new TextEditor();
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            testingTarget.Text = "0123456789";
+            testingTarget.EnableSelection = true;
+            Window.Instance.GetDefaultLayer().Add(testingTarget);
+
+            try
+            {
+                testingTarget.SelectText(-1, 6);
+            }
+            catch (ArgumentOutOfRangeException e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Pass("Caught ArgumentOutOfRangeException: Passed!");
+                tlog.Debug(tag, $"TextEditorSelectTextStartIndexException END (OK)");
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextEditor SelectText.EndIndexException")]
+        [Property("SPEC", "Tizen.NUI.TextEditor.SelectText M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public async Task TextEditorSelectTextEndIndexException()
+        {
+            tlog.Debug(tag, $"TextEditorSelectTextEndIndexException START");
+
+            var testingTarget = new TextEditor();
+            Assert.IsNotNull(testingTarget, "Can't create success object TextEditor");
+            Assert.IsInstanceOf<TextEditor>(testingTarget, "Should be an instance of TextEditor type.");
+
+            testingTarget.Text = "0123456789";
+            testingTarget.EnableSelection = true;
+            Window.Instance.GetDefaultLayer().Add(testingTarget);
+
+            try
+            {
+                testingTarget.SelectText(1, -1);
+            }
+            catch (ArgumentOutOfRangeException e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Pass("Caught ArgumentOutOfRangeException: Passed!");
+                tlog.Debug(tag, $"TextEditorSelectTextEndIndexException END (OK)");
+            }
+        }
     }
 }
index 0f7f422..61ca464 100755 (executable)
@@ -5,6 +5,7 @@ using Tizen.NUI.Components;
 using Tizen.NUI.BaseComponents;
 using System.Collections.Generic;
 using System.Runtime.InteropServices;
+using System.Threading.Tasks;
 
 namespace Tizen.NUI.Devel.Tests
 {
@@ -50,6 +51,14 @@ namespace Tizen.NUI.Devel.Tests
             return false;
         }
 
+        public bool CheckVector2(Vector2 vectorSrc, Vector2 vectorDst)
+        {
+            if (vectorSrc.X == vectorDst.X && vectorSrc.Y == vectorDst.Y)
+                return true;
+
+            return false;
+        }
+
         [SetUp]
         public void Init()
         {
@@ -1903,5 +1912,485 @@ namespace Tizen.NUI.Devel.Tests
             testingTarget.Dispose();
             tlog.Debug(tag, $"TextFieldCharacterSpacing END (OK)");
         }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField GetFontStyle.")]
+        [Property("SPEC", "Tizen.NUI.TextField.GetFontStyle M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextFieldGetFontStyle()
+        {
+            tlog.Debug(tag, $"TextFieldGetFontStyle START");
+
+            var testingTarget = new TextField(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            var setFontStyle = new Tizen.NUI.Text.FontStyle()
+            {
+                Width = FontWidthType.Condensed,
+                Weight = FontWeightType.Light,
+                Slant = FontSlantType.Italic,
+            };
+
+            testingTarget.SetFontStyle(setFontStyle);
+
+            var getFontStyle = testingTarget.GetFontStyle();
+            Assert.AreEqual(getFontStyle.Width, setFontStyle.Width, "Should be equal!");
+            Assert.AreEqual(getFontStyle.Weight, setFontStyle.Weight, "Should be equal!");
+            Assert.AreEqual(getFontStyle.Slant, setFontStyle.Slant, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextFieldGetFontStyle END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField GetUnderline.")]
+        [Property("SPEC", "Tizen.NUI.TextField.GetUnderline M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextFieldGetUnderline()
+        {
+            tlog.Debug(tag, $"TextFieldGetUnderline START");
+
+            var testingTarget = new TextField(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            var setUnderline = new Tizen.NUI.Text.Underline()
+            {
+                Enable = true,
+                Color = new Color("#3498DB"),
+                Height = 2.0f,
+                Type = UnderlineType.Dashed,
+                DashWidth = 4.0f,
+                DashGap = 6.0f,
+            };
+
+            testingTarget.SetUnderline(setUnderline);
+
+            var getUnderline = testingTarget.GetUnderline();
+            Assert.AreEqual(getUnderline.Enable, setUnderline.Enable, "Should be equal!");
+            Assert.AreEqual(true, CheckColor(getUnderline.Color, setUnderline.Color), "Should be true!");
+            Assert.AreEqual(getUnderline.Height, setUnderline.Height, "Should be equal!");
+            Assert.AreEqual(getUnderline.Type, setUnderline.Type, "Should be equal!");
+            Assert.AreEqual(getUnderline.DashWidth, setUnderline.DashWidth, "Should be equal!");
+            Assert.AreEqual(getUnderline.DashGap, setUnderline.DashGap, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextFieldGetUnderline END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField GetShadow.")]
+        [Property("SPEC", "Tizen.NUI.TextField.GetShadow M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextFieldGetShadow()
+        {
+            tlog.Debug(tag, $"TextFieldGetShadow START");
+
+            var testingTarget = new TextField(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            var setShadow = new Tizen.NUI.Text.Shadow()
+            {
+                BlurRadius = 5.0f,
+                Color = Color.Red,
+                Offset = new Vector2(3, 3),
+            };
+
+            testingTarget.SetShadow(setShadow);
+
+            var getShadow = testingTarget.GetShadow();
+            Assert.AreEqual(getShadow.BlurRadius, setShadow.BlurRadius, "Should be equal!");
+            Assert.AreEqual(true, CheckColor(getShadow.Color, setShadow.Color), "Should be true!");
+            Assert.AreEqual(true, CheckVector2(getShadow.Offset, setShadow.Offset), "Should be true!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextFieldGetShadow END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField GetOutline.")]
+        [Property("SPEC", "Tizen.NUI.TextField.GetOutline M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextFieldGetOutline()
+        {
+            tlog.Debug(tag, $"TextFieldGetOutline START");
+
+            var testingTarget = new TextField(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            var setOutline = new Tizen.NUI.Text.Outline()
+            {
+                Width = 2.0f,
+                Color = Color.Red,
+            };
+
+            testingTarget.SetOutline(setOutline);
+
+            var getOutline = testingTarget.GetOutline();
+            Assert.AreEqual(getOutline.Width, setOutline.Width, "Should be equal!");
+            Assert.AreEqual(true, CheckColor(getOutline.Color, setOutline.Color), "Should be true!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextFieldGetOutline END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField GetSelectionHandleImage.")]
+        [Property("SPEC", "Tizen.NUI.TextField.GetSelectionHandleImage M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextFieldGetSelectionHandleImage()
+        {
+            tlog.Debug(tag, $"TextFieldGetSelectionHandleImage START");
+
+            var testingTarget = new TextField(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            var setSelectionHandleImage = new Tizen.NUI.Text.SelectionHandleImage()
+            {
+                LeftImageUrl = "leftImage",
+                RightImageUrl = "rightImage",
+            };
+
+            testingTarget.SetSelectionHandleImage(setSelectionHandleImage);
+
+            var getSelectionHandleImage = testingTarget.GetSelectionHandleImage();
+            Assert.AreEqual(getSelectionHandleImage.LeftImageUrl, setSelectionHandleImage.LeftImageUrl, "Should be equal!");
+            Assert.AreEqual(getSelectionHandleImage.RightImageUrl, setSelectionHandleImage.RightImageUrl, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextFieldGetSelectionHandleImage END (OK)");
+        }
+
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField GetSelectionHandlePressedImage.")]
+        [Property("SPEC", "Tizen.NUI.TextField.GetSelectionHandlePressedImage M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextFieldGetSelectionHandlePressedImage()
+        {
+            tlog.Debug(tag, $"TextFieldGetSelectionHandlePressedImage START");
+
+            var testingTarget = new TextField(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            var setSelectionHandleImage = new Tizen.NUI.Text.SelectionHandleImage()
+            {
+                LeftImageUrl = "leftImage",
+                RightImageUrl = "rightImage",
+            };
+
+            testingTarget.SetSelectionHandlePressedImage(setSelectionHandleImage);
+
+            var getSelectionHandleImage = testingTarget.GetSelectionHandlePressedImage();
+            Assert.AreEqual(getSelectionHandleImage.LeftImageUrl, setSelectionHandleImage.LeftImageUrl, "Should be equal!");
+            Assert.AreEqual(getSelectionHandleImage.RightImageUrl, setSelectionHandleImage.RightImageUrl, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextFieldGetSelectionHandlePressedImage END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField GetSelectionHandleMarkerImage.")]
+        [Property("SPEC", "Tizen.NUI.TextField.GetSelectionHandleMarkerImage M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextFieldGetSelectionHandleMarkerImage()
+        {
+            tlog.Debug(tag, $"TextFieldGetSelectionHandleMarkerImage START");
+
+            var testingTarget = new TextField(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            var setSelectionHandleImage = new Tizen.NUI.Text.SelectionHandleImage()
+            {
+                LeftImageUrl = "leftImage",
+                RightImageUrl = "rightImage",
+            };
+
+            testingTarget.SetSelectionHandleMarkerImage(setSelectionHandleImage);
+
+            var getSelectionHandleImage = testingTarget.GetSelectionHandleMarkerImage();
+            Assert.AreEqual(getSelectionHandleImage.LeftImageUrl, setSelectionHandleImage.LeftImageUrl, "Should be equal!");
+            Assert.AreEqual(getSelectionHandleImage.RightImageUrl, setSelectionHandleImage.RightImageUrl, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextFieldGetSelectionHandleMarkerImage END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField GetHiddenInput.")]
+        [Property("SPEC", "Tizen.NUI.TextField.GetHiddenInput M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextFieldGetHiddenInput()
+        {
+            tlog.Debug(tag, $"TextFieldGetHiddenInput START");
+
+            var testingTarget = new TextField(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            var setHiddenInput = new Tizen.NUI.Text.HiddenInput()
+            {
+                Mode = HiddenInputModeType.ShowLastCharacter,
+                SubstituteCharacter = '★',
+                SubstituteCount = 0,
+                ShowLastCharacterDuration = 1000,
+            };
+
+            testingTarget.SetHiddenInput(setHiddenInput);
+
+            var getHiddenInput = testingTarget.GetHiddenInput();
+            Assert.AreEqual(getHiddenInput.Mode, setHiddenInput.Mode, "Should be equal!");
+            Assert.AreEqual(getHiddenInput.SubstituteCharacter, setHiddenInput.SubstituteCharacter, "Should be equal!");
+            Assert.AreEqual(getHiddenInput.SubstituteCount, setHiddenInput.SubstituteCount, "Should be equal!");
+            Assert.AreEqual(getHiddenInput.ShowLastCharacterDuration, setHiddenInput.ShowLastCharacterDuration, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextFieldGetHiddenInput END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField GetInputFilter.")]
+        [Property("SPEC", "Tizen.NUI.TextField.GetInputFilter M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextFieldGetInputFilter()
+        {
+            tlog.Debug(tag, $"TextFieldGetInputFilter START");
+
+            var testingTarget = new TextField(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            var setInputFilter = new Tizen.NUI.Text.InputFilter()
+            {
+                Accepted = @"[\d]",
+                Rejected = "[0-3]",
+            };
+
+            testingTarget.SetInputFilter(setInputFilter);
+
+            var getInputFilter = testingTarget.GetInputFilter();
+            Assert.AreEqual(getInputFilter.Accepted, setInputFilter.Accepted, "Should be equal!");
+            Assert.AreEqual(getInputFilter.Rejected, setInputFilter.Rejected, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextFieldGetInputFilter END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField GetPlaceholder.")]
+        [Property("SPEC", "Tizen.NUI.TextField.GetPlaceholder M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextFieldGetPlaceholder()
+        {
+            tlog.Debug(tag, $"TextFieldGetPlaceholder START");
+
+            var testingTarget = new TextField(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            var setPlaceholder = new Tizen.NUI.Text.Placeholder()
+            {
+                Text = "placeholder text",
+                TextFocused = "placeholder TextFocused",
+                Color = Color.Red,
+                FontFamily = "BreezeSans",
+                FontStyle = new Tizen.NUI.Text.FontStyle()
+                {
+                    Width = FontWidthType.Expanded,
+                    Weight = FontWeightType.ExtraLight,
+                    Slant = FontSlantType.Italic,
+                },
+                PointSize = 15.0f,
+                Ellipsis = true,
+            };
+
+            testingTarget.SetPlaceholder(setPlaceholder);
+
+            var getPlaceholder = testingTarget.GetPlaceholder();
+            Assert.AreEqual(getPlaceholder.Text, setPlaceholder.Text, "Should be equal!");
+            Assert.AreEqual(getPlaceholder.TextFocused, setPlaceholder.TextFocused, "Should be equal!");
+            Assert.AreEqual(true, CheckColor(getPlaceholder.Color, setPlaceholder.Color), "Should be true!");
+            Assert.AreEqual(getPlaceholder.FontFamily, setPlaceholder.FontFamily, "Should be equal!");
+            Assert.AreEqual(true, getPlaceholder.FontStyle == setPlaceholder.FontStyle, "Should be true!");
+            Assert.AreEqual(getPlaceholder.PointSize, setPlaceholder.PointSize, "Should be equal!");
+            Assert.AreEqual(getPlaceholder.Ellipsis, setPlaceholder.Ellipsis, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextFieldGetPlaceholder END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField EnableEditing.")]
+        [Property("SPEC", "Tizen.NUI.TextField.EnableEditing A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextFieldEnableEditing()
+        {
+            tlog.Debug(tag, $"TextFieldEnableEditing START");
+
+            var testingTarget = new TextField(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            testingTarget.EnableEditing = false;
+            Assert.AreEqual(false, testingTarget.EnableEditing, "Should be equal!");
+
+            testingTarget.EnableEditing = true;
+            Assert.AreEqual(true, testingTarget.EnableEditing, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextFieldEnableEditing END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField PrimaryCursorPosition.")]
+        [Property("SPEC", "Tizen.NUI.TextField.PrimaryCursorPosition A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextFieldPrimaryCursorPosition()
+        {
+            tlog.Debug(tag, $"TextFieldPrimaryCursorPosition START");
+
+            var testingTarget = new TextField(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            testingTarget.Text = "0123456789";
+            testingTarget.PrimaryCursorPosition = 5;
+            Assert.AreEqual(5, testingTarget.PrimaryCursorPosition, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextFieldPrimaryCursorPosition END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField SelectText.")]
+        [Property("SPEC", "Tizen.NUI.TextField.SelectText M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public async Task TextFieldSelectText()
+        {
+            tlog.Debug(tag, $"TextFieldSelectText START");
+
+            var testingTarget = new TextField();
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            testingTarget.Text = "0123456789";
+            testingTarget.EnableSelection = true;
+            Window.Instance.GetDefaultLayer().Add(testingTarget);
+
+            testingTarget.SelectText(2, 6);
+            await Task.Delay(500);
+            Assert.AreEqual(testingTarget.SelectedText, "2345", "Should be equal!");
+            Assert.AreEqual(testingTarget.SelectedTextStart, 2, "Should be equal!");
+            Assert.AreEqual(testingTarget.SelectedTextEnd, 6, "Should be equal!");
+
+            tlog.Debug(tag, $"TextFieldSelectText END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField SelectText.StartIndexException")]
+        [Property("SPEC", "Tizen.NUI.TextField.SelectText M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public async Task TextFieldSelectTextStartIndexException()
+        {
+            tlog.Debug(tag, $"TextFieldSelectTextStartIndexException START");
+
+            var testingTarget = new TextField();
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            testingTarget.Text = "0123456789";
+            testingTarget.EnableSelection = true;
+            Window.Instance.GetDefaultLayer().Add(testingTarget);
+
+            try
+            {
+                testingTarget.SelectText(-1, 6);
+            }
+            catch (ArgumentOutOfRangeException e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Pass("Caught ArgumentOutOfRangeException: Passed!");
+                tlog.Debug(tag, $"TextFieldSelectTextStartIndexException END (OK)");
+            }
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextField SelectText.EndIndexException")]
+        [Property("SPEC", "Tizen.NUI.TextField.SelectText M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public async Task TextFieldSelectTextEndIndexException()
+        {
+            tlog.Debug(tag, $"TextFieldSelectTextEndIndexException START");
+
+            var testingTarget = new TextField();
+            Assert.IsNotNull(testingTarget, "Can't create success object TextField");
+            Assert.IsInstanceOf<TextField>(testingTarget, "Should be an instance of TextField type.");
+
+            testingTarget.Text = "0123456789";
+            testingTarget.EnableSelection = true;
+            Window.Instance.GetDefaultLayer().Add(testingTarget);
+
+            try
+            {
+                testingTarget.SelectText(1, -1);
+            }
+            catch (ArgumentOutOfRangeException e)
+            {
+                tlog.Debug(tag, e.Message.ToString());
+                Assert.Pass("Caught ArgumentOutOfRangeException: Passed!");
+                tlog.Debug(tag, $"TextFieldSelectTextEndIndexException END (OK)");
+            }
+        }
     }
 }
index ccc5b0c..5951d8a 100755 (executable)
@@ -43,6 +43,14 @@ namespace Tizen.NUI.Devel.Tests
             return false;
         }
 
+        public bool CheckVector2(Vector2 vectorSrc, Vector2 vectorDst)
+        {
+            if (vectorSrc.X == vectorDst.X && vectorSrc.Y == vectorDst.Y)
+                return true;
+
+            return false;
+        }
+
         [Test]
         [Category("P1")]
         [Description("TextLabel FontSizeScale.")]
@@ -153,5 +161,199 @@ namespace Tizen.NUI.Devel.Tests
             tlog.Debug(tag, $"TextLabelCharacterSpacing END (OK)");
         }
 
+        [Test]
+        [Category("P1")]
+        [Description("TextLabel GetFontStyle.")]
+        [Property("SPEC", "Tizen.NUI.TextLabel.GetFontStyle M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextLabelGetFontStyle()
+        {
+            tlog.Debug(tag, $"TextLabelGetFontStyle START");
+
+            var testingTarget = new TextLabel(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextLabel");
+            Assert.IsInstanceOf<TextLabel>(testingTarget, "Should be an instance of TextLabel type.");
+
+            var setFontStyle = new Tizen.NUI.Text.FontStyle()
+            {
+                Width = FontWidthType.Condensed,
+                Weight = FontWeightType.Light,
+                Slant = FontSlantType.Italic,
+            };
+
+            testingTarget.SetFontStyle(setFontStyle);
+
+            var getFontStyle = testingTarget.GetFontStyle();
+            Assert.AreEqual(getFontStyle.Width, setFontStyle.Width, "Should be equal!");
+            Assert.AreEqual(getFontStyle.Weight, setFontStyle.Weight, "Should be equal!");
+            Assert.AreEqual(getFontStyle.Slant, setFontStyle.Slant, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextLabelGetFontStyle END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextLabel GetUnderline.")]
+        [Property("SPEC", "Tizen.NUI.TextLabel.GetUnderline M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextLabelGetUnderline()
+        {
+            tlog.Debug(tag, $"TextLabelGetUnderline START");
+
+            var testingTarget = new TextLabel(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextLabel");
+            Assert.IsInstanceOf<TextLabel>(testingTarget, "Should be an instance of TextLabel type.");
+
+            var setUnderline = new Tizen.NUI.Text.Underline()
+            {
+                Enable = true,
+                Color = new Color("#3498DB"),
+                Height = 2.0f,
+                Type = UnderlineType.Dashed,
+                DashWidth = 4.0f,
+                DashGap = 6.0f,
+            };
+
+            testingTarget.SetUnderline(setUnderline);
+
+            var getUnderline = testingTarget.GetUnderline();
+            Assert.AreEqual(getUnderline.Enable, setUnderline.Enable, "Should be equal!");
+            Assert.AreEqual(true, CheckColor(getUnderline.Color, setUnderline.Color), "Should be true!");
+            Assert.AreEqual(getUnderline.Height, setUnderline.Height, "Should be equal!");
+            Assert.AreEqual(getUnderline.Type, setUnderline.Type, "Should be equal!");
+            Assert.AreEqual(getUnderline.DashWidth, setUnderline.DashWidth, "Should be equal!");
+            Assert.AreEqual(getUnderline.DashGap, setUnderline.DashGap, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextLabelGetUnderline END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextLabel GetShadow.")]
+        [Property("SPEC", "Tizen.NUI.TextLabel.GetShadow M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextLabelGetShadow()
+        {
+            tlog.Debug(tag, $"TextLabelGetShadow START");
+
+            var testingTarget = new TextLabel(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextLabel");
+            Assert.IsInstanceOf<TextLabel>(testingTarget, "Should be an instance of TextLabel type.");
+
+            var setShadow = new Tizen.NUI.Text.Shadow()
+            {
+                BlurRadius = 5.0f,
+                Color = Color.Red,
+                Offset = new Vector2(3, 3),
+            };
+
+            testingTarget.SetShadow(setShadow);
+
+            var getShadow = testingTarget.GetShadow();
+            Assert.AreEqual(getShadow.BlurRadius, setShadow.BlurRadius, "Should be equal!");
+            Assert.AreEqual(true, CheckColor(getShadow.Color, setShadow.Color), "Should be true!");
+            Assert.AreEqual(true, CheckVector2(getShadow.Offset, setShadow.Offset), "Should be true!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextLabelGetShadow END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextLabel GetOutline.")]
+        [Property("SPEC", "Tizen.NUI.TextLabel.GetOutline M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextLabelGetOutline()
+        {
+            tlog.Debug(tag, $"TextLabelGetOutline START");
+
+            var testingTarget = new TextLabel(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextLabel");
+            Assert.IsInstanceOf<TextLabel>(testingTarget, "Should be an instance of TextLabel type.");
+
+            var setOutline = new Tizen.NUI.Text.Outline()
+            {
+                Width = 2.0f,
+                Color = Color.Red,
+            };
+
+            testingTarget.SetOutline(setOutline);
+
+            var getOutline = testingTarget.GetOutline();
+            Assert.AreEqual(getOutline.Width, setOutline.Width, "Should be equal!");
+            Assert.AreEqual(true, CheckColor(getOutline.Color, setOutline.Color), "Should be true!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextLabelGetOutline END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextLabel GetTextFit.")]
+        [Property("SPEC", "Tizen.NUI.TextLabel.GetTextFit M")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "MR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextLabelGetTextFit()
+        {
+            tlog.Debug(tag, $"TextLabelGetTextFit START");
+
+            var testingTarget = new TextLabel(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextLabel");
+            Assert.IsInstanceOf<TextLabel>(testingTarget, "Should be an instance of TextLabel type.");
+
+            var setTextFit = new Tizen.NUI.Text.TextFit()
+            {
+                Enable = true,
+                MinSize = 30.0f,
+                MaxSize = 200.0f,
+                StepSize = 1.0f,
+                FontSizeType = FontSizeType.PointSize,
+            };
+
+            testingTarget.SetTextFit(setTextFit);
+
+            var getTextFit = testingTarget.GetTextFit();
+            Assert.AreEqual(getTextFit.Enable, setTextFit.Enable, "Should be equal!");
+            Assert.AreEqual(getTextFit.MinSize, setTextFit.MinSize, "Should be equal!");
+            Assert.AreEqual(getTextFit.MaxSize, setTextFit.MaxSize, "Should be equal!");
+            Assert.AreEqual(getTextFit.StepSize, setTextFit.StepSize, "Should be equal!");
+            Assert.AreEqual(getTextFit.FontSizeType, setTextFit.FontSizeType, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextLabelGetTextFit END (OK)");
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("TextLabel MinLineSize.")]
+        [Property("SPEC", "Tizen.NUI.TextLabel.MinLineSize A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "bowon.ryu@samsung.com")]
+        public void TextLabelMinLineSize()
+        {
+            tlog.Debug(tag, $"TextLabelMinLineSize START");
+
+            var testingTarget = new TextLabel(true);
+            Assert.IsNotNull(testingTarget, "Can't create success object TextLabel");
+            Assert.IsInstanceOf<TextLabel>(testingTarget, "Should be an instance of TextLabel type.");
+
+            testingTarget.MinLineSize = 20;
+            Assert.AreEqual(20, testingTarget.MinLineSize, "Should be equal!");
+
+            testingTarget.Dispose();
+            tlog.Debug(tag, $"TextLabelMinLineSize END (OK)");
+        }
     }
 }
index a5af841..e12099d 100755 (executable)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" api-version="9" package="Tizen.NUI.Devel.Tests" version="1.0.0">
+<manifest xmlns="http://tizen.org/ns/packages" api-version="7" package="Tizen.NUI.Devel.Tests" version="1.0.2">
     <profile name="common" />
     <ui-application appid="Tizen.NUI.Devel.Tests"
                     exec="Tizen.NUI.Devel.Tests.dll"