Example #1
0
 public GitDiffElementContextFactory(GitManager gitManager, GitConflictsHandler conflictsHandler, GitOverlay gitOverlay,
                                     GitExternalManager externalManager, GitCallbacks gitCallbacks)
 {
     this.gitManager       = gitManager;
     this.conflictsHandler = conflictsHandler;
     this.gitOverlay       = gitOverlay;
     this.externalManager  = externalManager;
     this.gitCallbacks     = gitCallbacks;
 }
        private void DoDiffElementContex(GenericMenu editMenu)
        {
            StatusListEntry[] entries       = statusList.Where(e => e.Selected).ToArray();
            FileStatus        selectedFlags = entries.Select(e => e.State).CombineFlags();

            GUIContent addContent = new GUIContent("Stage");

            if (GitManager.CanStage(selectedFlags))
            {
                editMenu.AddItem(addContent, false, AddSelectedCallback);
            }
            else
            {
                editMenu.AddDisabledItem(addContent);
            }
            GUIContent removeContent = new GUIContent("Unstage");

            if (GitManager.CanUnstage(selectedFlags))
            {
                editMenu.AddItem(removeContent, false, RemoveSelectedCallback);
            }
            else
            {
                editMenu.AddDisabledItem(removeContent);
            }

            editMenu.AddSeparator("");
            if (entries.Length == 1)
            {
                string path = entries[0].Path;
                if (selectedFlags.IsFlagSet(FileStatus.Conflicted))
                {
                    if (GitConflictsHandler.CanResolveConflictsWithTool(path))
                    {
                        editMenu.AddItem(new GUIContent("Resolve Conflicts"), false, ResolveConflictsCallback, path);
                    }
                    else
                    {
                        editMenu.AddDisabledItem(new GUIContent("Resolve Conflicts"));
                    }
                    editMenu.AddItem(new GUIContent("Resolve (Using Ours)"), false, ResolveConflictsOursCallback, entries[0].Path);
                    editMenu.AddItem(new GUIContent("Resolve (Using Theirs)"), false, ResolveConflictsTheirsCallback, entries[0].Path);
                }
                else
                {
                    editMenu.AddItem(new GUIContent("Difference"), false, SeeDifferenceSelectedCallback, entries[0].Path);
                    editMenu.AddItem(new GUIContent("Difference with previous version"), false, SeeDifferencePrevSelectedCallback, entries[0].Path);
                }
            }
            editMenu.AddSeparator("");
            editMenu.AddItem(new GUIContent("Revert"), false, RevertSelectedCallback);
            editMenu.AddSeparator("");
            editMenu.AddItem(new GUIContent("Reload"), false, ReloadCallback);
        }
 private void ResolveConflictsCallback(object path)
 {
     GitConflictsHandler.ResolveConflicts((string)path, MergeFileFavor.Normal);
 }