/*
* 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 com.jidesoft.utils.SystemInfo;
import mSearch.daten.DatenFilm;
import mSearch.tool.FilenameUtils;
import mSearch.tool.Listener;
import mSearch.tool.Log;
import mediathek.config.*;
import mediathek.daten.DatenDownload;
import mediathek.daten.DatenPset;
import mediathek.tool.EscBeenden;
import mediathek.tool.GuiFunktionenProgramme;
import mediathek.tool.MVFilmSize;
import mediathek.tool.MVMessageDialog;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.JTextComponent;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.nio.file.FileStore;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
@SuppressWarnings("serial")
public class DialogAddDownload extends JDialog {
private DatenPset pSet = null;
private boolean ok = false;
private DatenDownload datenDownload = null;
private final Daten daten;
private final DatenFilm datenFilm;
private String orgPfad = "";
private String aufloesung = "";
private String dateiGroesse_HD = "";
private String dateiGroesse_Hoch = "";
private String dateiGroesse_Klein = "";
private boolean nameGeaendert = false;
private boolean stopBeob = false;
private JTextComponent cbPathTextComponent = null;
public DialogAddDownload(Frame parent, Daten daten, DatenFilm film, DatenPset pSet, String aufloesung) {
super(parent, true);
initComponents();
filmBorder = (TitledBorder) jPanelSize.getBorder();
cbPathTextComponent = ((JTextComponent) jComboBoxPfad.getEditor().getEditorComponent());
this.aufloesung = aufloesung;
this.daten = daten;
datenFilm = film;
this.pSet = pSet;
init();
packIt();
if (parent != null) {
setLocationRelativeTo(parent);
}
}
private void packIt() {
int w = this.getWidth();
pack();
this.setSize(w, this.getHeight());
}
private void init() {
jButtonDelHistory.setIcon(Icons.ICON_BUTTON_DEL);
jComboBoxPset.setModel(new DefaultComboBoxModel<>(Daten.listePset.getListeSpeichern().getObjectDataCombo()));
jCheckBoxStarten.setSelected(Boolean.parseBoolean(MVConfig.get(MVConfig.Configs.SYSTEM_DIALOG_DOWNLOAD_D_STARTEN)));
jCheckBoxStarten.addActionListener(e -> MVConfig.add(MVConfig.Configs.SYSTEM_DIALOG_DOWNLOAD_D_STARTEN, String.valueOf(jCheckBoxStarten.isSelected())));
jButtonZiel.setIcon(Icons.ICON_BUTTON_FILE_OPEN);
jButtonZiel.setText("");
if (Daten.listePset.getListeSpeichern().isEmpty()) {
// Satz mit x, war wohl nix
ok = false;
beenden();
}
jButtonZiel.addActionListener(new ZielBeobachter());
jButtonOk.addActionListener(e -> {
if (check()) {
beenden();
}
});
getRootPane().setDefaultButton(jButtonOk); //TH
new EscBeenden(this) {
@Override
public void beenden_() {
ok = false;
beenden();
}
};
jButtonAbbrechen.addActionListener(e -> {
ok = false;
beenden();
});
if (pSet != null) {
jComboBoxPset.setSelectedItem(pSet.arr[DatenPset.PROGRAMMSET_NAME]);
} else {
pSet = Daten.listePset.getListeSpeichern().get(jComboBoxPset.getSelectedIndex());
}
if (Daten.listePset.getListeSpeichern().size() == 1) {
// macht dann keinen Sinn
jLabelSet.setVisible(false);
jComboBoxPset.setVisible(false);
jComboBoxPset.setEnabled(false);
} else {
jComboBoxPset.addActionListener(e -> setupResolutionButtons());
}
jTextFieldSender.setText(" " + datenFilm.arr[DatenFilm.FILM_SENDER] + ": " + datenFilm.arr[DatenFilm.FILM_TITEL]);
jTextFieldName.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
tus();
}
@Override
public void removeUpdate(DocumentEvent e) {
tus();
}
@Override
public void changedUpdate(DocumentEvent e) {
tus();
}
private void tus() {
if (!stopBeob) {
nameGeaendert = true;
if (!jTextFieldName.getText().equals(FilenameUtils.checkDateiname(jTextFieldName.getText(), false /*pfad*/))) {
jTextFieldName.setBackground(MVColor.DOWNLOAD_FEHLER.color);
} else {
jTextFieldName.setBackground(javax.swing.UIManager.getDefaults().getColor("TextField.background"));
}
}
}
});
cbPathTextComponent.setOpaque(true);
cbPathTextComponent.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
tus();
}
@Override
public void removeUpdate(DocumentEvent e) {
tus();
}
@Override
public void changedUpdate(DocumentEvent e) {
tus();
}
private void tus() {
if (!stopBeob) {
nameGeaendert = true;
String s = cbPathTextComponent.getText();
if (!s.equals(FilenameUtils.checkDateiname(s, true /*pfad*/))) {
jComboBoxPfad.getEditor().getEditorComponent().setBackground(MVColor.DOWNLOAD_FEHLER.color);
} else {
jComboBoxPfad.getEditor().getEditorComponent().setBackground(Color.WHITE);
}
calculateAndCheckDiskSpace();
}
}
});
jRadioButtonAufloesungHd.addActionListener(new BeobRadio());
jRadioButtonAufloesungKlein.addActionListener(new BeobRadio());
jRadioButtonAufloesungHoch.addActionListener(new BeobRadio());
jRadioButtonAufloesungHd.setEnabled(!datenFilm.arr[DatenFilm.FILM_URL_HD].isEmpty());
jRadioButtonAufloesungKlein.setEnabled(!datenFilm.arr[DatenFilm.FILM_URL_KLEIN].isEmpty());
jRadioButtonAufloesungHoch.setSelected(true);
if (jRadioButtonAufloesungHd.isEnabled()) {
dateiGroesse_HD = datenFilm.getDateigroesse(datenFilm.getUrlFuerAufloesung(DatenFilm.AUFLOESUNG_HD));
if (!dateiGroesse_HD.isEmpty()) {
jRadioButtonAufloesungHd.setText(jRadioButtonAufloesungHd.getText() + " [ " + dateiGroesse_HD + " MB ]");
}
}
dateiGroesse_Hoch = datenFilm.getDateigroesse(datenFilm.arr[DatenFilm.FILM_URL]);
if (!dateiGroesse_Hoch.isEmpty()) {
jRadioButtonAufloesungHoch.setText(jRadioButtonAufloesungHoch.getText() + " [ " + dateiGroesse_Hoch + " MB ]");
}
if (jRadioButtonAufloesungKlein.isEnabled()) {
dateiGroesse_Klein = datenFilm.getDateigroesse(datenFilm.getUrlFuerAufloesung(DatenFilm.AUFLOESUNG_KLEIN));
if (!dateiGroesse_Klein.isEmpty()) {
jRadioButtonAufloesungKlein.setText(jRadioButtonAufloesungKlein.getText() + " [ " + dateiGroesse_Klein + " MB ]");
}
}
jButtonDelHistory.addActionListener(e -> {
MVConfig.add(MVConfig.Configs.SYSTEM_DIALOG_DOWNLOAD__PFADE_ZUM_SPEICHERN, "");
jComboBoxPfad.setModel(new DefaultComboBoxModel<>(new String[]{orgPfad}));
});
jCheckBoxPfadSpeichern.setSelected(Boolean.parseBoolean(MVConfig.get(MVConfig.Configs.SYSTEM_DIALOG_DOWNLOAD__LETZTEN_PFAD_ANZEIGEN)));
jCheckBoxPfadSpeichern.addActionListener(e -> MVConfig.add(MVConfig.Configs.SYSTEM_DIALOG_DOWNLOAD__LETZTEN_PFAD_ANZEIGEN, Boolean.toString(jCheckBoxPfadSpeichern.isSelected())));
setupResolutionButtons();
calculateAndCheckDiskSpace();
nameGeaendert = false;
}
private void setNameFilm() {
// beim ersten mal werden die Standardpfade gesucht
if (!nameGeaendert) {
// nur wenn vom Benutzer noch nicht geänert!
stopBeob = true;
datenDownload = new DatenDownload(pSet, datenFilm, DatenDownload.QUELLE_DOWNLOAD, null, "", "", getFilmResolution());
if (datenDownload.arr[DatenDownload.DOWNLOAD_ZIEL_DATEINAME].equals("")) {
// dann wird nicht gespeichert ==> eigenntlich falsche Seteinstellungen??
jTextFieldName.setEnabled(false);
jComboBoxPfad.setEnabled(false);
jButtonZiel.setEnabled(false);
jTextFieldName.setText("");
jComboBoxPfad.setModel(new DefaultComboBoxModel<>(new String[]{""}));
} else {
jTextFieldName.setEnabled(true);
jComboBoxPfad.setEnabled(true);
jButtonZiel.setEnabled(true);
jTextFieldName.setText(datenDownload.arr[DatenDownload.DOWNLOAD_ZIEL_DATEINAME]);
setModelPfad(datenDownload.arr[DatenDownload.DOWNLOAD_ZIEL_PFAD], jComboBoxPfad);
orgPfad = datenDownload.arr[DatenDownload.DOWNLOAD_ZIEL_PFAD];
}
stopBeob = false;
}
}
/**
* Get the free disk space for a selected path.
*
* @return Free disk space in bytes.
*/
private long getFreeDiskSpace(final String strPath) {
long usableSpace = 0;
if (!strPath.isEmpty()) {
try {
Path path = Paths.get(strPath);
if (!Files.exists(path)) {
path = path.getParent();
}
final FileStore fileStore = Files.getFileStore(path);
usableSpace = fileStore.getUsableSpace();
} catch (Exception ignore) {
}
}
return usableSpace;
}
private final TitledBorder filmBorder;
private static final String TITLED_BORDER_STRING = "Film laden";
/**
* Calculate free disk space on volume and check if the movies can be safely downloaded.
*/
private void calculateAndCheckDiskSpace() {
jRadioButtonAufloesungHd.setForeground(Color.black);
jRadioButtonAufloesungHoch.setForeground(Color.black);
jRadioButtonAufloesungKlein.setForeground(Color.black);
try {
long usableSpace = getFreeDiskSpace(cbPathTextComponent.getText());
if (usableSpace > 0) {
filmBorder.setTitle(TITLED_BORDER_STRING + " [ noch frei: " + MVFilmSize.humanReadableByteCount(usableSpace, true) + " ]");
} else {
filmBorder.setTitle(TITLED_BORDER_STRING);
}
//border needs to be repainted after update...
jPanelSize.repaint();
// jetzt noch prüfen, obs auf die Platte passt
usableSpace /= 1_000_000;
if (usableSpace > 0) {
int size;
if (!dateiGroesse_HD.isEmpty()) {
size = Integer.parseInt(dateiGroesse_HD);
if (size > usableSpace) {
jRadioButtonAufloesungHd.setForeground(Color.red);
}
}
if (!dateiGroesse_Hoch.isEmpty()) {
size = Integer.parseInt(dateiGroesse_Hoch);
if (size > usableSpace) {
jRadioButtonAufloesungHoch.setForeground(Color.red);
}
}
if (!dateiGroesse_Klein.isEmpty()) {
size = Integer.parseInt(dateiGroesse_Klein);
if (size > usableSpace) {
jRadioButtonAufloesungKlein.setForeground(Color.red);
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void setModelPfad(String pfad, JComboBox<String> jcb) {
ArrayList<String> pfade = new ArrayList<>();
// wenn gewünscht, den letzten verwendeten Pfad an den Anfang setzen
if (!Boolean.parseBoolean(MVConfig.get(MVConfig.Configs.SYSTEM_DIALOG_DOWNLOAD__LETZTEN_PFAD_ANZEIGEN)) && !pfad.isEmpty()) {
// aktueller Pfad an Platz 1
pfade.add(pfad);
}
if (!MVConfig.get(MVConfig.Configs.SYSTEM_DIALOG_DOWNLOAD__PFADE_ZUM_SPEICHERN).isEmpty()) {
String[] p = MVConfig.get(MVConfig.Configs.SYSTEM_DIALOG_DOWNLOAD__PFADE_ZUM_SPEICHERN).split("<>");
for (String s : p) {
if (!pfade.contains(s)) {
pfade.add(s);
}
}
}
if (Boolean.parseBoolean(MVConfig.get(MVConfig.Configs.SYSTEM_DIALOG_DOWNLOAD__LETZTEN_PFAD_ANZEIGEN)) && !pfad.isEmpty()) {
// aktueller Pfad zum Schluss
if (!pfade.contains(pfad)) {
pfade.add(pfad);
}
}
jcb.setModel(new DefaultComboBoxModel<>(pfade.toArray(new String[pfade.size()])));
}
public static void saveComboPfad(JComboBox<String> jcb, String orgPath) {
ArrayList<String> pfade = new ArrayList<>();
String s = jcb.getSelectedItem().toString();
if (!s.equals(orgPath) || Boolean.parseBoolean(MVConfig.get(MVConfig.Configs.SYSTEM_DIALOG_DOWNLOAD__LETZTEN_PFAD_ANZEIGEN))) {
pfade.add(s);
}
for (int i = 0; i < jcb.getItemCount(); ++i) {
s = jcb.getItemAt(i);
if (!s.equals(orgPath) && !pfade.contains(s)) {
pfade.add(s);
}
}
if (!pfade.isEmpty()) {
s = pfade.get(0);
for (int i = 1; i < Konstanten.MAX_PFADE_DIALOG_DOWNLOAD && i < pfade.size(); ++i) {
if (!pfade.get(i).isEmpty()) {
s += "<>" + pfade.get(i);
}
}
}
MVConfig.add(MVConfig.Configs.SYSTEM_DIALOG_DOWNLOAD__PFADE_ZUM_SPEICHERN, s);
}
/**
* Setup the resolution radio buttons based on available download URLs.
*/
private void setupResolutionButtons() {
pSet = Daten.listePset.getListeSpeichern().get(jComboBoxPset.getSelectedIndex());
if (aufloesung.equals(DatenFilm.AUFLOESUNG_HD) || pSet.arr[DatenPset.PROGRAMMSET_AUFLOESUNG].equals(DatenFilm.AUFLOESUNG_HD)
&& !datenFilm.arr[DatenFilm.FILM_URL_HD].isEmpty()) {
/* Dann wurde im Filter HD ausgewählt und wird voreingestellt */
jRadioButtonAufloesungHd.setSelected(true);
} else if (pSet.arr[DatenPset.PROGRAMMSET_AUFLOESUNG].equals(DatenFilm.AUFLOESUNG_KLEIN) && !datenFilm.arr[DatenFilm.FILM_URL_KLEIN].isEmpty()) {
jRadioButtonAufloesungKlein.setSelected(true);
} else {
jRadioButtonAufloesungHoch.setSelected(true);
}
jCheckBoxInfodatei.setSelected(Boolean.parseBoolean(pSet.arr[DatenPset.PROGRAMMSET_INFODATEI]));
if (datenFilm.getUrlSubtitle().isEmpty()) {
// dann gibts keinen Subtitle
jCheckBoxSubtitle.setEnabled(false);
} else {
jCheckBoxSubtitle.setSelected(Boolean.parseBoolean(pSet.arr[DatenPset.PROGRAMMSET_SUBTITLE]));
}
setNameFilm();
}
/**
* Return the resolution string based on selected {@link javax.swing.JRadioButton}.
*
* @return The resolution as a string.
*/
private String getFilmResolution() {
if (jRadioButtonAufloesungHd.isSelected()) {
return DatenFilm.AUFLOESUNG_HD;
} else if (jRadioButtonAufloesungKlein.isSelected()) {
return DatenFilm.AUFLOESUNG_KLEIN;
} else {
return DatenFilm.AUFLOESUNG_NORMAL;
}
}
private String getFilmSize() {
if (jRadioButtonAufloesungHd.isSelected()) {
return dateiGroesse_HD;
} else if (jRadioButtonAufloesungKlein.isSelected()) {
return dateiGroesse_Klein;
} else {
return dateiGroesse_Hoch;
}
}
private boolean check() {
ok = false;
String pfad = jComboBoxPfad.getSelectedItem().toString();
String name = jTextFieldName.getText();
if (datenDownload != null) {
if (pfad.isEmpty() || name.isEmpty()) {
MVMessageDialog.showMessageDialog(this, "Pfad oder Name ist leer", "Fehlerhafter Pfad/Name!", JOptionPane.ERROR_MESSAGE);
} else {
if (!pfad.substring(pfad.length() - 1).equals(File.separator)) {
pfad += File.separator;
}
if (GuiFunktionenProgramme.checkPfadBeschreibbar(pfad)) {
ok = true;
} else {
MVMessageDialog.showMessageDialog(this, "Pfad ist nicht beschreibbar", "Fehlerhafter Pfad!", JOptionPane.ERROR_MESSAGE);
}
}
}
return ok;
}
private void beenden() {
if (ok) {
// jetzt wird mit den angegebenen Pfaden gearbeitet
datenDownload = new DatenDownload(pSet, datenFilm, DatenDownload.QUELLE_DOWNLOAD, null, jTextFieldName.getText(), jComboBoxPfad.getSelectedItem().toString(), getFilmResolution());
datenDownload.setGroesse(getFilmSize());
datenDownload.arr[DatenDownload.DOWNLOAD_INFODATEI] = Boolean.toString(jCheckBoxInfodatei.isSelected());
datenDownload.arr[DatenDownload.DOWNLOAD_SUBTITLE] = Boolean.toString(jCheckBoxSubtitle.isSelected());
daten.getListeDownloads().addMitNummer(datenDownload);
Listener.notify(Listener.EREIGNIS_LISTE_DOWNLOADS, this.getClass().getSimpleName());
if (jCheckBoxStarten.isSelected()) {
// und evtl. auch gleich starten
datenDownload.startDownload(daten);
}
}
saveComboPfad(jComboBoxPfad, orgPfad);
this.dispose();
}
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
javax.swing.ButtonGroup buttonGroup1 = new javax.swing.ButtonGroup();
jButtonOk = new javax.swing.JButton();
jButtonAbbrechen = new javax.swing.JButton();
jCheckBoxStarten = new javax.swing.JCheckBox();
javax.swing.JPanel jPanel1 = new javax.swing.JPanel();
jTextFieldName = new javax.swing.JTextField();
jButtonZiel = new javax.swing.JButton();
javax.swing.JLabel jLabel1 = new javax.swing.JLabel();
javax.swing.JLabel jLabel4 = new javax.swing.JLabel();
jComboBoxPfad = new javax.swing.JComboBox<>();
jButtonDelHistory = new javax.swing.JButton();
jCheckBoxPfadSpeichern = new javax.swing.JCheckBox();
jCheckBoxInfodatei = new javax.swing.JCheckBox();
jLabelSet = new javax.swing.JLabel();
jComboBoxPset = new javax.swing.JComboBox<>();
jCheckBoxSubtitle = new javax.swing.JCheckBox();
jPanelSize = new javax.swing.JPanel();
jRadioButtonAufloesungHd = new javax.swing.JRadioButton();
jRadioButtonAufloesungHoch = new javax.swing.JRadioButton();
jRadioButtonAufloesungKlein = new javax.swing.JRadioButton();
jTextFieldSender = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Film speichern");
jButtonOk.setText("Ok");
jButtonAbbrechen.setText("Abbrechen");
jCheckBoxStarten.setSelected(true);
jCheckBoxStarten.setText("Download sofort starten");
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Film speichen"));
jButtonZiel.setText("File");
jButtonZiel.setToolTipText("Zielpfad auswählen");
jLabel1.setText("Zielpfad:");
jLabel4.setText("Dateiname:");
jComboBoxPfad.setEditable(true);
jComboBoxPfad.setMaximumRowCount(15);
jButtonDelHistory.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mediathek/res/muster/button-del.png"))); // NOI18N
jButtonDelHistory.setToolTipText("History löschen");
jCheckBoxPfadSpeichern.setText("Zielpfad speichern");
jCheckBoxInfodatei.setText("Infodatei anlegen: \"Filmname.txt\"");
jLabelSet.setText("Set:");
jCheckBoxSubtitle.setText("Untertitel speichern: \"Filmname.xxx\"");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabelSet)
.addComponent(jLabel1))
.addGap(30, 30, 30)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jComboBoxPfad, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonZiel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonDelHistory))
.addComponent(jComboBoxPset, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jCheckBoxSubtitle)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jCheckBoxInfodatei)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 143, Short.MAX_VALUE)
.addComponent(jCheckBoxPfadSpeichern))
.addComponent(jTextFieldName))))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelSet)
.addComponent(jComboBoxPset, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(jLabel1)
.addComponent(jButtonZiel)
.addComponent(jComboBoxPfad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonDelHistory))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(jLabel4)
.addComponent(jTextFieldName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jCheckBoxPfadSpeichern)
.addComponent(jCheckBoxInfodatei))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jCheckBoxSubtitle)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButtonZiel, jTextFieldName});
jPanelSize.setBorder(javax.swing.BorderFactory.createTitledBorder("Film laden in"));
buttonGroup1.add(jRadioButtonAufloesungHd);
jRadioButtonAufloesungHd.setText("HD");
buttonGroup1.add(jRadioButtonAufloesungHoch);
jRadioButtonAufloesungHoch.setText("hoher Auflösung");
buttonGroup1.add(jRadioButtonAufloesungKlein);
jRadioButtonAufloesungKlein.setText("niedriger Auflösung");
javax.swing.GroupLayout jPanelSizeLayout = new javax.swing.GroupLayout(jPanelSize);
jPanelSize.setLayout(jPanelSizeLayout);
jPanelSizeLayout.setHorizontalGroup(
jPanelSizeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelSizeLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jRadioButtonAufloesungHd)
.addGap(18, 18, 18)
.addComponent(jRadioButtonAufloesungHoch)
.addGap(18, 18, 18)
.addComponent(jRadioButtonAufloesungKlein)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanelSizeLayout.setVerticalGroup(
jPanelSizeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelSizeLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelSizeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jRadioButtonAufloesungHd)
.addComponent(jRadioButtonAufloesungHoch)
.addComponent(jRadioButtonAufloesungKlein))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jTextFieldSender.setEditable(false);
jTextFieldSender.setFont(new java.awt.Font("Dialog", 1, 12)); // NOI18N
jTextFieldSender.setText(" ARD: Tatort, ...");
jTextFieldSender.setBorder(javax.swing.BorderFactory.createTitledBorder("Film"));
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()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanelSize, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jCheckBoxStarten)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButtonOk, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonAbbrechen))
.addComponent(jTextFieldSender))
.addContainerGap())
);
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButtonAbbrechen, jButtonOk});
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jTextFieldSender, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanelSize, 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.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButtonOk)
.addComponent(jButtonAbbrechen))
.addComponent(jCheckBoxStarten))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButtonAbbrechen;
private javax.swing.JButton jButtonDelHistory;
private javax.swing.JButton jButtonOk;
private javax.swing.JButton jButtonZiel;
private javax.swing.JCheckBox jCheckBoxInfodatei;
private javax.swing.JCheckBox jCheckBoxPfadSpeichern;
private javax.swing.JCheckBox jCheckBoxStarten;
private javax.swing.JCheckBox jCheckBoxSubtitle;
private javax.swing.JComboBox<String> jComboBoxPfad;
private javax.swing.JComboBox<String> jComboBoxPset;
private javax.swing.JLabel jLabelSet;
private javax.swing.JPanel jPanelSize;
private javax.swing.JRadioButton jRadioButtonAufloesungHd;
private javax.swing.JRadioButton jRadioButtonAufloesungHoch;
private javax.swing.JRadioButton jRadioButtonAufloesungKlein;
private javax.swing.JTextField jTextFieldName;
private javax.swing.JTextField jTextFieldSender;
// End of variables declaration//GEN-END:variables
private class BeobRadio implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
setNameFilm();
}
}
private class ZielBeobachter implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//we can use native directory chooser on Mac...
if (SystemInfo.isMacOSX()) {
//we want to select a directory only, so temporarily change properties
System.setProperty("apple.awt.fileDialogForDirectories", "true");
FileDialog chooser = new FileDialog(daten.getMediathekGui(), "Film speichern");
chooser.setVisible(true);
if (chooser.getFile() != null) {
//A directory was selected, that means Cancel was not pressed
try {
jComboBoxPfad.addItem(chooser.getDirectory() + chooser.getFile());
jComboBoxPfad.setSelectedItem(chooser.getDirectory() + chooser.getFile());
} catch (Exception ex) {
Log.errorLog(356871087, ex);
}
}
System.setProperty("apple.awt.fileDialogForDirectories", "false");
} else {
//use the cross-platform swing chooser
int returnVal;
JFileChooser chooser = new JFileChooser();
if (!jComboBoxPfad.getSelectedItem().toString().equals("")) {
chooser.setCurrentDirectory(new File(jComboBoxPfad.getSelectedItem().toString()));
}
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
try {
jComboBoxPfad.addItem(chooser.getSelectedFile().getAbsolutePath());
jComboBoxPfad.setSelectedItem(chooser.getSelectedFile().getAbsolutePath());
} catch (Exception ex) {
Log.errorLog(356871087, ex);
}
}
}
}
}
}