/*
* 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 mediathek.config.Daten;
import mediathek.config.Konstanten;
import mediathek.config.MVConfig;
import mediathek.gui.PanelVorlage;
import mediathek.res.GetIcon;
import mediathek.tool.EscBeenden;
import mediathek.tool.GuiFunktionen;
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
@SuppressWarnings("serial")
public class DialogEinstellungen extends JFrame {
private final Daten ddaten;
public boolean ok = false;
private PanelEinstellungen panelEinstellungen;
private PanelDownload panelDownload;
private PanelMediaDB panelMediaDB;
private PanelEinstellungenErweitert panelEinstellungenErweitert;
private PanelEinstellungenGeo panelEinstellungenGeo;
private PanelImport panelImport;
private PanelEinstellungenColor panelEinstellungenColor;
private PanelFilmlisteLaden panelImportFilme;
private PanelExportFilmliste panelExportFilmliste;
private PanelBlacklist panelBlacklist;
private PanelErledigteUrls panelErledigteAbos;
private PanelErledigteUrls panelHistory;
private PanelDateinamen panelDateinamen;
private PanelVorlage panelPset;
private PanelPsetImport panelPsetVorlagen;
private final JPanel panelLeer = new JPanel();
private static final String NAME_einstellungen = "Einstellungen";
private static final String NAME_allgemeineEinstellungen = "Allgemein";
private static final String NAME_bandwidth = "Download";
private static final String NAME_mediaDB = "Mediensammlung";
private static final String NAME_allgemeineEinstellungenErweitert = "Erweitert";
private static final String NAME_allgemeineEinstellungenGeo = "Geo";
private static final String NAME_allgemeineEinstellungenImport = "Import";
private static final String NAME_allgemeineEinstellungenColor = "Farben";
private static final String NAME_filmListe = "Filmliste";
private static final String NAME_filmListeLaden = "Filmliste laden";
private static final String NAME_filmListeExportieren = "Filmliste exportieren";
private static final String NAME_blacklist = "Blacklist";
private static final String NAME_aufzeichnen = "Aufzeichnen und Abspielen";
private static final String NAME_dateiname = "Datei- und Pfadnamen";
private static final String NAME_programmset = "Set bearbeiten";
private static final String NAME_programmsetImportieren = "Set importieren";
private static final String NAME_infos = "Infos";
private static final String NAME_history = "History";
private static final String NAME_logfile = "Erledigte Abos";
// ######## Einstellulngen ############
private final DefaultMutableTreeNode treeNodeEinstellungen = new DefaultMutableTreeNode("Einstellungen");
private final DefaultMutableTreeNode treeNodeAllgemeineEinstellungen = new DefaultMutableTreeNode(NAME_allgemeineEinstellungen);
private final DefaultMutableTreeNode treeNodeAllgemeineEinstellungenEreweitert = new DefaultMutableTreeNode(NAME_allgemeineEinstellungenErweitert);
private final DefaultMutableTreeNode treeNodeAllgemeineEinstellungenGeo = new DefaultMutableTreeNode(NAME_allgemeineEinstellungenGeo);
private final DefaultMutableTreeNode treeNodeAllgemeineEinstellungenImport = new DefaultMutableTreeNode(NAME_allgemeineEinstellungenImport);
private final DefaultMutableTreeNode treeNodeAllgemeineEinstellungenColor = new DefaultMutableTreeNode(NAME_allgemeineEinstellungenColor);
// ######## Filme ###############
private final DefaultMutableTreeNode treeNodeFilme = new DefaultMutableTreeNode("Filmliste");
private final DefaultMutableTreeNode treeNodeFilmliste = new DefaultMutableTreeNode(NAME_filmListeLaden);
private final DefaultMutableTreeNode treeNodeFilmlisteExport = new DefaultMutableTreeNode(NAME_filmListeExportieren);
private final DefaultMutableTreeNode treeNodeBlacklist = new DefaultMutableTreeNode(NAME_blacklist);
// ########### Programme ##############
private final DefaultMutableTreeNode treeNodeDownload = new DefaultMutableTreeNode("Aufzeichnen und Abspielen");
private final DefaultMutableTreeNode treeNodeBandwidth = new DefaultMutableTreeNode(NAME_bandwidth);
private final DefaultMutableTreeNode treeNodeMediaDB = new DefaultMutableTreeNode(NAME_mediaDB);
private final DefaultMutableTreeNode treeNodeDateinamen = new DefaultMutableTreeNode(NAME_dateiname);
private final DefaultMutableTreeNode treeNodeProgramme = new DefaultMutableTreeNode(NAME_programmset);
private final DefaultMutableTreeNode treeNodeImportProgramme = new DefaultMutableTreeNode(NAME_programmsetImportieren);
// ####### Infos #########
private final DefaultMutableTreeNode treeNodeInfos = new DefaultMutableTreeNode("Infos");
private final DefaultMutableTreeNode treeNodeHistory = new DefaultMutableTreeNode(NAME_history);
private final DefaultMutableTreeNode treeNodeLogfile = new DefaultMutableTreeNode(NAME_logfile);
public DialogEinstellungen(Daten d) {
initComponents();
setTitle("Einstellungen");
ddaten = d;
init();
initTree();
GuiFunktionen.setSize(MVConfig.Configs.SYSTEM_GROESSE_EINSTELLUNGEN, this, Daten.getInstance().getMediathekGui());
this. setIconImage(GetIcon.getIcon("MediathekView.png", "/mediathek/res/", 58, 58).getImage());
jButtonBeenden.addActionListener(e -> beenden());
new EscBeenden(this) {
@Override
public void beenden_() {
beenden();
}
};
}
private void init() {
panelEinstellungen = new PanelEinstellungen(ddaten, this);
panelDownload = new PanelDownload(ddaten, this);
panelMediaDB = new PanelMediaDB(ddaten, this);
panelEinstellungenErweitert = new PanelEinstellungenErweitert(ddaten, this);
panelEinstellungenGeo = new PanelEinstellungenGeo(ddaten, this);
panelImport = new PanelImport(ddaten, this);
panelEinstellungenColor = new PanelEinstellungenColor(ddaten, this);
panelImportFilme = new PanelFilmlisteLaden(ddaten, this);
panelExportFilmliste = new PanelExportFilmliste(ddaten, this);
panelBlacklist = new PanelBlacklist(ddaten, this, PanelBlacklist.class.getName());
panelHistory = new PanelErledigteUrls(ddaten, this);
panelHistory.initHistory();
panelErledigteAbos = new PanelErledigteUrls(ddaten, this);
panelErledigteAbos.initAbo();
panelDateinamen = new PanelDateinamen(ddaten, this);
panelPset = new PanelPset(ddaten, this);
panelPsetVorlagen = new PanelPsetImport(ddaten, this);
}
private void initTree() {
//
DefaultMutableTreeNode treeNodeStart = new DefaultMutableTreeNode(Konstanten.PROGRAMMNAME);
// ===============================================================================
// ######## Einstellulngen ############
treeNodeEinstellungen.add(treeNodeAllgemeineEinstellungen);
treeNodeEinstellungen.add(treeNodeAllgemeineEinstellungenEreweitert);
treeNodeEinstellungen.add(treeNodeAllgemeineEinstellungenGeo);
treeNodeEinstellungen.add(treeNodeAllgemeineEinstellungenImport);
treeNodeEinstellungen.add(treeNodeAllgemeineEinstellungenColor);
treeNodeEinstellungen.add(treeNodeMediaDB);
treeNodeStart.add(treeNodeEinstellungen);
// ===============================================================================
// ######## Filme ###############
treeNodeFilme.add(treeNodeFilmliste);
treeNodeFilme.add(treeNodeFilmlisteExport);
treeNodeFilme.add(treeNodeBlacklist);
treeNodeStart.add(treeNodeFilme);
// ===============================================================================
// ########### Programme ##############
treeNodeDownload.add(treeNodeDateinamen);
treeNodeDownload.add(treeNodeBandwidth);
treeNodeDownload.add(treeNodeProgramme);
treeNodeDownload.add(treeNodeImportProgramme);
treeNodeStart.add(treeNodeDownload);
// ===============================================================================
// ####### Infos #########
treeNodeInfos.add(treeNodeHistory);
treeNodeInfos.add(treeNodeLogfile);
treeNodeStart.add(treeNodeInfos);
// Aufbauen
jTree1.setModel(new javax.swing.tree.DefaultTreeModel(treeNodeStart));
jTree1.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
jTree1.setRootVisible(false);
jTree1.addTreeSelectionListener(e -> {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree1.getLastSelectedPathComponent();
if (node == null) {
// nix markiert
jPanelExtra.removeAll();
jPanelExtra.add(panelLeer);
} else {
String name1 = node.getUserObject().toString();
setTitle(name1);
switch (name1) {
//Einstellungen
case NAME_einstellungen:
jTree1.setSelectionPath(new TreePath(treeNodeAllgemeineEinstellungen.getPath()));
break;
case NAME_bandwidth:
jPanelExtra.removeAll();
jPanelExtra.add(panelDownload);
break;
case NAME_mediaDB:
jPanelExtra.removeAll();
jPanelExtra.add(panelMediaDB);
break;
case NAME_allgemeineEinstellungen:
jPanelExtra.removeAll();
jPanelExtra.add(panelEinstellungen);
break;
case NAME_allgemeineEinstellungenErweitert:
jPanelExtra.removeAll();
jPanelExtra.add(panelEinstellungenErweitert);
break;
case NAME_allgemeineEinstellungenGeo:
jPanelExtra.removeAll();
jPanelExtra.add(panelEinstellungenGeo);
break;
case NAME_allgemeineEinstellungenImport:
jPanelExtra.removeAll();
jPanelExtra.add(panelImport);
break;
case NAME_allgemeineEinstellungenColor:
jPanelExtra.removeAll();
jPanelExtra.add(panelEinstellungenColor);
break;
//Filmliste
case NAME_filmListe:
jTree1.setSelectionPath(new TreePath(treeNodeFilmliste.getPath()));
break;
case NAME_filmListeLaden:
jPanelExtra.removeAll();
jPanelExtra.add(panelImportFilme);
break;
case NAME_filmListeExportieren:
jPanelExtra.removeAll();
jPanelExtra.add(panelExportFilmliste);
break;
case NAME_blacklist:
jPanelExtra.removeAll();
jPanelExtra.add(panelBlacklist);
break;
//Aufzeichnen, Abspielen
case NAME_aufzeichnen:
jTree1.setSelectionPath(new TreePath(treeNodeDateinamen.getPath()));
break;
case NAME_dateiname:
jPanelExtra.removeAll();
jPanelExtra.add(panelDateinamen);
break;
case NAME_programmset:
jPanelExtra.removeAll();
jPanelExtra.add(panelPset);
break;
case NAME_programmsetImportieren:
jPanelExtra.removeAll();
jPanelExtra.add(panelPsetVorlagen);
break;
//Infos
case NAME_infos:
jTree1.setSelectionPath(new TreePath(treeNodeHistory.getPath()));
break;
case NAME_history:
jPanelExtra.removeAll();
jPanelExtra.add(panelHistory);
break;
case NAME_logfile:
jPanelExtra.removeAll();
jPanelExtra.add(panelErledigteAbos);
break;
default:
jPanelExtra.removeAll();
jPanelExtra.add(panelLeer);
setTitle("Programmeinstellungen");
break;
}
}
jPanelExtra.updateUI();
});
// und jetzt noch aufklappen
for (int i = 0; i < jTree1.getRowCount(); ++i) {
jTree1.expandRow(i);
}
// und den Start setzen
TreePath tp = new TreePath(treeNodeAllgemeineEinstellungen.getPath());
jTree1.setSelectionPath(tp);
}
private void beenden() {
ddaten.allesSpeichern();
this.dispose();
}
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jButtonBeenden = new javax.swing.JButton();
javax.swing.JSplitPane jSplitPane1 = new javax.swing.JSplitPane();
javax.swing.JScrollPane jScrollPane2 = new javax.swing.JScrollPane();
jPanelExtra = new javax.swing.JPanel();
javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
jTree1 = new javax.swing.JTree();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jButtonBeenden.setText("Schließen");
jSplitPane1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jSplitPane1.setDividerLocation(250);
jSplitPane1.setContinuousLayout(true);
jSplitPane1.setOneTouchExpandable(true);
jPanelExtra.setLayout(new java.awt.BorderLayout());
jScrollPane2.setViewportView(jPanelExtra);
jSplitPane1.setRightComponent(jScrollPane2);
jTree1.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
jTree1.setRootVisible(false);
jScrollPane1.setViewportView(jTree1);
jSplitPane1.setLeftComponent(jScrollPane1);
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.TRAILING)
.addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 1068, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGap(12, 965, Short.MAX_VALUE)
.addComponent(jButtonBeenden)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 620, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButtonBeenden)
.addGap(6, 6, 6))
);
pack();
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButtonBeenden;
private javax.swing.JPanel jPanelExtra;
private javax.swing.JTree jTree1;
// End of variables declaration//GEN-END:variables
}