Class: Wads::SingleSelectTable
- Defined in:
- lib/wads/widgets.rb
Overview
A table where the user can select one row at a time. The selected row has a background color specified by the selection color of the current theme.
Instance Attribute Summary collapse
-
#selected_row ⇒ Object
Returns the value of attribute selected_row.
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 = {}) ⇒ SingleSelectTable
constructor
A new instance of SingleSelectTable.
- #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 = {}) ⇒ SingleSelectTable
Returns a new instance of SingleSelectTable.
2409 2410 2411 |
# File 'lib/wads/widgets.rb', line 2409 def initialize(x, y, width, height, headers, max_visible_rows = 10, args = {}) super(x, y, width, height, headers, max_visible_rows, args) end |
Instance Attribute Details
#selected_row ⇒ Object
Returns the value of attribute selected_row.
2407 2408 2409 |
# File 'lib/wads/widgets.rb', line 2407 def selected_row @selected_row end |
Instance Method Details
#handle_mouse_down(mouse_x, mouse_y) ⇒ Object
2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 |
# File 'lib/wads/widgets.rb', line 2460 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
2413 2414 2415 2416 2417 2418 2419 2420 |
# File 'lib/wads/widgets.rb', line 2413 def is_row_selected(mouse_y) row_number = determine_row_number(mouse_y) if row_number.nil? return false end selected_row = @current_row + row_number @selected_row == selected_row end |
#render ⇒ Object
2446 2447 2448 2449 2450 2451 2452 2453 2454 |
# File 'lib/wads/widgets.rb', line 2446 def render super if @selected_row if @selected_row >= @current_row and @selected_row < @current_row + @max_visible_rows y = @y + 30 + ((@selected_row - @current_row) * 30) Gosu::draw_rect(@x + 20, y, @width - 30, 28, @gui_theme.selection_color, relative_z_order(Z_ORDER_SELECTION_BACKGROUND)) end end end |
#set_selected_row(mouse_y, column_number) ⇒ Object
2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 |
# File 'lib/wads/widgets.rb', line 2422 def set_selected_row(mouse_y, column_number) row_number = determine_row_number(mouse_y) if not row_number.nil? new_selected_row = @current_row + row_number if @selected_row if @selected_row == new_selected_row return nil # You can't select the same row already selected end end @selected_row = new_selected_row @data_rows[@selected_row][column_number] end end |
#unset_selected_row(mouse_y, column_number) ⇒ Object
2436 2437 2438 2439 2440 2441 2442 2443 2444 |
# File 'lib/wads/widgets.rb', line 2436 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_row = this_selected_row return @data_rows[this_selected_row][column_number] end nil end |
#widget_z ⇒ Object
2456 2457 2458 |
# File 'lib/wads/widgets.rb', line 2456 def Z_ORDER_TEXT end |