Reference Source

src/contextMenus/CanvasContextMenu.js

  1. import {math, ContextMenu} from "@xeokit/xeokit-sdk/dist/xeokit-sdk.es.js";
  2.  
  3. /**
  4. * @private
  5. */
  6. class CanvasContextMenu extends ContextMenu {
  7. constructor(cfg = {}) {
  8. super({
  9. hideOnAction: cfg.hideOnAction,
  10. context: cfg.context,
  11. items: [
  12. [
  13. {
  14. getTitle: (context) => {
  15. return context.viewer.localeService.translate("canvasContextMenu.viewFitAll") || "View Fit All";
  16. },
  17. doAction: (context) => {
  18. const viewer = context.viewer;
  19. const scene = viewer.scene;
  20. const sceneAABB = scene.getAABB(scene.visibleObjectIds);
  21. viewer.cameraFlight.flyTo({
  22. aabb: sceneAABB,
  23. duration: 0.5
  24. });
  25. viewer.cameraControl.pivotPos = math.getAABB3Center(sceneAABB);
  26. }
  27. },
  28. {
  29. getTitle: (context) => {
  30. return context.viewer.localeService.translate("canvasContextMenu.viewFitSelection") || "View Fit Selected";
  31. },
  32. getEnabled: (context) => {
  33. return (context.viewer.scene.numSelectedObjects > 0);
  34. },
  35. doAction: (context) => {
  36. const viewer = context.viewer;
  37. const scene = viewer.scene;
  38. const sceneAABB = scene.getAABB(scene.selectedObjectIds);
  39. viewer.cameraFlight.flyTo({
  40. aabb: sceneAABB,
  41. duration: 0.5
  42. });
  43. viewer.cameraControl.pivotPos = math.getAABB3Center(sceneAABB);
  44. }
  45. }
  46. ],
  47. [
  48. {
  49. getTitle: (context) => {
  50. return context.viewer.localeService.translate("canvasContextMenu.hideAll") || "Hide All";
  51. },
  52. getEnabled: (context) => {
  53. return (context.viewer.scene.numVisibleObjects > 0);
  54. },
  55. doAction: (context) => {
  56. context.viewer.scene.setObjectsVisible(context.viewer.scene.visibleObjectIds, false);
  57. }
  58. },
  59. {
  60. getTitle: (context) => {
  61. return context.viewer.localeService.translate("canvasContextMenu.showAll") || "Show All";
  62. },
  63. getEnabled: (context) => {
  64. const scene = context.viewer.scene;
  65. return ((scene.numVisibleObjects < scene.numObjects) || (context.viewer.scene.numXRayedObjects > 0));
  66. },
  67. doAction: (context) => {
  68. const scene = context.viewer.scene;
  69. scene.setObjectsVisible(scene.objectIds, true);
  70. scene.setObjectsXRayed(scene.xrayedObjectIds, false);
  71. }
  72. }
  73. ],
  74. [
  75. {
  76. getTitle: (context) => {
  77. return context.viewer.localeService.translate("canvasContextMenu.xRayAll") || "X-Ray All";
  78. },
  79. getEnabled: (context) => {
  80. const scene = context.viewer.scene;
  81. return (scene.numXRayedObjects < scene.numObjects);
  82. },
  83. doAction: (context) => {
  84. const scene = context.viewer.scene;
  85. scene.setObjectsVisible(scene.objectIds, true);
  86. scene.setObjectsXRayed(scene.objectIds, true);
  87. if (!context.bimViewer.getConfig("xrayPickable")) {
  88. scene.setObjectsPickable(scene.objectIds, false);
  89. }
  90. }
  91. },
  92. {
  93. getTitle: (context) => {
  94. return context.viewer.localeService.translate("canvasContextMenu.xRayNone") || "X-Ray None";
  95. },
  96. getEnabled: (context) => {
  97. return (context.viewer.scene.numXRayedObjects > 0);
  98. },
  99. doAction: (context) => {
  100. const xrayedObjectIds = context.viewer.scene.xrayedObjectIds;
  101. context.viewer.scene.setObjectsPickable(xrayedObjectIds, true);
  102. context.viewer.scene.setObjectsXRayed(xrayedObjectIds, false);
  103. }
  104. }
  105. ],
  106. [
  107. {
  108. getTitle: (context) => {
  109. return context.viewer.localeService.translate("canvasContextMenu.selectNone") || "Select None";
  110. },
  111. getEnabled: (context) => {
  112. return (context.viewer.scene.numSelectedObjects > 0);
  113. },
  114. doAction: (context) => {
  115. context.viewer.scene.setObjectsSelected(context.viewer.scene.selectedObjectIds, false);
  116. }
  117. }
  118. ],
  119. [
  120. {
  121. getTitle: (context) => {
  122. return context.viewer.localeService.translate("canvasContextMenu.resetView") || "Reset View";
  123. },
  124. doAction: (context) => {
  125. context.bimViewer.resetView();
  126. }
  127. }
  128. ],
  129. [
  130. {
  131. getTitle: (context) => {
  132. return context.viewer.localeService.translate("canvasContextMenu.clearSlices") || "Clear Slices";
  133. },
  134. getEnabled: (context) => {
  135. return (context.bimViewer.getNumSections() > 0);
  136. },
  137. doAction: (context) => {
  138. context.bimViewer.clearSections();
  139. }
  140. }
  141. ]
  142. ]
  143. });
  144. }
  145. }
  146.  
  147. export {CanvasContextMenu};