Wednesday, March 14, 2012

Eclipse RCP - How to create toolbar dynamically

Eclipse supports the dynamic creation of menus and toolbars using the menuContribution extension point. The class attribute of menuContribution specifies the Java Class to be used for dynamic creation. The custom java class must extend ExtensionContributionFactory

image

Following example adds Exit toolbar button

public class ToolbarProvider extends ExtensionContributionFactory
{

    public ToolbarProvider()
    {
    }

    @Override
    public void createContributionItems( IServiceLocator serviceLocator, IContributionRoot additions )
    {
        ToolBarContributionItem toolbar = new ToolBarContributionItem( );
        additions.addContributionItem( toolbar, null );
        CommandContributionItemParameter p = new CommandContributionItemParameter( serviceLocator, "", "org.eclipse.ui.file.exit",
                SWT.PUSH );
        p.label = "Exit";
        p.icon = Activator.getImageDescriptor( "icons/alt_window_16.gif" );
        CommandContributionItem item = new CommandContributionItem( p );
        item.setVisible( true );
       
        toolbar.getToolBarManager().add( item );
    }

}

Similarly to add a menu the object of CommandContributionItem can be used if locationURI points to a menu.