private void AddBuildSpecificActions(Menu.MenuItemCollection items, bool needsLeadingSeparator)
 {
     var selectedItems = builds.Grid.SelectedRows;
     if (selectedItems.Count > 0)
     {
         if (needsLeadingSeparator)
         {
             items.AddSeparator();
         }
         var row = selectedItems[0].DataRow;
         var buildId = row["ID"];
         var buildName = row["Name"];
         var builtInActions = new[]
         {
             new MenuAction("defaultOpen", "&Open", true,
                         () => SetCurrentBuild(buildId, buildName) ),
         };
         items.AddActions(builtInActions);
         var specificActions = _buildRepository.GetBuildActions(buildId);
         if (specificActions.Count > 0)
         {
             items.AddSeparator();
             items.AddActions(specificActions);
         }
     }
 }
 private void AddTaskSpecificActions(Menu.MenuItemCollection items, bool needsLeadingSeparator)
 {
     var taskId = taskGrid.FindSelectedId();
     if (taskId != null)
     {
         var specificActions = _taskRepository.GetTaskActions(taskId);
         if (specificActions.Count > 0)
         {
             if (needsLeadingSeparator)
             {
                 items.AddSeparator();
             }
             items.AddActions(specificActions);
         }
         if (_sourceRepository != null)
         {
             if (specificActions.Count > 0)
             {
                 items.AddSeparator();
             }
             items.AddActions(
                 new MenuAction("createBranch", "Create branch for task {0}".FormatInvariant(taskId), true,
                     () => CreateBranch(taskId)),
                 new MenuAction("goToBranch", "Go to branch for task {0}".FormatInvariant(taskId), true,
                     () => GoToBranchFor(taskId))
             );
         }
     }
 }
 private void AddShelvesetSpecificActions(Menu.MenuItemCollection items, bool needsLeadingSeparator)
 {
     var selectedItems = shelvesetGrid.Grid.SelectedRows;
     if (selectedItems.Count > 0)
     {
         if (needsLeadingSeparator)
         {
             items.AddSeparator();
         }
         var row = selectedItems[0].DataRow;
         var shelvesetId = row["ID"];
         var shelvesetName = (string) row["Name"];
         var builtInActions = new[]
         {
             new MenuAction("defaultInspect", "&Inspect", true,
                            () => SetCurrentShelveset(shelvesetId, shelvesetName) ),
         };
         items.AddActions(builtInActions);
         var specificActions = _shelvesetRepository.GetShelvesetActions(shelvesetId);
         if (specificActions.Count > 0)
         {
             items.AddSeparator();
             items.AddActions(specificActions);
         }
     }
 }
 private void AddBranchSpecificActions(Menu.MenuItemCollection items, bool needsLeadingSeparator)
 {
     var selectedRows = branchGrid.Grid.SelectedRows;
     if (selectedRows.Count > 0)
     {
         if (needsLeadingSeparator)
         {
             items.AddSeparator();
         }
         var row = selectedRows[0].DataRow;
         var branchId = row["ID"];
         var taskId = row["TaskID"];
         var builtInActions = new[]
         {
             new MenuAction("defaultInspect", "&Inspect", true,
                         () => SetCurrentBranch(branchId, taskId) ),
             new MenuAction("defaultOpen", "&Work on this", row["BasePath"] != DBNull.Value,
                         () => StartWorkOnBranch(branchId, taskId) ),
         };
         items.AddActions(builtInActions);
         var specificActions = _sourceRepository.GetBranchActions(branchId);
         if (specificActions.Count > 0)
         {
             items.AddSeparator();
             items.AddActions(specificActions);
         }
     }
 }
 private void AddRevisionSpecificActions(Menu.MenuItemCollection items, bool needsLeadingSeparator)
 {
     var selectedItems = activityRevisions.Grid.SelectedRows;
     if (selectedItems.Count > 0)
     {
         if (needsLeadingSeparator)
         {
             items.AddSeparator();
         }
         var row = selectedItems[0].DataRow;
         var revisionId = row["ID"];
         var builtInActions = new[]
         {
             new MenuAction("defaultOpen", "&Open", true,
                         () => SetCurrentRevision(revisionId) ),
         };
         items.AddActions(builtInActions);
         // TODO: Should there be specific actions per revision?  Maybe an external view, like TFS has...
     }
 }