0c5cd36b612c1cf98757b8f580b15ddf402aad4a
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI.XamlBuild / src / public / EXamlBuild / EXaml / EXamlSetDynamicResource.cs
1 /*
2  * Copyright(c) 2021 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 using Mono.Cecil;
18 using System;
19 using System.Collections.Generic;
20 using System.IO;
21 using System.Reflection;
22 using System.Text;
23 using Tizen.NUI.Binding;
24 using Tizen.NUI.EXaml.Build.Tasks;
25
26 namespace Tizen.NUI.EXaml
27 {
28     //use $$
29     internal class EXamlSetDynamicResource : EXamlOperation
30     {
31         internal override string Write()
32         {
33             if (@object.IsValid)
34             {
35                 string ret = String.Format("({0} ({1} {2} {3}))\n",
36                          eXamlContext.GetValueString((int)EXamlOperationType.SetDynamicResource),
37                          eXamlContext.GetValueString(@object.Index),
38                          eXamlContext.GetValueString(eXamlContext.definedBindableProperties.IndexOf(bindableProperty.Resolve())),
39                          eXamlContext.GetValueString(key));
40                 return ret;
41             }
42             else
43             {
44                 return "";
45             }
46         }
47
48         public EXamlSetDynamicResource(EXamlContext context, EXamlCreateObject @object, MemberReference bindalbeProperty, string key)
49             : base(context)
50         {
51             this.@object = @object;
52             this.bindableProperty = bindalbeProperty;
53             this.key = key;
54             eXamlContext.eXamlOperations.Add(this);
55
56             @object.AddBindableProperty(bindableProperty);
57         }
58
59         private EXamlCreateObject @object;
60         private MemberReference bindableProperty;
61         private string key;
62     }
63 }