在Eclipse中,如何通过id找到添加到工具栏的控件?

时间:2011-09-15 16:26:40

标签: java eclipse

我在eclipse中添加了一个控件,如下所示

<extension point="org.eclipse.ui.menus">
<menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar">
 <toolbar id="my.toolbar">
   <control
        class="myplugin.debugger.toolbaritem.DebugDayMenu"
        id="my.yearmenu">
   </control>

我还创建了一个DebugDayMenu类

public class DebugDayMenu extends WorkbenchWindowControlContribution{...

我现在想在另一个地方访问此控件但是当我尝试使用下面的代码时,它会导致类强制转换异常

IContributionItem toolbar = coolBarManager.find("my.toolbar");
IToolBarManager toolbarManager=((ToolBarContributionItem2)toolbar).getToolBarManager();
WorkbenchWindowControlContribution dayMenu= (WorkbenchWindowControlContribution) toolbarManager.find("my.yearmenu");

dayMenu是DynamicToolBarContributionItem和NOT WorkbenchWindowControlContribution的实例?此外,控件嵌入在DynamicToolBarContributionItem中的私有字段中,没有公共访问器方法

有更好的方法可以做到这一点,还是我误解了什么?

1 个答案:

答案 0 :(得分:0)

通常情况下,您可以通过访问必要的信息或将自己添加为某种类型的监听器,在您的贡献的createControl()方法中解决此问题。