Class: RubyCurses::DefaultTableModel
- Inherits:
-
TableModel
- Object
- TableModel
- RubyCurses::DefaultTableModel
- Includes:
- EventHandler
- Defined in:
- lib/rbcurse/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 included from EventHandler
#bind, #fire_handler, #fire_property_change
Methods inherited from TableModel
Constructor Details
#initialize(data, colnames_array) ⇒ DefaultTableModel
Returns a new instance of DefaultTableModel.
1474 1475 1476 1477 1478 |
# File 'lib/rbcurse/rtable.rb', line 1474 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.
1472 1473 1474 |
# File 'lib/rbcurse/rtable.rb', line 1472 def last_regex @last_regex end |
Instance Method Details
#<<(obj) ⇒ Object
1506 1507 1508 1509 1510 1511 |
# File 'lib/rbcurse/rtable.rb', line 1506 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
1572 1573 1574 1575 1576 1577 1578 1579 1580 |
# File 'lib/rbcurse/rtable.rb', line 1572 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
1479 1480 1481 1482 1483 |
# File 'lib/rbcurse/rtable.rb', line 1479 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
1565 1566 1567 1568 1569 1570 1571 |
# File 'lib/rbcurse/rtable.rb', line 1565 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
1518 1519 1520 1521 1522 1523 1524 1525 1526 |
# File 'lib/rbcurse/rtable.rb', line 1518 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
1556 1557 1558 1559 1560 1561 |
# File 'lib/rbcurse/rtable.rb', line 1556 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
1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 |
# File 'lib/rbcurse/rtable.rb', line 1527 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
1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 |
# File 'lib/rbcurse/rtable.rb', line 1583 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
1616 1617 1618 1619 1620 |
# File 'lib/rbcurse/rtable.rb', line 1616 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
1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 |
# File 'lib/rbcurse/rtable.rb', line 1599 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.
1500 1501 1502 1503 1504 1505 |
# File 'lib/rbcurse/rtable.rb', line 1500 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
1512 1513 1514 1515 1516 1517 |
# File 'lib/rbcurse/rtable.rb', line 1512 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
1484 1485 1486 |
# File 'lib/rbcurse/rtable.rb', line 1484 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.
1490 1491 1492 1493 1494 1495 1496 |
# File 'lib/rbcurse/rtable.rb', line 1490 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
1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 |
# File 'lib/rbcurse/rtable.rb', line 1542 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 |