OHIF-165 Make default mouse button tools configurable (wwwc, zoom, pan and stackScroll are currently supported)

This commit is contained in:
Evren Ozkan 2017-05-08 12:25:58 -04:00
parent a63a41ebde
commit 6d2c324c8f
2 changed files with 54 additions and 12 deletions

View File

@ -20,6 +20,8 @@ const wadoUriRootDefinitions = {
max: 1000
};
const availableMouseButtonTools = ['wwwc', 'zoom', 'pan', 'stackScroll'];
export const DICOMWebRequestOptions = new SimpleSchema({
auth: {
type: String,
@ -186,6 +188,27 @@ export const PrefetchSchema = new SimpleSchema({
}
});
export const MouseButtonToolSchema = new SimpleSchema({
left: {
type: String,
label: 'Left Mouse Button',
allowedValues: availableMouseButtonTools,
optional: true
},
right: {
type: String,
label: 'Right Mouse Button',
allowedValues: availableMouseButtonTools,
optional: true
},
middle: {
type: String,
label: 'Middle Mouse Button',
allowedValues: availableMouseButtonTools,
optional: true
}
});
export const PublicServerConfig = new SimpleSchema({
verifyEmail: {
type: Boolean,
@ -204,6 +227,10 @@ export const PublicServerConfig = new SimpleSchema({
prefetch: {
type: PrefetchSchema,
label: 'Prefetch settings'
},
defaultMouseButtonTools: {
type: MouseButtonToolSchema,
label: 'Default Mouse Button Tools'
}
});

View File

@ -9,6 +9,7 @@ import { textMarkerUtils } from './textMarkerUtils';
let defaultTool = 'wwwc';
let activeTool;
let defaultMouseButtonTools;
let tools = {};
@ -121,9 +122,13 @@ export const toolManager = {
// if a default tool is globally defined, make it the default tool...
if (OHIF.viewer.defaultTool) {
defaultTool = OHIF.viewer.defaultTool;
activeTool = defaultTool;
}
defaultMouseButtonTools = Meteor.settings && Meteor.settings.public && Meteor.settings.public.defaultMouseButtonTools;
// Override default tool if defined in settings
defaultTool = (defaultMouseButtonTools && defaultMouseButtonTools.left) || "wwwc";
this.configureTools();
initialized = true;
},
@ -304,9 +309,15 @@ export const toolManager = {
// Get the imageIds for this element
const imageIds = toolData.data[0].imageIds;
const defaultMouseButtonToolNameMiddle = (defaultMouseButtonTools && defaultMouseButtonTools.middle) || "pan";
const defaultMouseButtonToolMiddle = cornerstoneTools[defaultMouseButtonToolNameMiddle];
const defaultMouseButtonToolNameRight = (defaultMouseButtonTools && defaultMouseButtonTools.right) || "zoom";
const defaultMouseButtonToolRight = cornerstoneTools[defaultMouseButtonToolNameRight];
// Deactivate all the middle mouse, right click, and scroll wheel tools
cornerstoneTools.pan.deactivate(element);
cornerstoneTools.zoom.deactivate(element);
defaultMouseButtonToolMiddle.deactivate(element);
defaultMouseButtonToolRight.deactivate(element);
cornerstoneTools.zoomWheel.deactivate(element);
cornerstoneTools.stackScrollWheel.deactivate(element);
cornerstoneTools.panMultiTouch.disable(element);
@ -315,7 +326,7 @@ export const toolManager = {
cornerstoneTools.doubleTapZoom.disable(element);
// Reactivate the middle mouse and right click tools
cornerstoneTools.zoom.activate(element, 4); // zoom is the default tool for right mouse button
defaultMouseButtonToolRight.activate(element, 4); // zoom is the default tool for right mouse button
// Reactivate the relevant scrollwheel tool for this element
let multiTouchPanConfig;
@ -347,10 +358,10 @@ export const toolManager = {
}
// This block ensures that the middle mouse and scroll tools keep working
if (tool === 'pan') {
cornerstoneTools.pan.activate(element, 3); // 3 means left mouse button and middle mouse button
if (tool === defaultMouseButtonToolNameMiddle) {
defaultMouseButtonToolMiddle.activate(element, 3); // 3 means left mouse button and middle mouse button
} else if (tool === 'crosshairs') {
cornerstoneTools.pan.activate(element, 2); // pan is the default tool for middle mouse button
defaultMouseButtonToolMiddle.activate(element, 2); // pan is the default tool for middle mouse button
const currentFrameOfReferenceUID = getFrameOfReferenceUID(element);
if (currentFrameOfReferenceUID) {
updateCrosshairsSynchronizer(currentFrameOfReferenceUID);
@ -359,12 +370,12 @@ export const toolManager = {
// Activate the chosen tool
tools[tool].mouse.activate(element, 1, synchronizer);
}
} else if (tool === 'zoom') {
cornerstoneTools.pan.activate(element, 2); // pan is the default tool for middle mouse button
cornerstoneTools.zoom.activate(element, 5); // 5 means left mouse button and right mouse button
} else if (tool === defaultMouseButtonToolNameRight) {
defaultMouseButtonToolMiddle.activate(element, 2); // pan is the default tool for middle mouse button
defaultMouseButtonToolRight.activate(element, 5); // 5 means left mouse button and right mouse button
} else {
// Reactivate the middle mouse and right click tools
cornerstoneTools.pan.activate(element, 2); // pan is the default tool for middle mouse button
defaultMouseButtonToolMiddle.activate(element, 2); // pan is the default tool for middle mouse button
// Activate the chosen tool
tools[tool].mouse.activate(element, 1);
@ -431,8 +442,12 @@ export const toolManager = {
Session.set('ToolManagerActiveTool', tool);
},
getActiveTool() {
// If toolManager is not initialized, we should set as defaultTool
if (!initialized) {
toolManager.init();
}
// If activeTool is not defined, we should set as defaultTool
if (!activeTool) {
activeTool = defaultTool;
}