Eclipse RCP:添加工具栏
2008-10-13 20:18
在工具栏上添加按钮
(1)启用工具栏
org.eclipsercp.hyperbola/ApplicationWorkbenchWindowAdvisor
public void preWindowOpen() {
……
configurer.setShowCoolBar(true);
……
}
(2)添加工具栏按钮
org.eclipsercp.hyperbola/ApplicationActionBarAdvisor
protected void fillCoolBar(ICoolBarManager coolBar) {
IToolBarManager toolbar1 = new ToolBarManager(coolBar.getStyle());
coolBar.add(toolbar1);
toolbar1.add(addContactAction);
toolbar1.add(new Separator());
toolbar1.add(addContactAction);
ToolBarManager toolbar2 = new ToolBarManager(coolBar.getStyle());
coolBar.add(toolbar2);
toolbar2.add(addContactAction);
}
ICoolBarManager 上有多个 CoolItem 组,每个 ToolBarManager 可以添加到这些 CoolItem 组上。
运行效果如图:
同时显示图像和文字
ICoolBarManager 接口继承 IContributionManager ,用于管理 IActions 和 IContributionItems。JFace 提供了 ActionContributionItem 类,用于将 Action 加入到 IContributionManager。
org.eclipsercp.hyperbola/ApplicationActionBarAdvisor
protected void fillCoolBar(ICoolBarManager coolBar) {
IToolBarManager toolbar =
new ToolBarManager(coolBar.getStyle() | SWT.BOTTOM);
coolBar.add(toolbar);
ActionContributionItem addContactCI = new
ActionContributionItem(addContactAction);
addContactCI.setMode(ActionContributionItem.MODE_FORCE_TEXT);
toolbar.add(addContactCI);
coolBar.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
}
ToolBarManager 的 SWT.BOTTOM 或 SWT.RIGHT 用于控制显示文字的位置,为每个 action 创建 ActionConfigurationItem ,并通过其设置 mode 为 ActionContributionItem.MODE_FORCE_TEXT。
在工具栏上添加其他控件
工具栏上不仅能添加按钮,还可以添加其他 SWT 控件,例如 ComboBox。
JFace 提供了 ControlContribution 类,可以将控件添加到 toolbar 或 coolbar。如果添加自定义控件,需要继承 ControlContribution 并实现 createControl(Composite) 方法,在此方法返回目标控件。
org.eclipsercp.hyperbola/ApplicationActionBarAdvisor
protected void fillCoolBar(ICoolBarManager coolBar) {
IToolBarManager toolbar = new ToolBarManager(coolBar.getStyle());
coolBar.add(toolbar);
IContributionItem comboCI = new ControlContribution() {
protected Control createControl(Composite parent) {
Combo c = new Combo(parent, SWT.READ_ONLY);
c.add("one");
c.add("two");
c.add("three");
return c;
}
};
toolbar.add(comboCI);
}