/* * 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.dialog; import mediathek.config.Icons; import mediathek.config.MVConfig; import mediathek.daten.DatenDownload; import mediathek.tool.EscBeenden; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @SuppressWarnings("serial") public class MeldungDownloadfehler extends JDialog { private Timer countdownTimer = null; public MeldungDownloadfehler(java.awt.Frame parent, String text, DatenDownload datenDownload) { super(parent, false); initComponents(); setFocusableWindowState(false); setFocusable(false); setTitle("Downloadfehler"); if (parent != null) { setLocationRelativeTo(parent); } new EscBeenden(this) { @Override public void beenden_() { beenden(); } }; jTextArea1.setText(text); jTextFieldTitel.setText(datenDownload.arr[DatenDownload.DOWNLOAD_TITEL]); jButtonOk.addActionListener(e -> beenden()); jLabelIcon.setText(""); jLabelIcon.setIcon(Icons.ICON_ACHTUNG_32); //start the countdown... countdownTimer = new Timer(0, new CountdownAction()); countdownTimer.setRepeats(true); countdownTimer.start(); pack(); } @Override public void setVisible(boolean vis) { if (Boolean.parseBoolean(MVConfig.get(MVConfig.Configs.SYSTEM_DOWNLOAD_ERRORMSG)) && MVConfig.getInt(MVConfig.Configs.SYSTEM_PARAMETER_DOWNLOAD_ERRORMSG_IN_SEKUNDEN) > 0) { super.setVisible(vis); } else { beenden(); } } private void beenden() { this.dispose(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jButtonOk = new javax.swing.JButton(); javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); jLabelIcon = new javax.swing.JLabel(); javax.swing.JLabel jLabel2 = new javax.swing.JLabel(); jTextFieldTitel = new javax.swing.JTextField(); javax.swing.JSeparator jSeparator1 = new javax.swing.JSeparator(); jLabelTime = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); jButtonOk.setText("Ok"); jTextArea1.setEditable(false); jTextArea1.setColumns(20); jTextArea1.setLineWrap(true); jTextArea1.setRows(4); jScrollPane1.setViewportView(jTextArea1); jLabelIcon.setText("Achtung"); jLabel2.setText("Filmtitel:"); jTextFieldTitel.setEditable(false); jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL); jLabelTime.setText("0 s"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabelIcon) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jLabelTime) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButtonOk)) .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 492, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTextFieldTitel))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jSeparator1) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jTextFieldTitel, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 103, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jLabelTime) .addComponent(jButtonOk))) .addComponent(jLabelIcon)) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButtonOk; private javax.swing.JLabel jLabelIcon; private javax.swing.JLabel jLabelTime; private javax.swing.JTextArea jTextArea1; private javax.swing.JTextField jTextFieldTitel; // End of variables declaration//GEN-END:variables /** * Implements the countdown based on Swing Timer for automatic placement on EDT. */ private class CountdownAction implements ActionListener { private int w = MVConfig.getInt(MVConfig.Configs.SYSTEM_PARAMETER_DOWNLOAD_ERRORMSG_IN_SEKUNDEN); @Override public void actionPerformed(ActionEvent e) { if (w > 0) { jLabelTime.setText(w + " s"); if (countdownTimer != null) { countdownTimer.setDelay(1000); } } else { beenden(); } w--; } } }