docs: def createEditor( self, parent, option, index ):
          """
          Creates a new editor for the given index parented to the inputed widget.
          
          :param      parent | <QWidget>
                      option | <QStyleOption>
                      index  | <QModelIndex>
          
          :return     <QWidget> || None
          """
          # determine the editor to use for the inputed index based on the
          # table column
          item   = self.parent().itemFromIndex(index)
          column = self.column(index)
          
          # edit based on column preferences
          if column and \
             not column.isReadOnly() and \
             isinstance(item, XOrbRecordItem):
              plugin = self.plugin(column)
              if not plugin:
                  return None
              
              return plugin.createEditor(parent, item.record(), column)
          
          return super(XOrbTreeWidgetDelegate, self).createEditor(parent,
                                                                  option,
                                                                  index)