diff --git a/src/main/java/mediathek/gui/filmInformation/FilmInfoDialog.java b/src/main/java/mediathek/gui/filmInformation/FilmInfoDialog.java index 30e8a1da3..f05ccd919 100644 --- a/src/main/java/mediathek/gui/filmInformation/FilmInfoDialog.java +++ b/src/main/java/mediathek/gui/filmInformation/FilmInfoDialog.java @@ -5,6 +5,7 @@ package mediathek.gui.filmInformation; import com.formdev.flatlaf.util.ScaledImageIcon; +import mediathek.config.Konstanten; import mediathek.daten.Country; import mediathek.daten.DatenFilm; import mediathek.gui.actions.UrlHyperlinkAction; @@ -42,11 +43,14 @@ public class FilmInfoDialog extends JDialog { private static final Dimension DEFAULT_SENDER_DIMENSION = new Dimension(64, 64); private static final Logger logger = LogManager.getLogger(); private Optional currentFilmOptional = Optional.empty(); + private final JPopupMenu popupMenu = new JPopupMenu(); public FilmInfoDialog(Window owner) { super(owner); initComponents(); + setupDescriptionPopupMenu(); + setupHyperlink(); updateTextFields(); @@ -56,6 +60,23 @@ public FilmInfoDialog(Window owner) { setupListeners(); } + private void setupDescriptionPopupMenu() { + var item = new JMenuItem("Auswahl kopieren"); + item.addActionListener(l -> { + final var selected = (lblDescription.getSelectionEnd() - lblDescription.getSelectionStart()) > 0; + if (!selected) { + JOptionPane.showMessageDialog(this, "Kein Text markiert!", Konstanten.PROGRAMMNAME, JOptionPane.ERROR_MESSAGE); + } + else { + var text = lblDescription.getSelectedText(); + System.out.println("TEXT: " + text); + GuiFunktionen.copyToClipboard(text); + } + }); + popupMenu.add(item); + lblDescription.setComponentPopupMenu(popupMenu); + } + private void setupListeners() { addWindowListener(new WindowAdapter() { @Override diff --git a/src/main/java/mediathek/gui/tabs/tab_film/FilmDescriptionPanel.java b/src/main/java/mediathek/gui/tabs/tab_film/FilmDescriptionPanel.java index 13a731cce..a3fde03d8 100644 --- a/src/main/java/mediathek/gui/tabs/tab_film/FilmDescriptionPanel.java +++ b/src/main/java/mediathek/gui/tabs/tab_film/FilmDescriptionPanel.java @@ -1,6 +1,7 @@ package mediathek.gui.tabs.tab_film; import com.formdev.flatlaf.util.ScaledImageIcon; +import mediathek.config.Konstanten; import mediathek.daten.DatenFilm; import mediathek.gui.actions.UrlHyperlinkAction; import mediathek.gui.dialog.DialogFilmBeschreibung; @@ -41,6 +42,7 @@ public FilmDescriptionPanel(@NotNull AGuiTabPanel currentTab) { initComponents(); + hyperlink.addActionListener(l -> { if (!hyperlink.getToolTipText().isEmpty()) { var toolTipText = hyperlink.getToolTipText(); @@ -94,6 +96,19 @@ private void createPopupMenu() { }); popupMenu.add(item); + popupMenu.addSeparator(); + item = new JMenuItem("Auswahl kopieren"); + item.addActionListener(l -> { + final var selected = (textArea.getSelectionEnd() - textArea.getSelectionStart()) > 0; + if (!selected) { + JOptionPane.showMessageDialog(this, "Kein Text markiert!", Konstanten.PROGRAMMNAME, JOptionPane.ERROR_MESSAGE); + } else { + var text = textArea.getSelectedText(); + GuiFunktionen.copyToClipboard(text); + } + }); + popupMenu.add(item); + setComponentPopupMenu(popupMenu); textArea.setComponentPopupMenu(popupMenu); }