def fire_action_event
      return unless @list
      return unless @table_row_sorter
      require 'canis/core/include/ractionevent'
      # the header event must only be used if columns passed
      if header_row?
        # TODO we need to fire correct even for header row, including
        #alert "you are on header row: #{@columns[x]} curpos: #{@curpos}, x:#{x} "
        #aev = TextActionEvent.new self, :PRESS, @columns[x], x, @curpos
        x = _convert_curpos_to_column
        @table_row_sorter.toggle_sort_order x
        @table_row_sorter.sort
        @repaint_required = true
        aev = TextActionEvent.new self, :PRESS,:header, x, @curpos
      else
        # please check this again current_value due to _header_adjustment XXX test
        aev = TextActionEvent.new self, :PRESS, current_value(), @current_index, @curpos
      end
      fire_handler :PRESS, aev
    end
def fire_action_event
      return unless @list
      return unless @table_row_sorter
      require 'canis/core/include/ractionevent'
      # the header event must only be used if columns passed
      if header_row?
        # TODO we need to fire correct even for header row, including
        #alert "you are on header row: #{@columns[x]} curpos: #{@curpos}, x:#{x} "
        #aev = TextActionEvent.new self, :PRESS, @columns[x], x, @curpos
        x = _convert_curpos_to_column
        @table_row_sorter.toggle_sort_order x
        @table_row_sorter.sort
        @repaint_required = true
        aev = TextActionEvent.new self, :PRESS,:header, x, @curpos
      else
        # please check this again current_value due to _header_adjustment XXX test
        aev = TextActionEvent.new self, :PRESS, current_value(), @current_index, @curpos
      end
      fire_handler :PRESS, aev
    end
on pressing ENTER we send user some info, the calling program
 would bind :PRESS
 Added a call to sort, should i still call PRESS
 or just do a sort in here and not call PRESS ???
--
 FIXME we can create this once and reuse
++