/*
* Ext JS Library 2.0 Copyright(c) 2006-2007, Ext JS, LLC. licensing@extjs.com
*
* http://extjs.com/license
*/
Ext.Toolbar = function(A) {
if (A instanceof Array) {
A = {
buttons : A
}
}
Ext.Toolbar.superclass.constructor.call(this, A)
};
(function() {
var A = Ext.Toolbar;
Ext.extend(A, Ext.BoxComponent, {
trackMenus : true,
initComponent : function() {
A.superclass.initComponent.call(this);
if (this.items) {
this.buttons = this.items
}
this.items = new Ext.util.MixedCollection(false,
function(B) {
return B.itemId || B.id || Ext.id()
})
},
autoCreate : {
cls : "x-toolbar x-small-editor",
html : "
"
},
onRender : function(C, B) {
this.el = C.createChild(this.autoCreate, B);
this.tr = this.el.child("tr", true)
},
afterRender : function() {
A.superclass.afterRender.call(this);
if (this.buttons) {
this.add.apply(this, this.buttons);
delete this.buttons
}
},
add : function() {
var C = arguments, B = C.length;
for (var D = 0; D < B; D++) {
var E = C[D];
if (E.isFormField) {
this.addField(E)
} else {
if (E.render) {
this.addItem(E)
} else {
if (typeof E == "string") {
if (E == "separator" || E == "-") {
this.addSeparator()
} else {
if (E == " ") {
this.addSpacer()
} else {
if (E == "->") {
this.addFill()
} else {
this.addText(E)
}
}
}
} else {
if (E.tagName) {
this.addElement(E)
} else {
if (typeof E == "object") {
if (E.xtype) {
this.addField(Ext.ComponentMgr
.create(E, "button"))
} else {
this.addButton(E)
}
}
}
}
}
}
}
},
addSeparator : function() {
return this.addItem(new A.Separator())
},
addSpacer : function() {
return this.addItem(new A.Spacer())
},
addFill : function() {
return this.addItem(new A.Fill())
},
addElement : function(B) {
return this.addItem(new A.Item(B))
},
addItem : function(B) {
var C = this.nextBlock();
this.initMenuTracking(B);
B.render(C);
this.items.add(B);
return B
},
addButton : function(D) {
if (D instanceof Array) {
var F = [];
for (var E = 0, C = D.length; E < C; E++) {
F.push(this.addButton(D[E]))
}
return F
}
var B = D;
if (!(D instanceof A.Button)) {
B = D.split ? new A.SplitButton(D) : new A.Button(D)
}
var G = this.nextBlock();
this.initMenuTracking(B);
B.render(G);
this.items.add(B);
return B
},
initMenuTracking : function(B) {
if (this.trackMenus && B.menu) {
B.on({
"menutriggerover" : this.onButtonTriggerOver,
"menushow" : this.onButtonMenuShow,
"menuhide" : this.onButtonMenuHide,
scope : this
})
}
},
addText : function(B) {
return this.addItem(new A.TextItem(B))
},
insertButton : function(C, F) {
if (F instanceof Array) {
var E = [];
for (var D = 0, B = F.length; D < B; D++) {
E.push(this.insertButton(C + D, F[D]))
}
return E
}
if (!(F instanceof A.Button)) {
F = new A.Button(F)
}
var G = document.createElement("td");
this.tr.insertBefore(G, this.tr.childNodes[C]);
this.initMenuTracking(F);
F.render(G);
this.items.insert(C, F);
return F
},
addDom : function(C, B) {
var E = this.nextBlock();
Ext.DomHelper.overwrite(E, C);
var D = new A.Item(E.firstChild);
D.render(E);
this.items.add(D);
return D
},
addField : function(C) {
var D = this.nextBlock();
C.render(D);
var B = new A.Item(D.firstChild);
B.render(D);
this.items.add(B);
return B
},
nextBlock : function() {
var B = document.createElement("td");
this.tr.appendChild(B);
return B
},
onDestroy : function() {
Ext.Toolbar.superclass.onDestroy.call(this);
if (this.rendered) {
if (this.items) {
Ext.destroy.apply(Ext, this.items.items)
}
Ext.Element.uncache(this.tr)
}
},
onDisable : function() {
this.items.each(function(B) {
if (B.disable) {
B.disable()
}
})
},
onEnable : function() {
this.items.each(function(B) {
if (B.enable) {
B.enable()
}
})
},
onButtonTriggerOver : function(B) {
if (this.activeMenuBtn && this.activeMenuBtn != B) {
this.activeMenuBtn.hideMenu();
B.showMenu();
this.activeMenuBtn = B
}
},
onButtonMenuShow : function(B) {
this.activeMenuBtn = B
},
onButtonMenuHide : function(B) {
delete this.activeMenuBtn
}
});
Ext.reg("toolbar", Ext.Toolbar);
A.Item = function(B) {
this.el = Ext.getDom(B);
this.id = Ext.id(this.el);
this.hidden = false
};
A.Item.prototype = {
getEl : function() {
return this.el
},
render : function(B) {
this.td = B;
B.appendChild(this.el)
},
destroy : function() {
if (this.td && this.td.parentNode) {
this.td.parentNode.removeChild(this.td)
}
},
show : function() {
this.hidden = false;
this.td.style.display = ""
},
hide : function() {
this.hidden = true;
this.td.style.display = "none"
},
setVisible : function(B) {
if (B) {
this.show()
} else {
this.hide()
}
},
focus : function() {
Ext.fly(this.el).focus()
},
disable : function() {
Ext.fly(this.td).addClass("x-item-disabled");
this.disabled = true;
this.el.disabled = true
},
enable : function() {
Ext.fly(this.td).removeClass("x-item-disabled");
this.disabled = false;
this.el.disabled = false
}
};
Ext.reg("tbitem", A.Item);
A.Separator = function() {
var B = document.createElement("span");
B.className = "ytb-sep";
A.Separator.superclass.constructor.call(this, B)
};
Ext.extend(A.Separator, A.Item, {
enable : Ext.emptyFn,
disable : Ext.emptyFn,
focus : Ext.emptyFn
});
Ext.reg("tbseparator", A.Separator);
A.Spacer = function() {
var B = document.createElement("div");
B.className = "ytb-spacer";
A.Spacer.superclass.constructor.call(this, B)
};
Ext.extend(A.Spacer, A.Item, {
enable : Ext.emptyFn,
disable : Ext.emptyFn,
focus : Ext.emptyFn
});
Ext.reg("tbspacer", A.Spacer);
A.Fill = Ext.extend(A.Spacer, {
render : function(B) {
B.style.width = "100%";
A.Fill.superclass.render.call(this, B)
}
});
Ext.reg("tbfill", A.Fill);
A.TextItem = function(C) {
var B = document.createElement("span");
B.className = "ytb-text";
B.innerHTML = C;
A.TextItem.superclass.constructor.call(this, B)
};
Ext.extend(A.TextItem, A.Item, {
enable : Ext.emptyFn,
disable : Ext.emptyFn,
focus : Ext.emptyFn
});
Ext.reg("tbtext", A.TextItem);
A.Button = Ext.extend(Ext.Button, {
hideParent : true,
onDestroy : function() {
A.Button.superclass.onDestroy.call(this);
if (this.container) {
this.container.remove()
}
}
});
Ext.reg("tbbutton", A.Button);
A.SplitButton = Ext.extend(Ext.SplitButton, {
hideParent : true,
onDestroy : function() {
A.SplitButton.superclass.onDestroy.call(this);
if (this.container) {
this.container.remove()
}
}
});
Ext.reg("tbsplit", A.SplitButton);
A.MenuButton = A.SplitButton
})();