2018-08-06 10:29:12 +00:00
|
|
|
import React from 'react';
|
2018-10-16 10:19:51 +00:00
|
|
|
import PropTypes from 'prop-types';
|
2018-08-06 10:29:12 +00:00
|
|
|
import TreeNodeView from './tree-node-view';
|
2018-09-29 10:32:53 +00:00
|
|
|
import editorUtilities from '../../utils/editor-utilties';
|
2018-08-06 10:29:12 +00:00
|
|
|
|
2018-10-16 10:19:51 +00:00
|
|
|
const propTypes = {
|
|
|
|
permission: PropTypes.string,
|
|
|
|
isNodeItemFrezee: PropTypes.bool.isRequired,
|
2018-11-22 03:26:00 +00:00
|
|
|
currentPath: PropTypes.string.isRequired,
|
2018-10-16 10:19:51 +00:00
|
|
|
treeData: PropTypes.object.isRequired,
|
|
|
|
onShowContextMenu: PropTypes.func.isRequired,
|
|
|
|
onNodeClick: PropTypes.func.isRequired,
|
|
|
|
onDirCollapse: PropTypes.func.isRequired,
|
|
|
|
};
|
|
|
|
|
2018-08-06 10:29:12 +00:00
|
|
|
class TreeView extends React.PureComponent {
|
|
|
|
|
|
|
|
change = (tree) => {
|
|
|
|
/*
|
|
|
|
this._updated = true;
|
|
|
|
if (this.props.onChange) this.props.onChange(tree.obj);
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
|
|
|
|
onDragStart = (e, node) => {
|
2018-09-04 09:16:50 +00:00
|
|
|
const url = editorUtilities.getFileURL(node);
|
2018-09-29 10:32:53 +00:00
|
|
|
e.dataTransfer.setData('text/uri-list', url);
|
|
|
|
e.dataTransfer.setData('text/plain', url);
|
2018-08-06 10:29:12 +00:00
|
|
|
}
|
|
|
|
|
2018-11-22 03:26:00 +00:00
|
|
|
onNodeClick = (node) => {
|
|
|
|
this.props.onNodeClick(node);
|
2018-08-22 08:39:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
onShowContextMenu = (e, node) => {
|
|
|
|
this.props.onShowContextMenu(e, node);
|
|
|
|
}
|
|
|
|
|
|
|
|
render() {
|
|
|
|
if (!this.props.treeData.root) {
|
2018-10-16 10:19:51 +00:00
|
|
|
return <div>Loading...</div>;
|
2018-08-22 08:39:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<div className="tree-view tree">
|
|
|
|
<TreeNodeView
|
2018-09-04 09:16:50 +00:00
|
|
|
paddingLeft={12}
|
2018-08-22 08:39:42 +00:00
|
|
|
treeView={this}
|
|
|
|
node={this.props.treeData.root}
|
|
|
|
isNodeItemFrezee={this.props.isNodeItemFrezee}
|
|
|
|
permission={this.props.permission}
|
2018-11-22 03:26:00 +00:00
|
|
|
currentPath={this.props.currentPath}
|
2018-08-22 08:39:42 +00:00
|
|
|
onShowContextMenu={this.props.onShowContextMenu}
|
2018-09-04 09:16:50 +00:00
|
|
|
onDirCollapse={this.props.onDirCollapse}
|
2018-08-22 08:39:42 +00:00
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
);
|
2018-08-06 10:29:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2018-10-16 10:19:51 +00:00
|
|
|
TreeView.propTypes = propTypes;
|
|
|
|
|
2018-08-06 10:29:12 +00:00
|
|
|
export default TreeView;
|