[Git][java-team/libmnemonicsetter-java][upstream] New upstream version 0.6

Andreas Tille (@tille) gitlab at salsa.debian.org
Mon Feb 10 19:46:10 GMT 2025



Andreas Tille pushed to branch upstream at Debian Java Maintainers / libmnemonicsetter-java


Commits:
3e0b8fbf by Andreas Tille at 2025-02-10T20:37:49+01:00
New upstream version 0.6
- - - - -


2 changed files:

- build.gradle
- src/main/java/org/dpolivaev/mnemonicsetter/MnemonicSetter.java


Changes:

=====================================
build.gradle
=====================================
@@ -13,7 +13,7 @@ targetCompatibility='1.7'
 sourceCompatibility='1.7'
 
 group 'org.dpolivaev.mnemonicsetter'
-version='0.5'
+version='0.6'
 
 
 bintray {
@@ -55,6 +55,9 @@ publishing {
             }
         }
     }
+    repositories {
+        maven { url "${project.gradle.gradleUserHomeDir}/local-artifacts" }
+    }
 }
 
 dependencies {


=====================================
src/main/java/org/dpolivaev/mnemonicsetter/MnemonicSetter.java
=====================================
@@ -28,22 +28,17 @@ import javax.swing.JMenuItem;
 import javax.swing.event.PopupMenuEvent;
 import javax.swing.event.PopupMenuListener;
 
-import org.dpolivaev.mnemonicsetter.ButtonNameMnemonicHolder;
-import org.dpolivaev.mnemonicsetter.INameMnemonicHolder;
-import org.dpolivaev.mnemonicsetter.MenuItemMnemonicHolder;
-import org.dpolivaev.mnemonicsetter.ItemMnemonicSetter;
-
 /**
  * Automatically assigns mnemonics to menu items and toolbar elements.
- * 
+ *
  * Use it just like MnemonicSetter.INSTANCE.setComponentMnemonics(menubar, toolbar).
- * You can also attach it to a popup menu as a PopupMenuListener 
+ * You can also attach it to a popup menu as a PopupMenuListener
  * so that mnemonics are automatically calculated when the popup menu becomes visible.
  */
 public class MnemonicSetter implements PopupMenuListener{
 	final static private boolean IS_MAC_OS = System.getProperty("os.name").startsWith("Mac OS");
 	final static public MnemonicSetter INSTANCE = new MnemonicSetter();
-	
+
 
 	@Override
 	public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
@@ -56,31 +51,56 @@ public class MnemonicSetter implements PopupMenuListener{
 			return; // Mac OS generally does not support mnemonics
 		int componentCount = 0;
 		for(Container container : containers) {
-			componentCount += container.getComponentCount();
+			componentCount += countComponents(container);
 		}
 		final Collection<Integer> keyCodesUsedInMenus = new HashSet<>();
 		final ArrayList<INameMnemonicHolder> mnemonicHolders = new ArrayList<INameMnemonicHolder>(componentCount);
 		for(Container container : containers) {
-			if(container instanceof JMenuBar) {
-				final Collection<Integer> keyCodesUsedInMenu = UsedAltAcceleratorsFinder.INSTANCE.findUsedKeyCodes((JMenuBar) container);
-				keyCodesUsedInMenus.addAll(keyCodesUsedInMenu);
-			}
-				
-			final Component[] components = container.getComponents();
-			for(Component component :components)
-				if(component instanceof JMenuItem) {
-					final JMenuItem item = (JMenuItem) component;
-					mnemonicHolders.add(new MenuItemMnemonicHolder(item));
-				}
-				else if(component instanceof AbstractButton) {
-					final AbstractButton button = (AbstractButton) component;
-					mnemonicHolders.add(new ButtonNameMnemonicHolder(button));
-				}
+			addComponents(container, keyCodesUsedInMenus, mnemonicHolders);
 		}
 		final ItemMnemonicSetter mnemonicSetter = ItemMnemonicSetter.of(mnemonicHolders).notUsing(keyCodesUsedInMenus);
 		mnemonicSetter.setMnemonics();
 	}
 
+	private void addComponents(Container container, final Collection<Integer> keyCodesUsedInMenus,
+							   final ArrayList<INameMnemonicHolder> mnemonicHolders) {
+		if(container instanceof JMenuBar) {
+			final Collection<Integer> keyCodesUsedInMenu = UsedAltAcceleratorsFinder.INSTANCE.findUsedKeyCodes((JMenuBar) container);
+			keyCodesUsedInMenus.addAll(keyCodesUsedInMenu);
+		}
+
+		final Component[] components = container.getComponents();
+		for(Component component :components)
+			if(component instanceof JMenuItem) {
+				final JMenuItem item = (JMenuItem) component;
+				mnemonicHolders.add(new MenuItemMnemonicHolder(item));
+			}
+			else if(component instanceof AbstractButton) {
+				final AbstractButton button = (AbstractButton) component;
+				mnemonicHolders.add(new ButtonNameMnemonicHolder(button));
+			}
+			else if(component instanceof Container) {
+				addComponents((Container) component, keyCodesUsedInMenus, mnemonicHolders);
+			}
+	}
+
+	private int countComponents(Container container) {
+		if(container instanceof JMenuBar) {
+			return container.getComponentCount();
+		}
+		int count = 0;
+		final Component[] components = container.getComponents();
+		for(Component component :components) {
+			if(component instanceof JMenuItem || component instanceof AbstractButton) {
+				count++;
+			}
+			else if(component instanceof Container) {
+				count += countComponents((Container) component);
+			}
+		}
+		return count;
+	}
+
 	@Override
 	public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
 	}



View it on GitLab: https://salsa.debian.org/java-team/libmnemonicsetter-java/-/commit/3e0b8fbfe7cc63d2987f7c12cea143e329fcad89

-- 
View it on GitLab: https://salsa.debian.org/java-team/libmnemonicsetter-java/-/commit/3e0b8fbfe7cc63d2987f7c12cea143e329fcad89
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20250210/f2575836/attachment.htm>


More information about the pkg-java-commits mailing list