I was working on my tiny RCP app, which needs a custom perspective switcher to control which views the user can access. So here I am, trying to add a toolbar with a couple of buttons to switch perspectives.
I figured the best way to have some control over the stuff would be to add a second toolbar in ApplicationActionBarAdvisor which would call my thee actions/commands to switch perspectives.
So let's say I create a second ToolBarContributionItem in the fillCoolBar method, which would look like this:
protected void fillCoolBar(ICoolBarManager coolBar) {
IToolBarManager toolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
ToolBarContributionItem mainBar = new ToolBarContributionItem(toolbar, "main");
coolBar.add(mainBar);
toolbar.add(openViewAction);
toolbar.add(newConnectionAction);
//Custom perspective switcher bar
IToolBarManager perspectives = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
ToolBarContributionItem perspectiveBar = new ToolBarContributionItem(perspectives, "perspectives");
coolBar.add(perspectiveBar);
}
Any ideas how I can align the Toolbar so it would be on the right side of the window? I'd love to have this position hardcoded.
Regards, Michael
I had a similar problem: I wanted to have a standard toolbar on the left side and a search text and button on the left. I found not really a solution. What I have done is that I override the fill-method in ToolBarContributionItem so that the layout of the CoolBarManager is changed. This is not a good solution, it works on Windows (which was enough in this case), but NOT on Linux, but it maybe helps:
protected void fillCoolBar(ICoolBarManager coolBar) {
coolBar.setLockLayout(true);
IToolBarManager mainToolBar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
coolBar.add(new ToolBarContributionItem(mainToolBar, "main"));
fillMainToolBar(mainToolBar);
IToolBarManager searchToolBar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
ToolBarContributionItem searchBarItem = new ToolBarContributionItem(
searchToolBar, "search") {
@Override
public void fill(CoolBar coolBar, int index) {
super.fill(coolBar, index);
// change the layout of the cool-bar to have the search
// controls on the right side
GridLayout coolBarLayout = new GridLayout(2, false);
coolBarLayout.marginHeight = 0;
coolBarLayout.marginWidth = 0;
coolBarLayout.horizontalSpacing = 20;
coolBarLayout.verticalSpacing = 0;
coolBarLayout.marginLeft = 10;
coolBar.setLayout(coolBarLayout);
GridData mainGridData = new GridData(SWT.LEFT, SWT.CENTER, true,
false);
GridData searchGridData = new GridData(SWT.RIGHT, SWT.CENTER,
false, false);
coolBar.getItem(0).getControl().setLayoutData(mainGridData);
coolBar.getItem(1).getControl().setLayoutData(searchGridData);
}
};
coolBar.add(searchBarItem);
searchToolBar.add(new SearchTextControl());
searchToolBar.add(searchAction);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With