/* * MediathekView * Copyright (C) 2008 W. Xaver * W.Xaver[at]googlemail.com * http://zdfmediathk.sourceforge.net/ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package mediathek.gui; import mSearch.daten.DatenFilm; import mSearch.tool.DbgMsg; import mSearch.tool.Listener; import mediathek.config.Daten; import mediathek.config.Icons; import mediathek.config.MVConfig; import mediathek.daten.DatenDownload; import mediathek.gui.actions.UrlHyperlinkAction; import mediathek.gui.dialog.DialogFilmBeschreibung; import mediathek.tool.BeobMausUrl; import mediathek.tool.MVFont; import mediathek.tool.MVTable; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.TableModel; import java.net.URISyntaxException; @SuppressWarnings("serial") public class PanelFilmBeschreibung extends JPanel implements ListSelectionListener { private DatenFilm currentFilm = null; private MVTable table = null; public PanelFilmBeschreibung(Daten daten, MVTable table, boolean film) { initComponents(); this.table = table; jCheckBoxBeschreibung.setIcon(Icons.ICON_CHECKBOX_CLOSE); jCheckBoxBeschreibung.addActionListener(e -> { if (film) { MVConfig.add(MVConfig.Configs.SYSTEM_FILME_BESCHREIBUNG_ANZEIGEN, Boolean.FALSE.toString()); Listener.notify(Listener.EREIGNIS_FILM_BESCHREIBUNG_ANZEIGEN, PanelFilmBeschreibung.class.getSimpleName()); } else { MVConfig.add(MVConfig.Configs.SYSTEM_DOWNOAD_BESCHREIBUNG_ANZEIGEN, Boolean.FALSE.toString()); Listener.notify(Listener.EREIGNIS_DOWNLOAD_BESCHREIBUNG_ANZEIGEN, PanelFilmBeschreibung.class.getSimpleName()); } }); try { jXHyperlinkWebsite.setAction(new UrlHyperlinkAction(daten.getMediathekGui(), "")); } catch (URISyntaxException ignored) { jXHyperlinkWebsite.setText(""); } jXHyperlinkWebsite.addMouseListener(new BeobMausUrl(jXHyperlinkWebsite)); jCheckBoxChange.setIcon(Icons.ICON_CHECKBOX_EDIT); jCheckBoxChange.addActionListener(e -> { if (currentFilm != null) { final String akt = currentFilm.arr[DatenFilm.FILM_BESCHREIBUNG]; new DialogFilmBeschreibung(daten.getMediathekGui(), daten, currentFilm).setVisible(true); if (!currentFilm.arr[DatenFilm.FILM_BESCHREIBUNG].equals(akt)) { // dann hat sich die Beschreibung geändert setText(); daten.filmlisteSpeichern(); Listener.notify(Listener.EREIGNIS_BESCHREIBUNG, PanelFilmBeschreibung.class.getSimpleName()); } } }); Listener.addListener(new Listener(Listener.EREIGNIS_FONT, PanelFilmBeschreibung.class.getSimpleName()) { @Override public void ping() { setText(); } }); table.getSelectionModel().addListSelectionListener(this); //update for first time... updateFilmData(); } private void updateFilmData() { final int selectedTableRow = table.getSelectedRow(); if (selectedTableRow >= 0) { DatenFilm film; final TableModel model = table.getModel(); final int modelIndex = table.convertRowIndexToModel(selectedTableRow); switch (table.getTableType()) { case FILME: film = (DatenFilm) model.getValueAt(modelIndex, DatenFilm.FILM_REF); break; case DOWNLOADS: film = ((DatenDownload) model.getValueAt(modelIndex, DatenDownload.DOWNLOAD_REF)).film; break; default: DbgMsg.print("UNHANDLED TABLE TYPE!!!"); film = null; break; } displayFilmData(film); } else { displayFilmData(null); } } private void displayFilmData(DatenFilm aaktFilm) { currentFilm = aaktFilm; setText(); } private void setText() { if (currentFilm == null) { jEditorPane.setText(""); jXHyperlinkWebsite.setText(""); } else { // Beschreibung setzen jEditorPane.setText( "<html xmlns=\"http://www.w3.org/1999/xhtml\">" + "<head><style type=\"text/css\">.sans { font-family: Verdana, Geneva, sans-serif; font-size: " + MVFont.fontSize + "pt; }</style></head>\n" + "<body>" + "<span class=\"sans\"><b>" + (currentFilm.arr[DatenFilm.FILM_SENDER].isEmpty() ? "" : currentFilm.arr[DatenFilm.FILM_SENDER] + " - ") + currentFilm.arr[DatenFilm.FILM_TITEL] + "</b><br /></span>" + "<span class=\"sans\">" + currentFilm.arr[DatenFilm.FILM_BESCHREIBUNG].replace("\n", "<br />") + "</span>" + "</body>" + "</html>"); jXHyperlinkWebsite.setText(currentFilm.arr[DatenFilm.FILM_WEBSEITE]); } } @Override public void valueChanged(ListSelectionEvent e) { if (!e.getValueIsAdjusting()) { updateFilmData(); } } // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jCheckBoxBeschreibung = new javax.swing.JCheckBox(); javax.swing.JPanel jPanel1 = new javax.swing.JPanel(); javax.swing.JLabel jLabel1 = new javax.swing.JLabel(); javax.swing.JScrollPane jScrollPane2 = new javax.swing.JScrollPane(); jEditorPane = new javax.swing.JEditorPane(); javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane(); jXHyperlinkWebsite = new org.jdesktop.swingx.JXHyperlink(); jCheckBoxChange = new javax.swing.JCheckBox(); jCheckBoxBeschreibung.setToolTipText("Beschreibung ausblenden"); jLabel1.setText("zur Website:"); jScrollPane2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153))); jEditorPane.setEditable(false); jEditorPane.setBorder(javax.swing.BorderFactory.createEmptyBorder(4, 4, 4, 4)); jEditorPane.setContentType("text/html"); // NOI18N jEditorPane.setFont(new java.awt.Font("Dialog", 0, 24)); // NOI18N jScrollPane2.setViewportView(jEditorPane); jScrollPane1.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); jXHyperlinkWebsite.setText(""); jScrollPane1.setViewportView(jXHyperlinkWebsite); jCheckBoxChange.setToolTipText("Beschreibung ändern"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 184, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jCheckBoxChange) .addContainerGap()) .addComponent(jScrollPane2) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabel1) .addComponent(jScrollPane1) .addComponent(jCheckBoxChange)) .addContainerGap()) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jCheckBoxBeschreibung) .addGap(5, 5, 5) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(5, 5, 5)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jCheckBoxBeschreibung) .addGroup(layout.createSequentialGroup() .addGap(5, 5, 5) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) ); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox jCheckBoxBeschreibung; private javax.swing.JCheckBox jCheckBoxChange; private javax.swing.JEditorPane jEditorPane; private org.jdesktop.swingx.JXHyperlink jXHyperlinkWebsite; // End of variables declaration//GEN-END:variables }