提交 d47399ca 编写于 作者: S serge-rider

#10692 Show edit menu items only when enabled


Former-commit-id: 71fded2d
上级 5319a053
......@@ -161,11 +161,15 @@
<command commandId="org.eclipse.ui.edit.redo" label="%command.org.jkiss.dbeaver.core.edit.redo.name"/>
<command commandId="org.eclipse.ui.edit.cut" label="%command.org.jkiss.dbeaver.core.edit.cut.name"/>
<command commandId="org.eclipse.ui.edit.copy" label="%command.org.jkiss.dbeaver.core.edit.copy.name"/>
<command commandId="org.jkiss.dbeaver.core.edit.copy.special" label="%command.org.jkiss.dbeaver.core.edit.copy.special.name"/>
<command commandId="org.jkiss.dbeaver.core.edit.copy.special" label="%command.org.jkiss.dbeaver.core.edit.copy.special.name">
<visibleWhen checkEnabled="true"/>
</command>
<command commandId="org.eclipse.ui.edit.paste" label="%command.org.jkiss.dbeaver.core.edit.paste.name"/>
<command commandId="org.eclipse.ui.edit.delete" label="%command.org.jkiss.dbeaver.core.edit.delete.name"/>
<separator name="find.ext" visible="true"/>
<command commandId="org.eclipse.ui.edit.findReplace" label="%command.org.jkiss.dbeaver.core.edit.findreplace.name"/>
<command commandId="org.eclipse.ui.edit.findReplace" label="%command.org.jkiss.dbeaver.core.edit.findreplace.name">
<visibleWhen checkEnabled="true"/>
</command>
<command commandId="org.jkiss.dbeaver.core.navigator.bookmark.add"/>
<separator name="additions" visible="true"/>
<separator name="format" visible="true"/>
......
......@@ -118,23 +118,29 @@ public class ApplicationActionBarAdvisor extends ActionBarAdvisor
for (IConfigurationElement searchActionItem : actionSet.getConfigurationElement().getChildren()) {
String saId = searchActionItem.getAttribute("id");
if ("org.eclipse.search.OpenSearchDialog".equals(saId) || "org.eclipse.search.OpenSearchDialogPage".equals(saId)) {
try {
Object cfgElement = BeanUtils.invokeObjectDeclaredMethod(searchActionItem, "getConfigurationElement", new Class[0], new Object[0]);
if (cfgElement != null) {
Field pavField = cfgElement.getClass().getDeclaredField("propertiesAndValue");
pavField.setAccessible(true);
String[] pav = (String[]) pavField.get(cfgElement);
for (int i = 0; i < pav.length; i += 2) {
if (pav[i].equals("icon")) {
pav[i + 1] = "platform:/plugin/" + CoreApplicationActivator.PLUGIN_ID + "/icons/eclipse/search.png";
}
}
patchActionSetIcon(searchActionItem, "platform:/plugin/" + CoreApplicationActivator.PLUGIN_ID + "/icons/eclipse/search.png");
} else if ("org.eclipse.search.OpenFileSearchPage".equals(saId)) {
patchActionSetIcon(searchActionItem, UIIcon.FIND_TEXT.getLocation());
}
}
}
private void patchActionSetIcon(IConfigurationElement searchActionItem, String iconPath) {
try {
Object cfgElement = BeanUtils.invokeObjectDeclaredMethod(searchActionItem, "getConfigurationElement", new Class[0], new Object[0]);
if (cfgElement != null) {
Field pavField = cfgElement.getClass().getDeclaredField("propertiesAndValue");
pavField.setAccessible(true);
String[] pav = (String[]) pavField.get(cfgElement);
for (int i = 0; i < pav.length; i += 2) {
if (pav[i].equals("icon")) {
pav[i + 1] = iconPath;
}
} catch (Throwable e) {
// ignore
log.debug("Failed to patch search actions", e);
}
}
} catch (Throwable e) {
// ignore
log.debug("Failed to patch search actions", e);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册