From c23c1e8db66bcd103e1e5a93dd019da42e3e5a0a Mon Sep 17 00:00:00 2001 From: "James A. Petts" Date: Wed, 13 May 2020 11:29:20 +0100 Subject: [PATCH] Add toolbar layout to context. --- .../default/src/getLayoutTemplateModule.js | 2 ++ modes/example/src/index.js | 6 ++--- platform/core/src/ToolBarManager.js | 8 +++---- platform/viewer/src/routes/ModeRoute.js | 22 +++++++++++++------ .../viewer/src/routes/ViewModelContext.js | 8 +++++++ 5 files changed, 32 insertions(+), 14 deletions(-) diff --git a/extensions/default/src/getLayoutTemplateModule.js b/extensions/default/src/getLayoutTemplateModule.js index 791c9134c..550803789 100644 --- a/extensions/default/src/getLayoutTemplateModule.js +++ b/extensions/default/src/getLayoutTemplateModule.js @@ -174,6 +174,7 @@ function viewerLayout({ leftPanels, rightPanels, extensionManager, + toolBarLayout, displaySetInstanceUids, }) { const getPanelData = id => { @@ -194,6 +195,7 @@ function viewerLayout({ const rightPanelComponents = rightPanels.map(getPanelData); console.warn(displaySetInstanceUids); + console.warn(toolBarLayout); return (
diff --git a/modes/example/src/index.js b/modes/example/src/index.js index 706d0ca11..a503be405 100644 --- a/modes/example/src/index.js +++ b/modes/example/src/index.js @@ -12,8 +12,8 @@ export default function mode({ modeConfiguration }) { routes: [ { path: 'viewer', - init: ({ toolbarManager }) => { - toolbarManager.addButtons([ + init: ({ toolBarManager }) => { + toolBarManager.addButtons([ { id: 'StackScroll', // If id not given will use default in button definition. namespace: 'org.ohif.cornerstone.toolbarModule.StackScroll', @@ -25,7 +25,7 @@ export default function mode({ modeConfiguration }) { ]); // Could import layout selector here from org.ohif.default (when it exists!) - toolbarManager.setToolBarLayout([ + toolBarManager.setToolBarLayout([ // Primary ['StackScroll', { label: 'More', subMenu: ['Zoom'] }], // Secondary diff --git a/platform/core/src/ToolBarManager.js b/platform/core/src/ToolBarManager.js index d94b1488c..15eb84169 100644 --- a/platform/core/src/ToolBarManager.js +++ b/platform/core/src/ToolBarManager.js @@ -1,8 +1,8 @@ export default class toolBarManager { - constructor(extensionManager) { - this.toolBarLayout = []; + constructor(extensionManager, setToolBarLayout) { this.buttons = {}; this.extensionManager = extensionManager; + this.setToolBarLayout = setToolBarLayout; } addButtons(buttons) { @@ -48,8 +48,8 @@ export default class toolBarManager { toolBarLayout.push(toolBarDefinitions); }); - this.toolBarLayout = toolBarLayout; + console.log(toolBarLayout); - console.log(this.toolBarLayout); + setToolBarLayout(toolBarLayout); } } diff --git a/platform/viewer/src/routes/ModeRoute.js b/platform/viewer/src/routes/ModeRoute.js index b17848324..02867079c 100644 --- a/platform/viewer/src/routes/ModeRoute.js +++ b/platform/viewer/src/routes/ModeRoute.js @@ -12,22 +12,29 @@ export default function ModeRoute({ const { routes, sopClassHandlers, extensions, init } = mode; const dataSources = extensionManager.getDataSources(dataSourceName); - const toolbarManager = new ToolBarManager(extensionManager); + // Add toolbar state to the view model context? + const { + toolBarLayout, + setToolBarLayout, + displaySetInstanceUids, + setDisplaySetInstanceUids, + } = useContext(ViewModelContext); // TODO: For now assume one unique datasource. const dataSource = dataSources[0]; const route = routes[0]; - route.init({ toolbarManager }); + let toolBarManager; + + useEffect(() => { + debugger; + toolBarManager = new ToolBarManager(extensionManager, setToolBarLayout); + route.init({ toolBarManager }); + }, [mode, dataSourceName, location]); console.log(dataSource); - // Add toolbar state to the view model context? - const { displaySetInstanceUids, setDisplaySetInstanceUids } = useContext( - ViewModelContext - ); - const createDisplaySets = useCallback(() => { // Add SOPClassHandlers to a new SOPClassManager. displaySetManager.init(extensionManager, sopClassHandlers, { @@ -82,6 +89,7 @@ export default function ModeRoute({ diff --git a/platform/viewer/src/routes/ViewModelContext.js b/platform/viewer/src/routes/ViewModelContext.js index 4ecf723b7..63b55f4dc 100644 --- a/platform/viewer/src/routes/ViewModelContext.js +++ b/platform/viewer/src/routes/ViewModelContext.js @@ -3,6 +3,8 @@ import React, { Component } from 'react'; const ViewModelContext = React.createContext({ displaySetInstanceUids: [], setDisplaySetInstanceUids: () => {}, + toolBarLayout: [], + setToolBarLayout: () => {}, }); ViewModelContext.displayName = 'ViewModelContext'; @@ -17,11 +19,17 @@ class ViewModelProvider extends Component { this.setState({ displaySetInstanceUids }); }; + const setToolBarLayout = toolBarLayout => { + this.setState({ toolBarLayout }); + }; + return ( {this.props.children}