mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-11-14 04:39:28 +00:00
[atl-1433][atl-1433] improve local sketchbook explorer (#446)
This commit is contained in:
@@ -14,7 +14,10 @@ import { SketchbookCommands } from './sketchbook-commands';
|
||||
import { WorkspaceService } from '../../theia/workspace/workspace-service';
|
||||
import {
|
||||
ContextMenuRenderer,
|
||||
Navigatable,
|
||||
RenderContextMenuOptions,
|
||||
SelectableTreeNode,
|
||||
Widget,
|
||||
} from '@theia/core/lib/browser';
|
||||
import {
|
||||
Disposable,
|
||||
@@ -77,6 +80,10 @@ export class SketchbookWidgetContribution
|
||||
}
|
||||
|
||||
onStart(): void {
|
||||
this.shell.currentChanged.connect(() =>
|
||||
this.onCurrentWidgetChangedHandler()
|
||||
);
|
||||
|
||||
this.arduinoPreferences.onPreferenceChanged(({ preferenceName }) => {
|
||||
if (preferenceName === 'arduino.sketchbook.showAllFiles') {
|
||||
this.mainMenuManager.update();
|
||||
@@ -196,4 +203,27 @@ export class SketchbookWidgetContribution
|
||||
order: '0',
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reveals and selects node in the file navigator to which given widget is related.
|
||||
* Does nothing if given widget undefined or doesn't have related resource.
|
||||
*
|
||||
* @param widget widget file resource of which should be revealed and selected
|
||||
*/
|
||||
async selectWidgetFileNode(widget: Widget | undefined): Promise<void> {
|
||||
if (Navigatable.is(widget)) {
|
||||
const resourceUri = widget.getResourceUri();
|
||||
if (resourceUri) {
|
||||
const { model } = (await this.widget).getTreeWidget();
|
||||
const node = await model.revealFile(resourceUri);
|
||||
if (SelectableTreeNode.is(node)) {
|
||||
model.selectNode(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected onCurrentWidgetChangedHandler(): void {
|
||||
this.selectWidgetFileNode(this.shell.currentWidget);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user