mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-20 10:53:53 +01:00
@@ -29,6 +29,7 @@ import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
|
||||
import { KeyMod, KeyCode } from 'vs/base/common/keyCodes';
|
||||
import { ITree } from 'vs/base/parts/tree/browser/tree';
|
||||
import * as searchActions from 'vs/workbench/parts/search/browser/searchActions';
|
||||
import { Model } from 'vs/workbench/parts/files/common/explorerModel';
|
||||
import * as Constants from 'vs/workbench/parts/search/common/constants';
|
||||
import { registerContributions as replaceContributions } from 'vs/workbench/parts/search/browser/replaceContributions';
|
||||
import { registerContributions as searchWidgetContributions } from 'vs/workbench/parts/search/browser/searchWidget';
|
||||
@@ -199,7 +200,11 @@ class ExplorerViewerActionContributor extends ActionBarContributor {
|
||||
public hasSecondaryActions(context: any): boolean {
|
||||
let element = context.element;
|
||||
|
||||
// Contribute only on file resources
|
||||
// Contribute only on file resources and model (context menu for multi root)
|
||||
if (element instanceof Model) {
|
||||
return true;
|
||||
}
|
||||
|
||||
let fileResource = explorerItemToFileResource(element);
|
||||
if (!fileResource) {
|
||||
return false;
|
||||
@@ -212,9 +217,14 @@ class ExplorerViewerActionContributor extends ActionBarContributor {
|
||||
let actions: IAction[] = [];
|
||||
|
||||
if (this.hasSecondaryActions(context)) {
|
||||
let fileResource = explorerItemToFileResource(context.element);
|
||||
let action: Action;
|
||||
if (context.element instanceof Model) {
|
||||
action = this._instantiationService.createInstance(searchActions.FindInWorkspaceAction);
|
||||
} else {
|
||||
let fileResource = explorerItemToFileResource(context.element);
|
||||
action = this._instantiationService.createInstance(searchActions.FindInFolderAction, fileResource.resource);
|
||||
}
|
||||
|
||||
let action = this._instantiationService.createInstance(searchActions.FindInFolderAction, fileResource.resource);
|
||||
action.order = 55;
|
||||
actions.push(action);
|
||||
|
||||
|
||||
@@ -240,6 +240,21 @@ export class CloseReplaceAction extends Action {
|
||||
}
|
||||
}
|
||||
|
||||
export class FindInWorkspaceAction extends Action {
|
||||
|
||||
public static ID = 'filesExplorer.findInWorkspace';
|
||||
|
||||
constructor( @IViewletService private viewletService: IViewletService) {
|
||||
super(FindInWorkspaceAction.ID, nls.localize('findInWorkspace', "Find in Workspace..."));
|
||||
}
|
||||
|
||||
public run(event?: any): TPromise<any> {
|
||||
return this.viewletService.openViewlet(Constants.VIEWLET_ID, true).then((viewlet: SearchViewlet) => {
|
||||
viewlet.searchInFolder(null);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export class FindInFolderAction extends Action {
|
||||
|
||||
public static ID = 'filesExplorer.findInFolder';
|
||||
@@ -247,7 +262,7 @@ export class FindInFolderAction extends Action {
|
||||
private resource: URI;
|
||||
|
||||
constructor(resource: URI, @IInstantiationService private instantiationService: IInstantiationService) {
|
||||
super(FindInFolderAction.ID, nls.localize('findInFolder', "Find in Folder"));
|
||||
super(FindInFolderAction.ID, nls.localize('findInFolder', "Find in Folder..."));
|
||||
|
||||
this.resource = resource;
|
||||
}
|
||||
|
||||
@@ -839,7 +839,7 @@ export class SearchViewlet extends Viewlet {
|
||||
public searchInFolder(resource: URI): void {
|
||||
let folderPath = null;
|
||||
const workspace = this.contextService.getWorkspace();
|
||||
if (workspace) {
|
||||
if (workspace && resource) {
|
||||
if (workspace.roots.length === 1) {
|
||||
// Show relative path from the root for single-root mode
|
||||
folderPath = paths.relative(workspace.roots[0].fsPath, resource.fsPath);
|
||||
|
||||
Reference in New Issue
Block a user