public void ResyncFile(Dialogue dialogue, Package previousPackage, bool focus)
        {
            if (dialogue == null)
            {
                return;
            }

            if (previousPackage != null)
            {
                TreeNode[] nodePackages = tree.Nodes.Find(GetPackageKey(previousPackage.Name), false);
                if (nodePackages.Count() > 0)
                {
                    TreeNode nodeParent = nodePackages[0];

                    TreeNode[] nodeChildren = nodeParent.Nodes.Find(dialogue.GetFileName(), true);
                    if (nodeChildren.Count() > 0)
                    {
                        TreeNode nodeDialogue = nodeChildren[0];
                        TreeNode nodeFolder   = nodeDialogue.Parent;
                        nodeDialogue.Remove();

                        DeleteIfEmptyFolder(nodeFolder);
                    }
                }
                else
                {
                    EditorCore.LogError("Unable to update a Dialogue with unknown Package in project explorer : " + dialogue.GetName() + " in " + previousPackage.Name);
                }
            }

            ResyncFile(dialogue, focus);
        }
        public void ResyncFile(Dialogue dialogue, bool focus)
        {
            if (dialogue == null)
            {
                return;
            }

            if (dialogue.Package == null)
            {
                EditorCore.LogError("Unable to show a Dialogue without Package in project explorer : " + dialogue.GetName());
                return;
            }

            TreeNode[] nodePackages = tree.Nodes.Find(GetPackageKey(dialogue.Package.Name), false);
            if (nodePackages.Count() > 0)
            {
                TreeNode nodeParent = nodePackages[0];

                string   path       = dialogue.GetFilePath();
                string[] folders    = path.Split(new char[] { Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries);
                string   folderPath = "";
                foreach (string folder in folders)
                {
                    folderPath = Path.Combine(folderPath, folder);

                    TreeNode[] nodeFolders = nodeParent.Nodes.Find(folder, false);
                    if (nodeFolders.Count() > 0)
                    {
                        nodeParent = nodeFolders[0];
                    }
                    else
                    {
                        nodeParent     = nodeParent.Nodes.Add(folder, folder);
                        nodeParent.Tag = new Folder()
                        {
                            Path = folderPath
                        };
                        nodeParent.ContextMenuStrip = menuFolder;
                        EditorHelper.SetNodeIcon(nodeParent, ENodeIcon.Folder);
                    }
                }

                TreeNode nodeDialogue = nodeParent.Nodes.Add(dialogue.GetFileName(), dialogue.GetName());
                nodeDialogue.ContextMenuStrip = menuDocument;
                EditorHelper.SetNodeIcon(nodeDialogue, ENodeIcon.Dialogue);

                nodeDialogue.Tag = dialogue;

                if (focus)
                {
                    nodeDialogue.EnsureVisible();
                }
            }
            else
            {
                EditorCore.LogError("Unable to show a Dialogue with unknown Package in project explorer : " + dialogue.GetName() + " in " + dialogue.Package.Name);
            }
        }