Java 将SWT小部件添加到eclipse插件';s视图';s
给定以下操作栏,我希望能够向其中添加任何其他SWT小部件(例如标签)。考虑到,我不认为这是可能的,因为它只允许添加IAction对象 这是不可能的(我认为这很好,否则就不会有来自不同来源的插件的一致外观) 备选方案:Java 将SWT小部件添加到eclipse插件';s视图';s,java,eclipse,eclipse-rcp,eclipse-plugin,Java,Eclipse,Eclipse Rcp,Eclipse Plugin,给定以下操作栏,我希望能够向其中添加任何其他SWT小部件(例如标签)。考虑到,我不认为这是可能的,因为它只允许添加IAction对象 这是不可能的(我认为这很好,否则就不会有来自不同来源的插件的一致外观) 备选方案: 仅当视图处于活动状态时,操作栏才可见。然后,视图内容区域也是可见的,您可以在其中放置您可能需要的任意数量的小部件。因此,您可以在顶部添加该标签,类似于搜索视图在顶部显示当前搜索词的方式 您可以修改视图本身的名称(如上面的选项卡所示)。但如果这种情况经常发生,则不建议这样做,因为这
- 仅当视图处于活动状态时,操作栏才可见。然后,视图内容区域也是可见的,您可以在其中放置您可能需要的任意数量的小部件。因此,您可以在顶部添加该标签,类似于搜索视图在顶部显示当前搜索词的方式
- 您可以修改视图本身的名称(如上面的选项卡所示)。但如果这种情况经常发生,则不建议这样做,因为这会导致该选项卡栏中的选项卡重新布局,令人恼火
- 如果您想在标签中显示某种状态信息,也许可以使用带有复选框或单选按钮的下拉按钮来实现。例如,如搜索视图中的搜索历史记录或控制台视图中的活动控制台选择下拉列表
- 仅当视图处于活动状态时,操作栏才可见。然后,视图内容区域也是可见的,您可以在其中放置您可能需要的任意数量的小部件。因此,您可以在顶部添加该标签,类似于搜索视图在顶部显示当前搜索词的方式
- 您可以修改视图本身的名称(如上面的选项卡所示)。但如果这种情况经常发生,则不建议这样做,因为这会导致该选项卡栏中的选项卡重新布局,令人恼火
- 如果您想在标签中显示某种状态信息,也许可以使用带有复选框或单选按钮的下拉按钮来实现。例如,如搜索视图中的搜索历史记录或控制台视图中的活动控制台选择下拉列表
- 这是不可能的(我认为这是好的,否则就不会有来自不同来源的插件的一致外观)
备选方案:
IActionBars
添加其他控件。下面是显示如何实现这一点的代码。我已修改了由新“插件项目”向导创建的标准视图示例:
。。。
公共void createPartControl(复合父级){
查看器=新的TableViewer(父级,SWT.MULTI | SWT.H|u滚动| SWT.V|u滚动);
setContentProvider(新的ViewContentProvider());
setLabelProvider(新的ViewLabelProvider());
setSorter(新名称排序器());
setInput(getViewSite());
makeActions();
hookContextMenu();
hookDoubleClickAction();
贡献作用条();
}
私有void hookContextMenu(){
MenuManager menuMgr=new MenuManager(“弹出菜单”);
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(新的IMenuListener(){
公共无效MenuaboutShow(IMenuManager){
SampleView.this.fillContextMenu(管理器);
}
});
Menu Menu=menuMgr.createContextMenu(viewer.getControl());
viewer.getControl().setMenu(菜单);
getSite().registerContextMenu(菜单组,查看器);
}
私人无效贡献诉讼条(){
IActionBars=getViewSite().getActionBars();
fillLocalPullDown(bar.getMenuManager());
fillLocalToolBar(bar.getToolBarManager());
}
私有void filllocal下拉列表(IMenuManager){
添加经理(行动1);
添加(新分隔符());
添加经理(行动2);
}
私有void fillContextMenu(IMenuManager){
添加经理(行动1);
添加经理(行动2);
//其他插件可以在这里提供这些操作
添加(新分隔符(IWorkbenchActionConstants.MB_ADDITIONS));
}
专用void fillLocalToolBar(IToolBarManager){
添加经理(行动1);
添加经理(行动2);
manager.add(新标签contributionItem());
添加(新的ComboContributionItem());
}
私有类LabelContributionItem扩展了ControlContribution{
公共标签贡献率(){
超级(“someLabelId”);
}
@凌驾
受保护的控件createControl(复合父级){
标签=新标签(父项,SWT.NONE);
label.setText(“你好”);
退货标签;
}
}
私有类ComboContributionItem扩展了ControlContribution{
公共贡献主义(){
超级(“someComboId”);
}
@凌驾
受保护的控件createControl(复合父级){
组合组合=新组合(父组合,SWT.NONE);
返回组合;
}
}
...
希望这能有所帮助。您可以通过常规API将其他控件添加到
iactionbar
。下面是显示如何实现这一点的代码。我已修改了由新“插件项目”向导创建的标准视图示例:
。。。
公共void createPartControl(复合父级){
查看器=新的TableViewer(父级,SWT.MULTI | SWT.H|u滚动| SWT.V|u滚动);
setContentProvider(新的ViewContentProvider());
setLabelProvider(新的ViewLabelProvider());
setSorter(新名称排序器());
setInput(getViewSite());
makeActions();
hookContextMenu();
hookDoubleClickAction();
贡献作用条();
}
私有void hookContextMenu(){
MenuManager menuMgr=new MenuManager(“弹出菜单”);
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(新的IMenuListener(){
公共无效MenuaboutShow(IMenuManager){
SampleView.this.fillContextMenu(管理器);
}
});
Menu Menu=menuMgr.createContextMenu(viewer.getControl());
viewer.getControl().setMenu(菜单);
getSite().registerContextMenu(菜单组,查看器);
}
私人无效贡献诉讼条(){
IActionBars=getViewSite().getActionBars();
fillLocalPullDown(bar.getMenuManager());
fillLocalToolBar(bar.getToolBarManager());
}
脉波重复间隔