private synchronized void addItemInternal( final StringMenuItem<T> stringMenuItem) { log.trace("Creating JMenu item"); JMenuItem jMenuItem = createJMenuItem(stringMenuItem); log.trace("Adding cache entry for item: " + stringMenuItem); itemStringToJMenuItem.put(stringMenuItem, jMenuItem); log.trace("Adding key to key list"); itemStrings.add(stringMenuItem); log.trace("Addin JMenuItem: " + jMenuItem + " to JMenu"); getJMenu().insert(jMenuItem, 2); }
/** * @see nu.zoom.swing.desktop.component.stringmenu.StringMenu#removeItem(java.lang.String) */ public synchronized void removeItem(StringMenuItem<T> menuItem) { if (!EventQueue.isDispatchThread()) { log.fatal("Must be called on the EventQueue dispatch thread"); throw new IllegalStateException( "Must be called on the EventQueue dispatch thread"); } if (menuItem != null) { log.trace("Looking for menu item to remove"); final JMenuItem cachedJMenuItem = itemStringToJMenuItem .get(menuItem); log.trace("Cache returned item: " + cachedJMenuItem); if (cachedJMenuItem != null) { log.trace("Removing item from JMenu"); getJMenu().remove(cachedJMenuItem); log.trace("Removing item from key list"); itemStrings.remove(menuItem); log.trace("Removing item from cache"); itemStringToJMenuItem.remove(menuItem); log.trace("Removing ALL action listeners from JMenuItem"); ActionListener[] listeners = cachedJMenuItem .getActionListeners(); for (ActionListener listener : listeners) { cachedJMenuItem.removeActionListener(listener); } } } }