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 ++++++++++++++++++++++ src/i18n/locales/defaultMessages.json | 17 +++++++++++-- src/i18n/locales/en-US.json | 3 ++- .../workspaces/components/WorkspaceDrawerItem.json | 17 +++++++++++-- 5 files changed, 62 insertions(+), 5 deletions(-) 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()) + )} > Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.

You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} \ No newline at end of file +} diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json index cdbd1d5b5..4ff190606 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawerItem.json @@ -4,11 +4,24 @@ "defaultMessage": "!!!No services added yet", "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", "start": { - "line": 9, + "line": 12, "column": 22 }, "end": { - "line": 12, + "line": 15, + "column": 3 + } + }, + { + "id": "workspaceDrawer.item.contextMenuEdit", + "defaultMessage": "!!!edit", + "file": "src/features/workspaces/components/WorkspaceDrawerItem.js", + "start": { + "line": 16, + "column": 19 + }, + "end": { + "line": 19, "column": 3 } } -- cgit v1.2.3-70-g09d2