diff options
Diffstat (limited to 'devtools/client/debugger/src/actions/context-menus/breakpoint-heading.js')
-rw-r--r-- | devtools/client/debugger/src/actions/context-menus/breakpoint-heading.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/devtools/client/debugger/src/actions/context-menus/breakpoint-heading.js b/devtools/client/debugger/src/actions/context-menus/breakpoint-heading.js new file mode 100644 index 0000000000..bded531cfe --- /dev/null +++ b/devtools/client/debugger/src/actions/context-menus/breakpoint-heading.js @@ -0,0 +1,78 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */ + +import { buildMenu, showMenu } from "../../context-menu/menu"; + +import { getBreakpointsForSource } from "../../selectors/index"; + +import { + disableBreakpointsInSource, + enableBreakpointsInSource, + removeBreakpointsInSource, +} from "../../actions/breakpoints/index"; + +export function showBreakpointHeadingContextMenu(event, source) { + return async ({ dispatch, getState }) => { + const state = getState(); + const breakpointsForSource = getBreakpointsForSource(state, source); + + const enableInSourceLabel = L10N.getStr( + "breakpointHeadingsMenuItem.enableInSource.label" + ); + const disableInSourceLabel = L10N.getStr( + "breakpointHeadingsMenuItem.disableInSource.label" + ); + const removeInSourceLabel = L10N.getStr( + "breakpointHeadingsMenuItem.removeInSource.label" + ); + const enableInSourceKey = L10N.getStr( + "breakpointHeadingsMenuItem.enableInSource.accesskey" + ); + const disableInSourceKey = L10N.getStr( + "breakpointHeadingsMenuItem.disableInSource.accesskey" + ); + const removeInSourceKey = L10N.getStr( + "breakpointHeadingsMenuItem.removeInSource.accesskey" + ); + + const disableInSourceItem = { + id: "node-menu-disable-in-source", + label: disableInSourceLabel, + accesskey: disableInSourceKey, + disabled: false, + click: () => dispatch(disableBreakpointsInSource(source)), + }; + + const enableInSourceItem = { + id: "node-menu-enable-in-source", + label: enableInSourceLabel, + accesskey: enableInSourceKey, + disabled: false, + click: () => dispatch(enableBreakpointsInSource(source)), + }; + + const removeInSourceItem = { + id: "node-menu-enable-in-source", + label: removeInSourceLabel, + accesskey: removeInSourceKey, + disabled: false, + click: () => dispatch(removeBreakpointsInSource(source)), + }; + + const hideDisableInSourceItem = breakpointsForSource.every( + breakpoint => breakpoint.disabled + ); + const hideEnableInSourceItem = breakpointsForSource.every( + breakpoint => !breakpoint.disabled + ); + + const items = [ + { item: disableInSourceItem, hidden: () => hideDisableInSourceItem }, + { item: enableInSourceItem, hidden: () => hideEnableInSourceItem }, + { item: removeInSourceItem, hidden: () => false }, + ]; + + showMenu(event, buildMenu(items)); + }; +} |