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) {

Reply via email to