/*
This file is part of Ext JS 3.4
Copyright (c) 2011-2013 Sencha Inc
Contact: http://www.sencha.com/contact
Commercial Usage
Licensees holding valid commercial licenses may use this file in accordance with the Commercial
Software License Agreement provided with the Software or, alternatively, in accordance with the
terms contained in a written agreement between you and Sencha.
If you are unsure which license is appropriate for your use, please contact the sales department
at http://www.sencha.com/contact.
Build date: 2013-04-03 15:07:25
*/
(function(){
var EXTUTIL = Ext.util,
EACH = Ext.each,
TRUE = true,
FALSE = false;
EXTUTIL.Observable = function(){
var me = this, e = me.events;
if(me.listeners){
me.on(me.listeners);
delete me.listeners;
}
me.events = e || {};
};
EXTUTIL.Observable.prototype = {
filterOptRe : /^(?:scope|delay|buffer|single)$/,
fireEvent : function(){
var a = Array.prototype.slice.call(arguments, 0),
ename = a[0].toLowerCase(),
me = this,
ret = TRUE,
ce = me.events[ename],
cc,
q,
c;
if (me.eventsSuspended === TRUE) {
if (q = me.eventQueue) {
q.push(a);
}
}
else if(typeof ce == 'object') {
if (ce.bubble){
if(ce.fire.apply(ce, a.slice(1)) === FALSE) {
return FALSE;
}
c = me.getBubbleTarget && me.getBubbleTarget();
if(c && c.enableBubble) {
cc = c.events[ename];
if(!cc || typeof cc != 'object' || !cc.bubble) {
c.enableBubble(ename);
}
return c.fireEvent.apply(c, a);
}
}
else {
a.shift();
ret = ce.fire.apply(ce, a);
}
}
return ret;
},
addListener : function(eventName, fn, scope, o){
var me = this,
e,
oe,
ce;
if (typeof eventName == 'object') {
o = eventName;
for (e in o) {
oe = o[e];
if (!me.filterOptRe.test(e)) {
me.addListener(e, oe.fn || oe, oe.scope || o.scope, oe.fn ? oe : o);
}
}
} else {
eventName = eventName.toLowerCase();
ce = me.events[eventName] || TRUE;
if (typeof ce == 'boolean') {
me.events[eventName] = ce = new EXTUTIL.Event(me, eventName);
}
ce.addListener(fn, scope, typeof o == 'object' ? o : {});
}
},
removeListener : function(eventName, fn, scope){
var ce = this.events[eventName.toLowerCase()];
if (typeof ce == 'object') {
ce.removeListener(fn, scope);
}
},
purgeListeners : function(){
var events = this.events,
evt,
key;
for(key in events){
evt = events[key];
if(typeof evt == 'object'){
evt.clearListeners();
}
}
},
addEvents : function(o){
var me = this;
me.events = me.events || {};
if (typeof o == 'string') {
var a = arguments,
i = a.length;
while(i--) {
me.events[a[i]] = me.events[a[i]] || TRUE;
}
} else {
Ext.applyIf(me.events, o);
}
},
hasListener : function(eventName){
var e = this.events[eventName.toLowerCase()];
return typeof e == 'object' && e.listeners.length > 0;
},
suspendEvents : function(queueSuspended){
this.eventsSuspended = TRUE;
if(queueSuspended && !this.eventQueue){
this.eventQueue = [];
}
},
resumeEvents : function(){
var me = this,
queued = me.eventQueue || [];
me.eventsSuspended = FALSE;
delete me.eventQueue;
EACH(queued, function(e) {
me.fireEvent.apply(me, e);
});
}
};
var OBSERVABLE = EXTUTIL.Observable.prototype;
OBSERVABLE.on = OBSERVABLE.addListener;
OBSERVABLE.un = OBSERVABLE.removeListener;
EXTUTIL.Observable.releaseCapture = function(o){
o.fireEvent = OBSERVABLE.fireEvent;
};
function createTargeted(h, o, scope){
return function(){
if(o.target == arguments[0]){
h.apply(scope, Array.prototype.slice.call(arguments, 0));
}
};
};
function createBuffered(h, o, l, scope){
l.task = new EXTUTIL.DelayedTask();
return function(){
l.task.delay(o.buffer, h, scope, Array.prototype.slice.call(arguments, 0));
};
};
function createSingle(h, e, fn, scope){
return function(){
e.removeListener(fn, scope);
return h.apply(scope, arguments);
};
};
function createDelayed(h, o, l, scope){
return function(){
var task = new EXTUTIL.DelayedTask(),
args = Array.prototype.slice.call(arguments, 0);
if(!l.tasks) {
l.tasks = [];
}
l.tasks.push(task);
task.delay(o.delay || 10, function(){
l.tasks.remove(task);
h.apply(scope, args);
}, scope);
};
};
EXTUTIL.Event = function(obj, name){
this.name = name;
this.obj = obj;
this.listeners = [];
};
EXTUTIL.Event.prototype = {
addListener : function(fn, scope, options){
var me = this,
l;
scope = scope || me.obj;
if(!me.isListening(fn, scope)){
l = me.createListener(fn, scope, options);
if(me.firing){
me.listeners = me.listeners.slice(0);
}
me.listeners.push(l);
}
},
createListener: function(fn, scope, o){
o = o || {};
scope = scope || this.obj;
var l = {
fn: fn,
scope: scope,
options: o
}, h = fn;
if(o.target){
h = createTargeted(h, o, scope);
}
if(o.delay){
h = createDelayed(h, o, l, scope);
}
if(o.single){
h = createSingle(h, this, fn, scope);
}
if(o.buffer){
h = createBuffered(h, o, l, scope);
}
l.fireFn = h;
return l;
},
findListener : function(fn, scope){
var list = this.listeners,
i = list.length,
l;
scope = scope || this.obj;
while(i--){
l = list[i];
if(l){
if(l.fn == fn && l.scope == scope){
return i;
}
}
}
return -1;
},
isListening : function(fn, scope){
return this.findListener(fn, scope) != -1;
},
removeListener : function(fn, scope){
var index,
l,
k,
me = this,
ret = FALSE;
if((index = me.findListener(fn, scope)) != -1){
if (me.firing) {
me.listeners = me.listeners.slice(0);
}
l = me.listeners[index];
if(l.task) {
l.task.cancel();
delete l.task;
}
k = l.tasks && l.tasks.length;
if(k) {
while(k--) {
l.tasks[k].cancel();
}
delete l.tasks;
}
me.listeners.splice(index, 1);
ret = TRUE;
}
return ret;
},
clearListeners : function(){
var me = this,
l = me.listeners,
i = l.length;
while(i--) {
me.removeListener(l[i].fn, l[i].scope);
}
},
fire : function(){
var me = this,
listeners = me.listeners,
len =
没有合适的资源?快使用搜索试试~ 我知道了~
JavaWeb+mybatis+Extjs+spring mvc信息管理系统
共2000个文件
gif:2860个
js:1866个
html:686个
4星 · 超过85%的资源 需积分: 9 84 下载量 79 浏览量
2015-12-24
16:02:05
上传
评论 7
收藏 50.59MB RAR 举报
温馨提示
JavaWeb+Extjs+springMvc+mybatis做的信息管理系统,主要是用Extjs实现前台,其中包括了树形结构和基本的表单和列表等,springMVC框架,数据库操作层使用的是mybatis,其中的数据库表结构可以根据其中的mapper.xml文件进行自己创建。主要功能包括基本的用户管理和系统的菜单管理,页面的发布。
资源推荐
资源详情
资源评论
收起资源包目录
JavaWeb+mybatis+Extjs+spring mvc信息管理系统 (2000个子文件)
app-88de2e4b4aaefeb72bd4003a88ad5c26.css 290KB
app-88de2e4b4aaefeb72bd4003a88ad5c26.css 290KB
ext-all.css 114KB
ext-all.css 114KB
ext-all-notheme.css 99KB
ext-all-notheme.css 99KB
xtheme-access.css 40KB
xtheme-access.css 40KB
xtheme-blue.css 38KB
xtheme-blue.css 38KB
xtheme-gray.css 38KB
xtheme-gray.css 38KB
yourtheme.css 38KB
yourtheme.css 38KB
silk.css 18KB
silk.css 18KB
calendar.css 18KB
calendar.css 18KB
ux-all.css 17KB
ux-all.css 17KB
desktop.css 14KB
desktop.css 14KB
form.css 11KB
form.css 11KB
grid.css 11KB
grid.css 11KB
extjs.css 9KB
extjs.css 9KB
button.css 8KB
button.css 8KB
panel.css 8KB
panel.css 8KB
tabs.css 8KB
tabs.css 8KB
grid.css 7KB
grid.css 7KB
grid.css 7KB
grid.css 7KB
grid.css 7KB
grid.css 7KB
panel-reset.css 7KB
panel-reset.css 7KB
customer.css 6KB
customer.css 6KB
GroupTab.css 6KB
GroupTab.css 6KB
core.css 6KB
core.css 6KB
toolbar.css 6KB
toolbar.css 6KB
feed-viewer.css 5KB
feed-viewer.css 5KB
feed-viewer.css 5KB
feed-viewer.css 5KB
layout.css 5KB
layout.css 5KB
date-picker.css 5KB
date-picker.css 5KB
tree.css 5KB
tree.css 5KB
feed-viewer-access.css 4KB
feed-viewer-access.css 4KB
menu.css 4KB
menu.css 4KB
tree.css 4KB
tree.css 4KB
form.css 4KB
form.css 4KB
window.css 4KB
window.css 4KB
tree.css 4KB
tree.css 4KB
tree.css 4KB
tree.css 4KB
button.css 4KB
button.css 4KB
toolbar.css 3KB
toolbar.css 3KB
tasks.css 3KB
tasks.css 3KB
tabs.css 3KB
tabs.css 3KB
date-picker.css 3KB
date-picker.css 3KB
editor.css 3KB
editor.css 3KB
tabs.css 3KB
tabs.css 3KB
resizable.css 3KB
resizable.css 3KB
date-picker.css 3KB
date-picker.css 3KB
date-picker.css 3KB
date-picker.css 3KB
statusbar.css 3KB
statusbar.css 3KB
form.css 3KB
form.css 3KB
tabs.css 3KB
tabs.css 3KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
- skyvisitor2016-05-24参考意义不是很大,不过感谢楼主分享
- wolfzone2017-09-04刚接触,跟预想的有些不一样,不知道怎么运行,研究中。
HeyTaoL
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功