@Override
    public Component getTableCellEditorComponent(JTable table, Object value,
                                                 boolean isSelected, int row, int column) {

        component = new JTextField("");

        if(column == BeanTreeTableModel.ColNames.CUR_VAL.ordinal()) {
            Object pathComponent = ((JXTreeTable) table).getPathForRow(row).getLastPathComponent();

            if (pathComponent instanceof AbstractBeanTreeNode) {
                AbstractBeanTreeNode node = (AbstractBeanTreeNode)pathComponent;
                String className = node.getClassName();

                // Set a specific icon for each node type
                switch(node.getNodeType()) {
                    case ROOT:
                    case BEAN:
                        if(node.getObjType() == Boolean.class) {
                            JCheckBox checkBox = new JCheckBox(value.toString());
                            boolean selectedCB = (Boolean)(node.parseObjectFromString(node.getUserObject().toString()));
                            checkBox.setSelected(selectedCB);
                            checkBox.setText("Originally: " + String.valueOf(selectedCB));
                            component = checkBox;
                        } else if(node.getObjType().isEnum()) {
                            JComboBox comboBox = new JComboBox(node.getObjType().getEnumConstants());
                            comboBox.setSelectedItem(node.getUserObject().toString());
                            component = comboBox;
                        } else {
                            if(AbstractBeanTreeNode.isTypeNumberOrString(node.getObjType())) {
                                String content = "";
                                if (value != null) {
                                    content = value.toString();
                                }
                                component = new JTextField(content);
                            }
                        }
                    break;
                }
            }
        }

        return component;
    }