Example usage for javax.swing.text DefaultEditorKit.PasteAction DefaultEditorKit.PasteAction

List of usage examples for javax.swing.text DefaultEditorKit.PasteAction DefaultEditorKit.PasteAction

Introduction

In this page you can find the example usage for javax.swing.text DefaultEditorKit.PasteAction DefaultEditorKit.PasteAction.

Prototype

DefaultEditorKit.PasteAction

Source Link

Usage

From source file:dnd.TextCutPaste.java

/**
 * Create an Edit menu to support cut/copy/paste.
 *///from  ww  w.  j a va2 s .  c o m
public JMenuBar createMenuBar() {
    JMenuItem menuItem = null;
    JMenuBar menuBar = new JMenuBar();
    JMenu mainMenu = new JMenu("Edit");
    mainMenu.setMnemonic(KeyEvent.VK_E);

    menuItem = new JMenuItem(new DefaultEditorKit.CutAction());
    menuItem.setText("Cut");
    menuItem.setMnemonic(KeyEvent.VK_T);
    mainMenu.add(menuItem);

    menuItem = new JMenuItem(new DefaultEditorKit.CopyAction());
    menuItem.setText("Copy");
    menuItem.setMnemonic(KeyEvent.VK_C);
    mainMenu.add(menuItem);

    menuItem = new JMenuItem(new DefaultEditorKit.PasteAction());
    menuItem.setText("Paste");
    menuItem.setMnemonic(KeyEvent.VK_P);
    mainMenu.add(menuItem);

    menuBar.add(mainMenu);
    return menuBar;
}

From source file:org.planetcrypto.bitcoin.PlanetCryptoBitcoinUI.java

