Add toolbar layout to context.

This commit is contained in:
James A. Petts 2020-05-13 11:29:20 +01:00
parent c42aa37d7f
commit c23c1e8db6
5 changed files with 32 additions and 14 deletions

View File

@ -174,6 +174,7 @@ function viewerLayout({
leftPanels, leftPanels,
rightPanels, rightPanels,
extensionManager, extensionManager,
toolBarLayout,
displaySetInstanceUids, displaySetInstanceUids,
}) { }) {
const getPanelData = id => { const getPanelData = id => {
@ -194,6 +195,7 @@ function viewerLayout({
const rightPanelComponents = rightPanels.map(getPanelData); const rightPanelComponents = rightPanels.map(getPanelData);
console.warn(displaySetInstanceUids); console.warn(displaySetInstanceUids);
console.warn(toolBarLayout);
return ( return (
<div> <div>

View File

@ -12,8 +12,8 @@ export default function mode({ modeConfiguration }) {
routes: [ routes: [
{ {
path: 'viewer', path: 'viewer',
init: ({ toolbarManager }) => { init: ({ toolBarManager }) => {
toolbarManager.addButtons([ toolBarManager.addButtons([
{ {
id: 'StackScroll', // If id not given will use default in button definition. id: 'StackScroll', // If id not given will use default in button definition.
namespace: 'org.ohif.cornerstone.toolbarModule.StackScroll', 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!) // Could import layout selector here from org.ohif.default (when it exists!)
toolbarManager.setToolBarLayout([ toolBarManager.setToolBarLayout([
// Primary // Primary
['StackScroll', { label: 'More', subMenu: ['Zoom'] }], ['StackScroll', { label: 'More', subMenu: ['Zoom'] }],
// Secondary // Secondary

View File

@ -1,8 +1,8 @@
export default class toolBarManager { export default class toolBarManager {
constructor(extensionManager) { constructor(extensionManager, setToolBarLayout) {
this.toolBarLayout = [];
this.buttons = {}; this.buttons = {};
this.extensionManager = extensionManager; this.extensionManager = extensionManager;
this.setToolBarLayout = setToolBarLayout;
} }
addButtons(buttons) { addButtons(buttons) {
@ -48,8 +48,8 @@ export default class toolBarManager {
toolBarLayout.push(toolBarDefinitions); toolBarLayout.push(toolBarDefinitions);
}); });
this.toolBarLayout = toolBarLayout; console.log(toolBarLayout);
console.log(this.toolBarLayout); setToolBarLayout(toolBarLayout);
} }
} }

View File

@ -12,22 +12,29 @@ export default function ModeRoute({
const { routes, sopClassHandlers, extensions, init } = mode; const { routes, sopClassHandlers, extensions, init } = mode;
const dataSources = extensionManager.getDataSources(dataSourceName); 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. // TODO: For now assume one unique datasource.
const dataSource = dataSources[0]; const dataSource = dataSources[0];
const route = routes[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); console.log(dataSource);
// Add toolbar state to the view model context?
const { displaySetInstanceUids, setDisplaySetInstanceUids } = useContext(
ViewModelContext
);
const createDisplaySets = useCallback(() => { const createDisplaySets = useCallback(() => {
// Add SOPClassHandlers to a new SOPClassManager. // Add SOPClassHandlers to a new SOPClassManager.
displaySetManager.init(extensionManager, sopClassHandlers, { displaySetManager.init(extensionManager, sopClassHandlers, {
@ -82,6 +89,7 @@ export default function ModeRoute({
<LayoutComponent <LayoutComponent
extensionManager={extensionManager} extensionManager={extensionManager}
displaySetInstanceUids={displaySetInstanceUids} displaySetInstanceUids={displaySetInstanceUids}
toolBarLayout={toolBarLayout}
{...layoutTemplateData.props} {...layoutTemplateData.props}
/> />
</CombinedContextProvider> </CombinedContextProvider>

View File

@ -3,6 +3,8 @@ import React, { Component } from 'react';
const ViewModelContext = React.createContext({ const ViewModelContext = React.createContext({
displaySetInstanceUids: [], displaySetInstanceUids: [],
setDisplaySetInstanceUids: () => {}, setDisplaySetInstanceUids: () => {},
toolBarLayout: [],
setToolBarLayout: () => {},
}); });
ViewModelContext.displayName = 'ViewModelContext'; ViewModelContext.displayName = 'ViewModelContext';
@ -17,11 +19,17 @@ class ViewModelProvider extends Component {
this.setState({ displaySetInstanceUids }); this.setState({ displaySetInstanceUids });
}; };
const setToolBarLayout = toolBarLayout => {
this.setState({ toolBarLayout });
};
return ( return (
<ViewModelContext.Provider <ViewModelContext.Provider
value={{ value={{
displaySetInstanceUids: this.state.displaySetInstanceUids, displaySetInstanceUids: this.state.displaySetInstanceUids,
setDisplaySetInstanceUids, setDisplaySetInstanceUids,
toolBarLayout: this.state.toolBarLayout,
setToolBarLayout,
}} }}
> >
{this.props.children} {this.props.children}