如何以编程方式替换面板上的工具图标

时间:2011-01-20 23:27:32

标签: extjs

基本上,我有一个类似于的门户网站: http://dev.sencha.com/deploy/dev/examples/portal/portal.html

每个portlet都有工具(就像给出的例子一样)(例如):

var tools = [{
    id:'gear',
    handler: function(evt, toolEl, panel, tc){
        Ext.Msg.alert('Message', 'Replace my icon now please.');
        // following 2 code lines is one way to get part way there, 
        // but it shows the original image when I hover over it
        //toolEl.removeClass('x-tool-gear')
        //toolEl.addClass('x-tool-maximize')
    }
},{
    id:'close',
    handler: function(e, target, panel){
        panel.ownerCt.remove(panel, true);
    }
}];

单击“齿轮”工具时,在处理程序中,我想用其他工具(如“最大化”工具)替换“齿轮”工具。
我很感激有关如何实现这一目标的任何建议。

感谢。

2 个答案:

答案 0 :(得分:1)

尝试使用此编辑的代码作为工具配置。请注意,这将起作用,但不是“生产就绪”。例如 - 您不希望每次添加侦听器单击该工具。

{
        id:'gear',
        handler: function(evt, toolEl, panel, tc){
            toolEl.removeClass('x-tool-gear');
            toolEl.removeClass('x-tool-gear-over');
            toolEl.addClass('x-tool-maximize');
            toolEl.on('mouseenter', function(e,t,o){
                toolEl.removeClass('x-tool-gear-over');
                toolEl.addClass('x-tool-maximize-over');
            });
            toolEl.on('mouseleave', function(e,t,o){
                toolEl.removeClass('x-tool-maximize-over');
                toolEl.addClass('x-tool-maximize');
            });
        }
    }

答案 1 :(得分:0)

切换面板left // right

的工具

Tnx的帮助!

tools:[{
    id:'left',
    qtip:this.Colapsar,
    scope:this,
    handler:function(event, toolEl, panel, tc){
        panel.getEl().stopFx().shift({
        x:-166,
        easing:'easeOut',
        duration:.35
        });
    toolEl.dom.qtip = this.Expandir;
    toolEl.hide();
    panel.tools.right.show();   
    }
},{
    id:'right',
    qtip:this.Expandir,
    scope:this,
    hidden:true,
    handler:function(event, toolEl, panel, tc){
        panel.getEl().stopFx().shift({
        x: 20,
        easing: 'easeOut',
        duration: .35
    });
    toolEl.dom.qtip = this.Colapsar;
    toolEl.hide();
    panel.tools.left.show();    
    }
}]