Ejemplo n.º 1
0
        static ParsedClass GetParsedClassFrom(string fileName)
        {
            ParsedFile parsedFile = new ParsedFile(fileName, false, false);

            if (parsedFile.Namespaces.Count != 0)
            {
                ParsedNamespace parsedNamespace = parsedFile.Namespaces[0];

                if (parsedNamespace.Classes.Count != 0)
                {
                    return(parsedNamespace.Classes[0]);
                }
            }
            return(null);
        }
        public static ParsedMethod GetParsedMethodFromAssociatedFile(string fullFileName, EventResponseSave instance)
        {
            if (File.Exists(fullFileName))
            {
                ParsedFile file = new ParsedFile(fullFileName, false, false);

                if (file.Namespaces.Count != 0)
                {
                    ParsedNamespace parsedNamespace = file.Namespaces[0];

                    if (parsedNamespace.Classes.Count != 0)
                    {
                        ParsedClass parsedClass = parsedNamespace.Classes[0];

                        return(parsedClass.GetMethod("On" + instance.EventName));
                    }
                }
            }

            return(null);
        }
        internal static void InsertMethodCallInElementIfNecessary(IElement iElement, string methodName)
        {
            string currentFileName = FileManager.RelativeDirectory + iElement.Name + ".Events.cs";

            string className = FileManager.RemovePath(iElement.Name);

            string fullFileContents = null;

            if (!FileManager.FileExists(currentFileName))
            {
                string startingTemplate = Resources.Resource1.EventTemplate;

                startingTemplate = startingTemplate.Replace("CLASS___NAME", className);

                string namespaceName =
                    ProjectManager.ProjectNamespace + '.' +
                    FileManager.GetDirectoryKeepRelative(iElement.Name).Replace("\\", ".");
                // remove the ending slash:
                namespaceName = namespaceName.Substring(0, namespaceName.Length - 1);

                startingTemplate = startingTemplate.Replace("NAMESPACE___NAME", namespaceName);

                FileManager.SaveText(startingTemplate, currentFileName);

                ProjectManager.CodeProjectHelper.CreateAndAddPartialCodeFile(currentFileName, false);
                fullFileContents = startingTemplate;
            }
            else
            {
                fullFileContents = FileManager.FromFileText(currentFileName);
            }

            #region Find the parsedClassToUse

            ParsedNamespace parsedNamespace = new ParsedNamespace(fullFileContents);

            ParsedClass parsedClassToUse = null;

            foreach (ParsedClass parsedClass in parsedNamespace.Classes)
            {
                if (parsedClass.Name == className)
                {
                    parsedClassToUse = parsedClass;
                    break;
                }
            }

            #endregion

            if (parsedClassToUse != null)
            {
                // See if there is already a method here
                if (parsedClassToUse.GetMethod(methodName) == null)
                {
                    DialogResult result =
                        MessageBox.Show("The method\n\n" + methodName + "\n\ndoes not exist.  Create this " +
                                        "method in your .Event.cs code file?", "Create method?", MessageBoxButtons.YesNo);

                    if (result == DialogResult.Yes)
                    {
                        string newMethodCode =
                            "\r\n\t\tvoid " + methodName + "(object sender, EventArgs e)\r\n" +
                            "\t\t{\r\n" +
                            "\t\t\t\r\n" +
                            "\t\t}\r\n";

                        int indexToInsertAt = EventManager.GetLastLocationInClass(fullFileContents, startOfLine: true);

                        fullFileContents = fullFileContents.Insert(indexToInsertAt, newMethodCode);

                        FileManager.SaveText(fullFileContents, currentFileName);
                    }
                }
            }
        }