Class: RubyCurses::DefaultTableModel
- Inherits:
-
TableModel
- Object
- TableModel
- RubyCurses::DefaultTableModel
- Includes:
- EventHandler
- Defined in:
- lib/rbcurse/extras/widgets/rtable.rb
Overview
DTM
Instance Attribute Summary collapse
-
#last_regex ⇒ Object
readonly
Returns the value of attribute last_regex.
Instance Method Summary collapse
- #<<(obj) ⇒ Object
- #ask_search_forward ⇒ Object
- #column_count ⇒ Object
-
#data=(data) ⇒ Object
for those quick cases when you wish to replace all the data and not have an event per row being generated.
-
#delete(obj) ⇒ Object
create tablemodelevent and fire_table_changed for all listeners.
-
#delete_all ⇒ Object
added 2009-01-17 21:36 Use with caution, does not call events per row.
- #delete_at(row) ⇒ Object
-
#find_match(regex, ix0 = 0, ix1 = row_count()) ⇒ Object
continues previous search.
-
#find_next ⇒ Object
dtm findnext.
- #find_prev(regex = @last_regex, start = @search_found_ix) ⇒ Object
-
#get_value_at(row, col) ⇒ Object
please avoid directly hitting this.
-
#initialize(data, colnames_array) ⇒ DefaultTableModel
constructor
A new instance of DefaultTableModel.
-
#insert(row, obj) ⇒ Object
create tablemodelevent and fire_table_changed for all listeners.
- #row_count ⇒ Object
-
#set_value_at(row, col, val) ⇒ Object
please avoid directly hitting this.
-
#undo(where) ⇒ Object
a quick method to undo deletes onto given row.
Methods inherited from TableModel
Constructor Details
#initialize(data, colnames_array) ⇒ DefaultTableModel
Returns a new instance of DefaultTableModel.
1512 1513 1514 1515 1516 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1512 def initialize data, colnames_array @data = data @column_identifiers = colnames_array @_events = [:TABLE_MODEL_EVENT, :PROPERTY_CHANGE] end |
Instance Attribute Details
#last_regex ⇒ Object (readonly)
Returns the value of attribute last_regex.
1510 1511 1512 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1510 def last_regex @last_regex end |
Instance Method Details
#<<(obj) ⇒ Object
1544 1545 1546 1547 1548 1549 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1544 def << obj @data << obj tme = TableModelEvent.new(@data.length-1,@data.length-1, :ALL_COLUMNS, self, :INSERT) fire_handler :TABLE_MODEL_EVENT, tme # create tablemodelevent and fire_table_changed for all listeners end |
#ask_search_forward ⇒ Object
1610 1611 1612 1613 1614 1615 1616 1617 1618 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1610 def ask_search_forward regex = get_string "Enter regex to search for:" ix = get_list_data_model.find_match regex if ix.nil? alert("No matching data for: #{regex}") else set_focus_on(ix) end end |
#column_count ⇒ Object
1517 1518 1519 1520 1521 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1517 def column_count # 2010-01-12 19:35 changed count to size since size is supported in 1.8.6 also #@column_identifiers.count @column_identifiers.size end |
#data=(data) ⇒ Object
for those quick cases when you wish to replace all the data and not have an event per row being generated
1603 1604 1605 1606 1607 1608 1609 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1603 def data=(data) raise "Data nil or invalid" if data.nil? or data.size == 0 delete_all @data = data tme = TableModelEvent.new(0, @data.length-1,:ALL_COLUMNS, self, :INSERT) fire_handler :TABLE_MODEL_EVENT, tme end |
#delete(obj) ⇒ Object
create tablemodelevent and fire_table_changed for all listeners
1556 1557 1558 1559 1560 1561 1562 1563 1564 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1556 def delete obj row = @data.index obj return if row.nil? ret = @data.delete obj tme = TableModelEvent.new(row, row,:ALL_COLUMNS, self, :DELETE) fire_handler :TABLE_MODEL_EVENT, tme # create tablemodelevent and fire_table_changed for all listeners return ret end |
#delete_all ⇒ Object
added 2009-01-17 21:36 Use with caution, does not call events per row
1594 1595 1596 1597 1598 1599 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1594 def delete_all len = @data.length-1 @data=[] tme = TableModelEvent.new(0, len,:ALL_COLUMNS, self, :DELETE) fire_handler :TABLE_MODEL_EVENT, tme end |
#delete_at(row) ⇒ Object
1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1565 def delete_at row if !$multiplier or $multiplier == 0 @delete_buffer = @data.delete_at row else @delete_buffer = @data.slice!(row, $multiplier) end $multiplier = 0 #ret = @data.delete_at row # create tablemodelevent and fire_table_changed for all listeners # we don;t pass buffer to event as in listeditable. how to undo later? tme = TableModelEvent.new(row, row+@delete_buffer.length,:ALL_COLUMNS, self, :DELETE) fire_handler :TABLE_MODEL_EVENT, tme return @delete_buffer end |
#find_match(regex, ix0 = 0, ix1 = row_count()) ⇒ Object
continues previous search
1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1621 def find_match regex, ix0=0, ix1=row_count() $log.debug " find_match got #{regex} #{ix0} #{ix1}" @last_regex = regex @search_start_ix = ix0 @search_end_ix = ix1 @data.each_with_index do |row, ix| next if ix < ix0 break if ix > ix1 if row.grep(/#{regex}/) != [] #if !row.match(regex).nil? @search_found_ix = ix return ix end end return nil end |
#find_next ⇒ Object
dtm findnext
1654 1655 1656 1657 1658 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1654 def find_next raise "No more search" if @last_regex.nil? start = @search_found_ix && @search_found_ix+1 || 0 return find_match @last_regex, start, @search_end_ix end |
#find_prev(regex = @last_regex, start = @search_found_ix) ⇒ Object
1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1637 def find_prev regex=@last_regex, start = @search_found_ix raise "No previous search" if @last_regex.nil? $log.debug " find_prev #{@search_found_ix} : #{@current_index}" start -= 1 unless start == 0 @last_regex = regex @search_start_ix = start start.downto(0) do |ix| row = @data[ix] if row.grep(/#{regex}/) != [] @search_found_ix = ix return ix end end return nil #return find_match @last_regex, start, @search_end_ix end |
#get_value_at(row, col) ⇒ Object
please avoid directly hitting this. Suggested to use get_value_at of jtable since columns could have been switched.
1538 1539 1540 1541 1542 1543 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1538 def get_value_at row, col #$log.debug " def get_value_at #{row}, #{col} " raise "IndexError get_value_at #{row}, #{col}" if @data.nil? or row >= @data.size return @data[row][ col] end |
#insert(row, obj) ⇒ Object
create tablemodelevent and fire_table_changed for all listeners
1550 1551 1552 1553 1554 1555 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1550 def insert row, obj @data.insert row, obj tme = TableModelEvent.new(row, row,:ALL_COLUMNS, self, :INSERT) fire_handler :TABLE_MODEL_EVENT, tme # create tablemodelevent and fire_table_changed for all listeners end |
#row_count ⇒ Object
1522 1523 1524 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1522 def row_count @data.length end |
#set_value_at(row, col, val) ⇒ Object
please avoid directly hitting this. Suggested to use get_value_at of jtable since columns could have been switched.
1528 1529 1530 1531 1532 1533 1534 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1528 def set_value_at row, col, val # $log.debug " def set_value_at #{row}, #{col}, #{val} " # if editing allowed @data[row][col] = val tme = TableModelEvent.new(row, row, col, self, :UPDATE) fire_handler :TABLE_MODEL_EVENT, tme end |
#undo(where) ⇒ Object
a quick method to undo deletes onto given row. More like paste
1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 |
# File 'lib/rbcurse/extras/widgets/rtable.rb', line 1580 def undo where return unless @delete_buffer case @delete_buffer[0] when Array @delete_buffer.each do |r| insert where, r end else insert where, @delete_buffer end end |