src/contextMenus/ModelsContextMenu.js
- import {ContextMenu} from "@xeokit/xeokit-sdk/dist/xeokit-sdk.es.js";
-
- /**
- * @private
- * @param {*} cfg Configs
- * @param {Boolean} [cfg.enableEditModels=false] Set true to show Add/Edit/Delete options in the menu.
- */
- class ModelsContextMenu extends ContextMenu {
-
- constructor(cfg = {}) {
-
- const enableEditModels = (!!cfg.enableEditModels);
-
- const items = [
- [
- {
- getTitle: (context) => {
- return context.viewer.localeService.translate("modelsContextMenu.loadModel") || "Load";
- },
- getEnabled: (context) => {
- return (!context.bimViewer.isModelLoaded(context.modelId));
- },
- doAction: (context) => {
- context.bimViewer.loadModel(context.modelId);
- }
- },
- {
- getTitle: (context) => {
- return context.viewer.localeService.translate("modelsContextMenu.unloadModel") || "Unload";
- },
- getEnabled: (context) => {
- return context.bimViewer.isModelLoaded(context.modelId);
- },
- doAction: (context) => {
- context.bimViewer.unloadModel(context.modelId);
- }
- }
- ]
- ];
-
- if (enableEditModels) {
-
- items.push([
- {
- getTitle: (context) => {
- return context.viewer.localeService.translate("modelsContextMenu.editModel") || "Edit";
- },
- getEnabled: (context) => {
- return true;
- },
- doAction: (context) => {
- context.bimViewer.editModel(context.modelId);
- }
- },
- {
- getTitle: (context) => {
- return context.viewer.localeService.translate("modelsContextMenu.deleteModel") || "Delete";
- },
- getEnabled: (context) => {
- return true;
- },
- doAction: (context) => {
- context.bimViewer.deleteModel(context.modelId);
- }
- }
- ]);
- }
-
- items.push([
- {
- getTitle: (context) => {
- return context.viewer.localeService.translate("modelsContextMenu.loadAllModels") || "Load All";
- },
- getEnabled: (context) => {
- const bimViewer = context.bimViewer;
- const modelIds = bimViewer.getModelIds();
- const loadedModelIds = bimViewer.getLoadedModelIds();
- return (loadedModelIds.length < modelIds.length);
- },
- doAction: (context) => {
- context.bimViewer.loadAllModels();
- }
- },
- {
- getTitle: (context) => {
- return context.viewer.localeService.translate("modelsContextMenu.unloadAllModels") || "Unload All";
- },
- getEnabled: (context) => {
- const loadedModelIds = context.bimViewer.getLoadedModelIds();
- return (loadedModelIds.length > 0);
- },
- doAction: (context) => {
- context.bimViewer.unloadAllModels();
- }
- }
- ]);
-
- items.push([
- {
- getTitle: (context) => {
- return context.viewer.localeService.translate("modelsContextMenu.clearSlices") || "Clear Slices";
- },
- getEnabled: (context) => {
- return (context.bimViewer.getNumSections() > 0);
- },
- doAction: (context) => {
- context.bimViewer.clearSections();
- }
- }
- ]);
-
- super({
- hideOnAction: cfg.hideOnAction,
- context: cfg.context,
- items: items
- });
- }
- }
-
- export {ModelsContextMenu};