ModelHandle/source/website/navigatorfilespanel.js

72 lines
2.3 KiB
JavaScript

import { SetDomElementHeight, GetDomElementOuterHeight } from '../engine/viewer/domutils.js';
import { NavigatorPanel } from './navigatorpanel.js';
import { TreeViewButton, TreeViewButtonItem, TreeViewGroupItem, TreeViewSingleItem } from './treeview.js';
import { Loc } from '../engine/core/localization.js';
export class NavigatorFilesPanel extends NavigatorPanel
{
constructor (parentDiv)
{
super (parentDiv);
}
GetName ()
{
return Loc ('Files');
}
GetIcon ()
{
return 'files';
}
Resize ()
{
let titleHeight = GetDomElementOuterHeight (this.titleDiv);
let height = this.parentDiv.offsetHeight;
SetDomElementHeight (this.treeDiv, height - titleHeight);
}
Clear ()
{
super.Clear ();
}
Fill (importResult)
{
super.Fill (importResult);
const usedFiles = importResult.usedFiles;
const missingFiles = importResult.missingFiles;
if (missingFiles.length > 0) {
let missingFilesItem = new TreeViewGroupItem (Loc ('Missing Files'), null);
missingFilesItem.ShowChildren (true);
this.treeView.AddChild (missingFilesItem);
for (let i = 0; i < missingFiles.length; i++) {
let file = missingFiles[i];
let item = new TreeViewButtonItem (file);
let browseButton = new TreeViewButton ('open');
browseButton.OnClick (() => {
this.callbacks.onFileBrowseButtonClicked ();
});
item.AppendButton (browseButton);
missingFilesItem.AddChild (item);
}
let filesItem = new TreeViewGroupItem (Loc ('Available Files'), null);
filesItem.ShowChildren (true);
this.treeView.AddChild (filesItem);
for (let i = 0; i < usedFiles.length; i++) {
let file = usedFiles[i];
let item = new TreeViewSingleItem (file);
filesItem.AddChild (item);
}
} else {
for (let i = 0; i < usedFiles.length; i++) {
let file = usedFiles[i];
let item = new TreeViewSingleItem (file);
this.treeView.AddChild (item);
}
}
}
}