Reorders the data being displayed in this tree.  It will check to
        see if a server side requery needs to happen based on the paging
        information for this tree.
        
        :param      index     | <column>
                    direction | <Qt.SortOrder>
        
        :sa         setOrder

def reorder(self, index, direction):
        """
        Reorders the data being displayed in this tree.  It will check to
        see if a server side requery needs to happen based on the paging
        information for this tree.
        
        :param      index     | <column>
                    direction | <Qt.SortOrder>
        
        :sa         setOrder
        """
        columnTitle = self.columnOf(index)
        columnName  = self.columnOrderName(columnTitle)
        
        if not columnName:
            return
        
        # grab the table and ensure we have a valid column
        table = self.tableType()
        if not table:
            return
        
        column = table.schema().column(columnName)
        if not column:
            return
        
        if direction == Qt.AscendingOrder:
            db_dir = 'asc'
        else:
            db_dir = 'desc'
        
        order = [(columnName, db_dir)]
        
        # lookup reference column ordering
        if column.isReference():
            ref = column.referenceModel()
            if ref:
                ref_order = ref.schema().defaultOrder()
                if ref_order:
                    order = [(columnName + '.' + ref_order[0][0], db_dir)]
                    order += ref_order[1:]
        
        # update the information
        self.clear()
        super(XOrbTreeWidget, self).sortByColumn(index, direction)
        
        self.setOrder(order)
        self.refresh()