/*
* 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.dialogEinstellungen;
import com.jidesoft.utils.SystemInfo;
import mSearch.tool.Listener;
import mSearch.tool.Log;
import mediathek.config.Daten;
import mediathek.config.Icons;
import mediathek.config.MVConfig;
import mediathek.daten.DatenMediaDB;
import mediathek.daten.DatenMediaPath;
import mediathek.file.GetFile;
import mediathek.gui.PanelVorlage;
import mediathek.gui.dialog.DialogHilfe;
import mediathek.tool.*;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
@SuppressWarnings("serial")
public class PanelMediaDB extends PanelVorlage {
private final TModel modelPath = new TModel(new Object[][]{}, DatenMediaPath.COLUMN_NAMES);
private final TModelMediaDB modelMediaDB = new TModelMediaDB(new Object[][]{}, DatenMediaDB.COLUMN_NAMES);
public PanelMediaDB(Daten d, JFrame parent) {
super(d, parent);
initComponents();
daten = d;
Listener.addListener(new Listener(Listener.EREIGNIS_MEDIA_DB_START, PanelMediaDB.class.getSimpleName()) {
@Override
public void ping() {
// neue DB suchen
setIndex(false);
modelMediaDB.setRowCount(0);
jToggleButtonLoad.setSelected(false);
}
});
Listener.addListener(new Listener(Listener.EREIGNIS_MEDIA_DB_STOP, PanelMediaDB.class.getSimpleName()) {
@Override
public void ping() {
// neue DB liegt vor
jLabelSizeIndex.setText(daten.getListeMediaDB().size() + "");
setIndex(true);
}
});
progress.setVisible(false);
progress.setIndeterminate(true);
progress.setMaximum(0);
progress.setMinimum(0);
progress.setValue(0);
jTablePath.setModel(modelPath);
jTablePath.getColumnModel().getColumn(jTablePath.convertColumnIndexToView(DatenMediaPath.MEDIA_PATHE_SAVE)).setMinWidth(0);
jTablePath.getColumnModel().getColumn(jTablePath.convertColumnIndexToView(DatenMediaPath.MEDIA_PATHE_SAVE)).setPreferredWidth(0);
jTablePath.getColumnModel().getColumn(jTablePath.convertColumnIndexToView(DatenMediaPath.MEDIA_PATHE_SAVE)).setMaxWidth(0);
final CellRendererMediaDB cellRenderer = new CellRendererMediaDB();
jTableMediaDB.setDefaultRenderer(Object.class, cellRenderer);
jTableMediaDB.setModel(modelMediaDB);
jTextFieldSuffix.setText(MVConfig.get(MVConfig.Configs.SYSTEM_MEDIA_DB_SUFFIX));
jTextFieldSuffix.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
MVConfig.add(MVConfig.Configs.SYSTEM_MEDIA_DB_SUFFIX, jTextFieldSuffix.getText());
}
@Override
public void removeUpdate(DocumentEvent e) {
MVConfig.add(MVConfig.Configs.SYSTEM_MEDIA_DB_SUFFIX, jTextFieldSuffix.getText());
}
@Override
public void changedUpdate(DocumentEvent e) {
MVConfig.add(MVConfig.Configs.SYSTEM_MEDIA_DB_SUFFIX, jTextFieldSuffix.getText());
}
});
jTextFieldExportPath.setText(MVConfig.get(MVConfig.Configs.SYSTEM_MEDIA_DB_EXPORT_DATEI));
jTextFieldExportPath.getDocument().addDocumentListener(new BeobTextFeld());
jTextFieldExportPath.addMouseListener(new TextCopyPaste());
jTextFieldPath.addMouseListener(new TextCopyPaste());
jTextFieldSuffix.addMouseListener(new TextCopyPaste());
jRadioButtonOhneSuffix.setSelected(Boolean.parseBoolean(MVConfig.get(MVConfig.Configs.SYSTEM_MEDIA_DB_SUFFIX_OHNE)));
jRadioButtonMitSuffix.setSelected(!Boolean.parseBoolean(MVConfig.get(MVConfig.Configs.SYSTEM_MEDIA_DB_SUFFIX_OHNE)));
jRadioButtonOhneSuffix.addActionListener((ActionEvent e) -> MVConfig.add(MVConfig.Configs.SYSTEM_MEDIA_DB_SUFFIX_OHNE, Boolean.toString(jRadioButtonOhneSuffix.isSelected())));
jRadioButtonMitSuffix.addActionListener((ActionEvent e) -> MVConfig.add(MVConfig.Configs.SYSTEM_MEDIA_DB_SUFFIX_OHNE, Boolean.toString(jRadioButtonOhneSuffix.isSelected())));
jCheckBoxMediaDB.setSelected(Boolean.parseBoolean(MVConfig.get(MVConfig.Configs.SYSTEM_MEDIA_DB_ECHTZEITSUCHE)));
jCheckBoxMediaDB.addActionListener((ActionEvent ae) -> MVConfig.add(MVConfig.Configs.SYSTEM_MEDIA_DB_ECHTZEITSUCHE, Boolean.toString(jCheckBoxMediaDB.isSelected())));
jButtonMakeIndex.addActionListener((ActionEvent e) -> {
jLabelSizeIndex.setText("0");
daten.getListeMediaDB().createMediaDB("");
});
btnDel.addActionListener(l -> {
int ret = MVMessageDialog.showConfirmDialog(parentComponent, "Auch die Medien aus externen Laufwerken löschen?", "Löschen", JOptionPane.YES_NO_CANCEL_OPTION);
if (ret == JOptionPane.YES_OPTION) {
//alles löschen
daten.getListeMediaDB().delList(false);
} else if (ret == JOptionPane.NO_OPTION) {
//externe nicht löschen
daten.getListeMediaDB().delList(true);
}
});
jButtonPath.setIcon(Icons.ICON_BUTTON_FILE_OPEN);
jButtonAdd.setIcon(Icons.ICON_BUTTON_ADD);
jButtonRemove.setIcon(Icons.ICON_BUTTON_REMOVE);
jButtonPath.addActionListener(new BeobPath(false/*ext*/));
jButtonAdd.addActionListener((ActionEvent e) -> addPath());
jButtonRemove.addActionListener((ActionEvent e) -> removePath());
jButtonHelp.setIcon(Icons.ICON_BUTTON_HELP);
jButtonHelp.addActionListener((ActionEvent e) -> new DialogHilfe(daten.getMediathekGui(), true, new GetFile().getHilfeSuchen(GetFile.PFAD_HILFETEXT_PANEL_MEDIA_DB)).setVisible(true));
jButtonExportPath.setIcon(Icons.ICON_BUTTON_FILE_OPEN);
jButtonExport.addActionListener(new BeobExport());
jButtonExportPath.addActionListener(new BeobPfad());
btnExtAdd.addActionListener(l -> {
String s = (String) cbxExtMedien.getSelectedItem();
if (s != null && !s.isEmpty()) {
daten.getListeMediaDB().createMediaDB(s);
}
});
btnExtPath.addActionListener(new BeobPath(true/*ext*/));
btnClean.addActionListener(l -> daten.getListeMediaDB().cleanList());
jToggleButtonLoad.addActionListener((ActionEvent e) -> {
if (jToggleButtonLoad.isSelected()) {
daten.getListeMediaDB().getModelMediaDB(modelMediaDB);
} else {
modelMediaDB.setRowCount(0);
}
});
setCbkExt("");
setTablePath();
}
private void filmeExportieren() {
int ret;
String exporDatei = jTextFieldExportPath.getText();
if (exporDatei.equals("")) {
MVMessageDialog.showMessageDialog(parentComponent, "Keine Datei angegeben", "Pfad", JOptionPane.INFORMATION_MESSAGE);
} else {
try {
if (new File(exporDatei).exists()) {
ret = JOptionPane.showConfirmDialog(parentComponent, "Datei: " + "\"" + exporDatei + "\"" + " existiert bereits", "Überschreiben?",
JOptionPane.YES_NO_OPTION);
} else {
ret = JOptionPane.OK_OPTION;
}
if (ret == JOptionPane.OK_OPTION) {
this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
updateUI();
daten.getListeMediaDB().exportListe(exporDatei);
if (!new File(exporDatei).exists()) {
MVMessageDialog.showMessageDialog(parentComponent, "Datei: " + "\"" + exporDatei + "\"" + " Konnte nicht erstellt werden!", "Fehler", JOptionPane.ERROR_MESSAGE);
}
}
} catch (Exception ex) {
Log.errorLog(732165489, ex);
}
}
this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
private void setIndex(boolean noIndex) {
progress.setVisible(!noIndex);
jTextFieldPath.setEnabled(noIndex);
jButtonMakeIndex.setEnabled(noIndex);
jButtonAdd.setEnabled(noIndex);
jButtonPath.setEnabled(noIndex);
jButtonRemove.setEnabled(noIndex);
}
private void addPath() {
String add = jTextFieldPath.getText();
if (add.isEmpty()) {
return;
}
for (DatenMediaPath mp : daten.getListeMediaPath()) {
if (mp.arr[DatenMediaPath.MEDIA_PATH_PATH].equals(add)) {
return; // dann gibts den schon
}
}
daten.getListeMediaPath().add(new DatenMediaPath(add, false));
setTablePath(); //neu aufbauen
}
private void removePath() {
int row = jTablePath.getSelectedRow();
if (row < 0) {
new HinweisKeineAuswahl().zeigen(daten.getMediathekGui());
return;
}
String path = jTablePath.getModel().getValueAt(jTablePath.convertRowIndexToModel(row), 0).toString();
daten.getListeMediaPath().removeIf(mp -> mp.arr[DatenMediaPath.MEDIA_PATH_PATH].equals(path));
setTablePath(); //neu aufbauen
}
private void setTablePath() {
daten.getListeMediaPath().addObjectData(modelPath);
}
private void setCbkExt(String add) {
if (!add.isEmpty()) {
daten.getListeMediaPath().addSave(new DatenMediaPath(add, true));
cbxExtMedien.setModel(daten.getListeMediaPath().getComboModel());
cbxExtMedien.setSelectedItem(add);
} else {
cbxExtMedien.setModel(daten.getListeMediaPath().getComboModel());
}
}
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
javax.swing.ButtonGroup buttonGroup1 = new javax.swing.ButtonGroup();
jButtonHelp = new javax.swing.JButton();
progress = new javax.swing.JProgressBar();
jButtonMakeIndex = new javax.swing.JButton();
javax.swing.JTabbedPane jTabbedPane1 = new javax.swing.JTabbedPane();
javax.swing.JPanel jPanel6 = new javax.swing.JPanel();
javax.swing.JLabel jLabel5 = new javax.swing.JLabel();
javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
jTablePath = new javax.swing.JTable();
javax.swing.JPanel jPanel1 = new javax.swing.JPanel();
javax.swing.JLabel jLabel4 = new javax.swing.JLabel();
jTextFieldPath = new javax.swing.JTextField();
jButtonPath = new javax.swing.JButton();
jButtonAdd = new javax.swing.JButton();
jButtonRemove = new javax.swing.JButton();
javax.swing.JScrollPane jScrollPane3 = new javax.swing.JScrollPane();
javax.swing.JTextArea jTextArea1 = new javax.swing.JTextArea();
javax.swing.JPanel jPanel9 = new javax.swing.JPanel();
javax.swing.JPanel jPanel8 = new javax.swing.JPanel();
cbxExtMedien = new javax.swing.JComboBox<>();
btnExtAdd = new javax.swing.JButton();
btnExtPath = new javax.swing.JButton();
javax.swing.JScrollPane jScrollPane4 = new javax.swing.JScrollPane();
javax.swing.JTextArea jTextArea2 = new javax.swing.JTextArea();
javax.swing.JPanel jPanel4 = new javax.swing.JPanel();
javax.swing.JPanel jPanel3 = new javax.swing.JPanel();
jCheckBoxMediaDB = new javax.swing.JCheckBox();
btnClean = new javax.swing.JButton();
btnDel = new javax.swing.JButton();
javax.swing.JPanel jPanel2 = new javax.swing.JPanel();
jRadioButtonOhneSuffix = new javax.swing.JRadioButton();
jRadioButtonMitSuffix = new javax.swing.JRadioButton();
jTextFieldSuffix = new javax.swing.JTextField();
javax.swing.JLabel jLabel6 = new javax.swing.JLabel();
javax.swing.JLabel jLabel7 = new javax.swing.JLabel();
javax.swing.JPanel jPanel7 = new javax.swing.JPanel();
javax.swing.JLabel jLabel1 = new javax.swing.JLabel();
jTextFieldExportPath = new javax.swing.JTextField();
jButtonExportPath = new javax.swing.JButton();
jButtonExport = new javax.swing.JButton();
javax.swing.JPanel jPanel5 = new javax.swing.JPanel();
jToggleButtonLoad = new javax.swing.JToggleButton();
javax.swing.JScrollPane jScrollPane2 = new javax.swing.JScrollPane();
jTableMediaDB = new javax.swing.JTable();
javax.swing.JLabel jLabel2 = new javax.swing.JLabel();
jLabelSizeIndex = new javax.swing.JLabel();
setMinimumSize(new java.awt.Dimension(2, 483));
jButtonHelp.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mediathek/res/muster/button-help.png"))); // NOI18N
jButtonHelp.setToolTipText("Hilfe anzeigen");
jButtonMakeIndex.setText("Index neu aufbauen");
jButtonMakeIndex.setToolTipText("");
jLabel5.setText("In den Pfaden nach Medien suchen");
jTablePath.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
}
));
jScrollPane1.setViewportView(jTablePath);
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153)), "Pfad hinzufügen/löschen"));
jLabel4.setText("Pfad:");
jButtonPath.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mediathek/res/muster/button-file-open.png"))); // NOI18N
jButtonPath.setToolTipText("Pfad auswählen");
jButtonAdd.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mediathek/res/muster/button-add.png"))); // NOI18N
jButtonAdd.setToolTipText("vorgegebenen Pfad hinzufügen");
jButtonRemove.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mediathek/res/muster/button-remove.png"))); // NOI18N
jButtonRemove.setToolTipText("ausgewählten Pfad entfernen");
jTextArea1.setEditable(false);
jTextArea1.setColumns(20);
jTextArea1.setLineWrap(true);
jTextArea1.setRows(3);
jTextArea1.setText("Die Pfade werden beim Programmstart nach Medien durchsucht. Die Mediensammlung wird so aktuell gehalten.");
jTextArea1.setWrapStyleWord(true);
jScrollPane3.setViewportView(jTextArea1);
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)
.addComponent(jScrollPane3)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextFieldPath)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButtonPath)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonAdd)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonRemove)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jButtonAdd)
.addComponent(jButtonPath)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(jTextFieldPath, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jButtonRemove))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButtonAdd, jButtonPath, jButtonRemove, jTextFieldPath});
javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 499, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel6Layout.createSequentialGroup()
.addComponent(jLabel5)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel6Layout.setVerticalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 205, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
jTabbedPane1.addTab("Pfade", jPanel6);
jPanel8.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153)), "Externe Medien dauerhaft hinzufügen"));
cbxExtMedien.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
btnExtAdd.setText("Pfad absuchen");
btnExtAdd.setToolTipText("Ausgewählten Pfad nach Medien absuchen");
btnExtPath.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mediathek/res/muster/button-file-open.png"))); // NOI18N
btnExtPath.setToolTipText("Pfad auswählen");
jTextArea2.setEditable(false);
jTextArea2.setColumns(20);
jTextArea2.setLineWrap(true);
jTextArea2.setRows(3);
jTextArea2.setText("Hier können Medien aus externen Quellen hinzugefügt werden. Die gefundenen Medien werden gespeichert und sind dann dauerhaft verfügbar.");
jTextArea2.setWrapStyleWord(true);
jScrollPane4.setViewportView(jTextArea2);
javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8);
jPanel8.setLayout(jPanel8Layout);
jPanel8Layout.setHorizontalGroup(
jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 465, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel8Layout.createSequentialGroup()
.addComponent(cbxExtMedien, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btnExtPath))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel8Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(btnExtAdd)))
.addContainerGap())
);
jPanel8Layout.setVerticalGroup(
jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel8Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(btnExtPath)
.addComponent(cbxExtMedien, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btnExtAdd)
.addGap(18, 18, 18)
.addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javax.swing.GroupLayout jPanel9Layout = new javax.swing.GroupLayout(jPanel9);
jPanel9.setLayout(jPanel9Layout);
jPanel9Layout.setHorizontalGroup(
jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel9Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel9Layout.setVerticalGroup(
jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel9Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(201, Short.MAX_VALUE))
);
jTabbedPane1.addTab("Externe Medien", jPanel9);
jPanel3.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153)));
jCheckBoxMediaDB.setText("Echtzeitsuche in der Mediensammlung");
btnClean.setText("Doppelte Einträge löschen");
btnClean.setToolTipText("Doppelte Einträge in der Mediendatenbak löschen");
btnDel.setText("Index löschen");
btnDel.setToolTipText("Komplette Mediendatenbank löschen");
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jCheckBoxMediaDB)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(btnClean)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnDel, javax.swing.GroupLayout.PREFERRED_SIZE, 222, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnClean)
.addComponent(btnDel))
.addGap(18, 18, 18)
.addComponent(jCheckBoxMediaDB)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153)));
buttonGroup1.add(jRadioButtonOhneSuffix);
jRadioButtonOhneSuffix.setSelected(true);
jRadioButtonOhneSuffix.setText("Keine Dateien mit diesem Suffix");
buttonGroup1.add(jRadioButtonMitSuffix);
jRadioButtonMitSuffix.setText("Nur Dateien mit diesem Suffix");
jTextFieldSuffix.setText("txt,xml");
jLabel6.setText("(z.B.: txt,xml,jpg)");
jLabel7.setText("(z.B.: mp4,flv,m4v)");
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextFieldSuffix)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jRadioButtonMitSuffix)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel7))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jRadioButtonOhneSuffix)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 104, Short.MAX_VALUE)
.addComponent(jLabel6)))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jRadioButtonOhneSuffix)
.addComponent(jLabel6))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jRadioButtonMitSuffix)
.addComponent(jLabel7))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jTextFieldSuffix, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(15, Short.MAX_VALUE))
);
jPanel7.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153)));
jLabel1.setText("Export Index:");
jButtonExportPath.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mediathek/res/muster/button-file-open.png"))); // NOI18N
jButtonExportPath.setToolTipText("Datei auswählen");
jButtonExport.setText("Exportieren");
javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextFieldExportPath)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonExportPath))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jButtonExport)))
.addContainerGap())
);
jPanel7Layout.setVerticalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel7Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(jLabel1)
.addComponent(jTextFieldExportPath, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonExportPath))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButtonExport)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel7Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButtonExportPath, jTextFieldExportPath});
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(79, Short.MAX_VALUE))
);
jTabbedPane1.addTab("Verwalten", jPanel4);
jToggleButtonLoad.setText("Laden");
jTableMediaDB.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null}
},
new String [] {
"Title 1"
}
));
jScrollPane2.setViewportView(jTableMediaDB);
javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jToggleButtonLoad)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 499, Short.MAX_VALUE))
.addContainerGap())
);
jPanel5Layout.setVerticalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 333, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jToggleButtonLoad)
.addContainerGap())
);
jTabbedPane1.addTab("Medienliste", jPanel5);
jLabel2.setText("Anzahl Medien:");
jLabelSizeIndex.setText("0");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTabbedPane1, javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(progress, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabelSizeIndex)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonMakeIndex)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonHelp)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jTabbedPane1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(progress, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2)
.addComponent(jLabelSizeIndex)
.addComponent(jButtonMakeIndex)
.addComponent(jButtonHelp))
.addContainerGap())
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnClean;
private javax.swing.JButton btnDel;
private javax.swing.JButton btnExtAdd;
private javax.swing.JButton btnExtPath;
private javax.swing.JComboBox<String> cbxExtMedien;
private javax.swing.JButton jButtonAdd;
private javax.swing.JButton jButtonExport;
private javax.swing.JButton jButtonExportPath;
private javax.swing.JButton jButtonHelp;
private javax.swing.JButton jButtonMakeIndex;
private javax.swing.JButton jButtonPath;
private javax.swing.JButton jButtonRemove;
private javax.swing.JCheckBox jCheckBoxMediaDB;
private javax.swing.JLabel jLabelSizeIndex;
private javax.swing.JRadioButton jRadioButtonMitSuffix;
private javax.swing.JRadioButton jRadioButtonOhneSuffix;
private javax.swing.JTable jTableMediaDB;
private javax.swing.JTable jTablePath;
private javax.swing.JTextField jTextFieldExportPath;
private javax.swing.JTextField jTextFieldPath;
private javax.swing.JTextField jTextFieldSuffix;
private javax.swing.JToggleButton jToggleButtonLoad;
private javax.swing.JProgressBar progress;
// End of variables declaration//GEN-END:variables
private class BeobPath implements ActionListener {
boolean ext;
public BeobPath(boolean ext) {
this.ext = ext;
}
@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(), "Pfad zu den Filmen wählen");
chooser.setVisible(true);
if (chooser.getFile() != null) {
//A directory was selected, that means Cancel was not pressed
try {
String path = new File(chooser.getDirectory() + chooser.getFile()).getAbsolutePath();
if (ext) {
setCbkExt(path);
} else {
jTextFieldPath.setText(path);
}
} catch (Exception ex) {
Log.errorLog(951024789, ex);
}
}
System.setProperty("apple.awt.fileDialogForDirectories", "false");
} else {
//use the cross-platform swing chooser
int returnVal;
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (!jTextFieldPath.getText().equals("")) {
chooser.setCurrentDirectory(new File(jTextFieldPath.getText()));
}
returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
try {
String path = chooser.getSelectedFile().getPath();
if (ext) {
setCbkExt(path);
} else {
jTextFieldPath.setText(path);
}
} catch (Exception ex) {
Log.errorLog(765212369, ex);
}
}
}
}
}
private class BeobTextFeld implements DocumentListener {
@Override
public void changedUpdate(DocumentEvent e) {
tusEinfach();
}
@Override
public void insertUpdate(DocumentEvent e) {
tusEinfach();
}
@Override
public void removeUpdate(DocumentEvent e) {
tusEinfach();
}
void tusEinfach() {
MVConfig.add(MVConfig.Configs.SYSTEM_MEDIA_DB_EXPORT_DATEI, jTextFieldExportPath.getText());
}
}
private class BeobPfad implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//we can use native chooser on Mac...
if (SystemInfo.isMacOSX()) {
FileDialog chooser = new FileDialog(daten.getMediathekGui(), "Filme exportieren");
chooser.setMode(FileDialog.SAVE);
chooser.setVisible(true);
if (chooser.getFile() != null) {
try {
File destination = new File(chooser.getDirectory() + chooser.getFile());
jTextFieldExportPath.setText(destination.getAbsolutePath());
} catch (Exception ex) {
Log.errorLog(679890147, ex);
}
}
} else {
int returnVal;
JFileChooser chooser = new JFileChooser();
if (!jTextFieldExportPath.getText().equals("")) {
chooser.setCurrentDirectory(new File(jTextFieldExportPath.getText()));
}
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setFileHidingEnabled(false);
returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
try {
jTextFieldExportPath.setText(chooser.getSelectedFile().getAbsolutePath());
} catch (Exception ex) {
Log.errorLog(911025463, ex);
}
}
}
}
}
private class BeobExport implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
filmeExportieren();
}
}
}