// Path: src/main/java/com/cipherdyne/gui/components/IFwknopVariable.java
// public interface IFwknopVariable {
//     void setText(final String val);
// 
//     String getText();
// 
//     void setDefaultValue();
// 
//     boolean isDefault();
// }
// 
// Path: src/main/java/com/cipherdyne/utils/InternationalizationHelper.java
// public class InternationalizationHelper {
// 
//     static private ResourceBundle messages;
//     private static final Logger LOGGER = LogManager.getLogger(InternationalizationHelper.class.getName());
//     private static InternationalizationHelper instance = null;
// 
//     /**
//      * Hidden constructor
//      *
//      * @param language
//      * @param country
//      */
//     private InternationalizationHelper(final String language, final String country) {
// 
//         messages = ResourceBundle.getBundle("messages", new Locale(language, country));
//     }
// 
//     public static String getMessage(final String i18nKey) {
// 
//         String translation = i18nKey;
// 
//         if (instance == null) {
//             instance = new InternationalizationHelper("en", "EN");
//         }
// 
//         try {
//             translation = messages.getString(i18nKey);
//         } catch (final MissingResourceException e) {
//             LOGGER.warn("No translation found for key " + i18nKey);
//         }
// 
//         return translation;
//     }
// 
//     public static String getMessageOrNull(final String i18nKey) {
// 
//         String translation = null;
// 
//         if (instance == null) {
//             instance = new InternationalizationHelper("en", "EN");
//         }
// 
//         try {
//             translation = messages.getString(i18nKey);
//         } catch (final MissingResourceException e) {
// 
//         }
// 
//         return translation;
//     }
// 
//     public static void configure(final String locale) {
//         String[] localeArray = locale.split("_");
//         instance = new InternationalizationHelper(localeArray[0], localeArray[1]);
//     }
// }
// 
// Path: src/main/java/com/cipherdyne/gui/components/JFwknopLabel.java
// public class JFwknopLabel extends JLabel {
//     
//     /**
//      * JFwknopLabel constructor
//      * 
//      * @param label label to display
//      */
//     public JFwknopLabel(String label) {
//         super(label);
//         Border paddingBorder = BorderFactory.createEmptyBorder(0, 2, 0, 2);
//         MatteBorder border = BorderFactory.createMatteBorder(0, 0, 1, 0, Color.lightGray);
//         this.setBorder(BorderFactory.createCompoundBorder(border, paddingBorder));
//     }
// }
// 
// Path: src/main/java/com/cipherdyne/gui/components/JFwknopTextField.java
// public class JFwknopTextField extends JTextField implements IFwknopVariable {
// 
//     private static final long serialVersionUID = 1L;
//     private final String defaultVal;
// 
//     public JFwknopTextField(final String val) {
//         super(val);
//         this.defaultVal = val;
//         this.addFocusListener(new FocusListener() {
//             @Override
//             public void focusGained(FocusEvent e) {
//             }
// 
//             @Override
//             public void focusLost(FocusEvent e) {
//                 if (((JFwknopTextField) e.getSource()).getText().equals(StringUtils.EMPTY)) {
//                     setDefaultValue();
//                 }
//             }
//         });
//     }
// 
//     @Override
//     public void setDefaultValue() {
//         this.setText(this.defaultVal);
//     }
// 
//     @Override
//     public boolean isDefault() {
//         boolean def = false;
//         if (this.defaultVal.equals(this.getText())) {
//             def = true;
//         }
// 
//         return def;
//     }
// }


import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import net.miginfocom.swing.MigLayout;
import com.cipherdyne.gui.components.IFwknopVariable;
import com.cipherdyne.utils.InternationalizationHelper;
import com.cipherdyne.gui.components.JFwknopLabel;
import com.cipherdyne.gui.components.JFwknopTextField;
import java.awt.Component;
import java.util.HashMap;
import java.util.Map;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
        this.setLayout(new MigLayout("inset 20, gap 0, flowx", "[200!]0![300!]0![]", ""));

        JPanel btnPanel = new JPanel(new MigLayout("inset 0, gap 0, flowx", "", ""));
        btnPanel.add(btnAddFile);
        btnPanel.add(btnRemoveFile);
        this.add(btnPanel, "wrap");
        
        this.add(new JScrollPane(sshFileTable), "growx, span 3, wrap");

        this.add(new JLabel(" "), "growx, span 3, wrap");

        this.add(new JFwknopLabel(InternationalizationHelper.getMessage("i18n.ssh.user")), "growx");
        this.add((Component) this.settingsMap.get(EnumSshSettings.USERNAME), "growx, wrap");
        this.add(new JFwknopLabel(InternationalizationHelper.getMessage("i18n.ssh.password")), "growx");
        this.add((Component) this.settingsMap.get(EnumSshSettings.PASSWORD), "growx, wrap");
        this.add(new JFwknopLabel(InternationalizationHelper.getMessage("i18n.ssh.remotehostname")), "growx");
        this.add((Component) this.settingsMap.get(EnumSshSettings.REMOTEHOST), "growx, wrap");
        this.add(new JFwknopLabel(InternationalizationHelper.getMessage("i18n.ssh.remoteport")), "growx");
        this.add((Component) this.settingsMap.get(EnumSshSettings.REMOTEPORT), "growx, wrap");

        this.add(this.btnExport, "gaptop 20, growx, span 3");

        this.pack();
        
        this.setLocationRelativeTo(frame);        
    }

    /**
     * @return the SSH settings
     */
