01.06.2012, 11:23
|
|
Профессор
|
|
Регистрация: 19.12.2009
Сообщений: 164
|
|
Ext.Action && Ext.Toolbar && Ext.menu.Menu
Хочу заюзать Ext.Action в Ext.Toolbar и Ext.menu.Menu одновременно. Но хочется чтобы Ext.Action в Ext.Toolbar был только иконкой, а в Ext.menu.Menu иконка и текст. Реально ли сие? К примеру:
Ext.onReady(function() {
Ext.QuickTips.init();
var
actions = [];
actions["action1"] = new Ext.Action({
text: "TestAction1",
iconCls: "iconTools",
handler: doAction
});
actions["action2"] = new Ext.Action({
text: "TestAction2",
handler: doAction
});
Ext.create("Ext.toolbar.Toolbar", {
items: [
actions["action1"],
{
text: "Menu# 1",
menu: [
actions["action1"],
actions["action2"]
]
}],
renderTo: Ext.getBody()
});
});
function doAction(menuItem, e) {
if(window.console && console.log)
console.log("doAction(%o)", arguments);
}
Кнопка в Ext.Toolbar иконка и тест.
__________________
"Helo, word!" - 17 errors 56 warnings
|
|
01.06.2012, 13:32
|
|
Профессор
|
|
Регистрация: 19.12.2009
Сообщений: 164
|
|
Не придумалось ничего умнее:
...
Ext.define("ButtonWOText",{
extend: "Ext.button.Button",
initComponent: function() {
this.callParent(arguments);
this.setTooltip(this.getText());
this.setText("");
}
});
...
Ext.create("Ext.toolbar.Toolbar", {
...
items: [new ButtonWOText(smthAction)],
...
});
__________________
"Helo, word!" - 17 errors 56 warnings
Последний раз редактировалось Ex_Soft, 01.06.2012 в 13:35.
|
|
02.06.2012, 12:17
|
С++/C# modest developer
|
|
Регистрация: 07.11.2011
Сообщений: 244
|
|
А почему бы просто не создать новый объект, скопировав в него нужные свойства?
var duplicate = Ext.copyTo({}, actions["action1"].initialConfig, 'iconCls');
а затем просто использовать его в тулбаре:
...
Ext.create("Ext.toolbar.Toolbar", {
items: [duplicate, {
text: "Menu# 1",
menu: [
actions["action1"],
actions["action2"]
]
}],
renderTo: Ext.getBody()
});
...
|
|
02.06.2012, 13:04
|
|
Профессор
|
|
Регистрация: 19.12.2009
Сообщений: 164
|
|
/me думает: тоже вариант... THNX
__________________
"Helo, word!" - 17 errors 56 warnings
|
|
03.06.2012, 08:25
|
|
Профессор
|
|
Регистрация: 19.12.2009
Сообщений: 164
|
|
Не - не вариант. В этом случае
actions["action1"].setDisabled(true);
из-за чего, собственно говоря и сыр-бор, ессесно на рожденную таким макаром кнопку воздействия не имеет...
__________________
"Helo, word!" - 17 errors 56 warnings
|
|
03.06.2012, 10:45
|
С++/C# modest developer
|
|
Регистрация: 07.11.2011
Сообщений: 244
|
|
Сообщение от Ex_Soft
|
из-за чего, собственно говоря и сыр-бор, ессесно на рожденную таким макаром кнопку воздействия не имеет...
|
А как вы хотели? это другой экшн.
Может быть я не так тонко понимаю что вы хотите сделать, но все же зачем создавать класс ради этого, почему нельзя "на лету" задать свойства?
Ext.create("Ext.toolbar.Toolbar", {
items: [Ext.apply(Ext.create('Ext.button.Button', actions["action1"]), {
text: '',
tooltip: actions["action1"].getText()
}), {
text: "Menu# 1",
menu: [
actions["action1"],
actions["action2"]
]
}],
renderTo: Ext.getBody()
});
|
|
05.06.2012, 10:48
|
|
Профессор
|
|
Регистрация: 19.12.2009
Сообщений: 164
|
|
Сообщение от nekto_O
|
но все же зачем создавать класс ради этого, почему нельзя "на лету" задать свойства?
|
/me думает: в принципе - можно и на лету...
__________________
"Helo, word!" - 17 errors 56 warnings
|
|
23.01.2013, 21:51
|
Новичок на форуме
|
|
Регистрация: 23.01.2013
Сообщений: 1
|
|
В объекте actions["action1"] есть атрибут items. В этом массиве лежат непосредственно все кнопки, которые относятся к данному объекту actions["action1"]. Т.е. вбацаете экшен в тулбар и два контекстных меню, значит будет три элемента.
Вот в них и надо менять свойства.
При событии beforerender просмотреть на ownerCt. Если это менюха, то вперед.
Завтра выложу код.
А вообще планирую оформить в удобоваримом виде.
|
|
|
|