[NUI]Add xaml support for nui and nui xaml test sample (#230)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / XamlBinding / Effect.cs
1 using System;
2 using System.ComponentModel;
3 using Tizen.NUI.Internals;
4
5 namespace Tizen.NUI.Binding
6 {
7         public abstract class Effect
8         {
9                 internal Effect()
10                 {
11                 }
12
13                 public Element Element { get; internal set; }
14
15                 public bool IsAttached { get; private set; }
16
17                 public string ResolveId { get; internal set; }
18
19                 #region Statics
20
21                 public static Effect Resolve(string name)
22                 {
23                         Effect result = null;
24                         if (Tizen.NUI.Internals.Registrar.Effects.TryGetValue(name, out Type effectType))
25                         {
26                                 result = (Effect)DependencyResolver.ResolveOrCreate(effectType);
27                         }
28
29                         if (result == null)
30                                 result = new NullEffect();
31                         result.ResolveId = name;
32                         return result;
33                 }
34
35                 #endregion
36
37                 // Received after Control/Container/Element made valid
38                 protected abstract void OnAttached();
39
40                 // Received after Control/Container made invalid
41                 protected abstract void OnDetached();
42
43                 internal virtual void ClearEffect()
44                 {
45                         if (IsAttached)
46                                 SendDetached();
47                         Element = null;
48                 }
49
50                 internal virtual void SendAttached()
51                 {
52                         if (IsAttached)
53                                 return;
54                         OnAttached();
55                         IsAttached = true;
56                 }
57
58                 internal virtual void SendDetached()
59                 {
60                         if (!IsAttached)
61                                 return;
62                         OnDetached();
63                         IsAttached = false;
64                 }
65
66                 internal virtual void SendOnElementPropertyChanged(PropertyChangedEventArgs args)
67                 {
68                 }
69         }
70 }