// Path: src/main/java/com/cipherdyne/gui/components/IFwknopVariable.java
// public interface IFwknopVariable {
//     void setText(final String val);
// 
//     String getText();
// 
//     void setDefaultValue();
// 
//     boolean isDefault();
// }
// 
// Path: src/main/java/com/cipherdyne/utils/InternationalizationHelper.java
// public class InternationalizationHelper {
// 
//     static private ResourceBundle messages;
//     private static final Logger LOGGER = LogManager.getLogger(InternationalizationHelper.class.getName());
//     private static InternationalizationHelper instance = null;
// 
//     /**
//      * Hidden constructor
//      *
//      * @param language
//      * @param country
//      */
//     private InternationalizationHelper(final String language, final String country) {
// 
//         messages = ResourceBundle.getBundle("messages", new Locale(language, country));
//     }
// 
//     public static String getMessage(final String i18nKey) {
// 
//         String translation = i18nKey;
// 
//         if (instance == null) {
//             instance = new InternationalizationHelper("en", "EN");
//         }
// 
//         try {
//             translation = messages.getString(i18nKey);
//         } catch (final MissingResourceException e) {
//             LOGGER.warn("No translation found for key " + i18nKey);
//         }
// 
//         return translation;
//     }
// 
//     public static String getMessageOrNull(final String i18nKey) {
// 
//         String translation = null;
// 
//         if (instance == null) {
//             instance = new InternationalizationHelper("en", "EN");
//         }
// 
//         try {
//             translation = messages.getString(i18nKey);
//         } catch (final MissingResourceException e) {
// 
//         }
// 
//         return translation;
//     }
// 
//     public static void configure(final String locale) {
//         String[] localeArray = locale.split("_");
//         instance = new InternationalizationHelper(localeArray[0], localeArray[1]);
//     }
// }
// 
// Path: src/main/java/com/cipherdyne/gui/components/JFwknopLabel.java
// public class JFwknopLabel extends JLabel {
//     
//     /**
//      * JFwknopLabel constructor
//      * 
//      * @param label label to display
//      */
//     public JFwknopLabel(String label) {
//         super(label);
//         Border paddingBorder = BorderFactory.createEmptyBorder(0, 2, 0, 2);
//         MatteBorder border = BorderFactory.createMatteBorder(0, 0, 1, 0, Color.lightGray);
//         this.setBorder(BorderFactory.createCompoundBorder(border, paddingBorder));
//     }
// }
// 
// Path: src/main/java/com/cipherdyne/gui/components/JFwknopTextField.java
// public class JFwknopTextField extends JTextField implements IFwknopVariable {
// 
//     private static final long serialVersionUID = 1L;
//     private final String defaultVal;
// 
//     public JFwknopTextField(final String val) {
//         super(val);
//         this.defaultVal = val;
//         this.addFocusListener(new FocusListener() {
//             @Override
//             public void focusGained(FocusEvent e) {
//             }
// 
//             @Override
//             public void focusLost(FocusEvent e) {
//                 if (((JFwknopTextField) e.getSource()).getText().equals(StringUtils.EMPTY)) {
//                     setDefaultValue();
//                 }
//             }
//         });
//     }
// 
//     @Override
//     public void setDefaultValue() {
//         this.setText(this.defaultVal);
//     }
// 
//     @Override
//     public boolean isDefault() {
//         boolean def = false;
//         if (this.defaultVal.equals(this.getText())) {
//             def = true;
//         }
// 
//         return def;
//     }
// }


// Path: src/main/java/com/cipherdyne/gui/ssh/SshView.java
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import net.miginfocom.swing.MigLayout;
import com.cipherdyne.gui.components.IFwknopVariable;
import com.cipherdyne.utils.InternationalizationHelper;
import com.cipherdyne.gui.components.JFwknopLabel;
import com.cipherdyne.gui.components.JFwknopTextField;
import java.awt.Component;
import java.util.HashMap;
import java.util.Map;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;

        this.setLayout(new MigLayout("inset 20, gap 0, flowx", "[200!]0![300!]0![]", ""));

        JPanel btnPanel = new JPanel(new MigLayout("inset 0, gap 0, flowx", "", ""));
        btnPanel.add(btnAddFile);
        btnPanel.add(btnRemoveFile);
        this.add(btnPanel, "wrap");
        
        this.add(new JScrollPane(sshFileTable), "growx, span 3, wrap");

        this.add(new JLabel(" "), "growx, span 3, wrap");

        this.add(new JFwknopLabel(InternationalizationHelper.getMessage("i18n.ssh.user")), "growx");
        this.add((Component) this.settingsMap.get(EnumSshSettings.USERNAME), "growx, wrap");
        this.add(new JFwknopLabel(InternationalizationHelper.getMessage("i18n.ssh.password")), "growx");
        this.add((Component) this.settingsMap.get(EnumSshSettings.PASSWORD), "growx, wrap");
        this.add(new JFwknopLabel(InternationalizationHelper.getMessage("i18n.ssh.remotehostname")), "growx");
        this.add((Component) this.settingsMap.get(EnumSshSettings.REMOTEHOST), "growx, wrap");
        this.add(new JFwknopLabel(InternationalizationHelper.getMessage("i18n.ssh.remoteport")), "growx");
        this.add((Component) this.settingsMap.get(EnumSshSettings.REMOTEPORT), "growx, wrap");

        this.add(this.btnExport, "gaptop 20, growx, span 3");

        this.pack();
        
        this.setLocationRelativeTo(frame);        
    }

    /**
     * @return the SSH settings
     */
    public Map<EnumSshSettings, IFwknopVariable> getSettings() {