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_held_down, #handle_key_press, #handle_key_up, #handle_mouse_up, #handle_right_mouse, #handle_update, #info, #intercept_widget_event, #left_edge, #move_recursive_absolute, #move_recursive_delta, #overlaps_with, #pad, #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.
2532 2533 2534 2535 |
# File 'lib/wads/widgets.rb', line 2532 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.
2530 2531 2532 |
# File 'lib/wads/widgets.rb', line 2530 def selected_rows @selected_rows end |
Instance Method Details
#handle_mouse_down(mouse_x, mouse_y) ⇒ Object
2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 |
# File 'lib/wads/widgets.rb', line 2588 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 .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
2537 2538 2539 2540 2541 2542 2543 |
# File 'lib/wads/widgets.rb', line 2537 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
2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 |
# File 'lib/wads/widgets.rb', line 2565 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
2545 2546 2547 2548 2549 2550 2551 2552 2553 |
# File 'lib/wads/widgets.rb', line 2545 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
2555 2556 2557 2558 2559 2560 2561 2562 2563 |
# File 'lib/wads/widgets.rb', line 2555 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
2584 2585 2586 |
# File 'lib/wads/widgets.rb', line 2584 def Z_ORDER_TEXT end |