This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new 7f669efa90 Add icon to menu with sub-menu #7082 (#7083)
7f669efa90 is described below
commit 7f669efa90e9db06271e540643277728278aa276
Author: Nicolas Adment <[email protected]>
AuthorDate: Mon May 4 09:49:00 2026 +0200
Add icon to menu with sub-menu #7082 (#7083)
---
.../apache/hop/projects/gui/ProjectsGuiPlugin.java | 6 +--
.../org/apache/hop/ui/core/gui/GuiMenuWidgets.java | 59 ++++++++++++----------
2 files changed, 35 insertions(+), 30 deletions(-)
diff --git
a/plugins/misc/projects/src/main/java/org/apache/hop/projects/gui/ProjectsGuiPlugin.java
b/plugins/misc/projects/src/main/java/org/apache/hop/projects/gui/ProjectsGuiPlugin.java
index 3171a0258a..b4fd7e2130 100644
---
a/plugins/misc/projects/src/main/java/org/apache/hop/projects/gui/ProjectsGuiPlugin.java
+++
b/plugins/misc/projects/src/main/java/org/apache/hop/projects/gui/ProjectsGuiPlugin.java
@@ -931,8 +931,7 @@ public class ProjectsGuiPlugin {
parentId = ID_CONTEXT_MENU_PROJECT_ADD,
id = ID_CONTEXT_MENU_PROJECT_ADD_FROM_VC,
label = "i18n::HopGui.Toolbar.Project.Add.FromVersionControl.Label",
- toolTip = "i18n::HopGui.Toolbar.Project.Add.FromVersionControl.Tooltip",
- image = "ui/images/add.svg")
+ toolTip = "i18n::HopGui.Toolbar.Project.Add.FromVersionControl.Tooltip")
public void addProjectFromVersionControl() {
addProjectFromVersionControlInternal();
}
@@ -942,8 +941,7 @@ public class ProjectsGuiPlugin {
parentId = ID_CONTEXT_MENU_PROJECT_ADD,
id = ID_CONTEXT_MENU_PROJECT_ADD_FROM_EXISTING,
label = "i18n::HopGui.Toolbar.Project.Add.FromExisting.Label",
- toolTip = "i18n::HopGui.Toolbar.Project.Add.FromExisting.Tooltip",
- image = "ui/images/add.svg")
+ toolTip = "i18n::HopGui.Toolbar.Project.Add.FromExisting.Tooltip")
public void addProjectFromExistingSources() {
addProjectFromExistingSourcesInternal();
}
diff --git a/ui/src/main/java/org/apache/hop/ui/core/gui/GuiMenuWidgets.java
b/ui/src/main/java/org/apache/hop/ui/core/gui/GuiMenuWidgets.java
index cb86d8ca9a..5d3fb1438a 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/gui/GuiMenuWidgets.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/gui/GuiMenuWidgets.java
@@ -124,22 +124,7 @@ public class GuiMenuWidgets extends BaseGuiWidgets {
}
menuItem = new MenuItem(parentMenu, SWT.PUSH);
- menuItem.setText(guiMenuItem.getLabel());
- if (StringUtils.isNotEmpty(guiMenuItem.getImage())) {
- menuItem.setImage(
- GuiResource.getInstance()
- .getImage(
- guiMenuItem.getImage(),
- guiMenuItem.getClassLoader(),
- ConstUi.SMALL_ICON_SIZE,
- ConstUi.SMALL_ICON_SIZE));
- }
-
- setMenuItemKeyboardShortcut(menuItem, guiMenuItem);
- if (StringUtils.isNotEmpty(guiMenuItem.getToolTip())
- && !EnvironmentUtils.getInstance().isWeb()) {
- menuItem.setToolTipText(guiMenuItem.getToolTip());
- }
+ initMenuItem(menuItem, guiMenuItem);
// Call the method to which the GuiWidgetElement annotation belongs.
//
@@ -174,25 +159,20 @@ public class GuiMenuWidgets extends BaseGuiWidgets {
Menu menu = parentMenu;
if (guiMenuItem.getId() != null) {
menuItem = new MenuItem(parentMenu, SWT.CASCADE);
- menuItem.setText(Const.NVL(guiMenuItem.getLabel(), ""));
- setMenuItemKeyboardShortcut(menuItem, guiMenuItem);
- if (StringUtils.isNotEmpty(guiMenuItem.getToolTip())
- && !EnvironmentUtils.getInstance().isWeb()) {
- menuItem.setToolTipText(guiMenuItem.getToolTip());
- }
+ initMenuItem(menuItem, guiMenuItem);
+
menu = new Menu(shell, SWT.DROP_DOWN);
menuItem.setMenu(menu);
menuItemMap.put(guiMenuItem.getId(), menuItem);
menuEnabledMap.put(guiMenuItem.getId(), true);
}
- // Add the children to this menu...
- //
-
// Sort the children as well. It gets chaotic otherwise
//
Collections.sort(children);
+ // Add the children to this menu...
+ //
for (GuiMenuItem child : children) {
addMenuWidgets(root, shell, menu, child);
}
@@ -207,7 +187,28 @@ public class GuiMenuWidgets extends BaseGuiWidgets {
menuMethod.invoke(parentObject);
}
- private void setMenuItemKeyboardShortcut(MenuItem menuItem, GuiMenuItem
guiMenuItem) {
+ /**
+ * Initializes a menu item by setting its properties such as label, image,
shortcuts, and tooltip
+ * based on the corresponding GuiMenuItem instance.
+ *
+ * @param menuItem The MenuItem object that needs to be initialized.
+ * @param guiMenuItem The GuiMenuItem containing configuration data for the
menu item.
+ */
+ private void initMenuItem(MenuItem menuItem, GuiMenuItem guiMenuItem) {
+ // Set label
+ menuItem.setText(Const.NVL(guiMenuItem.getLabel(), ""));
+
+ // Set image
+ if (StringUtils.isNotEmpty(guiMenuItem.getImage())) {
+ menuItem.setImage(
+ GuiResource.getInstance()
+ .getImage(
+ guiMenuItem.getImage(),
+ guiMenuItem.getClassLoader(),
+ ConstUi.SMALL_ICON_SIZE,
+ ConstUi.SMALL_ICON_SIZE));
+ }
+
// See if there's a shortcut worth mentioning...
//
KeyboardShortcut shortcut =
@@ -220,6 +221,12 @@ public class GuiMenuWidgets extends BaseGuiWidgets {
// so the correct context (focus) is used. Menu still shows shortcut
text for discoverability.
shortcutMap.put(guiMenuItem.getId(), shortcut);
}
+
+ // Set tooltip if available and not in web environment
+ if (StringUtils.isNotEmpty(guiMenuItem.getToolTip())
+ && !EnvironmentUtils.getInstance().isWeb()) {
+ menuItem.setToolTipText(guiMenuItem.getToolTip());
+ }
}
public static void appendShortCut(MenuItem menuItem, KeyboardShortcut
shortcut) {