/** Alter the bounds of the popup just before it is made visible. */ @Override public void popupMenuWillBecomeVisible(PopupMenuEvent e) { JComboBox comboBox = (JComboBox) e.getSource(); if (comboBox.getItemCount() == 0) return; final Object child = comboBox.getAccessibleContext().getAccessibleChild(0); if (child instanceof BasicComboPopup) { SwingUtilities.invokeLater( new Runnable() { public void run() { customizePopup((BasicComboPopup) child); } }); } }
/** * Notify to all valid extensions that this menu Item is about to be displayed. * * @param event The associated event */ @Override public void popupMenuWillBecomeVisible(PopupMenuEvent event) { int itemsCount = 0; JPopupMenu aPopup = (JPopupMenu) event.getSource(); MenuElement[] elements = aPopup.getSubElements(); for (int index = 0; index < elements.length; index++) { JComponent aComponent = (JComponent) elements[index].getComponent(); if (aComponent == null) { continue; } if (!(aComponent instanceof JMenuItem)) { continue; } ExtensionWrapper aWrapper = (ExtensionWrapper) aComponent.getClientProperty("bluej.extmgr.ExtensionWrapper"); if (aWrapper == null) { continue; } if (!aWrapper.isValid()) { popupMenu.remove(aComponent); continue; } aWrapper.safePostMenuItem(menuGenerator, (JMenuItem) aComponent); itemsCount++; } if (itemsCount <= 0) { popupMenu.remove(menuSeparator); } }