Ext.onReady(function(){
   
// The action
   
var action = new Ext.Action({
        text
: 'Action 1',
        handler
: function(){
           
Ext.example.msg('Click','You clicked on "Action 1".');
       
},
        iconCls
: 'blist'
   
});


   
var panel = new Ext.Panel({
        title
: 'Actions',
        width
:600,
        height
:300,
        bodyStyle
: 'padding:10px;',     // lazy inline style

        tbar
: [
            action
, {                   // <-- Add the action directly to a toolbar
                text
: 'Action Menu',
                menu
: [action]          // <-- Add the action directly to a menu
           
}
       
],

        items
: [
           
new Ext.Button(action)       // <-- Add the action as a button
       
],

        renderTo
: Ext.getBody()
   
});

   
var tb = panel.getTopToolbar();
   
// Buttons added to the toolbar of the Panel above
   
// to test/demo doing group operations with an action
    tb
.add('->', {
        text
: 'Disable',
        handler
: function(){
            action
.setDisabled(!action.isDisabled());
           
this.setText(action.isDisabled() ? 'Enable' : 'Disable');
       
}
   
}, {
        text
: 'Change Text',
        handler
: function(){
           
Ext.Msg.prompt('Enter Text', 'Enter new text for Action 1:', function(btn, text){
               
if(btn == 'ok' && text){
                    action
.setText(text);
                    action
.setHandler(function(){
                       
Ext.example.msg('Click','You clicked on "'+text+'".');
                   
});
               
}
           
});
       
}
   
}, {
        text
: 'Change Icon',
        handler
: function(){
            action
.setIconClass(action.getIconClass() == 'blist' ? 'bmenu' : 'blist');
       
}
   
});
    tb
.doLayout();
});