[Xaml] Support import other xaml as the source of resource dictionary
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / internal / EXaml / Operation / CreateResourceDictionary.cs
1 /*
2  * Copyright(c) 2022 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
18 using System;
19 using System.Collections.Generic;
20 using System.Text;
21 using Tizen.NUI.Binding;
22
23 namespace Tizen.NUI.EXaml
24 {
25     class CreateResourceDictionary : Operation
26     {
27         public CreateResourceDictionary(GlobalDataList globalDataList, List<object> operationInfo)
28         {
29             typeIndex = (int)operationInfo[0];
30             indexRangeOfContent = ((int)operationInfo[1], (int)operationInfo[2]);
31             this.globalDataList = globalDataList;
32         }
33
34         private GlobalDataList globalDataList;
35         private int typeIndex;
36         private (int, int) indexRangeOfContent;
37
38         public void Do()
39         {
40             var content = globalDataList.LongStrings.Substring(indexRangeOfContent.Item1, indexRangeOfContent.Item2 - indexRangeOfContent.Item1 + 1);
41             var resourceDictionary = EXamlExtensions.CreateObjectFromEXaml(content) as ResourceDictionary;
42
43             globalDataList.GatheredInstances.Add(resourceDictionary);
44
45             if (null == globalDataList.Root)
46             {
47                 globalDataList.Root = resourceDictionary;
48             }
49         }
50     }
51 }