webgme-dss
Version:
Design Studio for Dynamic Systems with Modelica as backend
115 lines (101 loc) • 3.86 kB
JSX
import React, {Component} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';
import AppBar from '@material-ui/core/AppBar';
import Toolbar from '@material-ui/core/Toolbar';
import Typography from '@material-ui/core/Typography';
import IconButton from '@material-ui/core/IconButton';
import Save from '@material-ui/icons/Save';
import Tooltip from '@material-ui/core/Tooltip';
import {appHeader as style} from '../styles';
import SyncIndicator from './SyncIndicator';
import Zoom from './Zoom';
import User from '../containers/HeaderPanel/User';
import SaveDialog from '../Dialogs/SaveDialog';
import ModiaDialog from '../Dialogs/ModiaDialog';
const mapStateToProps = state => ({
modelingView: state.modelingView,
activeNode: state.activeNode,
});
const mapDispatchToProps = (/* dispatch */) => ({});
class Header extends Component {
static propTypes = {
gmeClient: PropTypes.object.isRequired,
projectName: PropTypes.string.isRequired,
modelingView: PropTypes.bool.isRequired,
activeNode: PropTypes.string.isRequired,
};
state = {
showSave: false,
showModia: false,
};
showModia = () => {
};
render() {
const {
projectName,
modelingView,
gmeClient,
activeNode,
} = this.props;
const {showSave, showModia} = this.state;
return (
<AppBar color={modelingView ? 'primary' : 'default'}>
<Toolbar style={style}>
<SyncIndicator gmeClient={gmeClient}/>
<Typography
variant="title"
color="inherit"
noWrap
onClick={() => {
if (gmeClient.gmeConfig.plugin.ModiaCodeGenerator &&
gmeClient.gmeConfig.plugin.ModiaCodeGenerator.enable) {
this.setState({showModia: true});
}
}}
>
{projectName}
</Typography>
<Tooltip
key="save-tooltip"
id="save-tooltip"
title="Save current version of the model."
style={{
marginLeft: '50px',
marginRight: '-60px',
}}
>
<IconButton>
<Save
onClick={() => {
this.setState({showSave: true});
}}
/>
</IconButton>
</Tooltip>
<Zoom/>
<Typography style={{flex: 1}}/>
<User gmeClient={gmeClient}/>
</Toolbar>
{showSave ?
<SaveDialog
gmeClient={gmeClient}
onClose={() => {
this.setState({showSave: false});
}}
/>
: null}
{showModia ?
<ModiaDialog
gmeClient={gmeClient}
nodeId={activeNode}
onClose={() => {
this.setState({showModia: false});
}}
/>
: null}
</AppBar>
);
}
}
export default connect(mapStateToProps, mapDispatchToProps)(Header);