亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? splitbar.js

?? ext js demo ext學習資料
?? JS
字號:
/*
 * Ext JS Library 1.1 RC 1
 * Copyright(c) 2006-2007, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://www.extjs.com/license
 */

/**
 * @class Ext.SplitBar
 * @extends Ext.util.Observable
 * Creates draggable splitter bar functionality from two elements (element to be dragged and element to be resized).
 * <br><br>
 * Usage:
 * <pre><code>
var split = new Ext.SplitBar("elementToDrag", "elementToSize",
                   Ext.SplitBar.HORIZONTAL, Ext.SplitBar.LEFT);
split.setAdapter(new Ext.SplitBar.AbsoluteLayoutAdapter("container"));
split.minSize = 100;
split.maxSize = 600;
split.animate = true;
split.on('moved', splitterMoved);
</code></pre>
 * @constructor
 * Create a new SplitBar
 * @param {String/HTMLElement/Ext.Element} dragElement The element to be dragged and act as the SplitBar. 
 * @param {String/HTMLElement/Ext.Element} resizingElement The element to be resized based on where the SplitBar element is dragged 
 * @param {Number} orientation (optional) Either Ext.SplitBar.HORIZONTAL or Ext.SplitBar.VERTICAL. (Defaults to HORIZONTAL)
 * @param {Number} placement (optional) Either Ext.SplitBar.LEFT or Ext.SplitBar.RIGHT for horizontal or  
                        Ext.SplitBar.TOP or Ext.SplitBar.BOTTOM for vertical. (By default, this is determined automatically by the initial
                        position of the SplitBar).
 */
Ext.SplitBar = function(dragElement, resizingElement, orientation, placement, existingProxy){
    
    /** @private */
    this.el = Ext.get(dragElement, true);
    this.el.dom.unselectable = "on";
    /** @private */
    this.resizingEl = Ext.get(resizingElement, true);

    /**
     * @private
     * The orientation of the split. Either Ext.SplitBar.HORIZONTAL or Ext.SplitBar.VERTICAL. (Defaults to HORIZONTAL)
     * Note: If this is changed after creating the SplitBar, the placement property must be manually updated
     * @type Number
     */
    this.orientation = orientation || Ext.SplitBar.HORIZONTAL;
    
    /**
     * The minimum size of the resizing element. (Defaults to 0)
     * @type Number
     */
    this.minSize = 0;
    
    /**
     * The maximum size of the resizing element. (Defaults to 2000)
     * @type Number
     */
    this.maxSize = 2000;
    
    /**
     * Whether to animate the transition to the new size
     * @type Boolean
     */
    this.animate = false;
    
    /**
     * Whether to create a transparent shim that overlays the page when dragging, enables dragging across iframes.
     * @type Boolean
     */
    this.useShim = false;
    
    /** @private */
    this.shim = null;
    
    if(!existingProxy){
        /** @private */
        this.proxy = Ext.SplitBar.createProxy(this.orientation);
    }else{
        this.proxy = Ext.get(existingProxy).dom;
    }
    /** @private */
    this.dd = new Ext.dd.DDProxy(this.el.dom.id, "XSplitBars", {dragElId : this.proxy.id});
    
    /** @private */
    this.dd.b4StartDrag = this.onStartProxyDrag.createDelegate(this);
    
    /** @private */
    this.dd.endDrag = this.onEndProxyDrag.createDelegate(this);
    
    /** @private */
    this.dragSpecs = {};
    
    /**
     * @private The adapter to use to positon and resize elements
     */
    this.adapter = new Ext.SplitBar.BasicLayoutAdapter();
    this.adapter.init(this);
    
    if(this.orientation == Ext.SplitBar.HORIZONTAL){
        /** @private */
        this.placement = placement || (this.el.getX() > this.resizingEl.getX() ? Ext.SplitBar.LEFT : Ext.SplitBar.RIGHT);
        this.el.addClass("x-splitbar-h");
    }else{
        /** @private */
        this.placement = placement || (this.el.getY() > this.resizingEl.getY() ? Ext.SplitBar.TOP : Ext.SplitBar.BOTTOM);
        this.el.addClass("x-splitbar-v");
    }
    
    this.addEvents({
        /**
         * @event resize
         * Fires when the splitter is moved (alias for {@link #event-moved})
         * @param {Ext.SplitBar} this
         * @param {Number} newSize the new width or height
         */
        "resize" : true,
        /**
         * @event moved
         * Fires when the splitter is moved
         * @param {Ext.SplitBar} this
         * @param {Number} newSize the new width or height
         */
        "moved" : true,
        /**
         * @event beforeresize
         * Fires before the splitter is dragged
         * @param {Ext.SplitBar} this
         */
        "beforeresize" : true,

        "beforeapply" : true
    });

    Ext.SplitBar.superclass.constructor.call(this);
};

