demo.html 6.17 KB
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="js/jquery-1.7.1.js"></script>
    <link rel="stylesheet" href="js/zTree_v3-3.5.27/css/zTreeStyle/zTreeStyle.css">
    <link rel="stylesheet" href="css/codemirror.css">
    <link rel="stylesheet" href="css/demo.css">
    
    <script type="text/javascript" src="js/zTree_v3-3.5.27/js/jquery.ztree.core.js"></script>
    <script type="text/javascript" src="js/codemirror.js"></script>


    <script type="text/javascript">
        // 储存一个树结构和编辑器的对应关系
        var treeLinkEditor = [];
        var zNodes;
        
        var setting = {
            view: {
                showLine: false
            }
            ,data: {
                simpleData: {
                    enable: true
                }
            }
            ,callback: {
                beforeClick: beforeClick
            }
        };

        function beforeClick(treeId, treeNode) {
            if (treeNode.isParent) {
                return false;
            }

            var zTree = $.fn.zTree.getZTreeObj("folder");
            zTree.expandNode(treeNode);
            // 调试输出输出文件路径
            getTreePath(treeNode);
            // 处理显示目录树对应的textarea
            showEdite(treeNode.name);
        }

        function showEdite(treeNode){
            var _name = 'Main.java';
            if(treeNode){
                _name = treeNode;
            }
            $('#' + getContact(_name)).show().siblings().hide();
            $('a[title="'+ _name +'"]').addClass('curSelectedNode').parents('li').siblings().find('a').removeClass('curSelectedNode')
            $('#textareaheader').html('<h2>'+ getTreePath({name: _name}) +'</h2>')
        }

        function getContact(argument) {
            var str;
            var i = 0;
            while (i < treeLinkEditor.length) {
                if(treeLinkEditor[i].editor == argument){
                    str = treeLinkEditor[i].name;
                    break;
                }else if(treeLinkEditor[i].name == argument){
                    str = treeLinkEditor[i].editor;
                    break;
                }
                i += 1;
            }
            return str;
        }

        function getTreePath(treeNode){
            var arr = [];
            var filePath;
            if(typeof treeNode.getPath == 'function' && treeNode.getPath().length != 1){
                for (var i = 0; i < treeNode.getPath().length; i++) {
                    arr[i] = treeNode.getPath()[i].name;
                }
                filePath = arr.join('/');
            }else{
                filePath = 'root/' + treeNode.name
            }
            return filePath;
        }
        function build(zNodes){
            var str = '';
            for (var i = 0; i < zNodes.length; i++) {
                if(!zNodes[i].isParent){
                    treeLinkEditor.push({name: zNodes[i].name, editor: zNodes[i].name.split('.').join("").toUpperCase()});
                    str += '<textarea id="'+ zNodes[i].name.split('.').join("").toUpperCase() +'" title="'+ zNodes[i].name +'" style="display: none;">'+ zNodes[i].name +'</textarea>'
                }
            }
            $('#textarea').append(str);

            // 默认显示第一个文件夹的第一个文件
            showEdite();
        }
        $(document).ready(function(){
            $.ajax({
                url: 'js/tree.json'
                ,type: 'GET'
                ,dataType: 'json'
            })
            .done(function(res) {
                zNodes = res.tree;

                $.fn.zTree.init($("#folder"), setting, zNodes);
                build(zNodes);
            })
            .fail(function() {
                console.log("error");
            })
            .always(function() {
                console.log("complete");
            });
            $(document).on('click', '.btn', function(event) {
                event.preventDefault();
                /* Act on the event */
            });
        });
    </script>
</head>
<body>
    <div id="app" class="container">
        <div id="appLeft">
            <ul id="folder" class="ztree"></ul>
        </div>
        <div id="handleLM"></div>
        <div id="appMian">
            <div id="textareaheader"></div>
            <div id="textarea">
                <div class="" id="recordzone"></div>
                <div id="replayzone"></div>
            </div>
        </div>
        <div id="handleMR"></div>
        <div id="appRight">
            
        </div>
    </div>
    <script type="text/javascript">
        $(function() {
            var app = $('#app')
            var appLeft = $('#appLeft');
            var appRight = $('#appRight');
            var handleLM = $('#handleLM');
            var handleMR = $('#handleMR');

            var isLeftResizing = false;
            var isRightResizing = false;
            var _width = 0;
            var _tempWidth = 0;

            handleLM.on('mousedown', function (e) {
                isLeftResizing = true;
            });
            handleMR.on('mousedown', function (e) {
                isRightResizing = true;
            });

            $(document).on('mousemove', function (e) {
                if (!isLeftResizing && !isRightResizing){
                    return;
                }

                if(isLeftResizing){
                    _tempWidth = e.clientX;
                }else if(isRightResizing){
                    _tempWidth = app.width() - e.clientX;
                }

                if(_tempWidth <= 100){
                    _width = 100;
                }else if(_tempWidth >= 400){
                    _width = 400;
                }else{
                    _width = _tempWidth;
                }

                if(isLeftResizing){
                    appLeft.css('max-width', _width);
                }

                if(isRightResizing){
                    appRight.css('max-width', _width);
                }
                
            }).on('mouseup', function (e) {
                // stop resizing
                isLeftResizing = false;
                isRightResizing = false;
            });
        });
    </script>
</body>
</html>