我有一个带有一些视图的RCP应用程序和一个为应用程序创建工具栏的ActionBarAdvisor。工具栏初始化如下:
public class ApplicationActionBarAdvisor extends ActionBarAdvisor
...
protected void fillCoolBar(ICoolBarManager coolBar)
{
// Create new Toolbar
IToolBarManager toolbar = new ToolBarManager(coolBar.getStyle());
// Adds toolbar to perspective
coolBar.add(toolbar);
...
ActionContributionItem compareFilesCI = new ActionContributionItem(compareFiles);
compareFilesCI.setMode(ActionContributionItem.MODE_FORCE_TEXT);
toolbar.add(compareFilesCI);
...
}
此工具栏项的目的是切换JFace表的值的颜色。用户可以通过按下按钮来打开或关闭表格中的颜色。 但是,告诉表格应该启用/禁用着色的最佳方法是什么?目前我已经这样做了:
public class ActionCompareFiles extends Action implements ISelectionListener, ActionFactory.IWorkbenchAction
{
...
public void run()
{
// Check if the button is enabled. When it is enabled, comparison should be performed
try
{
// Get the label values view
final ViewFileValues labelViewer = (ViewFileValues) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViewReferences()[3].getView(true);
// Refresh the view
labelViewer.setColoringValues(this.isChecked());
}
catch (Exception e)
{
System.out.println("Exception when searching the values view");
}
}
...
按下按钮时,我会看到包含该表格的视图。在此视图类中,有一个方法'SetColoringValues',它通知标签提供程序按下按钮的表列并更新表。 这有效,但我不确定它是否是最佳解决方案......
我的第一个想法是简单地为按钮添加监听器。按下按钮后,将通知听众。但这似乎不起作用,因为我没有得到ActionBarAdvisor对象,是 工具栏已创建。对于工作台窗口中的工具栏似乎没有getter方法。
这个问题的最佳解决方案是什么?
答案 0 :(得分:0)
1)您应该更好地使用Eclipse RCP命令框架(扩展点* .commands,* .handlers,* .menu),而不是像您那样实现它。乍一看可能看起来很麻烦,但事实上它更加结构化和直接。
2)获取视图实例的方式完全错误:您依赖于视图在页面中的索引为3的事实,这是永远不会保证的。