Ext.extend(Ext.SplitBar, Ext.util.Observable, {
    onStartProxyDrag : function(x, y){
        this.fireEvent("beforeresize", this);
        if(!this.overlay){
            var o = Ext.DomHelper.insertFirst(document.body,  {cls: "x-drag-overlay", html: "&#160;"}, true);
            o.unselectable();
            o.enableDisplayMode("block");
            // all splitbars share the same overlay
            Ext.SplitBar.prototype.overlay = o;
        }
        this.overlay.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
        this.overlay.show();
        Ext.get(this.proxy).setDisplayed("block");
        var size = this.adapter.getElementSize(this);
        this.activeMinSize = this.getMinimumSize();;
        this.activeMaxSize = this.getMaximumSize();;
        var c1 = size - this.activeMinSize;
        var c2 = Math.max(this.activeMaxSize - size, 0);
        if(this.orientation == Ext.SplitBar.HORIZONTAL){
            this.dd.resetConstraints();
            this.dd.setXConstraint(
                this.placement == Ext.SplitBar.LEFT ? c1 : c2, 
                this.placement == Ext.SplitBar.LEFT ? c2 : c1
            );
            this.dd.setYConstraint(0, 0);
        }else{
            this.dd.resetConstraints();
            this.dd.setXConstraint(0, 0);
            this.dd.setYConstraint(
                this.placement == Ext.SplitBar.TOP ? c1 : c2, 
                this.placement == Ext.SplitBar.TOP ? c2 : c1
            );
         }
        this.dragSpecs.startSize = size;
        this.dragSpecs.startPoint = [x, y];
        Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd, x, y);
    },
    
    /** 
     * @private Called after the drag operation by the DDProxy
     */
    onEndProxyDrag : function(e){
        Ext.get(this.proxy).setDisplayed(false);
        var endPoint = Ext.lib.Event.getXY(e);
        if(this.overlay){
            this.overlay.hide();
        }
        var newSize;
        if(this.orientation == Ext.SplitBar.HORIZONTAL){
            newSize = this.dragSpecs.startSize + 
                (this.placement == Ext.SplitBar.LEFT ?
                    endPoint[0] - this.dragSpecs.startPoint[0] :
                    this.dragSpecs.startPoint[0] - endPoint[0]
                );
        }else{
            newSize = this.dragSpecs.startSize + 
                (this.placement == Ext.SplitBar.TOP ?
                    endPoint[1] - this.dragSpecs.startPoint[1] :
                    this.dragSpecs.startPoint[1] - endPoint[1]
                );
        }
        newSize = Math.min(Math.max(newSize, this.activeMinSize), this.activeMaxSize);
        if(newSize != this.dragSpecs.startSize){
            if(this.fireEvent('beforeapply', this, newSize) !== false){
                this.adapter.setElementSize(this, newSize);
                this.fireEvent("moved", this, newSize);
                this.fireEvent("resize", this, newSize);
            }
        }
    },
    
    /**
     * Get the adapter this SplitBar uses
     * @return The adapter object
     */
    getAdapter : function(){
        return this.adapter;
    },
    
    /**
     * Set the adapter this SplitBar uses
     * @param {Object} adapter A SplitBar adapter object
     */
    setAdapter : function(adapter){
        this.adapter = adapter;
        this.adapter.init(this);
    },
    
    /**
     * Gets the minimum size for the resizing element
     * @return {Number} The minimum size
     */
    getMinimumSize : function(){
        return this.minSize;
    },
    
    /**
     * Sets the minimum size for the resizing element
     * @param {Number} minSize The minimum size
     */
    setMinimumSize : function(minSize){
        this.minSize = minSize;
    },
    
    /**
     * Gets the maximum size for the resizing element
     * @return {Number} The maximum size
     */
    getMaximumSize : function(){
        return this.maxSize;
    },
    
    /**
     * Sets the maximum size for the resizing element
     * @param {Number} maxSize The maximum size
     */
    setMaximumSize : function(maxSize){
        this.maxSize = maxSize;
    },
    
    /**
     * Sets the initialize size for the resizing element
     * @param {Number} size The initial size
     */
    setCurrentSize : function(size){
        var oldAnimate = this.animate;
        this.animate = false;
        this.adapter.setElementSize(this, size);
        this.animate = oldAnimate;
    },
    
    /**
     * Destroy this splitbar. 
     * @param {Boolean} removeEl True to remove the element
     */
    destroy : function(removeEl){
        if(this.shim){
            this.shim.remove();
        }
        this.dd.unreg();
        this.proxy.parentNode.removeChild(this.proxy);
        if(removeEl){
            this.el.remove();
        }
    }
});

