public WPopupMenuPeer(PopupMenu target) { this.target = target; MenuContainer parent = null; boolean isTrayIconPopup = false; isTrayIconPopup = AWTAccessor.getPopupMenuAccessor().isTrayIconPopup(target); if (isTrayIconPopup) { parent = AWTAccessor.getMenuComponentAccessor().getParent(target); } else { parent = target.getParent(); } if (parent instanceof Component) { WComponentPeer parentPeer = (WComponentPeer) WToolkit.targetToPeer(parent); if (parentPeer == null) { // because the menu isn't a component (sigh) we first have to wait // for a failure to map the peer which should only happen for a // lightweight container, then find the actual native parent from // that component. parent = WToolkit.getNativeContainer((Component) parent); parentPeer = (WComponentPeer) WToolkit.targetToPeer(parent); } createMenu(parentPeer); // fix for 5088782: check if menu object is created successfully checkMenuCreation(); } else { throw new IllegalArgumentException("illegal popup menu container class"); } }