Update tree view sample to use onWillDrop

This commit is contained in:
Alex Ross
2021-11-16 14:56:39 +01:00
parent 1e6a021d0e
commit fbde91c6e2
4 changed files with 83 additions and 2836 deletions

View File

@ -55,7 +55,11 @@ export class TestViewDragAndDrop implements vscode.TreeDataProvider<Node>, vscod
// Drag and drop controller
public async onDrop(sources: vscode.TreeDataTransfer, target: Node): Promise<void> {
const treeItems = JSON.parse(await sources.items.get('text/treeitems')!.asString());
const transferItem = sources.items.get('text/treeitems');
if (!transferItem) {
return;
}
const treeItems = JSON.parse(await transferItem.asString());
let roots = this._getLocalRoots(treeItems);
// Remove nodes that are already target's parent nodes
roots = roots.filter(r => !this._isChild(this._getTreeElement(r.key), target));
@ -67,6 +71,14 @@ export class TestViewDragAndDrop implements vscode.TreeDataProvider<Node>, vscod
}
}
public async onWillDrop(source: Node[]): Promise<vscode.TreeDataTransfer> {
const items = new Map<string, vscode.TreeDataTransferItem>();
items.set('text/treeitems', {asString: async () => JSON.stringify(source)});
return {
items
};
}
// Helper methods
_isChild(node: Node, child: Node): boolean {