package moviescraper.doctord.view; import java.awt.BorderLayout; import java.awt.Desktop; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowEvent; import java.awt.event.WindowFocusListener; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; import moviescraper.doctord.model.SearchResult; import moviescraper.doctord.view.renderer.SearchResultsRenderer; /** * Generating a dialog for selecting a specific element. * @author sansibar */ public class SelectionDialog extends JPanel { private static final long serialVersionUID = 5244704222222415993L; private final JPanel panel = this; private JList<SearchResult> labelList; private SearchResult optionPickedFromPanel; private JButton previewLinkButton; /** * Create the frame. */ public SelectionDialog(SearchResult[] searchResults, String siteName) { panel.setLayout(new BorderLayout()); labelList = new JList<>(searchResults); labelList.setCellRenderer(new SearchResultsRenderer()); labelList.setVisible(true); JScrollPane pane = new JScrollPane(labelList); panel.add(pane, BorderLayout.CENTER); previewLinkButton = new JButton("Preview Link in Browser"); //previewLinkButton.setEnabled(false); previewLinkButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { SearchResult selectedValueinAction = labelList.getSelectedValue(); if(selectedValueinAction != null && selectedValueinAction.getUrlPath() != null && selectedValueinAction.getUrlPath().length() > 0) { try { Desktop.getDesktop().browse(new URI(selectedValueinAction.getUrlPath())); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (URISyntaxException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }); panel.add(previewLinkButton, BorderLayout.SOUTH); panel.setPreferredSize(new Dimension(500,400)); final JDialog bwin = new JDialog(); bwin.addWindowFocusListener(new WindowFocusListener() { @Override public void windowLostFocus(WindowEvent e) { bwin.setVisible(false); bwin.dispose(); } @Override public void windowGainedFocus(WindowEvent e) { } }); bwin.add(panel); bwin.pack(); labelList.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent evt) { //capture left-double mouse click and dispose frame if ( evt.getButton() == MouseEvent.BUTTON1 ){ if ( evt.getClickCount() == 2 ) { optionPickedFromPanel = labelList.getSelectedValue(); SwingUtilities.getWindowAncestor(bwin).dispose(); } } } }); } public SearchResult getSelectedValue() { if (optionPickedFromPanel == null) optionPickedFromPanel = labelList.getSelectedValue(); return optionPickedFromPanel; } }