code: def createEditor( self, parent, schema, columnName, operatorType ):
          
          column = schema.column(columnName)
          if ( not column ):
              return None
          
          ctype  = column.columnType()
          
          # based on the column and operator type, the editor may change
          if ( ctype == ColumnType.String ):
              if ( operatorType in (Q.Op.IsIn, Q.Op.IsNotIn) ):
                  widget = XMultiTagEdit(parent)
              else:
                  widget = QLineEdit(parent)
          
          elif ( ctype == ColumnType.Bool ):
              widget = QComboBox(parent)
              widget.addItems(['True', 'False'])
              widget.setEditable(True)
              widget.setInsertPolicy(QComboBox.NoInsert)
          
          elif ( ctype == ColumnType.ForeignKey ):
              widget = XOrbRecordBox(parent)
              widget.setRecords(self.collectRecords(column))
          
          else:
              widget = None
          
          return widget
docs: Returns an editor for the inputed table type, based on the column and
          operator types.
          
          :param      schema          | <orb.TableSchema>
                      columnName      | <str>
                      operatorType    | <orb.Query.Op>
          
          :return     <QWidget>