forked from microsoft/vscode
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add drop down to quick diff (microsoft#174353)
* Add dropdown to quick diff when multiple providers Fixes microsoft#169012 * Fix git revert action in quick diff Fixes microsoft#172432 * Make dropdown drive entire quick diff peek - "x of y" detail - action bar * Handle providers being removed * Delete unused css * Address PR feedback
- Loading branch information
Showing
7 changed files
with
256 additions
and
77 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
/*--------------------------------------------------------------------------------------------- | ||
* Copyright (c) Microsoft Corporation. All rights reserved. | ||
* Licensed under the MIT License. See License.txt in the project root for license information. | ||
*--------------------------------------------------------------------------------------------*/ | ||
|
||
import * as nls from 'vs/nls'; | ||
import { Action, IAction } from 'vs/base/common/actions'; | ||
import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; | ||
import { ISelectOptionItem } from 'vs/base/browser/ui/selectBox/selectBox'; | ||
import { SelectActionViewItem } from 'vs/base/browser/ui/actionbar/actionViewItems'; | ||
import { defaultSelectBoxStyles } from 'vs/platform/theme/browser/defaultStyles'; | ||
import { IThemeService } from 'vs/platform/theme/common/themeService'; | ||
import { peekViewTitleBackground } from 'vs/editor/contrib/peekView/browser/peekView'; | ||
import { Color } from 'vs/base/common/color'; | ||
|
||
export interface IQuickDiffSelectItem extends ISelectOptionItem { | ||
provider: string; | ||
} | ||
|
||
export class SwitchQuickDiffViewItem extends SelectActionViewItem<IQuickDiffSelectItem> { | ||
private readonly optionsItems: IQuickDiffSelectItem[]; | ||
|
||
constructor( | ||
action: IAction, | ||
providers: string[], | ||
selected: string, | ||
@IContextViewService contextViewService: IContextViewService, | ||
@IThemeService themeService: IThemeService | ||
) { | ||
const items = providers.map(provider => ({ provider, text: provider })); | ||
let startingSelection = providers.indexOf(selected); | ||
if (startingSelection === -1) { | ||
startingSelection = 0; | ||
} | ||
const styles = { ...defaultSelectBoxStyles }; | ||
const theme = themeService.getColorTheme(); | ||
styles.selectBackground = theme.getColor(peekViewTitleBackground)?.lighten(.7).toString() || Color.transparent.toString(); | ||
super(null, action, items, startingSelection, contextViewService, styles, { ariaLabel: nls.localize('remotes', 'Switch quick diff base') }); | ||
this.optionsItems = items; | ||
} | ||
|
||
public setSelection(provider: string) { | ||
const index = this.optionsItems.findIndex(item => item.provider === provider); | ||
this.select(index); | ||
} | ||
|
||
protected override getActionContext(_: string, index: number): IQuickDiffSelectItem { | ||
return this.optionsItems[index]; | ||
} | ||
} | ||
|
||
export class SwitchQuickDiffBaseAction extends Action { | ||
|
||
public static readonly ID = 'quickDiff.base.switch'; | ||
public static readonly LABEL = nls.localize('quickDiff.base.switch', "Switch Quick Diff Base"); | ||
|
||
constructor(private readonly callback: (event?: IQuickDiffSelectItem) => void) { | ||
super(SwitchQuickDiffBaseAction.ID, SwitchQuickDiffBaseAction.LABEL, undefined, undefined); | ||
} | ||
|
||
override async run(event?: IQuickDiffSelectItem): Promise<void> { | ||
return this.callback(event); | ||
} | ||
} |
Oops, something went wrong.