Use Mutable disposable
This commit is contained in:
parent
e52805a945
commit
6bb0ffb66e
|
@ -9,7 +9,7 @@ import { Action, IActionRunner, IAction } from 'vs/base/common/actions';
|
||||||
import { ActionBar, ActionsOrientation, IActionViewItemProvider } from 'vs/base/browser/ui/actionbar/actionbar';
|
import { ActionBar, ActionsOrientation, IActionViewItemProvider } from 'vs/base/browser/ui/actionbar/actionbar';
|
||||||
import { IContextMenuProvider, DropdownMenuActionViewItem } from 'vs/base/browser/ui/dropdown/dropdown';
|
import { IContextMenuProvider, DropdownMenuActionViewItem } from 'vs/base/browser/ui/dropdown/dropdown';
|
||||||
import { ResolvedKeybinding } from 'vs/base/common/keyCodes';
|
import { ResolvedKeybinding } from 'vs/base/common/keyCodes';
|
||||||
import { Disposable } from 'vs/base/common/lifecycle';
|
import { Disposable, MutableDisposable } from 'vs/base/common/lifecycle';
|
||||||
import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview';
|
import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview';
|
||||||
import { withNullAsUndefined } from 'vs/base/common/types';
|
import { withNullAsUndefined } from 'vs/base/common/types';
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ export class ToolBar extends Disposable {
|
||||||
private options: IToolBarOptions;
|
private options: IToolBarOptions;
|
||||||
private actionBar: ActionBar;
|
private actionBar: ActionBar;
|
||||||
private toggleMenuAction: ToggleMenuAction;
|
private toggleMenuAction: ToggleMenuAction;
|
||||||
private toggleMenuActionViewItem?: DropdownMenuActionViewItem;
|
private toggleMenuActionViewItem = this._register(new MutableDisposable<DropdownMenuActionViewItem>());
|
||||||
private hasSecondaryActions: boolean;
|
private hasSecondaryActions: boolean;
|
||||||
private lookupKeybindings: boolean;
|
private lookupKeybindings: boolean;
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ export class ToolBar extends Disposable {
|
||||||
this.options = options;
|
this.options = options;
|
||||||
this.lookupKeybindings = typeof this.options.getKeyBinding === 'function';
|
this.lookupKeybindings = typeof this.options.getKeyBinding === 'function';
|
||||||
|
|
||||||
this.toggleMenuAction = this._register(new ToggleMenuAction(() => this.toggleMenuActionViewItem && this.toggleMenuActionViewItem.show(), options.toggleMenuTitle));
|
this.toggleMenuAction = this._register(new ToggleMenuAction(() => this.toggleMenuActionViewItem.value && this.toggleMenuActionViewItem.value.show(), options.toggleMenuTitle));
|
||||||
|
|
||||||
let element = document.createElement('div');
|
let element = document.createElement('div');
|
||||||
element.className = 'monaco-toolbar';
|
element.className = 'monaco-toolbar';
|
||||||
|
@ -57,13 +57,8 @@ export class ToolBar extends Disposable {
|
||||||
// Return special action item for the toggle menu action
|
// Return special action item for the toggle menu action
|
||||||
if (action.id === ToggleMenuAction.ID) {
|
if (action.id === ToggleMenuAction.ID) {
|
||||||
|
|
||||||
// Dispose old
|
|
||||||
if (this.toggleMenuActionViewItem) {
|
|
||||||
this.toggleMenuActionViewItem.dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create new
|
// Create new
|
||||||
this.toggleMenuActionViewItem = new DropdownMenuActionViewItem(
|
this.toggleMenuActionViewItem.value = new DropdownMenuActionViewItem(
|
||||||
action,
|
action,
|
||||||
(<ToggleMenuAction>action).menuActions,
|
(<ToggleMenuAction>action).menuActions,
|
||||||
contextMenuProvider,
|
contextMenuProvider,
|
||||||
|
@ -73,9 +68,9 @@ export class ToolBar extends Disposable {
|
||||||
'toolbar-toggle-more',
|
'toolbar-toggle-more',
|
||||||
this.options.anchorAlignmentProvider
|
this.options.anchorAlignmentProvider
|
||||||
);
|
);
|
||||||
this.toggleMenuActionViewItem!.setActionContext(this.actionBar.context);
|
this.toggleMenuActionViewItem.value.setActionContext(this.actionBar.context);
|
||||||
|
|
||||||
return this.toggleMenuActionViewItem;
|
return this.toggleMenuActionViewItem.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
return options.actionViewItemProvider ? options.actionViewItemProvider(action) : undefined;
|
return options.actionViewItemProvider ? options.actionViewItemProvider(action) : undefined;
|
||||||
|
@ -93,8 +88,8 @@ export class ToolBar extends Disposable {
|
||||||
|
|
||||||
set context(context: any) {
|
set context(context: any) {
|
||||||
this.actionBar.context = context;
|
this.actionBar.context = context;
|
||||||
if (this.toggleMenuActionViewItem) {
|
if (this.toggleMenuActionViewItem.value) {
|
||||||
this.toggleMenuActionViewItem.setActionContext(context);
|
this.toggleMenuActionViewItem.value.setActionContext(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,15 +149,6 @@ export class ToolBar extends Disposable {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
dispose(): void {
|
|
||||||
if (this.toggleMenuActionViewItem) {
|
|
||||||
this.toggleMenuActionViewItem.dispose();
|
|
||||||
this.toggleMenuActionViewItem = undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
super.dispose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class ToggleMenuAction extends Action {
|
class ToggleMenuAction extends Action {
|
||||||
|
|
Loading…
Reference in a new issue