internal void Build(FileStatus fileStatus, GenericMenu menu, GitDiffWindow window) { menu.AddItem(new GUIContent("Select All"), false, () => SelectFilteredCallback(fileStatus, window)); if (GitManager.CanStage(fileStatus)) { menu.AddItem(new GUIContent("Add All"), false, () => { string[] paths = window.GetStatusList().Where(s => s.State.IsFlagSet(fileStatus)).SelectMany(s => gitManager.GetPathWithMeta(s.LocalPath)).ToArray(); if (gitManager.Threading.IsFlagSet(GitSettingsJson.ThreadingType.Stage)) { gitManager.AsyncStage(paths).onComplete += (o) => { window.Repaint(); }; } else { GitCommands.Stage(gitManager.Repository, paths); gitManager.MarkDirtyAuto(paths); } window.Repaint(); }); } else { menu.AddDisabledItem(new GUIContent("Add All")); } if (GitManager.CanUnstage(fileStatus)) { menu.AddItem(new GUIContent("Remove All"), false, () => { string[] paths = window.GetStatusList().Where(s => s.State.IsFlagSet(fileStatus)).SelectMany(s => gitManager.GetPathWithMeta(s.LocalPath)).ToArray(); if (gitManager.Threading.IsFlagSet(GitSettingsJson.ThreadingType.Unstage)) { gitManager.AsyncUnstage(paths).onComplete += (o) => { window.Repaint(); }; } else { GitCommands.Unstage(gitManager.Repository, paths); gitManager.MarkDirtyAuto(paths); } window.Repaint(); }); } else { menu.AddDisabledItem(new GUIContent("Remove All")); } }