private void addProperty(PropertyDescriptor propertyDescriptor,
            JComponent editor, GridBagLayout grid) {
        String text = propertyDescriptor.getDisplayName();
        String newText = "";

        for (int i = 0; i < text.length(); i++) {
            char c = text.charAt(i);

            if (((c >= 'A') && (c <= 'Z')) || (i == 0)) {
                if (i == 0) {
                    c += ('A' - 'a');
                }

                newText += (" " + c);
            } else {
                newText += c;
            }
        }

        JLabel label = new JLabel(newText + ": ", null, JLabel.RIGHT);
        GridBagConstraints c = new GridBagConstraints();
        c.weightx = 1.0;
        c.fill = GridBagConstraints.BOTH;
        grid.setConstraints(label, c);
        propertyPanel.add(label);
        c.gridwidth = GridBagConstraints.REMAINDER;
        grid.setConstraints(editor, c);
        propertyPanel.add(editor);

        JPanel blankLine = new JPanel() {
            private static final long serialVersionUID = 4514530330521503732L;

            public Dimension getPreferredSize() {
                return new Dimension(10, 2);
            }
        };
        grid.setConstraints(blankLine, c);
        propertyPanel.add(blankLine);
    }