Ido
Ido

Reputation: 981

add toolbar to section

I want to add a toolbar to a section in SWT. There is an example i saw in the PDE manifest editor.

How can i add this toolbar or buttons? maybe i need to use a different control?

Thank you, Ido

Upvotes: 4

Views: 3401

Answers (2)

Simon
Simon

Reputation: 9365

Since the posted solution didn't produce a transparent-background icon, I made some research on how to get the same result as in Extension Page of the Plug-In Manifest Editor.

Plug-In Manifest Editor - Extensions Page

Here is how they create the toolbar:

    ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
    ToolBar toolbar = toolBarManager.createControl(section);
    toolbar.setCursor(Display.getDefault().getSystemCursor(SWT.CURSOR_HAND));

    // Add sort action to the tool bar
    fSortAction = new SortAction(fExtensionTree, PDEUIMessages.ExtensionsPage_sortAlpha, null, null, this);
    toolBarManager.add(fSortAction);
    // Add collapse action to the tool bar
    fCollapseAction = new CollapseAction(fExtensionTree, PDEUIMessages.ExtensionsPage_collapseAll);
    toolBarManager.add(fCollapseAction);

    toolBarManager.update(true);

    section.setTextClient(toolbar);

EDIT:

This seems to work very well, too:

ToolBar toolbar = new ToolBar(section, SWT.NONE);
//add the toolitems here
//...
section.setTextClient(toolbar);

Do not let Window Builder Tool adapt the toolbar with FormToolkit, or you will get a white background painted.

Upvotes: 6

Kire Haglin
Kire Haglin

Reputation: 7079

You can use ImageHyperLink control. I think that's what the PDE manifest editor uses.

Section section = new Section(parent, SWT.NONE);
Composite toolbar = new Composite(section, SWT.NONE);
RowLayout layout = new RowLayout(SWT.HORIZONTAL);
layout.marginLeft = 0;
layout.marginRight = 0;
layout.spacing = 0;
layout.marginTop = 0;
layout.marginBottom = 0;
toolbar.setLayout(layout);
parent.setTextClient(toolbar);

ImageHyperlink imageHyperLink = new ImageHyperlink(toolbar, SWT.CENTER);
imageHyperLink.setBackgroundImage(section.getBackgroundImage());
imageHyperLink.setToolTipText("Click me for help");
imageHyperLink.setImage(JFaceResources.getImage(Dialog.DLG_IMG_HELP));
imageHyperLink.addHyperlinkListener(new HyperlinkAdapter()
{
    public void linkActivated(HyperlinkEvent e)
    {
         // Show help
    }
});

Upvotes: 0

Related Questions