/* * MediathekView * Copyright (C) 2012 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.Log; import mediathek.config.Icons; import mediathek.config.Konstanten; import mediathek.config.MVConfig; import mediathek.file.GetFile; import mediathek.gui.actions.UrlHyperlinkAction; import mediathek.gui.dialog.DialogHilfe; import mediathek.tool.GuiFunktionen; import mediathek.tool.GuiFunktionenProgramme; 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; import java.net.URISyntaxException; @SuppressWarnings("serial") public class PanelProgrammPfade extends JPanel { public JDialog dialog = null; private final boolean vlc, flvstreamer, ffmpeg; private final JFrame parentComponent; public PanelProgrammPfade(JFrame parentFrame, boolean vvlc, boolean fflvstreamer, boolean fffmpeg) { initComponents(); vlc = vvlc; flvstreamer = fflvstreamer; ffmpeg = fffmpeg; parentComponent = parentFrame; init(); initBeob(); } private void init() { jButtonVlcPfad.setIcon(Icons.ICON_BUTTON_FILE_OPEN); jButtonFlvPfad.setIcon(Icons.ICON_BUTTON_FILE_OPEN); jButtonFFmpegPfad.setIcon(Icons.ICON_BUTTON_FILE_OPEN); jButtonHilfe.setIcon(Icons.ICON_BUTTON_HELP); jPanelVlc.setVisible(vlc); jPanelFlv.setVisible(flvstreamer); jPanelFFmpeg.setVisible(ffmpeg); if (MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_VLC).equals("")) { MVConfig.add(MVConfig.Configs.SYSTEM_PFAD_VLC, GuiFunktionenProgramme.getMusterPfadVlc()); } if (MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_FLVSTREAMER).equals("")) { MVConfig.add(MVConfig.Configs.SYSTEM_PFAD_FLVSTREAMER, GuiFunktionenProgramme.getMusterPfadFlv()); } if (MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_FFMPEG).equals("")) { MVConfig.add(MVConfig.Configs.SYSTEM_PFAD_FFMPEG, GuiFunktionenProgramme.getMusterPfadFFmpeg()); } jTextFieldVlc.setText(MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_VLC)); jTextFieldFlv.setText(MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_FLVSTREAMER)); jTextFieldFFmpeg.setText(MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_FFMPEG)); } private void initBeob() { jTextFieldVlc.getDocument().addDocumentListener(new BeobDoc()); jTextFieldFlv.getDocument().addDocumentListener(new BeobDoc()); jTextFieldFFmpeg.getDocument().addDocumentListener(new BeobDoc()); try { jXHyperlinkVlc.setText(Konstanten.ADRESSE_WEBSITE_VLC); jXHyperlinkVlc.setAction(new UrlHyperlinkAction(parentComponent, Konstanten.ADRESSE_WEBSITE_VLC)); jXHyperlinkflvstreamer.setText(Konstanten.ADRESSE_WEBSITE_FLVSTREAMER); jXHyperlinkflvstreamer.setAction(new UrlHyperlinkAction(parentComponent, Konstanten.ADRESSE_WEBSITE_FLVSTREAMER)); jXHyperlinkFFmpeg.setText(Konstanten.ADRESSE_WEBSITE_FFMPEG); jXHyperlinkFFmpeg.setAction(new UrlHyperlinkAction(parentComponent, Konstanten.ADRESSE_WEBSITE_FFMPEG)); } catch (URISyntaxException ignored) { } jButtonVlcPfad.addActionListener(new BeobPfad(jTextFieldVlc)); jButtonFlvPfad.addActionListener(new BeobPfad(jTextFieldFlv)); jButtonFFmpegPfad.addActionListener(new BeobPfad(jTextFieldFFmpeg)); jButtonVlcSuchen.addActionListener(e -> { MVConfig.add(MVConfig.Configs.SYSTEM_PFAD_VLC, ""); jTextFieldVlc.setText(GuiFunktionenProgramme.getMusterPfadVlc()); }); jButtonFlvSuchen.addActionListener(e -> { MVConfig.add(MVConfig.Configs.SYSTEM_PFAD_FLVSTREAMER, ""); jTextFieldFlv.setText(GuiFunktionenProgramme.getMusterPfadFlv()); }); jButtonFFmpegSuchen.addActionListener(e -> { MVConfig.add(MVConfig.Configs.SYSTEM_PFAD_FFMPEG, ""); jTextFieldFFmpeg.setText(GuiFunktionenProgramme.getMusterPfadFFmpeg()); }); jButtonHilfe.addActionListener(e -> new DialogHilfe(parentComponent, true, new GetFile().getHilfeSuchen(GetFile.PFAD_HILFETEXT_STANDARD_PSET)).setVisible(true)); } private void check() { MVConfig.add(MVConfig.Configs.SYSTEM_PFAD_VLC, jTextFieldVlc.getText()); MVConfig.add(MVConfig.Configs.SYSTEM_PFAD_FLVSTREAMER, jTextFieldFlv.getText()); MVConfig.add(MVConfig.Configs.SYSTEM_PFAD_FFMPEG, jTextFieldFFmpeg.getText()); try { if (jTextFieldVlc.getText().equals("")) { jTextFieldVlc.setBackground(new Color(255, 200, 200)); } else if (!new File(MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_VLC)).exists()) { jTextFieldVlc.setBackground(new Color(255, 200, 200)); } else { jTextFieldVlc.setBackground(javax.swing.UIManager.getDefaults().getColor("TextField.background")); } } catch (Exception ex) { jTextFieldVlc.setBackground(new Color(255, 200, 200)); } try { if (jTextFieldFlv.getText().equals("")) { jTextFieldFlv.setBackground(new Color(255, 200, 200)); } else if (!new File(MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_FLVSTREAMER)).exists()) { jTextFieldFlv.setBackground(new Color(255, 200, 200)); } else { jTextFieldFlv.setBackground(javax.swing.UIManager.getDefaults().getColor("TextField.background")); } } catch (Exception ex) { jTextFieldFlv.setBackground(new Color(255, 200, 200)); } try { if (jTextFieldFFmpeg.getText().equals("")) { jTextFieldFFmpeg.setBackground(new Color(255, 200, 200)); } else if (!new File(MVConfig.get(MVConfig.Configs.SYSTEM_PFAD_FFMPEG)).exists()) { jTextFieldFFmpeg.setBackground(new Color(255, 200, 200)); } else { jTextFieldFFmpeg.setBackground(javax.swing.UIManager.getDefaults().getColor("TextField.background")); } } catch (Exception ex) { jTextFieldFFmpeg.setBackground(new Color(255, 200, 200)); } } /** 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() { javax.swing.ButtonGroup buttonGroup1 = new javax.swing.ButtonGroup(); javax.swing.ButtonGroup buttonGroup2 = new javax.swing.ButtonGroup(); javax.swing.ButtonGroup buttonGroup3 = new javax.swing.ButtonGroup(); javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane(); javax.swing.JPanel jPanel1 = new javax.swing.JPanel(); jPanelVlc = new javax.swing.JPanel(); jTextFieldVlc = new javax.swing.JTextField(); jButtonVlcPfad = new javax.swing.JButton(); jButtonVlcSuchen = new javax.swing.JButton(); javax.swing.JLabel jLabel1 = new javax.swing.JLabel(); jXHyperlinkVlc = new org.jdesktop.swingx.JXHyperlink(); jPanelFlv = new javax.swing.JPanel(); jTextFieldFlv = new javax.swing.JTextField(); jButtonFlvPfad = new javax.swing.JButton(); jButtonFlvSuchen = new javax.swing.JButton(); javax.swing.JLabel jLabel2 = new javax.swing.JLabel(); jXHyperlinkflvstreamer = new org.jdesktop.swingx.JXHyperlink(); jButtonHilfe = new javax.swing.JButton(); jPanelFFmpeg = new javax.swing.JPanel(); jTextFieldFFmpeg = new javax.swing.JTextField(); jButtonFFmpegSuchen = new javax.swing.JButton(); jButtonFFmpegPfad = new javax.swing.JButton(); javax.swing.JLabel jLabel4 = new javax.swing.JLabel(); jXHyperlinkFFmpeg = new org.jdesktop.swingx.JXHyperlink(); jPanelVlc.setBorder(javax.swing.BorderFactory.createTitledBorder("Pfad zum VLC-Player auswählen")); jButtonVlcPfad.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mediathek/res/muster/button-file-open.png"))); // NOI18N jButtonVlcPfad.setToolTipText("Programm auswählen"); jButtonVlcSuchen.setText("suchen"); jButtonVlcSuchen.setToolTipText("nach dem Programm suchen"); jLabel1.setText("Website:"); jXHyperlinkVlc.setText("http://www.videolan.org/"); javax.swing.GroupLayout jPanelVlcLayout = new javax.swing.GroupLayout(jPanelVlc); jPanelVlc.setLayout(jPanelVlcLayout); jPanelVlcLayout.setHorizontalGroup( jPanelVlcLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelVlcLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelVlcLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelVlcLayout.createSequentialGroup() .addComponent(jTextFieldVlc) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButtonVlcPfad) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButtonVlcSuchen)) .addGroup(jPanelVlcLayout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jXHyperlinkVlc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); jPanelVlcLayout.setVerticalGroup( jPanelVlcLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelVlcLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelVlcLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jTextFieldVlc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonVlcPfad) .addComponent(jButtonVlcSuchen)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanelVlcLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(jXHyperlinkVlc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); jPanelVlcLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButtonVlcPfad, jTextFieldVlc}); jPanelFlv.setBorder(javax.swing.BorderFactory.createTitledBorder("Pfad zum flvstreamer auswählen")); jButtonFlvPfad.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mediathek/res/muster/button-file-open.png"))); // NOI18N jButtonFlvPfad.setToolTipText("Programm auswählen"); jButtonFlvSuchen.setText("suchen"); jButtonFlvSuchen.setToolTipText("nach dem Programm suchen"); jLabel2.setText("Website:"); jXHyperlinkflvstreamer.setText("https://savannah.nongnu.org/projects/flvstreamer"); javax.swing.GroupLayout jPanelFlvLayout = new javax.swing.GroupLayout(jPanelFlv); jPanelFlv.setLayout(jPanelFlvLayout); jPanelFlvLayout.setHorizontalGroup( jPanelFlvLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelFlvLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelFlvLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelFlvLayout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jXHyperlinkflvstreamer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(jPanelFlvLayout.createSequentialGroup() .addComponent(jTextFieldFlv) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButtonFlvPfad))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButtonFlvSuchen) .addContainerGap()) ); jPanelFlvLayout.setVerticalGroup( jPanelFlvLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelFlvLayout.createSequentialGroup() .addGap(1, 1, 1) .addGroup(jPanelFlvLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jTextFieldFlv, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonFlvPfad) .addComponent(jButtonFlvSuchen)) .addGap(18, 18, 18) .addGroup(jPanelFlvLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(jXHyperlinkflvstreamer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); jPanelFlvLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButtonFlvPfad, jTextFieldFlv}); jButtonHilfe.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mediathek/res/muster/button-help.png"))); // NOI18N jButtonHilfe.setToolTipText("Hilfe anzeigen"); jPanelFFmpeg.setBorder(javax.swing.BorderFactory.createTitledBorder("Pfad zu ffmpeg auswählen")); jButtonFFmpegSuchen.setText("suchen"); jButtonFFmpegSuchen.setToolTipText("nach dem Programm suchen"); jButtonFFmpegPfad.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mediathek/res/muster/button-file-open.png"))); // NOI18N jButtonFFmpegPfad.setToolTipText("Programm auswählen"); jLabel4.setText("Website:"); jXHyperlinkFFmpeg.setText("http://ffmpeg.org"); javax.swing.GroupLayout jPanelFFmpegLayout = new javax.swing.GroupLayout(jPanelFFmpeg); jPanelFFmpeg.setLayout(jPanelFFmpegLayout); jPanelFFmpegLayout.setHorizontalGroup( jPanelFFmpegLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelFFmpegLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelFFmpegLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelFFmpegLayout.createSequentialGroup() .addComponent(jTextFieldFFmpeg) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButtonFFmpegPfad) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButtonFFmpegSuchen)) .addGroup(jPanelFFmpegLayout.createSequentialGroup() .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jXHyperlinkFFmpeg, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); jPanelFFmpegLayout.setVerticalGroup( jPanelFFmpegLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelFFmpegLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelFFmpegLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) .addComponent(jTextFieldFFmpeg, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonFFmpegPfad) .addComponent(jButtonFFmpegSuchen)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanelFFmpegLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel4) .addComponent(jXHyperlinkFFmpeg, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanelFFmpegLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButtonFFmpegPfad, jButtonFFmpegSuchen, jTextFieldFFmpeg}); 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(jPanelFlv, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanelVlc, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(jButtonHilfe)) .addComponent(jPanelFFmpeg, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jPanelVlc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanelFlv, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanelFFmpeg, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, Short.MAX_VALUE) .addComponent(jButtonHilfe) .addContainerGap()) ); jScrollPane1.setViewportView(jPanel1); 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() .addComponent(jScrollPane1) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1) .addContainerGap()) ); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButtonFFmpegPfad; private javax.swing.JButton jButtonFFmpegSuchen; private javax.swing.JButton jButtonFlvPfad; private javax.swing.JButton jButtonFlvSuchen; private javax.swing.JButton jButtonHilfe; private javax.swing.JButton jButtonVlcPfad; private javax.swing.JButton jButtonVlcSuchen; private javax.swing.JPanel jPanelFFmpeg; private javax.swing.JPanel jPanelFlv; private javax.swing.JPanel jPanelVlc; private javax.swing.JTextField jTextFieldFFmpeg; private javax.swing.JTextField jTextFieldFlv; private javax.swing.JTextField jTextFieldVlc; private org.jdesktop.swingx.JXHyperlink jXHyperlinkFFmpeg; private org.jdesktop.swingx.JXHyperlink jXHyperlinkVlc; private org.jdesktop.swingx.JXHyperlink jXHyperlinkflvstreamer; // End of variables declaration//GEN-END:variables private class BeobDoc implements DocumentListener { @Override public void insertUpdate(DocumentEvent e) { check(); } @Override public void removeUpdate(DocumentEvent e) { check(); } @Override public void changedUpdate(DocumentEvent e) { check(); } } private class BeobPfad implements ActionListener { private final JTextField textField; public BeobPfad(JTextField ttextField) { textField = ttextField; } @Override public void actionPerformed(ActionEvent e) { //we can use native chooser on Mac... if (SystemInfo.isMacOSX()) { FileDialog chooser = new FileDialog(parentComponent, "Programmdatei auswählen"); chooser.setMode(FileDialog.LOAD); chooser.setVisible(true); if (chooser.getFile() != null) { try { textField.setText(new File(chooser.getDirectory() + chooser.getFile()).getAbsolutePath()); } catch (Exception ex) { Log.errorLog(306087945, ex); } } } else { int returnVal; JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); chooser.setFileHidingEnabled(false); if (textField.getText().equals("")) { chooser.setCurrentDirectory(new File(GuiFunktionen.getHomePath())); } else { chooser.setCurrentDirectory(new File(textField.getText())); } returnVal = chooser.showOpenDialog(null); if (returnVal == JFileChooser.APPROVE_OPTION) { try { textField.setText(chooser.getSelectedFile().getAbsolutePath()); } catch (Exception ex) { Log.errorLog(643289561, ex); } } } } } }