Class: Wads::MultiSelectTable
Overview
A table where the user can select multiple rows at a time. Selected rows have a background color specified by the selection color of the current theme.
Instance Attribute Summary collapse
-
#selected_rows ⇒ Object
Returns the value of attribute selected_rows.
Attributes inherited from Table
#can_delete_rows, #current_row, #data_rows, #headers, #max_visible_rows, #row_colors
Attributes inherited from Widget
#base_z, #children, #gui_theme, #height, #is_selected, #layout, #overlay_widget, #override_color, #text_input_fields, #visible, #width, #x, #y
Instance Method Summary collapse
- #handle_mouse_down(mouse_x, mouse_y) ⇒ Object
-
#initialize(x, y, width, height, headers, max_visible_rows = 10, args = {}) ⇒ MultiSelectTable
constructor
A new instance of MultiSelectTable.
- #is_row_selected(mouse_y) ⇒ Object
- #render ⇒ Object
- #set_selected_row(mouse_y, column_number) ⇒ Object
- #unset_selected_row(mouse_y, column_number) ⇒ Object
- #widget_z ⇒ Object
Methods inherited from Table
#add_row, #add_table_delete_button, #clear_rows, #determine_row_number, #handle_update, #number_of_rows, #remove_table_delete_button, #scroll_down, #scroll_up, #uses_layout
Methods inherited from Widget
#add, #add_axis_lines, #add_button, #add_child, #add_delete_button, #add_document, #add_graph_display, #add_image, #add_multi_select_table, #add_overlay, #add_panel, #add_plot, #add_single_select_table, #add_table, #add_text, #border_color, #bottom_edge, #button_down, #button_up, #center_children, #center_x, #center_y, #clear_children, #contains_click, #debug, #disable_background, #disable_border, #draw, #draw_background, #draw_border, #enable_background, #enable_border, #error, #get_layout, #get_theme, #graphics_color, #handle_key_press, #handle_mouse_up, #handle_right_mouse, #handle_update, #info, #intercept_widget_event, #left_edge, #move_recursive_absolute, #move_recursive_delta, #overlaps_with, #relative_x, #relative_y, #relative_z_order, #remove_child, #remove_children, #remove_children_by_type, #right_edge, #selection_color, #set_absolute_position, #set_dimensions, #set_layout, #set_selected, #set_theme, #text_color, #top_edge, #unset_selected, #update, #uses_layout, #warn, #x_pixel_to_screen, #y_pixel_to_screen, #z_order
Constructor Details
#initialize(x, y, width, height, headers, max_visible_rows = 10, args = {}) ⇒ MultiSelectTable
Returns a new instance of MultiSelectTable.
2501 2502 2503 2504 |
# File 'lib/wads/widgets.rb', line 2501 def initialize(x, y, width, height, headers, max_visible_rows = 10, args = {}) super(x, y, width, height, headers, max_visible_rows, args) @selected_rows = [] end |
Instance Attribute Details
#selected_rows ⇒ Object
Returns the value of attribute selected_rows.
2499 2500 2501 |
# File 'lib/wads/widgets.rb', line 2499 def selected_rows @selected_rows end |
Instance Method Details
#handle_mouse_down(mouse_x, mouse_y) ⇒ Object
2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 |
# File 'lib/wads/widgets.rb', line 2557 def handle_mouse_down mouse_x, mouse_y if contains_click(mouse_x, mouse_y) row_number = determine_row_number(mouse_y) if row_number.nil? return WidgetResult.new(false) end # First check if its the delete button that got this delete_this_row = false @delete_buttons.each do |db| if db.contains_click(mouse_x, mouse_y) delete_this_row = true end end if delete_this_row if not row_number.nil? data_set_row_to_delete = @current_row + row_number data_set_name_to_delete = @data_rows[data_set_row_to_delete][1] @data_rows.delete_at(data_set_row_to_delete) return WidgetResult.new(false, EVENT_TABLE_ROW_DELETE, [data_set_name_to_delete]) end else if is_row_selected(mouse_y) unset_selected_row(mouse_y, 0) return WidgetResult.new(false, EVENT_TABLE_UNSELECT, @data_rows[row_number]) else set_selected_row(mouse_y, 0) return WidgetResult.new(false, EVENT_TABLE_SELECT, @data_rows[row_number]) end end end end |
#is_row_selected(mouse_y) ⇒ Object
2506 2507 2508 2509 2510 2511 2512 |
# File 'lib/wads/widgets.rb', line 2506 def is_row_selected(mouse_y) row_number = determine_row_number(mouse_y) if row_number.nil? return false end @selected_rows.include?(@current_row + row_number) end |
#render ⇒ Object
2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 |
# File 'lib/wads/widgets.rb', line 2534 def render super y = @y + 30 row_count = @current_row while row_count < @data_rows.size if @selected_rows.include? row_count width_of_selection_background = @width - 30 if @can_delete_rows width_of_selection_background = width_of_selection_background - 20 end Gosu::draw_rect(@x + 20, y, width_of_selection_background, 28, @gui_theme.selection_color, relative_z_order(Z_ORDER_SELECTION_BACKGROUND)) end y = y + 30 row_count = row_count + 1 end end |
#set_selected_row(mouse_y, column_number) ⇒ Object
2514 2515 2516 2517 2518 2519 2520 2521 2522 |
# File 'lib/wads/widgets.rb', line 2514 def set_selected_row(mouse_y, column_number) row_number = determine_row_number(mouse_y) if not row_number.nil? this_selected_row = @current_row + row_number @selected_rows << this_selected_row return @data_rows[this_selected_row][column_number] end nil end |
#unset_selected_row(mouse_y, column_number) ⇒ Object
2524 2525 2526 2527 2528 2529 2530 2531 2532 |
# File 'lib/wads/widgets.rb', line 2524 def unset_selected_row(mouse_y, column_number) row_number = determine_row_number(mouse_y) if not row_number.nil? this_selected_row = @current_row + row_number @selected_rows.delete(this_selected_row) return @data_rows[this_selected_row][column_number] end nil end |
#widget_z ⇒ Object
2553 2554 2555 |
# File 'lib/wads/widgets.rb', line 2553 def Z_ORDER_TEXT end |