package streamExample.agent.ui.client; import javafx.util.Pair; import streamExample.agent.ui.components.VideoPanel; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; public class StreamClientWindow extends JFrame { private VideoPanel videoPanel; private StreamClientWindowContent windowContent; private JMenu connectionMenu; /** * JFrame window for displaying client application. */ public StreamClientWindow() { super(); windowContent = new StreamClientWindowContent(); videoPanel = new VideoPanel(); setContentPane(windowContent.mainContentPanel); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); windowContent.addVideoPanel(videoPanel); generateConnectionMenu(); pack(); setVisible(true); } public void updateImage(BufferedImage image) { videoPanel.updateImage(image); } private void generateConnectionMenu() { connectionMenu = new JMenu("Połączenie"); JMenuItem connectMenuItem = new JMenuItem("Połącz"); JMenuItem disconnectMenuItem = new JMenuItem("Rozłącz"); JMenuItem editConnectionMenuItem = new JMenuItem("Edytuj Połączenie"); editConnectionMenuItem.addActionListener(new EditConnectionActionListener(this)); connectionMenu.add(connectMenuItem); connectionMenu.add(disconnectMenuItem); connectionMenu.addSeparator(); connectionMenu.add(editConnectionMenuItem); windowContent.menuBar.add(connectionMenu); } public void updateInfo(Pair ports) { windowContent.portLabel.setText(String.valueOf(ports.getKey())); windowContent.statusLabel.setText(String.valueOf(ports.getValue())); } } class EditConnectionActionListener implements ActionListener { private StreamClientWindow parentWindow; public EditConnectionActionListener(StreamClientWindow streamClientWindow) { parentWindow = streamClientWindow; } @Override public void actionPerformed(ActionEvent actionEvent) { showDialog(); } // should return host and port values private void showDialog() { StreamClientEditConnectionDialog dialog = new StreamClientEditConnectionDialog(parentWindow); dialog.setLocationRelativeTo(parentWindow); dialog.setModal(true); dialog.pack(); dialog.setVisible(true); } }