2 * Copyright(c) 2021 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 using System.Collections.Generic;
21 namespace Tizen.NUI.EXaml
23 internal class RootAction : Action
25 delegate void CreateOperation(GlobalDataList globalDataList, List<object> operationInfo);
27 public RootAction(GlobalDataList globalDataList)
29 this.globalDataList = globalDataList;
31 childAction = new GetValueListAction(')', this);
35 public Action DealChar(char c)
48 throw new Exception($"RootAction must not deal the char {c}");
57 public void OnActive()
59 int opIndex = (int)childAction.ValueList[0];
60 Operations[opIndex].Invoke(globalDataList, childAction.ValueList[1] as List<object>);
65 private GlobalDataList globalDataList;
66 private GetValueListAction childAction;
68 private static CreateOperation[] operations;
70 private static CreateOperation[] Operations
74 if (null == operations)
76 InitOperationFactory(out operations);
83 private static void InitOperationFactory(out CreateOperation[] createOperations)
85 createOperations = new CreateOperation[(int)EXamlOperationType.MAX];
87 createOperations[(int)EXamlOperationType.GatherAssembly] = (GlobalDataList globalDataList, List<object> opInfo) =>
89 var operation = new GatherAssembly(globalDataList, opInfo);
90 globalDataList.PreLoadOperations.Add(operation);
93 createOperations[(int)EXamlOperationType.GatherType] = (GlobalDataList globalDataList, List<object> opInfo) =>
95 var operation = new GatherType(globalDataList, opInfo);
96 globalDataList.PreLoadOperations.Add(operation);
99 createOperations[(int)EXamlOperationType.GatherProperty] = (GlobalDataList globalDataList, List<object> opInfo) =>
101 var operation = new GatherProperty(globalDataList, opInfo);
102 globalDataList.PreLoadOperations.Add(operation);
105 createOperations[(int)EXamlOperationType.GatherEvent] = (GlobalDataList globalDataList, List<object> opInfo) =>
107 var operation = new GatherEvent(globalDataList, opInfo);
108 globalDataList.PreLoadOperations.Add(operation);
111 createOperations[(int)EXamlOperationType.GatherMethod] = (GlobalDataList globalDataList, List<object> opInfo) =>
113 var operation = new GatherMethod(globalDataList, opInfo);
114 globalDataList.PreLoadOperations.Add(operation);
117 createOperations[(int)EXamlOperationType.GatherBindableProperty] = (GlobalDataList globalDataList, List<object> opInfo) =>
119 var operation = new GatherBindableProperties(globalDataList, opInfo);
120 globalDataList.PreLoadOperations.Add(operation);
123 createOperations[(int)EXamlOperationType.CreateObject] = (GlobalDataList globalDataList, List<object> opInfo) =>
125 var operation = new CreateObject(globalDataList, opInfo);
126 globalDataList.Operations.Add(operation);
129 createOperations[(int)EXamlOperationType.CreateArrayObject] = (GlobalDataList globalDataList, List<object> opInfo) =>
131 var operation = new CreateArrayObject(globalDataList, opInfo);
132 globalDataList.Operations.Add(operation);
135 createOperations[(int)EXamlOperationType.CreateDataTemplate] = (GlobalDataList globalDataList, List<object> opInfo) =>
137 var operation = new CreateDataTemplate(globalDataList, opInfo);
138 globalDataList.Operations.Add(operation);
141 createOperations[(int)EXamlOperationType.GetStaticObject] = (GlobalDataList globalDataList, List<object> opInfo) =>
143 var operation = new GetStaticObject(globalDataList, opInfo);
144 globalDataList.Operations.Add(operation);
147 createOperations[(int)EXamlOperationType.GetTypeObject] = (GlobalDataList globalDataList, List<object> opInfo) =>
149 var operation = new GetTypeObject(globalDataList, opInfo);
150 globalDataList.Operations.Add(operation);
153 createOperations[(int)EXamlOperationType.GetObjectConvertedFromString] = (GlobalDataList globalDataList, List<object> opInfo) =>
155 var operation = new GetObjectConvertedFromString(globalDataList, opInfo);
156 globalDataList.Operations.Add(operation);
159 createOperations[(int)EXamlOperationType.GetEnumObject] = (GlobalDataList globalDataList, List<object> opInfo) =>
161 var operation = new GetEnumObject(globalDataList, opInfo);
162 globalDataList.Operations.Add(operation);
165 createOperations[(int)EXamlOperationType.GetObjectByProperty] = (GlobalDataList globalDataList, List<object> opInfo) =>
167 var operation = new GetObjectByProperty(globalDataList, opInfo);
168 globalDataList.Operations.Add(operation);
171 createOperations[(int)EXamlOperationType.SetProperty] = (GlobalDataList globalDataList, List<object> opInfo) =>
173 var operation = new SetProperty(globalDataList, opInfo);
174 globalDataList.Operations.Add(operation);
177 createOperations[(int)EXamlOperationType.SetBindableProperty] = (GlobalDataList globalDataList, List<object> opInfo) =>
179 var operation = new SetBindableProperty(globalDataList, opInfo);
180 globalDataList.Operations.Add(operation);
183 createOperations[(int)EXamlOperationType.SetBinding] = (GlobalDataList globalDataList, List<object> opInfo) =>
185 var operation = new SetBinding(globalDataList, opInfo);
186 globalDataList.Operations.Add(operation);
189 createOperations[(int)EXamlOperationType.SetDynamicResource] = (GlobalDataList globalDataList, List<object> opInfo) =>
191 var operation = new SetDynamicResource(globalDataList, opInfo);
192 globalDataList.Operations.Add(operation);
195 createOperations[(int)EXamlOperationType.AddEvent] = (GlobalDataList globalDataList, List<object> opInfo) =>
197 var operation = new AddEvent(globalDataList, opInfo);
198 globalDataList.Operations.Add(operation);
201 createOperations[(int)EXamlOperationType.AddObject] = (GlobalDataList globalDataList, List<object> opInfo) =>
203 var operation = new AddObject(globalDataList, opInfo);
204 globalDataList.Operations.Add(operation);
207 createOperations[(int)EXamlOperationType.AddToCollectionObject] = (GlobalDataList globalDataList, List<object> opInfo) =>
209 var operation = new AddToCollectionObject(globalDataList, opInfo);
210 globalDataList.Operations.Add(operation);
213 createOperations[(int)EXamlOperationType.AddToCollectionProperty] = (GlobalDataList globalDataList, List<object> opInfo) =>
215 var operation = new AddToCollectionProperty(globalDataList, opInfo);
216 globalDataList.Operations.Add(operation);
219 createOperations[(int)EXamlOperationType.AddToResourceDictionary] = (GlobalDataList globalDataList, List<object> opInfo) =>
221 var operation = new AddToResourceDictionary(globalDataList, opInfo);
222 globalDataList.Operations.Add(operation);
225 createOperations[(int)EXamlOperationType.RegisterXName] = (GlobalDataList globalDataList, List<object> opInfo) =>
227 var operation = new RegisterXName(globalDataList, opInfo);
228 globalDataList.Operations.Add(operation);
231 createOperations[(int)EXamlOperationType.GetLongString] = (GlobalDataList globalDataList, List<object> opInfo) =>
233 globalDataList.LongStrings = opInfo[0] as string;
236 createOperations[(int)EXamlOperationType.CreateDPObject] = (GlobalDataList globalDataList, List<object> opInfo) =>
238 var operation = new CreateDPObject(globalDataList, opInfo);
239 globalDataList.Operations.Add(operation);
242 createOperations[(int)EXamlOperationType.CreateResourceDictionary] = (GlobalDataList globalDataList, List<object> opInfo) =>
244 var operation = new CreateResourceDictionary(globalDataList, opInfo);
245 globalDataList.Operations.Add(operation);