Skip to content

Commit

Permalink
debt - push down iframe editor actions to workbench/browser
Browse files Browse the repository at this point in the history
  • Loading branch information
bpasero committed Jan 14, 2016
1 parent 9e8b080 commit b98f99c
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 62 deletions.
67 changes: 65 additions & 2 deletions src/vs/workbench/browser/parts/editor/editor.contribution.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,24 @@

import {Registry} from 'vs/platform/platform';
import nls = require('vs/nls');
import {Promise} from 'vs/base/common/winjs.base';
import {IWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
import {StatusbarItemDescriptor, StatusbarAlignment, IStatusbarRegistry, Extensions as StatusExtensions} from 'vs/workbench/browser/parts/statusbar/statusbar';
import {EditorDescriptor, IEditorRegistry, Extensions as EditorExtensions} from 'vs/workbench/browser/parts/editor/baseEditor';
import {EditorDescriptor, IEditorRegistry, Extensions as EditorExtensions, IEditorInputActionContext, IEditorInputAction, EditorInputActionContributor, EditorInputAction} from 'vs/workbench/browser/parts/editor/baseEditor';
import {StringEditorInput} from 'vs/workbench/common/editor/stringEditorInput';
import {StringEditor} from 'vs/workbench/browser/parts/editor/stringEditor';
import {DiffEditorInput} from 'vs/workbench/common/editor/diffEditorInput';
import {UntitledEditorInput} from 'vs/workbench/common/editor/untitledEditorInput';
import {ResourceEditorInput} from 'vs/workbench/common/editor/resourceEditorInput';
import {IInstantiationService} from 'vs/platform/instantiation/common/instantiation';
import {TextDiffEditor} from 'vs/workbench/browser/parts/editor/textDiffEditor';
import {IWorkbenchEditorService} from 'vs/workbench/services/editor/common/editorService';
import {BinaryResourceDiffEditor} from 'vs/workbench/browser/parts/editor/binaryDiffEditor';
import {IFrameEditor} from 'vs/workbench/browser/parts/editor/iframeEditor';
import {IFrameEditorInput} from 'vs/workbench/common/editor/iframeEditorInput';
import {ChangeEncodingAction, ChangeEOLAction, ChangeModeAction, EditorStatus} from 'vs/workbench/browser/parts/editor/editorStatus';
import {IWorkbenchActionRegistry, Extensions as ActionExtensions} from 'vs/workbench/common/actionRegistry';
import {Scope, IActionBarRegistry, Extensions as ActionBarExtensions, ActionBarContributor} from 'vs/workbench/browser/actionBarRegistry';
import {SyncActionDescriptor} from 'vs/platform/actions/common/actions';
import {SyncDescriptor} from 'vs/platform/instantiation/common/descriptors';
import {KeyMod, KeyCode} from 'vs/base/common/keyCodes';
Expand Down Expand Up @@ -85,4 +90,62 @@ statusBar.registerStatusbarItem(new StatusbarItemDescriptor(EditorStatus, Status
let registry = <IWorkbenchActionRegistry>Registry.as(ActionExtensions.WorkbenchActions);
registry.registerWorkbenchAction(new SyncActionDescriptor(ChangeModeAction, ChangeModeAction.ID, ChangeModeAction.LABEL, { primary: KeyMod.chord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyCode.KEY_M) }));
registry.registerWorkbenchAction(new SyncActionDescriptor(ChangeEOLAction, ChangeEOLAction.ID, ChangeEOLAction.LABEL));
registry.registerWorkbenchAction(new SyncActionDescriptor(ChangeEncodingAction, ChangeEncodingAction.ID, ChangeEncodingAction.LABEL));
registry.registerWorkbenchAction(new SyncActionDescriptor(ChangeEncodingAction, ChangeEncodingAction.ID, ChangeEncodingAction.LABEL));


export class ViewSourceEditorInputAction extends EditorInputAction {

constructor(
@IWorkbenchEditorService private editorService: IWorkbenchEditorService,
@IWorkspaceContextService private contextService: IWorkspaceContextService
) {
super('workbench.files.action.viewSourceFromEditor', nls.localize('viewSource', "View Source"), 'iframe-editor-action view-source');
}

public run(event?: any): Promise {
let iFrameEditorInput = <IFrameEditorInput>this.input;
let sideBySide = !!(event && (event.ctrlKey || event.metaKey));

return this.editorService.openEditor({
resource: iFrameEditorInput.getResource()
}, sideBySide);
}
}

export class RefreshIFrameEditorInputAction extends EditorInputAction {

constructor(@IWorkbenchEditorService private editorService: IWorkbenchEditorService) {
super('workbench.files.action.refreshIFrameEditor', nls.localize('reload', "Reload"), 'iframe-editor-action refresh');
}

public run(event?: any): Promise {
let editor = this.editorService.getActiveEditor();
if (editor instanceof IFrameEditor) {
(<IFrameEditor>editor).reload(true);
}

return Promise.as(null);
}
}

let actionBarRegistry = <IActionBarRegistry>Registry.as(ActionBarExtensions.Actionbar);
class IFrameEditorActionContributor extends EditorInputActionContributor {

constructor( @IInstantiationService private instantiationService: IInstantiationService) {
super();
}

public hasActionsForEditorInput(context: IEditorInputActionContext): boolean {
return context.input instanceof IFrameEditorInput;
}

public getActionsForEditorInput(context: IEditorInputActionContext): IEditorInputAction[] {
return [
this.instantiationService.createInstance(RefreshIFrameEditorInputAction),
this.instantiationService.createInstance(ViewSourceEditorInputAction)
];
}
}

// Contribute to IFrame Editor Inputs
actionBarRegistry.registerActionBarContributor(Scope.EDITOR, IFrameEditorActionContributor);
24 changes: 1 addition & 23 deletions src/vs/workbench/parts/files/browser/fileActions.contribution.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,10 @@ import {Action, IAction} from 'vs/base/common/actions';
import {ActionItem, BaseActionItem, Separator} from 'vs/base/browser/ui/actionbar/actionbar';
import {Scope, IActionBarRegistry, Extensions as ActionBarExtensions, ActionBarContributor} from 'vs/workbench/browser/actionBarRegistry';
import {IEditorInputActionContext, IEditorInputAction, EditorInputActionContributor} from 'vs/workbench/browser/parts/editor/baseEditor';
import {AddToWorkingFiles, FocusWorkingFiles, OpenPreviousWorkingFile, OpenNextWorkingFile, CloseAllFilesAction, CloseFileAction, GlobalCompareResourcesAction, GlobalNewFolderAction, RevertFileAction, SaveFilesAction, SaveAllAction, SaveFileAction, ViewSourceEditorInputAction, RefreshIFrameEditorInputAction, keybindingForAction, MoveFileToTrashAction, TriggerRenameFileAction, PasteFileAction, CopyFileAction, SelectResourceForCompareAction, CompareResourcesAction, NewFolderAction, NewFileAction, OpenToSideAction} from 'vs/workbench/parts/files/browser/fileActions';
import {AddToWorkingFiles, FocusWorkingFiles, OpenPreviousWorkingFile, OpenNextWorkingFile, CloseAllFilesAction, CloseFileAction, GlobalCompareResourcesAction, GlobalNewFolderAction, RevertFileAction, SaveFilesAction, SaveAllAction, SaveFileAction, keybindingForAction, MoveFileToTrashAction, TriggerRenameFileAction, PasteFileAction, CopyFileAction, SelectResourceForCompareAction, CompareResourcesAction, NewFolderAction, NewFileAction, OpenToSideAction} from 'vs/workbench/parts/files/browser/fileActions';
import {RevertLocalChangesAction, AcceptLocalChangesAction, ConflictResolutionDiffEditorInput} from 'vs/workbench/parts/files/browser/saveErrorHandler';
import {SyncActionDescriptor} from 'vs/platform/actions/common/actions';
import {IWorkbenchActionRegistry, Extensions as ActionExtensions} from 'vs/workbench/common/actionRegistry';
import {IFrameEditorInput} from 'vs/workbench/common/editor/iframeEditorInput';
import {IInstantiationService} from 'vs/platform/instantiation/common/instantiation';
import {IWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
import {IKeybindingService} from 'vs/platform/keybinding/common/keybindingService';
Expand Down Expand Up @@ -152,34 +151,13 @@ class ConflictResolutionActionContributor extends EditorInputActionContributor {
}
}

class IFrameEditorActionContributor extends EditorInputActionContributor {

constructor( @IInstantiationService private instantiationService: IInstantiationService) {
super();
}

public hasActionsForEditorInput(context: IEditorInputActionContext): boolean {
return context.input instanceof IFrameEditorInput;
}

public getActionsForEditorInput(context: IEditorInputActionContext): IEditorInputAction[] {
return [
this.instantiationService.createInstance(RefreshIFrameEditorInputAction),
this.instantiationService.createInstance(ViewSourceEditorInputAction)
];
}
}

// Contribute to Viewers that show Files
let actionBarRegistry = <IActionBarRegistry>Registry.as(ActionBarExtensions.Actionbar);
actionBarRegistry.registerActionBarContributor(Scope.VIEWER, FilesViewerActionContributor);

// Contribute to Conflict Editor Inputs
actionBarRegistry.registerActionBarContributor(Scope.EDITOR, ConflictResolutionActionContributor);

// Contribute to IFrame Editor Inputs
actionBarRegistry.registerActionBarContributor(Scope.EDITOR, IFrameEditorActionContributor);

// Contribute Global Actions
const category = nls.localize('filesCategory', "Files");

Expand Down
37 changes: 0 additions & 37 deletions src/vs/workbench/parts/files/browser/fileActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import {EventType as WorkbenchEventType, EditorEvent} from 'vs/workbench/common/
import Files = require('vs/workbench/parts/files/common/files');
import {IFileService, IFileStat, IImportResult} from 'vs/platform/files/common/files';
import {EditorInputAction} from 'vs/workbench/browser/parts/editor/baseEditor';
import {IFrameEditor} from 'vs/workbench/browser/parts/editor/iframeEditor';
import {DiffEditorInput} from 'vs/workbench/common/editor/diffEditorInput';
import workbenchEditorCommon = require('vs/workbench/common/editor');
import {IEditorSelection} from 'vs/editor/common/editorCommon';
Expand All @@ -35,7 +34,6 @@ import {FileStat, NewStatPlaceholder} from 'vs/workbench/parts/files/common/expl
import {ExplorerView} from 'vs/workbench/parts/files/browser/views/explorerView';
import {ExplorerViewlet} from 'vs/workbench/parts/files/browser/explorerViewlet';
import {CACHE} from 'vs/workbench/parts/files/common/editors/textFileEditorModel';
import {IFrameEditorInput} from 'vs/workbench/common/editor/iframeEditorInput';
import {IActionProvider} from 'vs/base/parts/tree/browser/actionsRenderer';
import {WorkingFileEntry, WorkingFilesModel} from 'vs/workbench/parts/files/common/workingFilesModel';
import {IUntitledEditorService} from 'vs/workbench/services/untitled/common/untitledEditorService';
Expand Down Expand Up @@ -1746,41 +1744,6 @@ export class RevertFileAction extends Action {
}
}

export class ViewSourceEditorInputAction extends EditorInputAction {

constructor(
@IWorkbenchEditorService private editorService: IWorkbenchEditorService,
@IWorkspaceContextService private contextService: IWorkspaceContextService
) {
super('workbench.files.action.viewSourceFromEditor', nls.localize('viewSource', "View Source"), 'iframe-editor-action view-source');
}

public run(event?: any): Promise {
let iFrameEditorInput = <IFrameEditorInput>this.input;
let sideBySide = !!(event && (event.ctrlKey || event.metaKey));

return this.editorService.openEditor({
resource: iFrameEditorInput.getResource()
}, sideBySide);
}
}

export class RefreshIFrameEditorInputAction extends EditorInputAction {

constructor( @IWorkbenchEditorService private editorService: IWorkbenchEditorService) {
super('workbench.files.action.refreshIFrameEditor', nls.localize('reload', "Reload"), 'iframe-editor-action refresh');
}

public run(event?: any): Promise {
let editor = this.editorService.getActiveEditor();
if (editor instanceof IFrameEditor) {
(<IFrameEditor>editor).reload(true);
}

return Promise.as(null);
}
}

export class OpenResourcesAction extends Action {
private filesToOpen: IResourceInput[];

Expand Down

0 comments on commit b98f99c

Please sign in to comment.