gpt4 book ai didi

java - Eclipse RCP 菜单

转载 作者:太空宇宙 更新时间:2023-11-04 15:03:00 24 4
gpt4 key购买 nike

我正在构建一个 Eclipse RCP 应用程序,我有一个问题:

在plugin.xml文件中,我声明了一个包含5个命令的菜单。总结起来就是这样:

Menu A
subMenu A1
subMenu A2

我想要的是告诉 Eclipse 评估子菜单是否必须仅在鼠标悬停在主菜单项(即菜单 A)上时可见。我该怎么做?

提前致谢

<extension
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
locationURI="popup:com.x.sat.ui.views.ProjectsView?after=com.x.sat.ui.commands.closeproject">
<menu
icon="icons/repository_rep.gif"
id="com.x.sat.ui.sgc"
label="Gestion de Configuration">
<command
commandId="com.x.sat.sgc.ui.addProject"
label="Partager le projet"
style="push">
<visibleWhen
checkEnabled="false">
<reference
definitionId="satProjetOrSatModelProjectSelected">
</reference>
</visibleWhen>
</command>
<command
commandId="com.x.sat.sgc.ui.synchronize"
label="Synchroniser avec le dépôt ..."
style="push">
<visibleWhen
checkEnabled="false">
<reference
definitionId="synchronizeObject">
</reference>
</visibleWhen>
</command>
<command
commandId="com.x.sat.sgc.ui.browseRepository"
label="Parcourir le dépôt...."
style="push">
</command>
<command
commandId="com.x.sat.sgc.ui.compare"
label="Comparer..."
style="push">
</command>
<command
commandId="com.x.sat.sgc.ui.disconnect"
label="Déconnecter le projet ..."
style="push">
</command>
</menu>
</menuContribution>
</extension>

最佳答案

我怀疑您是否可以使用 plugin.xmlvisiblewhen 来运行它。由于您知道要收听的 MenuItem,因此可以添加 ArmListener反而。它将监听 MenuItem,您可以在内部实现 visibleWhen 命令或调用触发您的 Items 的其他方法。

    ArmListener armListener = new ArmListener() {
@Override
public void widgetArmed(ArmEvent e) {
System.out.println(e);
}
};

并调用它:

Menu systemMenu = display.getSystemMenu();
if (systemMenu != null) {
MenuItem sysItem = getItem(systemMenu, SWT.ID_QUIT);
sysItem.addArmListener(armListener);
}

完整的示例(如果可以在 SWT Snippet 中找到用法)

编辑:对于弹出菜单,您可以这样做

final Menu tableMenu = new Menu(shell, SWT.POP_UP);
MenuItem item = new MenuItem(tableMenu, SWT.PUSH);
item.setText("Hover Me");
item.addArmListener(armListener);

关于java - Eclipse RCP 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22355660/

24 4 0