import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.lang.reflect.InvocationTargetException;

public class AddTrayIconPopupToConstructor {

    public static void main(String[] args) throws AWTException, InterruptedException, InvocationTargetException {
        if (!SystemTray.isSupported()) {
            System.out.println("SystemTray not supported on the platform under test. " +
                    "Marking the test passed");
            return;
        }
        EventQueue.invokeAndWait(()-> {
            try {
                createTestUI();
            } catch (AWTException e) {
                e.printStackTrace();
            }
        });

    }

    public static void createTestUI() throws AWTException {
        Frame frame = new Frame("Test null TrayIcon Popup");
        PopupMenu popup = new PopupMenu();
        ActionListener listener = new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                MenuItem item = (MenuItem) event.getSource();
                System.out.println("actionPerformed: " + item.getLabel());
            }
        };
        MenuItem item11 = new MenuItem("Apple");
        MenuItem item12 = new MenuItem("Orange");
        MenuItem item13 = new MenuItem("Grapes");
        item11.addActionListener(listener);
        item12.addActionListener(listener);
        item13.addActionListener(listener);
        popup.add(item11);
        popup.add(item12);
        popup.add(item13);

        SystemTray tray = SystemTray.getSystemTray();
        TrayIcon icon = new TrayIcon(new BufferedImage(20, 20,
                BufferedImage.TYPE_INT_RGB), "Sample Icon", popup);
        SystemTray.getSystemTray().add(icon);

        Panel panel = new Panel(new BorderLayout());
        Choice choice = new Choice();
        choice.add("Popup");
        choice.add("null");
        panel.add(choice, BorderLayout.NORTH);

        Button button = new Button("Set Popup");
        button.addActionListener(e -> {
            if (choice.getSelectedIndex() == 0) {
                icon.setPopupMenu(popup);
            } else if (choice.getSelectedIndex() == 1) {
                icon.setPopupMenu(null);
            }
        });

        panel.add(button, BorderLayout.CENTER);
        frame.add(panel);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

}