/**
 * @private static Create our own proxy element element. So it will be the same same size on all browsers, we won't use borders. Instead we use a background color.
 */
Ext.SplitBar.createProxy = function(dir){
    var proxy = new Ext.Element(document.createElement("div"));
    proxy.unselectable();
    var cls = 'x-splitbar-proxy';
    proxy.addClass(cls + ' ' + (dir == Ext.SplitBar.HORIZONTAL ? cls +'-h' : cls + '-v'));
    document.body.appendChild(proxy.dom);
    return proxy.dom;
};

/** 
 * @class Ext.SplitBar.BasicLayoutAdapter
 * Default Adapter. It assumes the splitter and resizing element are not positioned
 * elements and only gets/sets the width of the element. Generally used for table based layouts.
 */
Ext.SplitBar.BasicLayoutAdapter = function(){
};

Ext.SplitBar.BasicLayoutAdapter.prototype = {
    // do nothing for now
    init : function(s){
    
    },
    /**
     * Called before drag operations to get the current size of the resizing element. 
     * @param {Ext.SplitBar} s The SplitBar using this adapter
     */
     getElementSize : function(s){
        if(s.orientation == Ext.SplitBar.HORIZONTAL){
            return s.resizingEl.getWidth();
        }else{
            return s.resizingEl.getHeight();
        }
    },
    
    /**
     * Called after drag operations to set the size of the resizing element.
     * @param {Ext.SplitBar} s The SplitBar using this adapter
     * @param {Number} newSize The new size to set
     * @param {Function} onComplete A function to be invoked when resizing is complete
     */
    setElementSize : function(s, newSize, onComplete){
        if(s.orientation == Ext.SplitBar.HORIZONTAL){
            if(!s.animate){
                s.resizingEl.setWidth(newSize);
                if(onComplete){
                    onComplete(s, newSize);
                }
            }else{
                s.resizingEl.setWidth(newSize, true, .1, onComplete, 'easeOut');
            }
        }else{
            
            if(!s.animate){
                s.resizingEl.setHeight(newSize);
                if(onComplete){
                    onComplete(s, newSize);
                }
            }else{
                s.resizingEl.setHeight(newSize, true, .1, onComplete, 'easeOut');
            }
        }
    }
};

/** 
 *@class Ext.SplitBar.AbsoluteLayoutAdapter
 * @extends Ext.SplitBar.BasicLayoutAdapter
 * Adapter that  moves the splitter element to align with the resized sizing element. 
 * Used with an absolute positioned SplitBar.
 * @param {String/HTMLElement/Ext.Element} container The container that wraps around the absolute positioned content. If it's
 * document.body, make sure you assign an id to the body element.
 */
Ext.SplitBar.AbsoluteLayoutAdapter = function(container){
    this.basic = new Ext.SplitBar.BasicLayoutAdapter();
    this.container = Ext.get(container);
};

