From ef73394c3c8554719412c3bf763e2f8c90ffed56 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Thu, 1 Jul 2021 23:54:32 +0200 Subject: Material UI theming WIP --- language-web/src/main/js/editor/Editor.jsx | 2 + language-web/src/main/js/editor/EditorButtons.jsx | 67 +++++++++++++++++++---- language-web/src/main/js/editor/EditorStore.jsx | 6 ++ 3 files changed, 63 insertions(+), 12 deletions(-) (limited to 'language-web/src/main/js/editor') diff --git a/language-web/src/main/js/editor/Editor.jsx b/language-web/src/main/js/editor/Editor.jsx index c4b2e183..98cf2715 100644 --- a/language-web/src/main/js/editor/Editor.jsx +++ b/language-web/src/main/js/editor/Editor.jsx @@ -12,6 +12,8 @@ export default observer(() => { const codeMirrorOptions = { mode: 'xtext/problem', indentUnit: 2, + theme: 'material-darker', + lineNumbers: editorStore.showLineNumbers, }; const xtextOptions = { diff --git a/language-web/src/main/js/editor/EditorButtons.jsx b/language-web/src/main/js/editor/EditorButtons.jsx index b9f0d076..62f82f29 100644 --- a/language-web/src/main/js/editor/EditorButtons.jsx +++ b/language-web/src/main/js/editor/EditorButtons.jsx @@ -1,27 +1,70 @@ import { observer } from 'mobx-react-lite'; import React from 'react'; -import IconButton from '@material-ui/core/IconButton'; +import { makeStyles } from '@material-ui/core/styles'; +import Button from '@material-ui/core/Button'; +import ButtonGroup from '@material-ui/core/ButtonGroup'; +import Divider from '@material-ui/core/Divider'; +import FormatListNumberedIcon from '@material-ui/icons/FormatListNumbered'; import RedoIcon from '@material-ui/icons/Redo'; import UndoIcon from '@material-ui/icons/Undo'; - +import ToggleButton from '@material-ui/lab/ToggleButton'; import { useRootStore } from '../RootStore'; +const useStyles = makeStyles(theme => ({ + iconButton: { + padding: 8, + minWidth: 36, + '&.MuiButtonGroup-groupedTextHorizontal': { + borderRight: 0, + }, + }, + flatToggleButton: { + padding: 8, + border: 0, + color: theme.palette.text.primary, + }, + divider: { + margin: theme.spacing(0.5), + } +})); + export default observer(() => { const editorStore = useRootStore().editorStore; + const classes = useStyles(); return ( <> - editorStore.undo()} + - - - editorStore.redo()} + + + + + editorStore.toggleLineNumbers()} + size='small' + className={classes.flatToggleButton} > - - + + ); }); diff --git a/language-web/src/main/js/editor/EditorStore.jsx b/language-web/src/main/js/editor/EditorStore.jsx index 9c286c28..6b03b383 100644 --- a/language-web/src/main/js/editor/EditorStore.jsx +++ b/language-web/src/main/js/editor/EditorStore.jsx @@ -7,6 +7,8 @@ export default class EditorStore { editor = null; /** @type {string} */ value = ''; + /** @type {boolean} */ + showLineNumbers = false; constructor() { this.atom = createAtom('EditorStore'); @@ -72,4 +74,8 @@ export default class EditorStore { redo() { this.editor.redo(); } + + toggleLineNumbers() { + this.showLineNumbers = !this.showLineNumbers; + } } -- cgit v1.2.3-70-g09d2