[NUI] Add left/right shadow effect for the scrollablebase.
[platform/core/csapi/tizenfx.git] / test / Tizen.NUI.Samples / Tizen.NUI.Samples / Samples / ScrollableBaseOutOfBoundSample.cs
1 
2 using Tizen.NUI.BaseComponents;
3
4 namespace Tizen.NUI.Samples
5 {
6     public class ScrollableBaseOutOfBoundSample : IExample
7     {
8         private View root;
9         private Components.ScrollableBase horizontalScrollableBase = null;
10         private TextLabel[] horizontalItems;
11
12         private Components.ScrollableBase verticalScrollableBase = null;
13         private TextLabel[] verticalItems;
14
15         public void Activate()
16         {
17             Window window = NUIApplication.GetDefaultWindow();
18             root = new View()
19             {
20                 Size = new Size(1920, 1080),
21                 BackgroundColor = new Color(0.7f, 0.9f, 0.8f, 1.0f),
22             };
23             root.Layout = new LinearLayout()
24             {
25                 LinearOrientation = LinearLayout.Orientation.Vertical,
26             };
27             window.Add(root);
28
29             CreateHorizontalScrollableBase();
30
31             CreateVerticalScrollableBase();
32         }
33
34         private void CreateHorizontalScrollableBase()
35         {
36             horizontalScrollableBase = new Components.ScrollableBase()
37             {
38                 Size = new Size(400, 300),
39                 ScrollingDirection = Components.ScrollableBase.Direction.Horizontal,
40             };
41             horizontalScrollableBase.ScrollOutOfBound += OnHorizontalScrollOutOfBound;
42
43             horizontalItems = new TextLabel[5];
44             for (int i = 0; i < 5; i++)
45             {
46                 horizontalItems[i] = new TextLabel
47                 {
48                     Position = new Position(i * 200, 0),
49                     Size = new Size(200, 300),
50                     PointSize = 12.0f,
51                     TextColor = Color.Black,
52                 };
53                 if (i % 2 == 0)
54                 {
55                     horizontalItems[i].BackgroundColor = Color.White;
56                 }
57                 else
58                 {
59                     horizontalItems[i].BackgroundColor = Color.Cyan;
60                 }
61                 horizontalScrollableBase.Add(horizontalItems[i]);
62             }
63             root.Add(horizontalScrollableBase);
64         }
65
66         private void OnHorizontalScrollOutOfBound(object sender, Components.ScrollOutOfBoundEventArgs e)
67         {
68             if (e.ScrollableBound == Components.ScrollOutOfBoundEventArgs.Bound.Left)
69             {
70                 horizontalItems[0].Text = "Reached at the left.";
71             }
72             else if (e.ScrollableBound == Components.ScrollOutOfBoundEventArgs.Bound.Right)
73             {
74                 horizontalItems[4].Text = "Reached at the right.";
75             }
76         }
77
78         private void CreateVerticalScrollableBase()
79         {
80             verticalScrollableBase = new Components.ScrollableBase()
81             {
82                 Size = new Size(400, 300),
83                 ScrollingDirection = Components.ScrollableBase.Direction.Vertical,
84                 EnableOverShootingEffect = true,
85             };
86             verticalScrollableBase.ScrollOutOfBound += OnVerticalScrollOutOfBound;
87
88             verticalItems = new TextLabel[5];
89             for (int i = 0; i < 5; i++)
90             {
91                 verticalItems[i] = new TextLabel
92                 {
93                     Position = new Position(0, i * 100),
94                     Size = new Size(400, 100),
95                     PointSize = 12.0f,
96                     TextColor = Color.Black,
97                 };
98                 if (i % 2 == 0)
99                 {
100                     verticalItems[i].BackgroundColor = Color.White;
101                 }
102                 else
103                 {
104                     verticalItems[i].BackgroundColor = Color.Cyan;
105                 }
106                 verticalScrollableBase.Add(verticalItems[i]);
107             }
108             root.Add(verticalScrollableBase);
109         }
110
111         private void OnVerticalScrollOutOfBound(object sender, Components.ScrollOutOfBoundEventArgs e)
112         {
113             if (e.Displacement > 100)
114             {
115                 if (e.PanDirection == Components.ScrollOutOfBoundEventArgs.Direction.Down)
116                 {
117                     items[0].Text = $"Reached at the top, panned displacement is {e.Displacement}.";
118                 }
119             }
120             else if (0 - e.Displacement > 100)
121             {
122                 if (e.PanDirection == Components.ScrollOutOfBoundEventArgs.Direction.Up)
123                 {
124                     items[4].Text = $"Reached at the bottom, panned displacement is {e.Displacement}.";
125                 }
126             }
127         }
128
129         public void Deactivate()
130         {
131             for (int i = 0; i < 5; i++)
132             {
133                 if (verticalItems[i] != null)
134                 {
135                     verticalScrollableBase.Remove(verticalItems[i]);
136                     verticalItems[i].Dispose();
137                 }
138             }
139             if (verticalScrollableBase != null)
140             {
141                 root.Remove(verticalScrollableBase);
142                 verticalScrollableBase.Dispose();
143             }
144             for (int i = 0; i < 5; i++)
145             {
146                 if (horizontalItems[i] != null)
147                 {
148                     horizontalScrollableBase.Remove(horizontalItems[i]);
149                     horizontalItems[i].Dispose();
150                 }
151             }
152             if (horizontalScrollableBase != null)
153             {
154                 root.Remove(horizontalScrollableBase);
155                 horizontalScrollableBase.Dispose();
156             }
157             root.Dispose();
158         }
159     }
160 }