Ext.SplitBar.AbsoluteLayoutAdapter.prototype = {
    init : function(s){
        this.basic.init(s);
    },
    
    getElementSize : function(s){
        return this.basic.getElementSize(s);
    },
    
    setElementSize : function(s, newSize, onComplete){
        this.basic.setElementSize(s, newSize, this.moveSplitter.createDelegate(this, [s]));
    },
    
    moveSplitter : function(s){
        var yes = Ext.SplitBar;
        switch(s.placement){
            case yes.LEFT:
                s.el.setX(s.resizingEl.getRight());
                break;
            case yes.RIGHT:
                s.el.setStyle("right", (this.container.getWidth() - s.resizingEl.getLeft()) + "px");
                break;
            case yes.TOP:
                s.el.setY(s.resizingEl.getBottom());
                break;
            case yes.BOTTOM:
                s.el.setY(s.resizingEl.getTop() - s.el.getHeight());
                break;
        }
    }
};

/**
 * Orientation constant - Create a vertical SplitBar
 * @static
 * @type Number
 */
Ext.SplitBar.VERTICAL = 1;

/**
 * Orientation constant - Create a horizontal SplitBar
 * @static
 * @type Number
 */
Ext.SplitBar.HORIZONTAL = 2;

/**
 * Placement constant - The resizing element is to the left of the splitter element
 * @static
 * @type Number
 */
Ext.SplitBar.LEFT = 1;

/**
 * Placement constant - The resizing element is to the right of the splitter element
 * @static
 * @type Number
 */
Ext.SplitBar.RIGHT = 2;

/**
 * Placement constant - The resizing element is positioned above the splitter element
 * @static
 * @type Number
 */
Ext.SplitBar.TOP = 3;

/**
 * Placement constant - The resizing element is positioned under splitter element
 * @static
 * @type Number
 */
