4

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

Ido
  • 951
  • 1
  • 13
  • 27

2 Answers2

6

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.

Simon
  • 9,255
  • 4
  • 37
  • 54
0

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
    }
});
Kire Haglin
  • 6,569
  • 22
  • 27