From 664b59789ca032eaa393af52ff2559e173a9b0b5 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Wed, 10 Apr 2019 16:37:04 +0200 Subject: add context menu for workspace drawer items --- .../workspaces/components/WorkspaceDrawer.js | 1 + .../workspaces/components/WorkspaceDrawerItem.js | 29 ++++++++++++++++++++++ 2 files changed, 30 insertions(+) (limited to 'src/features/workspaces') diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js index 64c98dc63..684e50dd0 100644 --- a/src/features/workspaces/components/WorkspaceDrawer.js +++ b/src/features/workspaces/components/WorkspaceDrawer.js @@ -215,6 +215,7 @@ class WorkspaceDrawer extends Component { workspaceActions.toggleWorkspaceDrawer(); gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer'); }} + onContextMenuEditClick={() => workspaceActions.edit({ workspace })} services={getServicesForWorkspace(workspace)} /> ))} diff --git a/src/features/workspaces/components/WorkspaceDrawerItem.js b/src/features/workspaces/components/WorkspaceDrawerItem.js index 57f0754d9..59a2144d3 100644 --- a/src/features/workspaces/components/WorkspaceDrawerItem.js +++ b/src/features/workspaces/components/WorkspaceDrawerItem.js @@ -1,3 +1,4 @@ +import { remote } from 'electron'; import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { observer } from 'mobx-react'; @@ -5,11 +6,17 @@ import injectSheet from 'react-jss'; import classnames from 'classnames'; import { defineMessages, intlShape } from 'react-intl'; +const { Menu } = remote; + const messages = defineMessages({ noServicesAddedYet: { id: 'workspaceDrawer.item.noServicesAddedYet', defaultMessage: '!!!No services added yet', }, + contextMenuEdit: { + id: 'workspaceDrawer.item.contextMenuEdit', + defaultMessage: '!!!edit', + }, }); const styles = theme => ({ @@ -61,6 +68,11 @@ class WorkspaceDrawerItem extends Component { name: PropTypes.string.isRequired, onClick: PropTypes.func.isRequired, services: PropTypes.arrayOf(PropTypes.string).isRequired, + onContextMenuEditClick: PropTypes.func, + }; + + static defaultProps = { + onContextMenuEditClick: null, }; static contextTypes = { @@ -73,9 +85,23 @@ class WorkspaceDrawerItem extends Component { isActive, name, onClick, + onContextMenuEditClick, services, } = this.props; const { intl } = this.context; + + const contextMenuTemplate = [{ + label: name, + enabled: false, + }, { + type: 'separator', + }, { + label: intl.formatMessage(messages.contextMenuEdit), + click: onContextMenuEditClick, + }]; + + const contextMenu = Menu.buildFromTemplate(contextMenuTemplate); + return (
( + onContextMenuEditClick && contextMenu.popup(remote.getCurrentWindow()) + )} >