Ext.SplitBar.BOTTOM = 4;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区四区五区黄| 老司机午夜精品| 日韩av电影免费观看高清完整版在线观看| 寂寞少妇一区二区三区| 91精品福利视频| 国产精品女人毛片| 久久99久久99| 91精品国产综合久久福利软件| 国产精品乱码妇女bbbb| 国内一区二区在线| 欧美日韩电影在线| 一区二区三区四区在线| 成人黄动漫网站免费app| 亚洲最大成人综合| 成人免费毛片a| 久久综合色天天久久综合图片| 亚洲国产精品欧美一二99| 成人激情小说乱人伦| 精品播放一区二区| 狠狠狠色丁香婷婷综合激情| 51精品国自产在线| 日韩不卡一区二区三区| 欧美色图激情小说| 亚洲一线二线三线视频| 91美女蜜桃在线| 亚洲天天做日日做天天谢日日欢 | 久久五月婷婷丁香社区| 蜜臀av性久久久久av蜜臀妖精| 欧美日韩专区在线| 亚洲777理论| 欧美日韩一区不卡| 亚洲在线中文字幕| 在线观看日韩高清av| 亚洲综合另类小说| 欧美伊人久久大香线蕉综合69| 亚洲蜜臀av乱码久久精品蜜桃| 91片在线免费观看| 一片黄亚洲嫩模| 欧美色爱综合网| 青青草97国产精品免费观看无弹窗版 | 精品久久国产97色综合| 视频一区二区不卡| 欧美成人一区二区三区在线观看| 捆绑紧缚一区二区三区视频| 精品国产凹凸成av人导航| 国产传媒一区在线| 亚洲视频精选在线| 亚洲少妇最新在线视频| 91成人国产精品| 蜜臀av性久久久久av蜜臀妖精| 欧美xxxxxxxxx| 成人精品视频网站| 亚洲高清不卡在线观看| 精品日韩成人av| 91在线无精精品入口| 亚洲国产欧美日韩另类综合| 欧美一区永久视频免费观看| 国产一区二区h| 日韩理论片网站| 欧美一级淫片007| 成人免费毛片a| 午夜av一区二区| 国产亚洲1区2区3区| 在线免费观看日韩欧美| 蜜桃av一区二区| 国产精品国产精品国产专区不片| 欧美视频在线观看一区二区| 狠狠色丁香婷婷综合久久片| 亚洲激情综合网| 欧美精品一区二区三区一线天视频| 成人av手机在线观看| 日韩精品成人一区二区在线| 国产清纯白嫩初高生在线观看91| 日本精品视频一区二区三区| 免费高清在线一区| 亚洲男人天堂av网| 26uuu久久天堂性欧美| 欧美中文字幕一二三区视频| 91精品国产丝袜白色高跟鞋| 成人深夜视频在线观看| 日本成人中文字幕| 亚洲综合免费观看高清完整版 | 亚洲三级在线免费观看| 91精品久久久久久久99蜜桃| 91在线免费看| 国产原创一区二区三区| 亚洲成人午夜影院| 亚洲精品写真福利| 国产精品色眯眯| 久久亚洲精华国产精华液| 欧美另类变人与禽xxxxx| 91麻豆精品一区二区三区| 国产精品一区二区久激情瑜伽 | 亚洲资源在线观看| ...xxx性欧美| 国产精品午夜免费| 久久久久久久久久久久电影| 欧美日韩精品福利| 色乱码一区二区三区88| 91麻豆福利精品推荐| 日韩视频免费观看高清完整版在线观看 | 91久久人澡人人添人人爽欧美| 丁香天五香天堂综合| 国产黄色精品视频| 国产一区二区按摩在线观看| 激情综合网av| 精品一区在线看| 精品一区二区久久| 久久99久久99小草精品免视看| 日本色综合中文字幕| 天天亚洲美女在线视频| 午夜激情久久久| 日韩成人一级大片| 另类小说色综合网站| 玖玖九九国产精品| 精品在线观看免费| 国产乱码一区二区三区| 国产+成+人+亚洲欧洲自线| 国产suv精品一区二区三区| 国产精品1区二区.| 成人av免费在线观看| 99久久国产综合精品女不卡| 91国偷自产一区二区开放时间 | 日日夜夜精品视频天天综合网| 亚洲高清免费观看高清完整版在线观看| 亚洲精品欧美专区| 亚洲第一激情av| 六月丁香综合在线视频| 国产精品一区久久久久| 成人精品免费看| 欧美午夜精品一区| 91精品一区二区三区久久久久久 | 欧美日韩免费观看一区三区| 欧美日本视频在线| 欧美一级艳片视频免费观看| 久久综合九色综合97婷婷女人| 欧美国产激情一区二区三区蜜月 | 美女一区二区三区在线观看| 蜜桃av噜噜一区二区三区小说| 国产在线观看免费一区| 91视频www| 日韩三级免费观看| 国产精品久久99| 亚洲成人在线免费| 国产老肥熟一区二区三区| 一本一道久久a久久精品| 欧美日韩第一区日日骚| 国产无人区一区二区三区| 成人av网在线| 欧美一级免费大片| 中文一区二区完整视频在线观看| 亚洲国产一区在线观看| 国产精品原创巨作av| 欧美亚洲国产一区在线观看网站| 欧美成人bangbros| 一区二区三区不卡在线观看| 久久91精品国产91久久小草| 色婷婷综合久久久久中文一区二区 | 成人午夜短视频| 欧美剧情电影在线观看完整版免费励志电影 | 日本一区二区三区视频视频| 亚洲一区二区美女| 国产不卡视频在线观看| 欧美一区二区三区视频在线观看| 国产精品污污网站在线观看| 青娱乐精品视频在线| 在线精品视频小说1| 国产精品乱人伦中文| 经典三级一区二区| 91麻豆精品国产91久久久资源速度| 国产精品青草久久| 激情欧美一区二区| 91精品婷婷国产综合久久竹菊| 亚洲日本中文字幕区| 国产乱人伦精品一区二区在线观看| 欧美日韩视频专区在线播放| 亚洲欧美日韩电影| av电影天堂一区二区在线| 精品成人在线观看| 久久国产三级精品| 在线91免费看| 亚洲丰满少妇videoshd| 色视频欧美一区二区三区| 国产三区在线成人av| 国产一区二区久久| 日韩精品一区二区三区四区视频| 亚洲一区二区高清| 在线日韩国产精品| 亚洲精选一二三| 一本大道久久a久久精品综合| 久久先锋影音av鲁色资源网| 激情成人午夜视频| 精品国产免费久久| 久久国产夜色精品鲁鲁99| 欧美xxxxxxxx| 韩国女主播一区二区三区| 精品国产凹凸成av人网站| 国产一区二区三区av电影 | 欧美卡1卡2卡| 男男成人高潮片免费网站|