MolstarManagerFactory.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import {ViewerManagerFactoryInterface} from "../../StructureViewerInterface";
  2. import {LoadMolstarInterface, MolstarActionManager} from "./MolstarActionManager";
  3. import {Viewer, ViewerProps} from "@rcsb/rcsb-molstar/build/src/viewer";
  4. import {MolstarModelMapManager} from "./MolstarModelMapManager";
  5. import {MolstarCallbackManager} from "./MolstarCallbackManager";
  6. import {DataContainer} from "../../../Utils/DataContainer";
  7. import {RcsbFvSelectorManager} from "../../../RcsbFvState/RcsbFvSelectorManager";
  8. import {RcsbFvStateManager} from "../../../RcsbFvState/RcsbFvStateManager";
  9. export class MolstarManagerFactory implements ViewerManagerFactoryInterface<LoadMolstarInterface,{viewerElement:string|HTMLElement,viewerProps:Partial<ViewerProps>}> {
  10. public getViewerManagerFactory(stateManager: RcsbFvStateManager, viewerParams: {viewerElement: string | HTMLElement, viewerProps: Partial<ViewerProps>}) {
  11. const loadingFlag: DataContainer<boolean> = new DataContainer(false);
  12. const innerSelectionFlag: DataContainer<boolean> = new DataContainer(false);
  13. const viewer = new Viewer(viewerParams.viewerElement, {
  14. ...viewerParams,
  15. layoutShowControls:false,
  16. layoutShowSequence: true,
  17. canvas3d: {
  18. multiSample: {
  19. mode: 'off'
  20. }
  21. }
  22. });
  23. viewer.plugin.selectionMode = true;
  24. const modelMapManager:MolstarModelMapManager = new MolstarModelMapManager(viewer);
  25. const callbackManager: MolstarCallbackManager = new MolstarCallbackManager({
  26. viewer: viewer,
  27. stateManager: stateManager,
  28. loadingFlag: loadingFlag,
  29. modelMapManager: modelMapManager,
  30. innerSelectionFlag: innerSelectionFlag
  31. });
  32. const actionManager = new MolstarActionManager({
  33. viewer: viewer,
  34. modelMapManager: modelMapManager,
  35. innerSelectionFlag: innerSelectionFlag,
  36. loadingFlag: loadingFlag
  37. });
  38. return {
  39. actionManager,
  40. callbackManager
  41. }
  42. }
  43. }