/**
 * 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./*ww  w. j a v  a 2  s  .  co m*/
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
    bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

    MainTabbedPane = new javax.swing.JTabbedPane();
    MinerInformationPanel = new javax.swing.JPanel();
    MinerInformationTabbedPane = new javax.swing.JTabbedPane();
    InformationPanel = new javax.swing.JPanel();
    MinerSelectionBox = new javax.swing.JComboBox();
    MinerSelectionBoxLabel = new javax.swing.JLabel();
    InformationMinerIPLabel = new javax.swing.JLabel();
    InformationMinerIPTextField = new javax.swing.JTextField();
    InformationMinerPortLabel = new javax.swing.JLabel();
    InformationMinerPortTextField = new javax.swing.JTextField();
    PrivilegedLabel = new javax.swing.JLabel();
    ASICsLabel = new javax.swing.JLabel();
    PrivilegedTextField = new javax.swing.JTextField();
    ASICsTextField = new javax.swing.JTextField();
    PGAsLabel = new javax.swing.JLabel();
    PGAsTextField = new javax.swing.JTextField();
    PoolCountLabel = new javax.swing.JLabel();
    PoolCountTextField = new javax.swing.JTextField();
    MinerVersionLabel = new javax.swing.JLabel();
    MinerVersionTextField = new javax.swing.JTextField();
    MinerStrategyLabel = new javax.swing.JLabel();
    MinerStrategyTextField = new javax.swing.JTextField();
    ACSChain1Label = new javax.swing.JLabel();
    ACSChain1TextField = new javax.swing.JTextField();
    ACSChain2Label = new javax.swing.JLabel();
    ACSChain3Label = new javax.swing.JLabel();
    ACSChain4Label = new javax.swing.JLabel();
    ACSChain2TextField = new javax.swing.JTextField();
    ACSChain3TextField = new javax.swing.JTextField();
    ACSChain4TextField = new javax.swing.JTextField();
    BytesSentLabel = new javax.swing.JLabel();
    BytesRecvLabel = new javax.swing.JLabel();
    BytesSentTextField = new javax.swing.JTextField();
    BytesRecvTextField = new javax.swing.JTextField();
    HWErrorPercentLabel = new javax.swing.JLabel();
    HWErrorPercentageTextField = new javax.swing.JTextField();
    HWErrorsLabel = new javax.swing.JLabel();
    HWErrorsTextField = new javax.swing.JTextField();
    ACSChainInformationLabel = new javax.swing.JLabel();
    MinerGenericInformationRefreshButton = new javax.swing.JButton();
    MinerHashRatesPanel = new javax.swing.JPanel();
    HashRatesCurrentMiner = new javax.swing.JLabel();
    MinerCurrentHashLabel = new javax.swing.JLabel();
    MinerCurrentHashTextField = new javax.swing.JTextField();
    MinerAverageHashLabel = new javax.swing.JLabel();
    MinerAverageHashTextField = new javax.swing.JTextField();
    MinerFoundBlocksLabel = new javax.swing.JLabel();
    MinerAcceptedLabel = new javax.swing.JLabel();
    MinerRejectedLabel = new javax.swing.JLabel();
    MinerBestShareLabel = new javax.swing.JLabel();
    MinerNetworkBlocksLabel = new javax.swing.JLabel();
    MinerFoundBlocksTextField = new javax.swing.JTextField();
    MinerAcceptedTextField = new javax.swing.JTextField();
    MinerRejectedTextField = new javax.swing.JTextField();
    MinerBestShareTextField = new javax.swing.JTextField();
    MinerNetworkBlocksTextField = new javax.swing.JTextField();
    MinerSelectionBox1 = new javax.swing.JComboBox();
    MinerHashRatesRefreshButton = new javax.swing.JButton();
    MinerTemperaturePanel = new javax.swing.JPanel();
    TemperatureCurrentMinerLabel = new javax.swing.JLabel();
    MinerTemp1Label = new javax.swing.JLabel();
    MinerTemp2Label = new javax.swing.JLabel();
    MinerTemp3Label = new javax.swing.JLabel();
    MinerTemp4Label = new javax.swing.JLabel();
    MinerTempAvgLabel = new javax.swing.JLabel();
    MinerTempMaxLabel = new javax.swing.JLabel();
    MinerTemp1TextField = new javax.swing.JTextField();
    MinerTemp2TextField = new javax.swing.JTextField();
    MinerTemp3TextField = new javax.swing.JTextField();
    MinerTemp4TextField = new javax.swing.JTextField();
    MinerTempAvgTextField = new javax.swing.JTextField();
    MinerTextMaxTextField = new javax.swing.JTextField();
    MinerSelectionBox2 = new javax.swing.JComboBox();
    MinerTemperaturesRefreshButton = new javax.swing.JButton();
    MinerFansPanel = new javax.swing.JPanel();
    FansCurrentMinerLabel = new javax.swing.JLabel();
    MinerFan1Label = new javax.swing.JLabel();
    MinerFan2Label = new javax.swing.JLabel();
    MinerFan3Label = new javax.swing.JLabel();
    MinerFan4Label = new javax.swing.JLabel();
    MinerFan1TextField = new javax.swing.JTextField();
    MinerFan2TextField = new javax.swing.JTextField();
    MinerFan3TextField = new javax.swing.JTextField();
    MinerFan4TextField = new javax.swing.JTextField();
    MinerSelectionBox3 = new javax.swing.JComboBox();
    MinerFanSpeedsRefreshButton = new javax.swing.JButton();
    CustomAPICommandPanel = new javax.swing.JPanel();
    CustomAPICommandCurrentMiner = new javax.swing.JLabel();
    CustomCommandEntryLabel = new javax.swing.JLabel();
    CustomCommandEntryTextField = new javax.swing.JTextField();
    CustomCommandOutputScrollPane = new javax.swing.JScrollPane();
    CustomCommandOutputTextArea = new javax.swing.JTextArea();
    CustomCommandOutputLabel = new javax.swing.JLabel();
    CustomCommandSubmitButton = new javax.swing.JButton();
    CustomCommandJsonCheckBox = new javax.swing.JCheckBox();
    CustomCommandMinerSelectionBox = new javax.swing.JComboBox();
    MinerVitalsPanel = new javax.swing.JPanel();
    jScrollPane2 = new javax.swing.JScrollPane();
    MinerVitalStatsTextPane = new javax.swing.JTextPane();
    jLabel1 = new javax.swing.JLabel();
    VitalStatsRefreshButton = new javax.swing.JButton();
    BTCInformationPane = new javax.swing.JPanel();
    BitcoinInformationTabbedPane = new javax.swing.JTabbedPane();
    BTCGenericInformationPanel = new javax.swing.JPanel();
    BTCConversionRateLabel = new javax.swing.JLabel();
    NetworkDifficultyLabel = new javax.swing.JLabel();
    EstimatedPayoutLabel = new javax.swing.JLabel();
    NetworkDifficultyTextField = new javax.swing.JTextField();
    BTCConversionRateTextField = new javax.swing.JTextField();
    EstimatedPayoutTextField = new javax.swing.JTextField();
    CurrentBlockHashLabel = new javax.swing.JLabel();
    CurrentBlockHashTextField = new javax.swing.JTextField();
    CurrentBlockTimeLabel = new javax.swing.JLabel();
    CurrentBlockTimeTextField = new javax.swing.JTextField();
    GenericInformationCurrentMinerLabel = new javax.swing.JLabel();
    MinerSelectionBox5 = new javax.swing.JComboBox();
    BitcoinInformationRefreshButton = new javax.swing.JButton();
    GenericInformationCoinbaseUserLabel = new javax.swing.JLabel();
    GenericInformationCoinbaseUserSelectionBox = new javax.swing.JComboBox();
    GenericInformationAbbreviatedPreferredCurrencyLabel = new javax.swing.JLabel();
    GenericInformationAbbreviatedPreferredCurrencyLabel2 = new javax.swing.JLabel();
    CoinbaseAPIPanel = new javax.swing.JPanel();
    CoinbaseAPILabel = new javax.swing.JLabel();
    CoinbaseAPICurrentUserLabel = new javax.swing.JLabel();
    CoinbaseAPIUserSelectionBox = new javax.swing.JComboBox();
    EligiusPoolInformationPanel = new javax.swing.JPanel();
    EligiusStatusLabel = new javax.swing.JLabel();
    EligiusHashRateInformationScrollPane = new javax.swing.JScrollPane();
    EligiusHashRateInformationTable = new javax.swing.JTable();
    EligiusPayoutInformationPayoutScrollPane = new javax.swing.JScrollPane();
    EligiusPayoutInformationTable = new javax.swing.JTable();
    EligiusPoolInformationRefreshButton = new javax.swing.JButton();
    EligiusPayoutKeyInformationScrollPane = new javax.swing.JScrollPane();
    EligiousPayoutKeyInformationTextPane = new javax.swing.JTextPane();
    EligiusUsernameSelectionBox = new javax.swing.JComboBox();
    EligiusUsernameClipboardCopyButton = new javax.swing.JButton();
    EligiusPoolCurrentUsernameLabel = new javax.swing.JLabel();
    EligiusOpenBrowserButton = new javax.swing.JButton();
    ConfigurationPanel = new javax.swing.JPanel();
    ConfigurationTabbedPane = new javax.swing.JTabbedPane();
    MinerConfigurationPanel = new javax.swing.JPanel();
    ConfigurationPromptLabel = new javax.swing.JLabel();
    ConfigurationRemoveMinerButton = new javax.swing.JButton();
    ConfigurationAddMinerButton = new javax.swing.JButton();
    ConfigurationAddMinerNameLabel = new javax.swing.JLabel();
    ConfigurationAddMinerNameTextField = new javax.swing.JTextField();
    ConfigurationAddMinerIPLabel = new javax.swing.JLabel();
    ConfigurationAddMinerIPTextField = new javax.swing.JTextField();
    ConfigurationMinerPortLabel = new javax.swing.JLabel();
    ConfigurationMinerPortTextField = new javax.swing.JTextField();
    ConfigurationAddMinersLabel = new javax.swing.JLabel();
    ConfigurationRemoveMinersLabel = new javax.swing.JLabel();
    ConfigurationRemoveMinerNameLabel = new javax.swing.JLabel();
    ConfigurationRemoveMinerNameTextField = new javax.swing.JTextField();
    ConfigurationCurrentMinersLabel = new javax.swing.JLabel();
    ConfigurationRemoveMinerIPLabel = new javax.swing.JLabel();
    ConfigurationRemoveMinerIPTextField = new javax.swing.JTextField();
    ConfigurationResolveHostAddressLabel = new javax.swing.JLabel();
    ConfigurationResolveHostAddressTextField = new javax.swing.JTextField();
    ConfigurationResolveHostAddressButton = new javax.swing.JButton();
    ConfigurationCurrentMinersScrollPane = new javax.swing.JScrollPane();
    ConfigurationCurrentMinersTextPane = new javax.swing.JTextPane();
    ConfigurationAlarmPanel = new javax.swing.JPanel();
    ConfigurationAlarmSettingsPromptLabel = new javax.swing.JLabel();
    ConfigurationMinerTemperatureAlarmLabel = new javax.swing.JLabel();
    ConfigurationMinerFanSpeedAlarmLabel = new javax.swing.JLabel();
    ConfigurationMinerHashRateAlarmLabel = new javax.swing.JLabel();
    MinerSelectionForAlarmsBox = new javax.swing.JComboBox();
    AlarmsCurrentMinerLabel = new javax.swing.JLabel();
    ConfigurationAlarmsHWErrPercentLabel = new javax.swing.JLabel();
    ConfigurationMinerTempAlarmTextField = new javax.swing.JTextField();
    ConfigurationFanSpeedAlarmTextField = new javax.swing.JTextField();
    ConfigurationMinerHashRateAlarmTextField = new javax.swing.JTextField();
    ConfigurationMinerHardwareErrPercentAlarmTextField = new javax.swing.JTextField();
    ConfigurationDegreesCelsiusLabel = new javax.swing.JLabel();
    ConfigurationFanRPMLabel = new javax.swing.JLabel();
    ConfigurationHashRatePostfixComboBox = new javax.swing.JComboBox();
    ConfigurationHWErrorPercentLabel = new javax.swing.JLabel();
    ConfigurationMinerTempAlarmUpdateButton = new javax.swing.JButton();
    ConfigurationMinerFanSpeedAlarmUpdateButton = new javax.swing.JButton();
    ConfigurationMinerHashRateAlarmUpdateButton = new javax.swing.JButton();
    ConfigurationMinerHardwareErrPercentAlarmUpdateButton = new javax.swing.JButton();
    ConfigurationCurrentMinerAlarmsScrollPane = new javax.swing.JScrollPane();
    ConfigurationCurrentMinerAlarmsTextPane = new javax.swing.JTextPane();
    ConfigurationCurrentMinerAlarmsLabel = new javax.swing.JLabel();
    ConfigurationEligiusPoolsPanel = new javax.swing.JPanel();
    ConfigurationEligiusLabel = new javax.swing.JLabel();
    ConfigurationMiningPoolPromptLabel = new javax.swing.JLabel();
    ConfigurationEligiusUsernameLabel = new javax.swing.JLabel();
    ConfigurationEligiusUsernameTextField = new javax.swing.JTextField();
    ConfigurationEligiusHelpPromptLabel = new javax.swing.JLabel();
    ConfigurationEligiusUsernameAddButton = new javax.swing.JButton();
    ConfigurationEligiusUsernameRemoveButton = new javax.swing.JButton();
    ConfigurationEligiusExampleLabel = new javax.swing.JLabel();
    ConfigurationCoinExchangePanel = new javax.swing.JPanel();
    ConfigurationCoinbaseLabel = new javax.swing.JLabel();
    ConfigurationCoinbaseCurrencyLabel = new javax.swing.JLabel();
    ConfigurationCoinbaseCurrencyComboBox = new javax.swing.JComboBox();
    CoinbaseConfigurationSeparator = new javax.swing.JSeparator();
    CoinbaseInformationLabel = new javax.swing.JLabel();
    CoinbaseUsernameLabel = new javax.swing.JLabel();
    CoinbaseAPIUsernameTextField = new javax.swing.JTextField();
    CoinbaseAPIKeyLabel = new javax.swing.JLabel();
    CoinbaseAPIKeyTextField = new javax.swing.JTextField();
    CoinbaseAPISecretKeyLabel = new javax.swing.JLabel();
    CoinbaseAPISecretKeyTextField = new javax.swing.JTextField();
    AddCoinbaseUsernameButton = new javax.swing.JButton();
    RemoveCoinbaseUsernameButton = new javax.swing.JButton();
    CurrentCoinbaseConfigurationLabel = new javax.swing.JLabel();
    CoinbaseConfigurationSeparator1 = new javax.swing.JSeparator();
    CurrentCoinbaseConfigurationScrollPane = new javax.swing.JScrollPane();
    CurrentCoinbaseConfigurationTextPane = new javax.swing.JTextPane();
    CoinbaseConfigurationVerticalSeparator = new javax.swing.JSeparator();
    CoinbaseConfigurationInstructionsScrollPane = new javax.swing.JScrollPane();
    CoinbaseConfigurationInstructionsTextPane = new javax.swing.JTextPane();
    CoinbaseConfigurationInstructionsLabel = new javax.swing.JLabel();
    BFGMInerUIMenuBar = new javax.swing.JMenuBar();
    FileMenu = new javax.swing.JMenu();
    FileExitMenuItem = new javax.swing.JMenuItem();
    EditMenu = new javax.swing.JMenu("Edit");
    CopyMenuItem = new javax.swing.JMenuItem(new DefaultEditorKit.CopyAction());
    PasteMenuItem = new javax.swing.JMenuItem(new DefaultEditorKit.PasteAction());
    HelpMenu = new javax.swing.JMenu();
    AppHelpMenuItem = new javax.swing.JMenuItem();
    AboutMenuItem = new javax.swing.JMenuItem();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("PlanetCrypto Bitcoin");
    setBackground(new java.awt.Color(204, 255, 255));

    MainTabbedPane.setToolTipText("");
    MainTabbedPane.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MainTabbedPane.setName(""); // NOI18N

    MinerInformationTabbedPane.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N

    ArrayList<String> miners = new ArrayList<>();
    existing_miners = currentMiners();
    //jComboBox1.
    if (existing_miners.get(0) == null) {
        miners.add("No Miners");
    } else {
        for (int i = 0; i < existing_miners.size(); i++) {
            miners.add(existing_miners.get(i).get("name"));
        }
    }
    MinerSelectionBox.setModel(new javax.swing.DefaultComboBoxModel(miners.toArray()));
    MinerSelectionBox.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            MinerSelectionBoxActionPerformed(evt);
        }
    });
    MinerSelectionBoxActionPerformed(null);

    MinerSelectionBoxLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerSelectionBoxLabel.setText("Current Miner:");

    InformationMinerIPLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    InformationMinerIPLabel.setText("Miner IP:");

    /*
    if (existing_miners.get(MinerSelectionBox.getSelectedIndex()).get("name").equals("None")) {
    InformationMinerIPTextField.setText("None");
    } else {
    InformationMinerIPTextField.setText(existing_miners.get(MinerSelectionBox.getSelectedIndex()).get("ip"));
    }
    */
    InformationMinerIPTextField.setEditable(false);

    InformationMinerPortLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    InformationMinerPortLabel.setText("Miner Port:");

    InformationMinerPortTextField.setEditable(false);
    /*
    if (existing_miners.get(MinerSelectionBox.getSelectedIndex()) == null) {
    InformationMinerPortTextField.setText("None");
    } else {
    InformationMinerPortTextField.setText(existing_miners.get(MinerSelectionBox.getSelectedIndex()).get("port"));
    }
    */

    PrivilegedLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    PrivilegedLabel.setText("Privileged: ");

    ASICsLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    ASICsLabel.setText("ASICs:");

    PrivilegedTextField.setEditable(false);
    /*
    if (existing_miners.get(MinerSelectionBox.getSelectedIndex()) ==null) {
    PrivilegedTextField.setText("None");
    } else {
    String privileged = api_Commands.parseArgs(existing_miners.get(MinerSelectionBox.getSelectedIndex()).get("ip"), existing_miners.get(MinerSelectionBox.getSelectedIndex()).get("port"), "privileged");
    String status = api_Commands.getKeys(privileged, "STATUS");
    if (status.equals("E")) {
        PrivilegedTextField.setText("False");
    } else {
        PrivilegedTextField.setText("True");
    }
    }
    */

    ASICsTextField.setEditable(false);

    PGAsLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    PGAsLabel.setText("PGAs:");

    PGAsTextField.setEditable(false);

    PoolCountLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    PoolCountLabel.setText("Pool Count:");

    PoolCountTextField.setEditable(false);

    MinerVersionLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerVersionLabel.setText("Version:");

    MinerVersionTextField.setEditable(false);

    MinerStrategyLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerStrategyLabel.setText("Strategy:");

    MinerStrategyTextField.setEditable(false);

    ACSChain1Label.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    ACSChain1Label.setText("ACS Chain 1:");

    ACSChain1TextField.setEditable(false);

    ACSChain2Label.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    ACSChain2Label.setText("ACS Chain 2:");

    ACSChain3Label.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    ACSChain3Label.setText("ACS Chain 3:");

    ACSChain4Label.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    ACSChain4Label.setText("ACS Chain 4:");

    ACSChain2TextField.setEditable(false);

    ACSChain3TextField.setEditable(false);

    ACSChain4TextField.setEditable(false);

    BytesSentLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    BytesSentLabel.setText("Bytes Sent:");

    BytesRecvLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    BytesRecvLabel.setText("Bytes Recv:");

    BytesSentTextField.setEditable(false);

    BytesRecvTextField.setEditable(false);

    HWErrorPercentLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    HWErrorPercentLabel.setText("HW Error  %:");

    HWErrorPercentageTextField.setEditable(false);

    HWErrorsLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    HWErrorsLabel.setText("HW Errors:");

    HWErrorsTextField.setEditable(false);

    ACSChainInformationLabel.setText("For ACS chains: x = Not Well; o = Well");

    MinerGenericInformationRefreshButton.setText("Refresh");
    MinerGenericInformationRefreshButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            MinerGenericInformationRefreshButtonActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout InformationPanelLayout = new javax.swing.GroupLayout(InformationPanel);
    InformationPanel.setLayout(InformationPanelLayout);
    InformationPanelLayout.setHorizontalGroup(InformationPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(InformationPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(InformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(InformationPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(InformationPanelLayout.createSequentialGroup()
                                            .addComponent(ACSChainInformationLabel).addGap(51, 51, 51))
                                    .addGroup(InformationPanelLayout.createSequentialGroup()
                                            .addGroup(InformationPanelLayout
                                                    .createParallelGroup(
                                                            javax.swing.GroupLayout.Alignment.TRAILING)
                                                    .addGroup(InformationPanelLayout
                                                            .createParallelGroup(
                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                            .addComponent(MinerSelectionBoxLabel)
                                                            .addComponent(InformationMinerIPLabel)
                                                            .addComponent(ASICsLabel,
                                                                    javax.swing.GroupLayout.PREFERRED_SIZE, 53,
                                                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                                                            .addComponent(PGAsLabel)
                                                            .addComponent(PoolCountLabel)
                                                            .addComponent(MinerVersionLabel))
                                                    .addComponent(PrivilegedLabel,
                                                            javax.swing.GroupLayout.Alignment.LEADING))
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addGroup(InformationPanelLayout
                                                    .createParallelGroup(
                                                            javax.swing.GroupLayout.Alignment.TRAILING, false)
                                                    .addComponent(ACSChain3TextField,
                                                            javax.swing.GroupLayout.Alignment.LEADING)
                                                    .addComponent(ACSChain2TextField,
                                                            javax.swing.GroupLayout.Alignment.LEADING)
                                                    .addComponent(ACSChain4TextField)
                                                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING,
                                                            InformationPanelLayout.createSequentialGroup()
                                                                    .addGroup(InformationPanelLayout
                                                                            .createParallelGroup(
                                                                                    javax.swing.GroupLayout.Alignment.TRAILING,
                                                                                    false)
                                                                            .addComponent(MinerVersionTextField,
                                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                                            .addComponent(
                                                                                    InformationMinerIPTextField,
                                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                                            .addComponent(PrivilegedTextField,
                                                                                    javax.swing.GroupLayout.Alignment.LEADING,
                                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                    173, Short.MAX_VALUE)
                                                                            .addComponent(ASICsTextField,
                                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                                            .addComponent(PGAsTextField,
                                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                                            .addComponent(PoolCountTextField,
                                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                                            .addComponent(MinerSelectionBox,
                                                                                    javax.swing.GroupLayout.Alignment.LEADING,
                                                                                    0,
                                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                    Short.MAX_VALUE))
                                                                    .addGroup(InformationPanelLayout
                                                                            .createParallelGroup(
                                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                                            .addGroup(InformationPanelLayout
                                                                                    .createSequentialGroup()
                                                                                    .addPreferredGap(
                                                                                            javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                                                    .addGroup(
                                                                                            InformationPanelLayout
                                                                                                    .createParallelGroup(
                                                                                                            javax.swing.GroupLayout.Alignment.LEADING,
                                                                                                            false)
                                                                                                    .addGroup(
                                                                                                            InformationPanelLayout
                                                                                                                    .createSequentialGroup()
                                                                                                                    .addGroup(
                                                                                                                            InformationPanelLayout
                                                                                                                                    .createParallelGroup(
                                                                                                                                            javax.swing.GroupLayout.Alignment.LEADING)
                                                                                                                                    .addComponent(
                                                                                                                                            BytesRecvLabel)
                                                                                                                                    .addComponent(
                                                                                                                                            HWErrorPercentLabel)
                                                                                                                                    .addComponent(
                                                                                                                                            HWErrorsLabel)
                                                                                                                                    .addComponent(
                                                                                                                                            MinerStrategyLabel))
                                                                                                                    .addGap(18,
                                                                                                                            18,
                                                                                                                            18)
                                                                                                                    .addGroup(
                                                                                                                            InformationPanelLayout
                                                                                                                                    .createParallelGroup(
                                                                                                                                            javax.swing.GroupLayout.Alignment.LEADING,
                                                                                                                                            false)
                                                                                                                                    .addComponent(
                                                                                                                                            HWErrorsTextField,
                                                                                                                                            javax.swing.GroupLayout.Alignment.TRAILING)
                                                                                                                                    .addComponent(
                                                                                                                                            HWErrorPercentageTextField)
                                                                                                                                    .addComponent(
                                                                                                                                            BytesRecvTextField)
                                                                                                                                    .addComponent(
                                                                                                                                            MinerStrategyTextField,
                                                                                                                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                                                                                            172,
                                                                                                                                            javax.swing.GroupLayout.PREFERRED_SIZE)))
                                                                                                    .addGroup(
                                                                                                            InformationPanelLayout
                                                                                                                    .createSequentialGroup()
                                                                                                                    .addGroup(
                                                                                                                            InformationPanelLayout
                                                                                                                                    .createParallelGroup(
                                                                                                                                            javax.swing.GroupLayout.Alignment.LEADING,
                                                                                                                                            false)
                                                                                                                                    .addComponent(
                                                                                                                                            InformationMinerPortLabel,
                                                                                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                                                                            89,
                                                                                                                                            Short.MAX_VALUE)
                                                                                                                                    .addComponent(
                                                                                                                                            BytesSentLabel,
                                                                                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                                                                            Short.MAX_VALUE))
                                                                                                                    .addGap(18,
                                                                                                                            18,
                                                                                                                            18)
                                                                                                                    .addGroup(
                                                                                                                            InformationPanelLayout
                                                                                                                                    .createParallelGroup(
                                                                                                                                            javax.swing.GroupLayout.Alignment.LEADING)
                                                                                                                                    .addComponent(
                                                                                                                                            BytesSentTextField)
                                                                                                                                    .addComponent(
                                                                                                                                            InformationMinerPortTextField)))))
                                                                            .addGroup(InformationPanelLayout
                                                                                    .createSequentialGroup()
                                                                                    .addGap(31, 31, 31)
                                                                                    .addComponent(
                                                                                            MinerGenericInformationRefreshButton))))
                                                    .addComponent(ACSChain1TextField,
                                                            javax.swing.GroupLayout.Alignment.LEADING,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE, 458,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                                            .addGap(41, 41, 41)))
                            .addComponent(ACSChain1Label).addComponent(ACSChain2Label)
                            .addComponent(ACSChain3Label).addComponent(ACSChain4Label))));
    InformationPanelLayout.setVerticalGroup(InformationPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(InformationPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(InformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(MinerSelectionBox, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(MinerSelectionBoxLabel)
                            .addComponent(MinerGenericInformationRefreshButton))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(InformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(InformationMinerIPLabel)
                            .addComponent(InformationMinerIPTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(InformationMinerPortLabel).addComponent(InformationMinerPortTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(InformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(PrivilegedLabel).addComponent(BytesSentLabel)
                            .addComponent(BytesSentTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(PrivilegedTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(InformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(ASICsLabel)
                            .addComponent(ASICsTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(BytesRecvLabel)
                            .addComponent(BytesRecvTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(InformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(PGAsLabel)
                            .addComponent(PGAsTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(HWErrorsLabel)
                            .addComponent(HWErrorsTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(InformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(PoolCountLabel)
                            .addComponent(PoolCountTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(HWErrorPercentLabel).addComponent(HWErrorPercentageTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(InformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(MinerVersionLabel)
                            .addComponent(MinerVersionTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(MinerStrategyLabel).addComponent(MinerStrategyTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(InformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(ACSChain1Label).addComponent(ACSChain1TextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(InformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(ACSChain2Label).addComponent(ACSChain2TextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(InformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(ACSChain3Label).addComponent(ACSChain3TextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(InformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(ACSChain4Label).addComponent(ACSChain4TextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(18, 18, 18).addComponent(ACSChainInformationLabel).addGap(41, 41, 41)));

    MinerInformationTabbedPane.addTab("Information", InformationPanel);

    MinerHashRatesPanel.add(MinerSelectionBox);

    HashRatesCurrentMiner.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    HashRatesCurrentMiner.setText("Current Miner:");

    MinerCurrentHashLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerCurrentHashLabel.setText("Current Hash:");

    MinerCurrentHashTextField.setEditable(false);

    MinerAverageHashLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerAverageHashLabel.setText("Average Hash:");

    MinerAverageHashTextField.setEditable(false);

    MinerFoundBlocksLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerFoundBlocksLabel.setText("Found Blocks:");

    MinerAcceptedLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerAcceptedLabel.setText("Accepted:");

    MinerRejectedLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerRejectedLabel.setText("Rejected:");

    MinerBestShareLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerBestShareLabel.setText("Best Share:");

    MinerNetworkBlocksLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerNetworkBlocksLabel.setText("Network Blocks:");

    MinerFoundBlocksTextField.setEditable(false);

    MinerAcceptedTextField.setEditable(false);

    MinerRejectedTextField.setEditable(false);

    MinerBestShareTextField.setEditable(false);

    MinerNetworkBlocksTextField.setEditable(false);

    MinerSelectionBox1.setModel(new javax.swing.DefaultComboBoxModel(miners.toArray()));

    org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
            org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, MinerSelectionBox,
            org.jdesktop.beansbinding.ELProperty.create("${selectedItem}"), MinerSelectionBox1,
            org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
    bindingGroup.addBinding(binding);

    MinerHashRatesRefreshButton.setText("Refresh");
    MinerHashRatesRefreshButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            MinerHashRatesRefreshButtonActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout MinerHashRatesPanelLayout = new javax.swing.GroupLayout(MinerHashRatesPanel);
    MinerHashRatesPanel.setLayout(MinerHashRatesPanelLayout);
    MinerHashRatesPanelLayout.setHorizontalGroup(MinerHashRatesPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(MinerHashRatesPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(MinerHashRatesPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(HashRatesCurrentMiner).addComponent(MinerCurrentHashLabel)
                            .addComponent(MinerAverageHashLabel).addComponent(MinerFoundBlocksLabel)
                            .addComponent(MinerAcceptedLabel).addComponent(MinerRejectedLabel)
                            .addComponent(MinerBestShareLabel).addComponent(MinerNetworkBlocksLabel))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(MinerHashRatesPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(MinerHashRatesPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(MinerCurrentHashTextField)
                                    .addComponent(MinerAverageHashTextField)
                                    .addComponent(MinerFoundBlocksTextField)
                                    .addComponent(MinerAcceptedTextField).addComponent(MinerRejectedTextField)
                                    .addComponent(MinerBestShareTextField)
                                    .addComponent(MinerNetworkBlocksTextField,
                                            javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE))
                            .addGroup(MinerHashRatesPanelLayout.createSequentialGroup()
                                    .addComponent(MinerSelectionBox1, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            173, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(MinerHashRatesRefreshButton)))
                    .addContainerGap(440, Short.MAX_VALUE)));
    MinerHashRatesPanelLayout.setVerticalGroup(MinerHashRatesPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(MinerHashRatesPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(MinerHashRatesPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(HashRatesCurrentMiner)
                            .addComponent(MinerSelectionBox1, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(MinerHashRatesRefreshButton))
                    .addGap(21, 21, 21)
                    .addGroup(MinerHashRatesPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(MinerCurrentHashLabel).addComponent(MinerCurrentHashTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(MinerHashRatesPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(MinerAverageHashLabel).addComponent(MinerAverageHashTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(MinerHashRatesPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(MinerFoundBlocksLabel).addComponent(MinerFoundBlocksTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(MinerHashRatesPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(MinerAcceptedLabel).addComponent(MinerAcceptedTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(MinerHashRatesPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(MinerRejectedLabel).addComponent(MinerRejectedTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(MinerHashRatesPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(MinerBestShareLabel).addComponent(MinerBestShareTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(MinerHashRatesPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(MinerNetworkBlocksLabel).addComponent(MinerNetworkBlocksTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

    MinerInformationTabbedPane.addTab("Hash Rates", MinerHashRatesPanel);

    TemperatureCurrentMinerLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    TemperatureCurrentMinerLabel.setText("Current Miner:");

    MinerTemp1Label.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerTemp1Label.setText("Temp 1:");

    MinerTemp2Label.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerTemp2Label.setText("Temp 2:");

    MinerTemp3Label.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerTemp3Label.setText("Temp 3:");

    MinerTemp4Label.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerTemp4Label.setText("Temp 4:");

    MinerTempAvgLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerTempAvgLabel.setText("Temp Avg:");

    MinerTempMaxLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerTempMaxLabel.setText("Temp Max");

    MinerTemp1TextField.setEditable(false);

    MinerTemp2TextField.setEditable(false);

    MinerTemp3TextField.setEditable(false);

    MinerTemp4TextField.setEditable(false);

    MinerTempAvgTextField.setEditable(false);

    MinerTextMaxTextField.setEditable(false);

    MinerSelectionBox2.setModel(new javax.swing.DefaultComboBoxModel(miners.toArray()));

    binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
            org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, MinerSelectionBox1,
            org.jdesktop.beansbinding.ELProperty.create("${selectedItem}"), MinerSelectionBox2,
            org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
    bindingGroup.addBinding(binding);

    MinerTemperaturesRefreshButton.setText("Refresh");
    MinerTemperaturesRefreshButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            MinerTemperaturesRefreshButtonActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout MinerTemperaturePanelLayout = new javax.swing.GroupLayout(MinerTemperaturePanel);
    MinerTemperaturePanel.setLayout(MinerTemperaturePanelLayout);
    MinerTemperaturePanelLayout.setHorizontalGroup(MinerTemperaturePanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(MinerTemperaturePanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(MinerTemperaturePanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(TemperatureCurrentMinerLabel).addComponent(MinerTemp1Label)
                            .addComponent(MinerTemp2Label).addComponent(MinerTemp3Label)
                            .addComponent(MinerTemp4Label).addComponent(MinerTempAvgLabel)
                            .addComponent(MinerTempMaxLabel))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(MinerTemperaturePanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(MinerTemperaturePanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(MinerTemp1TextField).addComponent(MinerTemp2TextField)
                                    .addComponent(MinerTemp3TextField).addComponent(MinerTemp4TextField)
                                    .addComponent(MinerTempAvgTextField).addComponent(MinerTextMaxTextField,
                                            javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE))
                            .addGroup(MinerTemperaturePanelLayout.createSequentialGroup()
                                    .addComponent(MinerSelectionBox2, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            173, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(MinerTemperaturesRefreshButton)))
                    .addContainerGap(448, Short.MAX_VALUE)));
    MinerTemperaturePanelLayout.setVerticalGroup(
            MinerTemperaturePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(MinerTemperaturePanelLayout.createSequentialGroup().addContainerGap()
                            .addGroup(MinerTemperaturePanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(TemperatureCurrentMinerLabel)
                                    .addComponent(MinerSelectionBox2, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(MinerTemperaturesRefreshButton))
                            .addGap(21, 21, 21)
                            .addGroup(MinerTemperaturePanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(MinerTemp1Label).addComponent(MinerTemp1TextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(MinerTemperaturePanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(MinerTemp2Label).addComponent(MinerTemp2TextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(MinerTemperaturePanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(MinerTemp3Label).addComponent(MinerTemp3TextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(MinerTemperaturePanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(MinerTemp4Label).addComponent(MinerTemp4TextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(MinerTemperaturePanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(MinerTempAvgLabel).addComponent(MinerTempAvgTextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(MinerTemperaturePanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(MinerTempMaxLabel).addComponent(MinerTextMaxTextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

    MinerInformationTabbedPane.addTab("Temperatures", MinerTemperaturePanel);

    FansCurrentMinerLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    FansCurrentMinerLabel.setText("Current Miner:");

    MinerFan1Label.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerFan1Label.setText("Fan 1:");

    MinerFan2Label.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerFan2Label.setText("Fan 2:");

    MinerFan3Label.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerFan3Label.setText("Fan 3:");

    MinerFan4Label.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    MinerFan4Label.setText("Fan 4:");

    MinerFan1TextField.setEditable(false);

    MinerFan2TextField.setEditable(false);

    MinerFan3TextField.setEditable(false);

    MinerFan4TextField.setEditable(false);

    MinerSelectionBox3.setModel(new javax.swing.DefaultComboBoxModel(miners.toArray()));

    binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
            org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, MinerSelectionBox2,
            org.jdesktop.beansbinding.ELProperty.create("${selectedItem}"), MinerSelectionBox3,
            org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
    bindingGroup.addBinding(binding);

    MinerFanSpeedsRefreshButton.setText("Refresh");
    MinerFanSpeedsRefreshButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            MinerFanSpeedsRefreshButtonActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout MinerFansPanelLayout = new javax.swing.GroupLayout(MinerFansPanel);
    MinerFansPanel.setLayout(MinerFansPanelLayout);
    MinerFansPanelLayout.setHorizontalGroup(MinerFansPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(MinerFansPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(MinerFansPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(MinerFansPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(MinerFan3Label, javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(MinerFan2Label, javax.swing.GroupLayout.Alignment.TRAILING,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(MinerFan1Label, javax.swing.GroupLayout.Alignment.TRAILING,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(MinerFan4Label, javax.swing.GroupLayout.Alignment.TRAILING,
                                            javax.swing.GroupLayout.DEFAULT_SIZE, 103, Short.MAX_VALUE))
                            .addComponent(FansCurrentMinerLabel))
                    .addGap(18, 18, 18)
                    .addGroup(MinerFansPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(MinerFansPanelLayout.createSequentialGroup()
                                    .addComponent(MinerSelectionBox3, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            173, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(MinerFanSpeedsRefreshButton))
                            .addGroup(MinerFansPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                    .addComponent(MinerFan4TextField, javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(MinerFan3TextField, javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(MinerFan2TextField, javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(MinerFan1TextField, javax.swing.GroupLayout.Alignment.LEADING,
                                            javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE)))
                    .addContainerGap(442, Short.MAX_VALUE)));
    MinerFansPanelLayout.setVerticalGroup(
            MinerFansPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(MinerFansPanelLayout.createSequentialGroup().addContainerGap()
                            .addGroup(MinerFansPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(FansCurrentMinerLabel)
                                    .addComponent(MinerSelectionBox3, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(MinerFanSpeedsRefreshButton))
                            .addGap(21, 21, 21)
                            .addGroup(MinerFansPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(MinerFan1Label)
                                    .addComponent(MinerFan1TextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(MinerFansPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(MinerFan2TextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(MinerFan2Label))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(MinerFansPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(MinerFan3Label).addComponent(MinerFan3TextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(MinerFansPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(MinerFan4Label).addComponent(MinerFan4TextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

    MinerInformationTabbedPane.addTab("Fans", MinerFansPanel);

    CustomAPICommandCurrentMiner.setText("Current Miner:");

    CustomCommandEntryLabel.setText("Enter Custom Command:");

    CustomCommandOutputTextArea.setEditable(false);
    CustomCommandOutputTextArea.setColumns(20);
    CustomCommandOutputTextArea.setRows(5);
    CustomCommandOutputScrollPane.setViewportView(CustomCommandOutputTextArea);

    CustomCommandOutputLabel.setText("Output:");

    CustomCommandSubmitButton.setText("Submit");
    CustomCommandSubmitButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            CustomCommandSubmitButtonActionPerformed(evt);
        }
    });

    CustomCommandJsonCheckBox.setText("Check for JSON Output");
    CustomCommandJsonCheckBox.addKeyListener(new java.awt.event.KeyAdapter() {
        public void keyPressed(java.awt.event.KeyEvent evt) {
            CustomCommandJsonCheckBoxKeyPressed(evt);
        }
    });

    CustomCommandMinerSelectionBox.setModel(new javax.swing.DefaultComboBoxModel(miners.toArray()));

    binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
            org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, MinerSelectionBox3,
            org.jdesktop.beansbinding.ELProperty.create("${selectedItem}"), CustomCommandMinerSelectionBox,
            org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
    bindingGroup.addBinding(binding);

    javax.swing.GroupLayout CustomAPICommandPanelLayout = new javax.swing.GroupLayout(CustomAPICommandPanel);
    CustomAPICommandPanel.setLayout(CustomAPICommandPanelLayout);
    CustomAPICommandPanelLayout.setHorizontalGroup(CustomAPICommandPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(CustomAPICommandPanelLayout.createSequentialGroup().addGap(22, 22, 22)
                    .addGroup(CustomAPICommandPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(CustomCommandOutputScrollPane).addComponent(CustomCommandOutputLabel)
                            .addGroup(CustomAPICommandPanelLayout.createSequentialGroup()
                                    .addComponent(CustomCommandEntryLabel)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                    .addComponent(CustomCommandEntryTextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE, 121,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGap(18, 18, 18).addComponent(CustomCommandJsonCheckBox)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(CustomCommandSubmitButton))
                            .addGroup(CustomAPICommandPanelLayout.createSequentialGroup()
                                    .addComponent(CustomAPICommandCurrentMiner)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(CustomCommandMinerSelectionBox,
                                            javax.swing.GroupLayout.PREFERRED_SIZE, 173,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
    CustomAPICommandPanelLayout.setVerticalGroup(CustomAPICommandPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(CustomAPICommandPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(CustomAPICommandPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(CustomAPICommandCurrentMiner).addComponent(
                                    CustomCommandMinerSelectionBox, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(20, 20, 20)
                    .addGroup(CustomAPICommandPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(CustomCommandEntryLabel)
                            .addComponent(CustomCommandEntryTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(CustomCommandSubmitButton).addComponent(CustomCommandJsonCheckBox))
                    .addGap(18, 18, 18).addComponent(CustomCommandOutputLabel).addGap(7, 7, 7)
                    .addComponent(CustomCommandOutputScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 234,
                            javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

    MinerInformationTabbedPane.addTab("Custom Command", CustomAPICommandPanel);

    //System.out.println(existing_miners.toString());
    MinerVitalStatsTextPane.setContentType("text/html");
    MinerVitalStatsTextPane.setEditable(false);
    MinerVitalStatsTextPane.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
        public void propertyChange(java.beans.PropertyChangeEvent evt) {
            MinerVitalStatsTextPanePropertyChange(evt);
        }
    });
    jScrollPane2.setViewportView(MinerVitalStatsTextPane);

    jLabel1.setFont(new java.awt.Font("DejaVu Sans", 3, 14)); // NOI18N
    jLabel1.setText("Vital Miner Statistics");

    VitalStatsRefreshButton.setText("Refresh");
    VitalStatsRefreshButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            VitalStatsRefreshButtonActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout MinerVitalsPanelLayout = new javax.swing.GroupLayout(MinerVitalsPanel);
    MinerVitalsPanel.setLayout(MinerVitalsPanelLayout);
    MinerVitalsPanelLayout.setHorizontalGroup(
            MinerVitalsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(MinerVitalsPanelLayout.createSequentialGroup().addContainerGap()
                            .addGroup(MinerVitalsPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(MinerVitalsPanelLayout.createSequentialGroup()
                                            .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                    645, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(VitalStatsRefreshButton))
                                    .addComponent(jLabel1))
                            .addContainerGap(93, Short.MAX_VALUE)));
    MinerVitalsPanelLayout.setVerticalGroup(MinerVitalsPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(MinerVitalsPanelLayout.createSequentialGroup().addGap(16, 16, 16).addComponent(jLabel1)
                    .addGap(18, 18, 18)
                    .addGroup(MinerVitalsPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 306,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(VitalStatsRefreshButton))
                    .addContainerGap(229, Short.MAX_VALUE)));

    MinerInformationTabbedPane.addTab("Vitals", MinerVitalsPanel);

    javax.swing.GroupLayout MinerInformationPanelLayout = new javax.swing.GroupLayout(MinerInformationPanel);
    MinerInformationPanel.setLayout(MinerInformationPanelLayout);
    MinerInformationPanelLayout.setHorizontalGroup(
            MinerInformationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(MinerInformationTabbedPane));
    MinerInformationPanelLayout.setVerticalGroup(
            MinerInformationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(MinerInformationPanelLayout.createSequentialGroup().addContainerGap()
                            .addComponent(MinerInformationTabbedPane, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    615, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

    MainTabbedPane.addTab("Miners", MinerInformationPanel);

    BTCConversionRateLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    BTCConversionRateLabel.setText("BTC Conversion Rate:");

    NetworkDifficultyLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    NetworkDifficultyLabel.setText("Network Difficulty:");

    EstimatedPayoutLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    EstimatedPayoutLabel.setText("Estimated Payout:");

    NetworkDifficultyTextField.setEditable(false);

    BTCConversionRateTextField.setEditable(false);
    BTCConversionRateTextField.setText("Not configured yet");

    EstimatedPayoutTextField.setEditable(false);

    CurrentBlockHashLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    CurrentBlockHashLabel.setText("Current Block Hash:");

    CurrentBlockHashTextField.setEditable(false);

    CurrentBlockTimeLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    CurrentBlockTimeLabel.setText("Current Block Time:");

    CurrentBlockTimeTextField.setEditable(false);

    GenericInformationCurrentMinerLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    GenericInformationCurrentMinerLabel.setText("Current Miner:");

    MinerSelectionBox5.setModel(new javax.swing.DefaultComboBoxModel(miners.toArray()));

    binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
            org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, CustomCommandMinerSelectionBox,
            org.jdesktop.beansbinding.ELProperty.create("${selectedItem}"), MinerSelectionBox5,
            org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
    bindingGroup.addBinding(binding);

    BitcoinInformationRefreshButton.setText("Refresh");
    BitcoinInformationRefreshButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            BitcoinInformationRefreshButtonActionPerformed(evt);
        }
    });

    GenericInformationCoinbaseUserLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    GenericInformationCoinbaseUserLabel.setText("Current Coinbase User:");

    existing_coinbase = currentCoinbase();
    ;
    ArrayList<String> coinbase_users = new ArrayList<>();
    if (existing_coinbase == null) {
        coinbase_users.add("No Users");
    } else {
        for (int i = 0; i < existing_coinbase.size(); i++) {
            coinbase_users.add(existing_coinbase.get(i).get("email"));
        }
    }
    GenericInformationCoinbaseUserSelectionBox
            .setModel(new javax.swing.DefaultComboBoxModel(coinbase_users.toArray()));
    GenericInformationCoinbaseUserSelectionBox.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            GenericInformationCoinbaseUserSelectionBoxActionPerformed(evt);
        }
    });

    GenericInformationAbbreviatedPreferredCurrencyLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    GenericInformationAbbreviatedPreferredCurrencyLabel
            .addPropertyChangeListener(new java.beans.PropertyChangeListener() {
                public void propertyChange(java.beans.PropertyChangeEvent evt) {
                    GenericInformationAbbreviatedPreferredCurrencyLabelPropertyChange(evt);
                }
            });

    GenericInformationAbbreviatedPreferredCurrencyLabel2.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N

    binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
            org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
            GenericInformationAbbreviatedPreferredCurrencyLabel,
            org.jdesktop.beansbinding.ELProperty.create("${text}"),
            GenericInformationAbbreviatedPreferredCurrencyLabel2,
            org.jdesktop.beansbinding.BeanProperty.create("text"));
    bindingGroup.addBinding(binding);

    javax.swing.GroupLayout BTCGenericInformationPanelLayout = new javax.swing.GroupLayout(
            BTCGenericInformationPanel);
    BTCGenericInformationPanel.setLayout(BTCGenericInformationPanelLayout);
    BTCGenericInformationPanelLayout.setHorizontalGroup(BTCGenericInformationPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(BTCGenericInformationPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(BTCGenericInformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(EstimatedPayoutLabel).addComponent(BTCConversionRateLabel)
                            .addComponent(NetworkDifficultyLabel).addComponent(CurrentBlockHashLabel)
                            .addComponent(GenericInformationCurrentMinerLabel)
                            .addComponent(CurrentBlockTimeLabel)
                            .addComponent(GenericInformationCoinbaseUserLabel))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(BTCGenericInformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(BTCGenericInformationPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(CurrentBlockHashTextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE, 559,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGroup(BTCGenericInformationPanelLayout.createSequentialGroup()
                                            .addComponent(MinerSelectionBox5,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE, 173,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(BitcoinInformationRefreshButton))
                                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                            BTCGenericInformationPanelLayout.createSequentialGroup()
                                                    .addGroup(BTCGenericInformationPanelLayout
                                                            .createParallelGroup(
                                                                    javax.swing.GroupLayout.Alignment.TRAILING)
                                                            .addComponent(EstimatedPayoutTextField,
                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                            .addComponent(BTCConversionRateTextField))
                                                    .addPreferredGap(
                                                            javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                    .addGroup(BTCGenericInformationPanelLayout
                                                            .createParallelGroup(
                                                                    javax.swing.GroupLayout.Alignment.LEADING,
                                                                    false)
                                                            .addComponent(
                                                                    GenericInformationAbbreviatedPreferredCurrencyLabel,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                    Short.MAX_VALUE)
                                                            .addComponent(
                                                                    GenericInformationAbbreviatedPreferredCurrencyLabel2,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE, 89,
                                                                    Short.MAX_VALUE))
                                                    .addGap(184, 184, 184))
                                    .addComponent(NetworkDifficultyTextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE, 280,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(CurrentBlockTimeTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    280, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(GenericInformationCoinbaseUserSelectionBox,
                                    javax.swing.GroupLayout.PREFERRED_SIZE, 255,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addContainerGap()));
    BTCGenericInformationPanelLayout.setVerticalGroup(BTCGenericInformationPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(BTCGenericInformationPanelLayout.createSequentialGroup().addGap(3, 3, 3)
                    .addGroup(BTCGenericInformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(GenericInformationCurrentMinerLabel)
                            .addComponent(MinerSelectionBox5, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(BitcoinInformationRefreshButton))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(BTCGenericInformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(GenericInformationCoinbaseUserLabel)
                            .addComponent(GenericInformationCoinbaseUserSelectionBox,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGap(7, 7, 7)
                    .addGroup(BTCGenericInformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(NetworkDifficultyTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(NetworkDifficultyLabel))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(BTCGenericInformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(CurrentBlockHashTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(CurrentBlockHashLabel))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(BTCGenericInformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(CurrentBlockTimeTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(CurrentBlockTimeLabel))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(BTCGenericInformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(BTCConversionRateTextField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(BTCConversionRateLabel)
                            .addComponent(GenericInformationAbbreviatedPreferredCurrencyLabel,
                                    javax.swing.GroupLayout.PREFERRED_SIZE, 27,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(BTCGenericInformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(GenericInformationAbbreviatedPreferredCurrencyLabel2,
                                    javax.swing.GroupLayout.Alignment.TRAILING,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                                    Short.MAX_VALUE)
                            .addGroup(BTCGenericInformationPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(EstimatedPayoutLabel).addComponent(EstimatedPayoutTextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGap(372, 372, 372)));

    BitcoinInformationTabbedPane.addTab("Generic Information", BTCGenericInformationPanel);

    CoinbaseAPILabel.setFont(new java.awt.Font("DejaVu Serif", 3, 14)); // NOI18N
    CoinbaseAPILabel.setText("Buy, Sell, Trade BTC Here");

    CoinbaseAPICurrentUserLabel.setText("Current Coinbase User");

    CoinbaseAPIUserSelectionBox.setModel(new javax.swing.DefaultComboBoxModel(existingCoinbase().toArray()));

    binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
            org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
            GenericInformationCoinbaseUserSelectionBox,
            org.jdesktop.beansbinding.ELProperty.create("${selectedItem}"), CoinbaseAPIUserSelectionBox,
            org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
    bindingGroup.addBinding(binding);

    javax.swing.GroupLayout CoinbaseAPIPanelLayout = new javax.swing.GroupLayout(CoinbaseAPIPanel);
    CoinbaseAPIPanel.setLayout(CoinbaseAPIPanelLayout);
    CoinbaseAPIPanelLayout.setHorizontalGroup(
            CoinbaseAPIPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(CoinbaseAPIPanelLayout.createSequentialGroup().addContainerGap()
                            .addGroup(CoinbaseAPIPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(CoinbaseAPILabel, javax.swing.GroupLayout.PREFERRED_SIZE, 351,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGroup(CoinbaseAPIPanelLayout.createSequentialGroup()
                                            .addComponent(CoinbaseAPICurrentUserLabel)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(CoinbaseAPIUserSelectionBox, 0,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                            .addContainerGap(469, Short.MAX_VALUE)));
    CoinbaseAPIPanelLayout.setVerticalGroup(CoinbaseAPIPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(CoinbaseAPIPanelLayout.createSequentialGroup().addGap(18, 18, 18)
                    .addComponent(CoinbaseAPILabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(CoinbaseAPIPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(CoinbaseAPICurrentUserLabel).addComponent(CoinbaseAPIUserSelectionBox,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addContainerGap(526, Short.MAX_VALUE)));

    BitcoinInformationTabbedPane.addTab("Coinbase API", CoinbaseAPIPanel);

    EligiusStatusLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 14)); // NOI18N

    binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
            org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, EligiusUsernameSelectionBox,
            org.jdesktop.beansbinding.ELProperty.create("${selectedItem}"), EligiusStatusLabel,
            org.jdesktop.beansbinding.BeanProperty.create("text"));
    bindingGroup.addBinding(binding);

    /*
    org.planetcrypto.bitcoin.PlanetCryptoNetworkMethods parser = new org.planetcrypto.bitcoin.PlanetCryptoNetworkMethods();
    ArrayList<String> eligius_names = cfg.getEligius();
    //System.out.println(eligius_names);
    EligiusUsernameSelectionBox.setModel(new javax.swing.DefaultComboBoxModel(eligius_names.toArray()));
    String eligius_name = EligiusUsernameSelectionBox.getSelectedItem().toString();
            
    if (eligius_name.startsWith("Eligius not configured")) {
    EligiusHashRateInformationTable.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {"12 Hours", null, null},
            {"3 Hours", null, null},
            {"22.5 Minutes", null, null},
            {"256 Seconds", null, null},
            {"128 Seconds", null, null}
        },
        new String [] {
            "Interval", "Hashrate", "Weighted Shares"
        }
    ) {
        Class[] types = new Class [] {
            java.lang.String.class, java.lang.String.class, java.lang.Integer.class
        };
        boolean[] canEdit = new boolean [] {
            false, false, false
        };
            
        public Class getColumnClass(int columnIndex) {
            return types [columnIndex];
        }
            
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return canEdit [columnIndex];
        }
    });
    } else {
    String hashrates = parser.getHashRate("&username=" + eligius_name);
    EligiusHashRateInformationTable.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {"12 Hours", parser.getHashRateIntervals(hashrates, "av43200").get(0), parser.getHashRateIntervals(hashrates, "av43200").get(1)},
            {"3 Hours", parser.getHashRateIntervals(hashrates, "av10800").get(0), parser.getHashRateIntervals(hashrates, "av10800").get(1)},
            {"22.5 Minutes", parser.getHashRateIntervals(hashrates, "av1350").get(0), parser.getHashRateIntervals(hashrates, "av1350").get(1)},
            {"256 Seconds", parser.getHashRateIntervals(hashrates, "av256").get(0), parser.getHashRateIntervals(hashrates, "av256").get(1)},
            {"128 Seconds", parser.getHashRateIntervals(hashrates, "av128").get(0), parser.getHashRateIntervals(hashrates, "av128").get(1)}
        },
        new String [] {
            "Interval", "Hashrate", "Weighted Shares"
        }
    ) {
        Class[] types = new Class [] {
            java.lang.String.class, java.lang.String.class, java.lang.Integer.class
        };
        boolean[] canEdit = new boolean [] {
            false, false, false
        };
            
        public Class getColumnClass(int columnIndex) {
            return types [columnIndex];
        }
            
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return canEdit [columnIndex];
        }
    });
    }
    cfg.closeAll();
    EligiusHashRateInformationScrollPane.setViewportView(EligiusHashRateInformationTable);
    */
    EligiusPoolInformationRefreshButtonActionPerformed(null);

    /*
    Thread t = new Thread(new Runnable() {
    @Override
    public void run() {
        eligius_name = EligiusUsernameSelectionBox.getSelectedItem().toString();
        if (eligius_name.startsWith("Eligius not configured")) {
            EligiusPayoutInformationTable.setModel(new javax.swing.table.DefaultTableModel(
                new Object [][] {
                    {"bal", null},
                    {"ec", null},
                    {"everpaid", null},
                    {"lbal", null},
                    {"lec", null}
                },
                new String [] {
                    "", "Amount"
                }
            ) {
                Class[] types = new Class [] {
                    java.lang.String.class, java.lang.String.class, java.lang.Integer.class
                };
                boolean[] canEdit = new boolean [] {
                    false, false, false
                };
            
                public Class getColumnClass(int columnIndex) {
                    return types [columnIndex];
                }
            
                public boolean isCellEditable(int rowIndex, int columnIndex) {
                    return canEdit [columnIndex];
                }}
            );
        } else {
            String stats = parser.getUserStat("&username=" + eligius_name);
            EligiusPayoutInformationTable.setModel(new javax.swing.table.DefaultTableModel(
                new Object [][] {
                    {"bal", parser.getUserStats(stats, "bal")},
                    {"ec", parser.getUserStats(stats, "ec")},
                    {"everpaid", parser.getUserStats(stats, "everpaid")},
                    {"lbal", parser.getUserStats(stats, "lbal")},
                    {"lec", parser.getUserStats(stats, "lec")}
                },
                new String [] {
                    "", "Amount"
                }
            ) {
                Class[] types = new Class [] {
                    java.lang.String.class, java.lang.String.class, java.lang.Integer.class
                };
                boolean[] canEdit = new boolean [] {
                    false, false, false
                };
            
                public Class getColumnClass(int columnIndex) {
                    return types [columnIndex];
                }
            
                public boolean isCellEditable(int rowIndex, int columnIndex) {
                    return canEdit [columnIndex];
                }}
            );
            BFGMinerAPICoinbase coinbase = new BFGMinerAPICoinbase();
            String rate = coinbase.getContent("https://coinbase.com/api/v1/currencies/exchange_rates", "btc_to_usd");
            String payout = EligiusPayoutInformationTable.getValueAt(0, 1).toString().replace(" BTC", "");
            BTCConversionRateTextField.setText(rate);
            EstimatedPayoutTextField.setText(String.valueOf(Float.parseFloat(rate)* Float.parseFloat(payout)));
            
        }
        //BFGMinerAPICoinbase coinbase = new BFGMinerAPICoinbase();
        //BTCConversionRateTextField.setText(coinbase.getContent("https://coinbase.com/api/v1/currencies/exchange_rates", "btc_to_usd"));
        //if (EligiusPayoutInformationTable.getValueAt(0, 1) != null) {
            //    System.out.println(EligiusPayoutInformationTable.getValueAt(0, 1).toString());
            //} else {
            //    System.out.println("No Value yet");
            //}
        EligiusPayoutInformationTable.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                EligiusPayoutInformationTablePropertyChange(evt);
            }
        });
        EligiusPayoutInformationPayoutScrollPane.setViewportView(EligiusPayoutInformationTable);
    }
    });
    t.start();
    */
    //EligiusPayoutInformationTableAncestorRemoved(null);

    EligiusPoolInformationRefreshButton.setText("Refresh");
    EligiusPoolInformationRefreshButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            EligiusPoolInformationRefreshButtonActionPerformed(evt);
        }
    });

    EligiousPayoutKeyInformationTextPane.setFont(new Font("Dialog", Font.PLAIN, 14));
    EligiousPayoutKeyInformationTextPane.setContentType("text/html");
    EligiousPayoutKeyInformationTextPane.setText(
            "<html><ul><li><em><b>bal</b></em> - Current unpaid balance including estimates for the current round</li>"
                    + "<li><em><b>ec</b></em> - Sum of CPPSRB shelved shares and SMPPS extra credit (if applicable) including estimates for the current round</li>"
                    + "<li><em><b>everpaid</b></em> - Total actually paid (and verifyable in the blockchain) to this miner</li>"
                    + "<li><em><b>lbal</b></em> - Unpaid balance as of the last block (no estimates)</li>"
                    + "<li><em><b>lec</b></em> - Sum of CPPSRB shelved shares and SMPPS extra credit (if applicable) as of the last block (no estimates)</li></ul></html>");
    EligiousPayoutKeyInformationTextPane.setEditable(false);
    EligiusPayoutKeyInformationScrollPane.setViewportView(EligiousPayoutKeyInformationTextPane);

    existing_eligius = currentEligius();
    EligiusUsernameSelectionBox.setModel(new javax.swing.DefaultComboBoxModel(existing_eligius.toArray()));
    EligiusUsernameSelectionBox.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            EligiusUsernameSelectionBoxActionPerformed(evt);
        }
    });

    EligiusUsernameClipboardCopyButton.setText("Copy To Clipboard");
    EligiusUsernameClipboardCopyButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            EligiusUsernameClipboardCopyButtonActionPerformed(evt);
        }
    });

    EligiusPoolCurrentUsernameLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 12)); // NOI18N
    EligiusPoolCurrentUsernameLabel.setText("Eligius Username:");

    EligiusOpenBrowserButton.setText("Open Eligius in Browser");
    EligiusOpenBrowserButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            EligiusOpenBrowserButtonActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout EligiusPoolInformationPanelLayout = new javax.swing.GroupLayout(
            EligiusPoolInformationPanel);
    EligiusPoolInformationPanel.setLayout(EligiusPoolInformationPanelLayout);
    EligiusPoolInformationPanelLayout.setHorizontalGroup(EligiusPoolInformationPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(EligiusPoolInformationPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(EligiusPoolInformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(EligiusPayoutKeyInformationScrollPane,
                                    javax.swing.GroupLayout.PREFERRED_SIZE, 695,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(EligiusPoolInformationPanelLayout.createSequentialGroup()
                                    .addComponent(EligiusPayoutInformationPayoutScrollPane,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(EligiusPoolInformationRefreshButton))
                            .addComponent(EligiusHashRateInformationScrollPane,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(EligiusPoolInformationPanelLayout.createSequentialGroup()
                                    .addGroup(EligiusPoolInformationPanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
                                                    false)
                                            .addGroup(EligiusPoolInformationPanelLayout.createSequentialGroup()
                                                    .addComponent(EligiusStatusLabel,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE, 408,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                                    .addPreferredGap(
                                                            javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                            Short.MAX_VALUE)
                                                    .addComponent(EligiusUsernameClipboardCopyButton))
                                            .addGroup(EligiusPoolInformationPanelLayout.createSequentialGroup()
                                                    .addComponent(EligiusPoolCurrentUsernameLabel)
                                                    .addGap(3, 3, 3).addComponent(EligiusUsernameSelectionBox,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE, 459,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE)))
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(EligiusOpenBrowserButton)))
                    .addGap(14, 14, 14)));
    EligiusPoolInformationPanelLayout.setVerticalGroup(EligiusPoolInformationPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(EligiusPoolInformationPanelLayout.createSequentialGroup().addGap(13, 13, 13)
                    .addGroup(EligiusPoolInformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(EligiusUsernameSelectionBox, javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(EligiusPoolCurrentUsernameLabel))
                    .addGap(16, 16, 16)
                    .addGroup(EligiusPoolInformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(EligiusStatusLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 18,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(EligiusUsernameClipboardCopyButton)
                            .addComponent(EligiusOpenBrowserButton))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(EligiusHashRateInformationScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE,
                            113, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(18, 18, 18)
                    .addGroup(EligiusPoolInformationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(EligiusPayoutInformationPayoutScrollPane,
                                    javax.swing.GroupLayout.PREFERRED_SIZE, 126,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(EligiusPoolInformationRefreshButton))
                    .addGap(18, 18, 18).addComponent(EligiusPayoutKeyInformationScrollPane,
                            javax.swing.GroupLayout.PREFERRED_SIZE, 159, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap()));

    BitcoinInformationTabbedPane.addTab("Pool Information", EligiusPoolInformationPanel);

    javax.swing.GroupLayout BTCInformationPaneLayout = new javax.swing.GroupLayout(BTCInformationPane);
    BTCInformationPane.setLayout(BTCInformationPaneLayout);
    BTCInformationPaneLayout.setHorizontalGroup(
            BTCInformationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(BitcoinInformationTabbedPane));
    BTCInformationPaneLayout.setVerticalGroup(
            BTCInformationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(BitcoinInformationTabbedPane));

    MainTabbedPane.addTab("Bitcoin Information", BTCInformationPane);

    MinerConfigurationPanel.addFocusListener(new java.awt.event.FocusAdapter() {
        public void focusGained(java.awt.event.FocusEvent evt) {
            MinerConfigurationPanelFocusGained(evt);
        }
    });

    ConfigurationPromptLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 14)); // NOI18N
    ConfigurationPromptLabel
            .setText("Please fill in the following form to configure this interface. Changes are persistent.");

    ConfigurationRemoveMinerButton.setText("Remove Miner");
    ConfigurationRemoveMinerButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            ConfigurationRemoveMinerButtonActionPerformed(evt);
        }
    });

    ConfigurationAddMinerButton.setText("Add Miner");
    ConfigurationAddMinerButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            ConfigurationAddMinerButtonActionPerformed(evt);
        }
    });

    ConfigurationAddMinerNameLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    ConfigurationAddMinerNameLabel.setText("Miner Name:");

    ConfigurationAddMinerIPLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    ConfigurationAddMinerIPLabel.setText("Miner IP:");

    ConfigurationMinerPortLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    ConfigurationMinerPortLabel.setText("Miner Port:");

    ConfigurationAddMinersLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 14)); // NOI18N
    ConfigurationAddMinersLabel.setText("Add Miners");

    ConfigurationRemoveMinersLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 14)); // NOI18N
    ConfigurationRemoveMinersLabel.setText("Remove Miners");

    ConfigurationRemoveMinerNameLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    ConfigurationRemoveMinerNameLabel.setText("Miner Name:");

    ConfigurationCurrentMinersLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 14)); // NOI18N
    ConfigurationCurrentMinersLabel.setText("Current Miners:");

    ConfigurationRemoveMinerIPLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    ConfigurationRemoveMinerIPLabel.setText("or Miner IP:");

    ConfigurationResolveHostAddressLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    ConfigurationResolveHostAddressLabel.setText("Resolve host address:");

    ConfigurationResolveHostAddressButton.setText("Get IP");
    ConfigurationResolveHostAddressButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            ConfigurationResolveHostAddressButtonActionPerformed(evt);
        }
    });

    ConfigurationCurrentMinersTextPane.setEditable(false);
    ConfigurationCurrentMinersTextPane.setFont(new Font("Monospaced", 0, 12)); // NOI18N
    ConfigurationCurrentMinersTextPane.setContentType("text/html");
    org.planetcrypto.bitcoin.PlanetCryptoBitcoinUserConfiguration current_miners_configuration = new org.planetcrypto.bitcoin.PlanetCryptoBitcoinUserConfiguration();
    ConfigurationCurrentMinersTextPane.setText(current_miners_configuration.currentMiners());
    current_miners_configuration.closeAll();
    ConfigurationCurrentMinersTextPane.setEditable(false);
    ConfigurationCurrentMinersScrollPane.setViewportView(ConfigurationCurrentMinersTextPane);

    javax.swing.GroupLayout MinerConfigurationPanelLayout = new javax.swing.GroupLayout(
            MinerConfigurationPanel);
    MinerConfigurationPanel.setLayout(MinerConfigurationPanelLayout);
    MinerConfigurationPanelLayout.setHorizontalGroup(MinerConfigurationPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(MinerConfigurationPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(MinerConfigurationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(MinerConfigurationPanelLayout.createSequentialGroup()
                                    .addComponent(ConfigurationRemoveMinerNameLabel)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(ConfigurationRemoveMinerNameTextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE, 123,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                    .addComponent(ConfigurationRemoveMinerIPLabel)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                    .addComponent(ConfigurationRemoveMinerIPTextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE, 129,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                    .addComponent(ConfigurationRemoveMinerButton))
                            .addComponent(ConfigurationPromptLabel).addComponent(ConfigurationAddMinersLabel)
                            .addComponent(ConfigurationRemoveMinersLabel)
                            .addComponent(ConfigurationCurrentMinersLabel)
                            .addGroup(MinerConfigurationPanelLayout.createSequentialGroup()
                                    .addGroup(MinerConfigurationPanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING,
                                                    MinerConfigurationPanelLayout.createSequentialGroup()
                                                            .addComponent(ConfigurationResolveHostAddressLabel)
                                                            .addPreferredGap(
                                                                    javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                            .addComponent(
                                                                    ConfigurationResolveHostAddressTextField,
                                                                    javax.swing.GroupLayout.PREFERRED_SIZE, 168,
                                                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                                                            .addPreferredGap(
                                                                    javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                                            .addComponent(
                                                                    ConfigurationResolveHostAddressButton))
                                            .addGroup(MinerConfigurationPanelLayout.createSequentialGroup()
                                                    .addComponent(ConfigurationAddMinerNameLabel)
                                                    .addPreferredGap(
                                                            javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                    .addComponent(ConfigurationAddMinerNameTextField,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE, 126,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                                    .addGap(21, 21, 21)
                                                    .addComponent(ConfigurationAddMinerIPLabel)
                                                    .addPreferredGap(
                                                            javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                    .addComponent(ConfigurationAddMinerIPTextField,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE, 129,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE)))
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(ConfigurationMinerPortLabel)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(ConfigurationMinerPortTextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE, 61,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGap(43, 43, 43).addComponent(ConfigurationAddMinerButton))
                            .addComponent(ConfigurationCurrentMinersScrollPane,
                                    javax.swing.GroupLayout.PREFERRED_SIZE, 333,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
    MinerConfigurationPanelLayout.setVerticalGroup(MinerConfigurationPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(MinerConfigurationPanelLayout.createSequentialGroup().addGap(16, 16, 16)
                    .addComponent(ConfigurationPromptLabel)
                    .addGroup(MinerConfigurationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(MinerConfigurationPanelLayout.createSequentialGroup().addGap(16, 16, 16)
                                    .addComponent(ConfigurationAddMinersLabel)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addGroup(MinerConfigurationPanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                            .addComponent(ConfigurationAddMinerNameLabel)
                                            .addComponent(ConfigurationAddMinerNameTextField,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addComponent(ConfigurationAddMinerIPLabel)
                                            .addComponent(ConfigurationAddMinerIPTextField,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addComponent(ConfigurationMinerPortLabel)
                                            .addComponent(ConfigurationMinerPortTextField,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE)))
                            .addGroup(MinerConfigurationPanelLayout.createSequentialGroup().addGap(37, 37, 37)
                                    .addComponent(ConfigurationAddMinerButton)))
                    .addGap(35, 35, 35)
                    .addGroup(MinerConfigurationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(ConfigurationResolveHostAddressLabel)
                            .addComponent(ConfigurationResolveHostAddressTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(ConfigurationResolveHostAddressButton))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(ConfigurationRemoveMinersLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(MinerConfigurationPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(ConfigurationRemoveMinerNameLabel)
                            .addComponent(ConfigurationRemoveMinerNameTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(ConfigurationRemoveMinerIPLabel)
                            .addComponent(ConfigurationRemoveMinerIPTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(ConfigurationRemoveMinerButton))
                    .addGap(25, 25, 25).addComponent(ConfigurationCurrentMinersLabel).addGap(33, 33, 33)
                    .addComponent(ConfigurationCurrentMinersScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE,
                            209, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

    ConfigurationTabbedPane.addTab("Miners", MinerConfigurationPanel);

    ConfigurationAlarmSettingsPromptLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 14)); // NOI18N
    ConfigurationAlarmSettingsPromptLabel.setText("Configure Alarm Settings Here.");

    ConfigurationMinerTemperatureAlarmLabel.setText("Temperature:");

    ConfigurationMinerFanSpeedAlarmLabel.setText("Fan Speed:");

    ConfigurationMinerHashRateAlarmLabel.setText("Hash Rate:");

    MinerSelectionForAlarmsBox.setModel(new javax.swing.DefaultComboBoxModel(miners.toArray()));

    binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(
            org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, MinerSelectionBox5,
            org.jdesktop.beansbinding.ELProperty.create("${selectedItem}"), MinerSelectionForAlarmsBox,
            org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
    bindingGroup.addBinding(binding);

    AlarmsCurrentMinerLabel.setText("Current Miner:");

    ConfigurationAlarmsHWErrPercentLabel.setText("Hardware Errors:");

    ConfigurationMinerTempAlarmTextField.setHorizontalAlignment(javax.swing.JTextField.RIGHT);

    ConfigurationFanSpeedAlarmTextField.setHorizontalAlignment(javax.swing.JTextField.RIGHT);

    ConfigurationMinerHashRateAlarmTextField.setHorizontalAlignment(javax.swing.JTextField.RIGHT);

    ConfigurationMinerHardwareErrPercentAlarmTextField.setHorizontalAlignment(javax.swing.JTextField.RIGHT);

    ConfigurationDegreesCelsiusLabel.setText("C");

    ConfigurationFanRPMLabel.setText("RPM");

    ConfigurationHashRatePostfixComboBox
            .setModel(new javax.swing.DefaultComboBoxModel(new String[] { "TH/s", "GH/s", "MH/s" }));
    ConfigurationHashRatePostfixComboBox.setSelectedIndex(1);

    ConfigurationHWErrorPercentLabel.setText("%");

    ConfigurationMinerTempAlarmUpdateButton.setText("Update");
    ConfigurationMinerTempAlarmUpdateButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            ConfigurationMinerTempAlarmUpdateButtonActionPerformed(evt);
        }
    });

    ConfigurationMinerFanSpeedAlarmUpdateButton.setText("Update");
    ConfigurationMinerFanSpeedAlarmUpdateButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            ConfigurationMinerFanSpeedAlarmUpdateButtonActionPerformed(evt);
        }
    });

    ConfigurationMinerHashRateAlarmUpdateButton.setText("Update");
    ConfigurationMinerHashRateAlarmUpdateButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            ConfigurationMinerHashRateAlarmUpdateButtonActionPerformed(evt);
        }
    });

    ConfigurationMinerHardwareErrPercentAlarmUpdateButton.setText("Update");
    ConfigurationMinerHardwareErrPercentAlarmUpdateButton
            .addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    ConfigurationMinerHardwareErrPercentAlarmUpdateButtonActionPerformed(evt);
                }
            });

    ConfigurationCurrentMinerAlarmsTextPane.setContentType(("text/html"));
    /*StringBuffer current_alarms = new StringBuffer();
    String temp = new String();
    Object temp_type = new Object();
    HashMap<String, Object> temp_alarms = new HashMap<>();
    current_alarms.append(CurrentAlarmsHeader);
    System.out.println(existing_miners.toString());
    for (int i = 0; i < existing_miners.size(); i++) {
    temp = existing_miners.get(i).get("name");
    if (temp.equals("No Miners")) {
        current_alarms.append(newrow);
        for (int j = 0; j < 5; j++) {
            current_alarms.append("None");
            if (j == 4) {
                break;
            }
            current_alarms.append(newcolumn);
        }
        current_alarms.append(closerow);
        current_alarms.append(VitalStatsFooter);
        System.out.println(current_alarms.toString());
        break;
    }
    temp_alarms = cfg.getAlarms(temp);
    if (temp_alarms == null) {
        current_alarms.append(newrow);
        current_alarms.append(temp);
        current_alarms.append(newcolumn);
        for (int j = 0; j < 4; j++) {
            current_alarms.append("None");
            if (j == 3) {
                break;
            }
            current_alarms.append(newcolumn);
        }
        current_alarms.append(closerow);
        current_alarms.append(VitalStatsFooter);
        System.out.println(current_alarms.toString());
        break;
    }
    current_alarms.append(newrow);
    current_alarms.append(temp);
    current_alarms.append(newcolumn);
    current_alarms.append(temp_alarms.get("fan"));
    current_alarms.append(newcolumn);
    current_alarms.append(temp_alarms.get("temp"));
    current_alarms.append(newcolumn);
    temp_type = temp_alarms.get("hash_rate_type");
    temp_type = (temp_type == null) ? "GH/s" : temp_type.toString();
    current_alarms.append(temp_alarms.get("hash_rate") + " " + temp_type);
    current_alarms.append(newcolumn);
    current_alarms.append(temp_alarms.get("hw_err"));
    current_alarms.append(closerow);
    current_alarms.append(VitalStatsFooter);
    }
    ConfigurationCurrentMinerAlarmsTextPane.setText(current_alarms.toString());
    */
    ConfigurationCurrentMinerAlarmsTextPanePropertyChange(null);
    ConfigurationCurrentMinerAlarmsTextPane.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
        public void propertyChange(java.beans.PropertyChangeEvent evt) {
            ConfigurationCurrentMinerAlarmsTextPanePropertyChange(evt);
        }
    });
    ConfigurationCurrentMinerAlarmsScrollPane.setViewportView(ConfigurationCurrentMinerAlarmsTextPane);

    ConfigurationCurrentMinerAlarmsLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 12)); // NOI18N
    ConfigurationCurrentMinerAlarmsLabel.setText("Current alarms:");

    javax.swing.GroupLayout ConfigurationAlarmPanelLayout = new javax.swing.GroupLayout(
            ConfigurationAlarmPanel);
    ConfigurationAlarmPanel.setLayout(ConfigurationAlarmPanelLayout);
    ConfigurationAlarmPanelLayout.setHorizontalGroup(ConfigurationAlarmPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ConfigurationAlarmPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(ConfigurationAlarmPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(ConfigurationCurrentMinerAlarmsScrollPane,
                                    javax.swing.GroupLayout.PREFERRED_SIZE, 371,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(ConfigurationAlarmPanelLayout.createSequentialGroup()
                                    .addGroup(ConfigurationAlarmPanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                            .addComponent(ConfigurationAlarmSettingsPromptLabel,
                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                            .addGroup(ConfigurationAlarmPanelLayout.createSequentialGroup()
                                                    .addGroup(ConfigurationAlarmPanelLayout
                                                            .createParallelGroup(
                                                                    javax.swing.GroupLayout.Alignment.TRAILING,
                                                                    false)
                                                            .addComponent(ConfigurationAlarmsHWErrPercentLabel,
                                                                    javax.swing.GroupLayout.Alignment.LEADING,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                    Short.MAX_VALUE)
                                                            .addComponent(
                                                                    ConfigurationMinerTemperatureAlarmLabel,
                                                                    javax.swing.GroupLayout.Alignment.LEADING,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                    Short.MAX_VALUE)
                                                            .addComponent(ConfigurationMinerFanSpeedAlarmLabel,
                                                                    javax.swing.GroupLayout.Alignment.LEADING,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                    Short.MAX_VALUE)
                                                            .addComponent(ConfigurationMinerHashRateAlarmLabel,
                                                                    javax.swing.GroupLayout.Alignment.LEADING,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                    Short.MAX_VALUE)
                                                            .addComponent(AlarmsCurrentMinerLabel,
                                                                    javax.swing.GroupLayout.Alignment.LEADING,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                    Short.MAX_VALUE))
                                                    .addPreferredGap(
                                                            javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                    .addGroup(ConfigurationAlarmPanelLayout
                                                            .createParallelGroup(
                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                            .addComponent(MinerSelectionForAlarmsBox,
                                                                    javax.swing.GroupLayout.PREFERRED_SIZE, 173,
                                                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                                                            .addGroup(ConfigurationAlarmPanelLayout
                                                                    .createSequentialGroup()
                                                                    .addGroup(ConfigurationAlarmPanelLayout
                                                                            .createParallelGroup(
                                                                                    javax.swing.GroupLayout.Alignment.TRAILING,
                                                                                    false)
                                                                            .addComponent(
                                                                                    ConfigurationMinerHardwareErrPercentAlarmTextField,
                                                                                    javax.swing.GroupLayout.Alignment.LEADING,
                                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                    129, Short.MAX_VALUE)
                                                                            .addComponent(
                                                                                    ConfigurationMinerHashRateAlarmTextField,
                                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                                            .addComponent(
                                                                                    ConfigurationFanSpeedAlarmTextField,
                                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                                            .addComponent(
                                                                                    ConfigurationMinerTempAlarmTextField,
                                                                                    javax.swing.GroupLayout.Alignment.LEADING))
                                                                    .addPreferredGap(
                                                                            javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                                    .addGroup(ConfigurationAlarmPanelLayout
                                                                            .createParallelGroup(
                                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                                            .addComponent(
                                                                                    ConfigurationDegreesCelsiusLabel)
                                                                            .addComponent(
                                                                                    ConfigurationFanRPMLabel)
                                                                            .addComponent(
                                                                                    ConfigurationHashRatePostfixComboBox,
                                                                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                                                                            .addComponent(
                                                                                    ConfigurationHWErrorPercentLabel))))))
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                    .addGroup(ConfigurationAlarmPanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(ConfigurationMinerHashRateAlarmUpdateButton)
                                            .addComponent(ConfigurationMinerHardwareErrPercentAlarmUpdateButton)
                                            .addComponent(ConfigurationMinerTempAlarmUpdateButton)
                                            .addComponent(ConfigurationMinerFanSpeedAlarmUpdateButton)))
                            .addComponent(ConfigurationCurrentMinerAlarmsLabel))
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
    ConfigurationAlarmPanelLayout.setVerticalGroup(ConfigurationAlarmPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ConfigurationAlarmPanelLayout.createSequentialGroup().addContainerGap()
                    .addComponent(ConfigurationAlarmSettingsPromptLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(ConfigurationAlarmPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(AlarmsCurrentMinerLabel).addComponent(MinerSelectionForAlarmsBox,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(ConfigurationAlarmPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(ConfigurationMinerTemperatureAlarmLabel)
                            .addComponent(ConfigurationMinerTempAlarmTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(ConfigurationDegreesCelsiusLabel)
                            .addComponent(ConfigurationMinerTempAlarmUpdateButton))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(ConfigurationAlarmPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(ConfigurationMinerFanSpeedAlarmLabel)
                            .addComponent(ConfigurationFanSpeedAlarmTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(ConfigurationFanRPMLabel)
                            .addComponent(ConfigurationMinerFanSpeedAlarmUpdateButton))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(ConfigurationAlarmPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(ConfigurationMinerHashRateAlarmLabel)
                            .addComponent(ConfigurationMinerHashRateAlarmTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(ConfigurationHashRatePostfixComboBox,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(ConfigurationMinerHashRateAlarmUpdateButton))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(ConfigurationAlarmPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(ConfigurationAlarmsHWErrPercentLabel)
                            .addComponent(ConfigurationMinerHardwareErrPercentAlarmTextField,
                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(ConfigurationHWErrorPercentLabel)
                            .addComponent(ConfigurationMinerHardwareErrPercentAlarmUpdateButton))
                    .addGap(18, 18, 18).addComponent(ConfigurationCurrentMinerAlarmsLabel).addGap(18, 18, 18)
                    .addComponent(ConfigurationCurrentMinerAlarmsScrollPane,
                            javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

    ConfigurationTabbedPane.addTab("Alarms", ConfigurationAlarmPanel);

    ConfigurationEligiusLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 14)); // NOI18N
    ConfigurationEligiusLabel.setText("Eligius");

    ConfigurationMiningPoolPromptLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 18)); // NOI18N
    ConfigurationMiningPoolPromptLabel.setText("Use this tab to configure mining pools");

    ConfigurationEligiusUsernameLabel.setText("Eligius Username*:");

    ConfigurationEligiusHelpPromptLabel.setFont(new java.awt.Font("Monospaced", 0, 10)); // NOI18N
    ConfigurationEligiusHelpPromptLabel.setText("*For more information about these fields, please see help*");

    ConfigurationEligiusUsernameAddButton.setText("Add");
    ConfigurationEligiusUsernameAddButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            ConfigurationEligiusUsernameAddButtonActionPerformed(evt);
        }
    });

    ConfigurationEligiusUsernameRemoveButton.setText("Remove");
    ConfigurationEligiusUsernameRemoveButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            ConfigurationEligiusUsernameRemoveButtonActionPerformed(evt);
        }
    });

    ConfigurationEligiusExampleLabel.setFont(new java.awt.Font("DejaVu Serif", 0, 10)); // NOI18N
    ConfigurationEligiusExampleLabel.setText(
            "*User name is the same as Mining Address for example: \"1EXfBqvLTyFbL6Dr5CG1fjxNKEPSezg7yF\"");

    javax.swing.GroupLayout ConfigurationEligiusPoolsPanelLayout = new javax.swing.GroupLayout(
            ConfigurationEligiusPoolsPanel);
    ConfigurationEligiusPoolsPanel.setLayout(ConfigurationEligiusPoolsPanelLayout);
    ConfigurationEligiusPoolsPanelLayout.setHorizontalGroup(ConfigurationEligiusPoolsPanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ConfigurationEligiusPoolsPanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(ConfigurationEligiusPoolsPanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(ConfigurationEligiusPoolsPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(ConfigurationEligiusPoolsPanelLayout.createSequentialGroup()
                                            .addComponent(ConfigurationMiningPoolPromptLabel)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(ConfigurationEligiusHelpPromptLabel))
                                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING,
                                            ConfigurationEligiusPoolsPanelLayout.createSequentialGroup()
                                                    .addComponent(ConfigurationEligiusUsernameLabel)
                                                    .addPreferredGap(
                                                            javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                    .addComponent(ConfigurationEligiusUsernameTextField,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE, 256,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                                    .addGap(18, 18, 18)
                                                    .addComponent(ConfigurationEligiusUsernameAddButton)
                                                    .addPreferredGap(
                                                            javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                                    .addComponent(ConfigurationEligiusUsernameRemoveButton)))
                            .addComponent(ConfigurationEligiusLabel)
                            .addGroup(ConfigurationEligiusPoolsPanelLayout.createSequentialGroup()
                                    .addGap(12, 12, 12).addComponent(ConfigurationEligiusExampleLabel,
                                            javax.swing.GroupLayout.PREFERRED_SIZE, 527,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
    ConfigurationEligiusPoolsPanelLayout.setVerticalGroup(
            ConfigurationEligiusPoolsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(ConfigurationEligiusPoolsPanelLayout.createSequentialGroup().addContainerGap()
                            .addGroup(ConfigurationEligiusPoolsPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(ConfigurationEligiusHelpPromptLabel)
                                    .addComponent(ConfigurationMiningPoolPromptLabel))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(ConfigurationEligiusLabel)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(ConfigurationEligiusPoolsPanelLayout
                                    .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(ConfigurationEligiusUsernameLabel)
                                    .addComponent(ConfigurationEligiusUsernameTextField,
                                            javax.swing.GroupLayout.PREFERRED_SIZE,
                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(ConfigurationEligiusUsernameAddButton)
                                    .addComponent(ConfigurationEligiusUsernameRemoveButton))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(ConfigurationEligiusExampleLabel)
                            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

    ConfigurationTabbedPane.addTab("Pools", ConfigurationEligiusPoolsPanel);

    ConfigurationCoinExchangePanel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N

    ConfigurationCoinbaseLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 14)); // NOI18N
    ConfigurationCoinbaseLabel.setText("Configure Coinbase Here");

    ConfigurationCoinbaseCurrencyLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    ConfigurationCoinbaseCurrencyLabel.setText("Preferred Exchange Currency:");

    ConfigurationCoinbaseCurrencyComboBox.setModel(
            new javax.swing.DefaultComboBoxModel(PlanetCryptoBitcoinCoinbaseCurrency.coinbaseCurrencies()));
    /*
    new javax.swing.DefaultComboBoxModel(
    new String[]{ "Select", "AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD",
        "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTC", "BTN", "BWP",
        "BYR", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC", "CUP", "CVE", "CZK",
        "DJF", "DKK", "DOP", "DZD", "EEK", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL",
        "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR",
        "ILS", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW",
        "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LTL", "LVL", "LYD", "MAD",
        "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MYR",
        "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR",
        "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD",
        "SHP", "SLL", "SOS", "SRD", "STD", "SVC", "SYP", "SZL", "THB", "TJS", "TMM", "TND", "TOP",
        "TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "USD", "UY", "UZS", "VEF", "VND", "VUV", "WST",
        "XAF", "XCD", "XOF", "XPF", "YER", "ZAR", "ZMK", "ZWL" }
    */

    CoinbaseInformationLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 14)); // NOI18N
    CoinbaseInformationLabel.setText("Coinbase User API Information");

    CoinbaseUsernameLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    CoinbaseUsernameLabel.setText("Coinbase Username:");

    CoinbaseAPIKeyLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    CoinbaseAPIKeyLabel.setText("Coinbase API Key:");

    CoinbaseAPISecretKeyLabel.setFont(new java.awt.Font("DejaVu Serif", 1, 12)); // NOI18N
    CoinbaseAPISecretKeyLabel.setText("Coinbase API Secret:");

    AddCoinbaseUsernameButton.setText("Add/Update");
    AddCoinbaseUsernameButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            AddCoinbaseUsernameButtonActionPerformed(evt);
        }
    });

    RemoveCoinbaseUsernameButton.setText("Remove");
    RemoveCoinbaseUsernameButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            RemoveCoinbaseUsernameButtonActionPerformed(evt);
        }
    });

    CurrentCoinbaseConfigurationLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 14)); // NOI18N
    CurrentCoinbaseConfigurationLabel.setText("Current Coinbase Configuration:");

    CurrentCoinbaseConfigurationTextPane.setEditable(false);
    CurrentCoinbaseConfigurationTextPane.setContentType("text/html"); // NOI18N
    /*
    existing_coinbase = currentCoinbase();
    if (existing_coinbase == null) {
        CurrentCoinbaseConfigurationTextPane.setText("<html><body><p><b>No Configuration</b></p></body></html>");
    } else {
        CurrentCoinbaseConfigurationTextPane.setText(existing_coinbase.toString());
    }
    */
    CurrentCoinbaseConfigurationTextPane.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
        public void propertyChange(java.beans.PropertyChangeEvent evt) {
            CurrentCoinbaseConfigurationTextPanePropertyChange(evt);
        }
    });
    CurrentCoinbaseConfigurationScrollPane.setViewportView(CurrentCoinbaseConfigurationTextPane);

    CoinbaseConfigurationVerticalSeparator.setOrientation(javax.swing.SwingConstants.VERTICAL);

    CoinbaseConfigurationInstructionsTextPane.setEditable(false);
    CoinbaseConfigurationInstructionsTextPane.setContentType("text/html"); // NOI18N
    CoinbaseConfigurationInstructionsTextPane.setFont(new java.awt.Font("DejaVu Serif", 0, 12)); // NOI18N
    CoinbaseConfigurationInstructionsTextPane.setText(
            "<html>\n  <head>\n    <style>\n    body {background:#D6D9DF }\n   </style>\n  </head>\n  <body>\n    <ul>\n      <li>At a minimum <b>Coinbase Username</b> and <b>Preferred Exchange Currency</b> are required.</li>\n      <li>To add the minimum required parameters: \n           <ol>\n              <li>Enter the <b>Coinbase Username</b> to add</li>\n              <li>Select your <b>Preferred Exchange Currency</b></li>\n              <li>Click <b>Add/Update</b></li>\n           </ol>\n         </li>\n      <li>To add an API Key:\n           <ol>\n            <li>Enter the <b>Coinbase Username</b> to associate with key</li>\n            <li>Enter <b>Coinbase API Key</b> value</li>\n            <li>Enter <b>Coinbase API Secret</b> Value</li>\n            <li>Select your <b>Preferred Exchange Currency</b></li>\n            <li>Click <b>Add/Update</b></li>\n           </ol>\n         </li>\n      <li>To update/remove configuration associated with a <b>Coinbase Username</b></li>\n         <ol>\n           <li>Enter the <b>Coinbase Username</b> to update</li>\n           <li><b>If removing this configuration, simply click \"Remove\"</b></li>\n           <ul><li><b>Warning: This will remove ALL information from this app associated with this Coinbase Username</b></li></ul>\n           <li><b>If updating this configuration:</b></li>\n           <ul><li>Enter/Select the field to update, and click <b>Add/Update</b></li></ul>\n         </ol>\n    </ul>\n  </body>\n</html>\n");
    CoinbaseConfigurationInstructionsTextPane.setCaretPosition(0);
    CoinbaseConfigurationInstructionsScrollPane.setViewportView(CoinbaseConfigurationInstructionsTextPane);

    CoinbaseConfigurationInstructionsLabel.setFont(new java.awt.Font("DejaVu Serif", 3, 14)); // NOI18N
    CoinbaseConfigurationInstructionsLabel.setText("Configuration Instructions:");

    javax.swing.GroupLayout ConfigurationCoinExchangePanelLayout = new javax.swing.GroupLayout(
            ConfigurationCoinExchangePanel);
    ConfigurationCoinExchangePanel.setLayout(ConfigurationCoinExchangePanelLayout);
    ConfigurationCoinExchangePanelLayout.setHorizontalGroup(ConfigurationCoinExchangePanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ConfigurationCoinExchangePanelLayout.createSequentialGroup().addContainerGap()
                    .addGroup(ConfigurationCoinExchangePanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(CurrentCoinbaseConfigurationScrollPane)
                            .addComponent(ConfigurationCoinbaseLabel)
                            .addGroup(ConfigurationCoinExchangePanelLayout.createSequentialGroup()
                                    .addGroup(ConfigurationCoinExchangePanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addGroup(ConfigurationCoinExchangePanelLayout
                                                    .createSequentialGroup()
                                                    .addGroup(ConfigurationCoinExchangePanelLayout
                                                            .createParallelGroup(
                                                                    javax.swing.GroupLayout.Alignment.LEADING)
                                                            .addGroup(
                                                                    javax.swing.GroupLayout.Alignment.TRAILING,
                                                                    ConfigurationCoinExchangePanelLayout
                                                                            .createSequentialGroup()
                                                                            .addComponent(
                                                                                    ConfigurationCoinbaseCurrencyLabel)
                                                                            .addGap(18, 18, 18).addComponent(
                                                                                    ConfigurationCoinbaseCurrencyComboBox,
                                                                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                                    263,
                                                                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                                                            .addGroup(ConfigurationCoinExchangePanelLayout
                                                                    .createParallelGroup(
                                                                            javax.swing.GroupLayout.Alignment.TRAILING,
                                                                            false)
                                                                    .addComponent(
                                                                            CoinbaseConfigurationSeparator1,
                                                                            javax.swing.GroupLayout.Alignment.LEADING)
                                                                    .addComponent(CoinbaseInformationLabel,
                                                                            javax.swing.GroupLayout.Alignment.LEADING)
                                                                    .addGroup(
                                                                            javax.swing.GroupLayout.Alignment.LEADING,
                                                                            ConfigurationCoinExchangePanelLayout
                                                                                    .createSequentialGroup()
                                                                                    .addGroup(
                                                                                            ConfigurationCoinExchangePanelLayout
                                                                                                    .createParallelGroup(
                                                                                                            javax.swing.GroupLayout.Alignment.LEADING,
                                                                                                            false)
                                                                                                    .addComponent(
                                                                                                            CoinbaseUsernameLabel,
                                                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                                            Short.MAX_VALUE)
                                                                                                    .addComponent(
                                                                                                            CoinbaseAPISecretKeyLabel,
                                                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                                            Short.MAX_VALUE)
                                                                                                    .addComponent(
                                                                                                            CoinbaseAPIKeyLabel,
                                                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                                            Short.MAX_VALUE))
                                                                                    .addGap(18, 18, 18)
                                                                                    .addGroup(
                                                                                            ConfigurationCoinExchangePanelLayout
                                                                                                    .createParallelGroup(
                                                                                                            javax.swing.GroupLayout.Alignment.LEADING)
                                                                                                    .addComponent(
                                                                                                            CoinbaseAPIUsernameTextField)
                                                                                                    .addComponent(
                                                                                                            CoinbaseAPIKeyTextField)
                                                                                                    .addComponent(
                                                                                                            CoinbaseAPISecretKeyTextField,
                                                                                                            javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                                                            330,
                                                                                                            Short.MAX_VALUE)))
                                                                    .addComponent(
                                                                            CoinbaseConfigurationSeparator,
                                                                            javax.swing.GroupLayout.Alignment.LEADING)))
                                                    .addGap(0, 0, 0)
                                                    .addComponent(CoinbaseConfigurationVerticalSeparator,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE, 12,
                                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                                            .addComponent(CurrentCoinbaseConfigurationLabel,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE, 266,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGap(32, 32, 32).addComponent(AddCoinbaseUsernameButton)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(RemoveCoinbaseUsernameButton))
                            .addComponent(CoinbaseConfigurationInstructionsLabel)
                            .addComponent(CoinbaseConfigurationInstructionsScrollPane,
                                    javax.swing.GroupLayout.DEFAULT_SIZE, 791, Short.MAX_VALUE))
                    .addContainerGap(17, Short.MAX_VALUE)));
    ConfigurationCoinExchangePanelLayout.setVerticalGroup(ConfigurationCoinExchangePanelLayout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ConfigurationCoinExchangePanelLayout.createSequentialGroup().addContainerGap()
                    .addComponent(ConfigurationCoinbaseLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(ConfigurationCoinExchangePanelLayout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(ConfigurationCoinExchangePanelLayout.createSequentialGroup()
                                    .addComponent(CoinbaseConfigurationSeparator,
                                            javax.swing.GroupLayout.PREFERRED_SIZE, 10,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(CoinbaseInformationLabel)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addGroup(ConfigurationCoinExchangePanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                            .addComponent(CoinbaseUsernameLabel)
                                            .addComponent(CoinbaseAPIUsernameTextField,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addGroup(ConfigurationCoinExchangePanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                            .addComponent(CoinbaseAPIKeyLabel)
                                            .addComponent(CoinbaseAPIKeyTextField,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addComponent(AddCoinbaseUsernameButton)
                                            .addComponent(RemoveCoinbaseUsernameButton))
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addGroup(ConfigurationCoinExchangePanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                            .addComponent(CoinbaseAPISecretKeyTextField,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addComponent(CoinbaseAPISecretKeyLabel))
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addGroup(ConfigurationCoinExchangePanelLayout
                                            .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                            .addComponent(ConfigurationCoinbaseCurrencyLabel)
                                            .addComponent(ConfigurationCoinbaseCurrencyComboBox,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE,
                                                    javax.swing.GroupLayout.DEFAULT_SIZE,
                                                    javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(CoinbaseConfigurationSeparator1,
                                            javax.swing.GroupLayout.PREFERRED_SIZE, 10,
                                            javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(ConfigurationCoinExchangePanelLayout.createSequentialGroup()
                                    .addComponent(CoinbaseConfigurationVerticalSeparator,
                                            javax.swing.GroupLayout.PREFERRED_SIZE, 172,
                                            javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(CurrentCoinbaseConfigurationLabel)))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(CurrentCoinbaseConfigurationScrollPane,
                            javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                            javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(CoinbaseConfigurationInstructionsLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(CoinbaseConfigurationInstructionsScrollPane,
                            javax.swing.GroupLayout.PREFERRED_SIZE, 147, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(21, 21, 21)));

    ConfigurationTabbedPane.addTab("Coin Exchange", ConfigurationCoinExchangePanel);

    javax.swing.GroupLayout ConfigurationPanelLayout = new javax.swing.GroupLayout(ConfigurationPanel);
    ConfigurationPanel.setLayout(ConfigurationPanelLayout);
    ConfigurationPanelLayout.setHorizontalGroup(
            ConfigurationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                    javax.swing.GroupLayout.Alignment.TRAILING, ConfigurationPanelLayout.createSequentialGroup()
                            .addContainerGap().addComponent(ConfigurationTabbedPane).addContainerGap()));
    ConfigurationPanelLayout.setVerticalGroup(
            ConfigurationPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(ConfigurationTabbedPane));

    MainTabbedPane.addTab("Configuration", ConfigurationPanel);

    FileMenu.setText("File");

    FileExitMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q,
            java.awt.event.InputEvent.ALT_MASK));
    FileExitMenuItem.setText("Quit");
    FileExitMenuItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            FileExitMenuItemActionPerformed(evt);
        }
    });
    FileMenu.add(FileExitMenuItem);

    BFGMInerUIMenuBar.add(FileMenu);

    EditMenu.setText("Edit");
    EditMenu.setMnemonic(KeyEvent.VK_E);

    CopyMenuItem.setText("Copy");
    CopyMenuItem.setMnemonic(KeyEvent.VK_C);
    EditMenu.add(CopyMenuItem);

    PasteMenuItem.setText("Paste");
    PasteMenuItem.setMnemonic(KeyEvent.VK_P);
    EditMenu.add(PasteMenuItem);

    BFGMInerUIMenuBar.add(EditMenu);

    HelpMenu.setText("Help");

    AppHelpMenuItem.setText("App Help");
    AppHelpMenuItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            AppHelpMenuItemActionPerformed(evt);
        }
    });
    HelpMenu.add(AppHelpMenuItem);

    AboutMenuItem.setText("About BFGMinerAPI");
    AboutMenuItem.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            AboutMenuItemActionPerformed(evt);
        }
    });
    HelpMenu.add(AboutMenuItem);

    BFGMInerUIMenuBar.add(HelpMenu);

    setJMenuBar(BFGMInerUIMenuBar);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(MainTabbedPane, javax.swing.GroupLayout.Alignment.TRAILING));
    layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(MainTabbedPane));

    MainTabbedPane.getAccessibleContext().setAccessibleName("");

    bindingGroup.bind();

    pack();
}