public static AndroidWindowData CreateInstance(AndroidXmlEditor editor) { AndroidWindowData instance = ScriptableObject.CreateInstance <AndroidWindowData> (); instance.xmlEditor = editor; instance.activityList = new List <ManifestActivity> (); instance.receiverList = new List <ManifestReceiver> (); instance.serviceList = new List <ManifestService> (); instance.providerList = new List <ManifestProvider> (); instance.metaDataList = new List <ManifestMetaData> (); instance.usesLibraryList = new List <ManifestUsesLibrary> (); instance.permissionList = new List <ManifestPermission> (); instance.usesPermissionList = new List <ManifestUsesPermission>(); instance.usesFeatureList = new List <ManifestUsesFeature> (); List <XmlNode> nodeList = instance.xmlEditor.GetManifestElements(); foreach (XmlNode node in nodeList) { instance.BuildIManifestElement(node); } return(instance); }
void OnGUI() { if (data == null) { OnEnable(); } Undo.RecordObject(data, "Manifest Window"); GUI.color = Color.white; scrollPos = EditorGUILayout.BeginScrollView(scrollPos); data.OnGUI(); EditorGUILayout.Space(); #region UpdateButton EditorGUILayout.BeginHorizontal(); { if (data.dirty) { GUI.color = Color.green; } else { GUI.color = Color.grey; } if (GUILayout.Button("Apply Changes")) { ApplyChanges(); } if (data.dirty) { GUI.color = Color.red; } else { GUI.color = Color.grey; } if (GUILayout.Button("Clear Changes")) { ReloadDocument(); } GUI.color = Color.white; } EditorGUILayout.EndHorizontal(); #endregion EditorGUILayout.Space(); templateName = EditorGUILayout.TextField("Template name: ", templateName); if (GUILayout.Button("Save as Template")) { AndroidXmlEditor templateEditor = new AndroidXmlEditor(data.ToString()); AndroidWindowData newTemplate = AndroidWindowData.CreateInstance(templateEditor); newTemplate.name = templateName; AndroidTemplateManager.SaveTemplate(newTemplate); } for (int i = 0; i < templateElements.Count; i++) { EditorGUILayout.BeginHorizontal(); { templateElements[i].display = EditorGUILayout.Foldout(templateElements[i].display, templateElements[i].name + ":"); if (GUILayout.Button("Import", GUILayout.Width(50))) { data.Merge(templateElements[i]); data.dirty = true; } if (GUILayout.Button("Delete", GUILayout.Width(50))) { AndroidTemplateManager.DeleteTemplate(templateElements[i--]); EditorGUILayout.EndHorizontal(); continue; } } EditorGUILayout.EndHorizontal(); if (templateElements[i].display) { BBGuiHelper.BeginIndent(); { templateElements[i].OnGUI(); EditorGUILayout.BeginHorizontal(); { if (templateElements[i].dirty) { GUI.color = Color.green; } else { GUI.color = Color.grey; } if (GUILayout.Button("Apply Changes")) { templateElements[i].ApplyChanges(); } if (templateElements[i].dirty) { GUI.color = Color.red; } else { GUI.color = Color.grey; } if (GUILayout.Button("Clear Changes")) { AndroidTemplateManager.ReloadTemplate(i); } GUI.color = Color.white; } EditorGUILayout.EndHorizontal(); } BBGuiHelper.EndIndent(); } } EditorGUILayout.EndScrollView(); //Repaint on Undo if (Event.current.type == EventType.ValidateCommand) { switch (Event.current.commandName) { case "UndoRedoPerformed": this.Repaint(); break; } } }