Пример #1
0
    public static void DoRename(String newName)
    {
        ScintillaControl sci = Globals.SciControl;

        mainForm = (MainForm)Globals.MainForm;

        // 開いているファイルを保存
        mainForm.CallCommand("SaveAllModified", null);

        ITabbedDocument document = mainForm.CurrentDocument;
        String documentDirectory = Path.GetDirectoryName(document.FileName);
        ASContext context = (ASContext)ASContext.Context;
        List<ClassModel> classes = context.CurrentModel.Classes;

        currentFile = document.FileName;
        //String newFileName = classes[0].Name;
        String newFileName = newName;
        newFilePath = documentDirectory + "\\" + newFileName + ".as";

        FileModel currentModel = context.CurrentModel;
        MemberModel currentMember = classes[0].ToMemberModel();
        String oldName = currentMember.Name;

        if (newFileName == "") return;
        if (oldName == newFileName) return;

        Project project = (Project) PluginBase.CurrentProject;
        if (project == null) return;

        // 本当に実行してよいか確認
        /*
        if (!Globals.Settings.DisableReplaceFilesConfirm)
        {
            String caption = TextHelper.GetString("FlashDevelop.Title.ConfirmDialog");
            String message = TextHelper.GetString("FlashDevelop.Info.AreYouSureToReplaceInFiles");
            DialogResult result = MessageBox.Show(message, caption, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if (result == DialogResult.Cancel) return;
        }
        */

        List<String> fileList = new List<string>();

        foreach (PathModel path in ASContext.Context.Classpath)
        {
            lock (path.Files.Values)
            {
                foreach (FileModel model in path.Files.Values)
                {

                    if (model.Package == currentModel.Package)
                    {
                        fileList.Add(model.FileName);
                        continue;
                    }

                    //TraceManager.Add(model.Classes);
                    foreach(MemberModel import in model.Imports)
                    {
                        if (import.Type == currentMember.Type)
                        {
                            fileList.Add(model.FileName);
                        }
                    }
                }
            }
        }

        document.Close();

        fileList.Add(currentFile);

        Replace(fileList, oldName, newFileName);
    }