private boolean processFields() {
        
        //
        // Get the split date
        //
        if (!dateField.isEditValid()) {
            JOptionPane.showMessageDialog(this, "You must specify a valid date",
                                          "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }
        
        Date splitDate = (Date)dateField.getValue();
        
        //
        // Get the split price
        //
        if (!priceField.isEditValid()) {
            JOptionPane.showMessageDialog(this, "You must specify a valid price",
                                          "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }
        
        double splitPrice = ((Number)priceField.getValue()).doubleValue();
        
        //
        // Get the split ratio
        //
        String ratio = ratioField.getText();
        if (ratio.length() == 0) {
            JOptionPane.showMessageDialog(this, "You must enter the split ratio",
                                          "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }
        
        double splitRatio = 0.0;
        boolean validSplit;
        try {
            int sep = ratio.indexOf(':');
            if (sep > 0 && sep < ratio.length()-1) {
                double x = Double.valueOf(ratio.substring(0, sep)).doubleValue();
                double y = Double.valueOf(ratio.substring(sep+1)).doubleValue();
                splitRatio = x/y;
                validSplit = true;
            } else {
                validSplit = false;
            }
        } catch (NumberFormatException exc) {
            validSplit = false;
        }

        if (!validSplit) {
            JOptionPane.showMessageDialog(this, "The split ratio is not valid",
                                          "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }

        //
        // Create a new price history entry for the stock split
        //
        PriceHistory ph = new PriceHistory(splitDate, splitPrice, splitRatio);
        SortedSet<PriceHistory> s = security.getPriceHistory();
        s.remove(ph);
        s.add(ph);
        Main.dataModified = true;
        return true;
    }