public JTextField getTextFieldThatSelectDirectory(){
        final JTextField selectInstallationDirectoryField = new JTextField(28);
        selectInstallationDirectoryField.setHorizontalAlignment(JTextField.LEFT);
        selectInstallationDirectoryField.setText(InstallerUtils.getFileFullPath(installationDirectory));
        selectInstallationDirectoryField.setToolTipText("Double click to change the directory");
        selectInstallationDirectoryField.setEnabled(false);
        selectInstallationDirectoryField.setBackground(Color.BLACK);
        selectInstallationDirectoryField.setForeground(Color.WHITE);
        //selectInstallationDirectoryField.setFont(new Font("SansSerif", Font.PLAIN, 14));
        // Allow the user to select a different directory when clicking this text field
        selectInstallationDirectoryField.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                // Open the directory on a double click
                if (e.getClickCount() == 2 && !e.isConsumed()) {
                    // Consume the click events
                    e.consume();
                    // Open the directory and choose a new directory to store the audio files - set default location if any
                    JFileChooser fileChooser = new JFileChooser(installationDirectory);
                    // Only display directories
                    fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
                    // Retrieve the value of the option performed
                    int value = fileChooser.showOpenDialog(null);
                    // The selected directory will be used to store the audio files
                    // Display an error if the selected directory does not have read/write access
                    if (value == JFileChooser.APPROVE_OPTION) {
                        // Make this directory the Audio directory
                        if (fileChooser.getSelectedFile().canRead() && fileChooser.getSelectedFile().canWrite()) {
                            installationDirectory = fileChooser.getSelectedFile();
                            // Retrieve this full path and display it in the gui
                            selectInstallationDirectoryField.setText(InstallerUtils.getFileFullPath(installationDirectory));
                        }
                        // Display an error message
                        else {
                            // TODO : Test in a different OS - Windows behaves different
                            StringBuilder accesses = new StringBuilder();
                            // Check if the file has read access
                            if (!fileChooser.getSelectedFile().canRead()) {
                                accesses.append(InstallerUtils.NEW_LINE).append("- read access");
                            }
                            // Check if the file has write access
                            if (!fileChooser.getSelectedFile().canWrite()) {
                                accesses.append(InstallerUtils.NEW_LINE).append("- write access");
                            }
                            // Do not display any error message if the list is empty - this should not happened
                            if (accesses.length() > 0) {
                                String message = (fileChooser.getSelectedFile().getName() + " does not have :" + accesses.toString());
                                JOptionPane.showMessageDialog(null, message, "Audio File Error", JOptionPane.ERROR_MESSAGE);
                            }
                        }// else - display the error message
                    }// if - selected director
                }// Double click
            }// Mouse event
        });
        return selectInstallationDirectoryField;
    }