Class: Wads::SingleSelectTable

Inherits:
Table show all
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

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

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 = {}) ⇒ SingleSelectTable

Returns a new instance of SingleSelectTable.



2440
2441
2442
# File 'lib/wads/widgets.rb', line 2440

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_rowObject

Returns the value of attribute selected_row.



2438
2439
2440
# File 'lib/wads/widgets.rb', line 2438

def selected_row
  @selected_row
end

Instance Method Details

#handle_mouse_down(mouse_x, mouse_y) ⇒ Object



2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
# File 'lib/wads/widgets.rb', line 2491

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



2444
2445
2446
2447
2448
2449
2450
2451
# File 'lib/wads/widgets.rb', line 2444

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

#renderObject



2477
2478
2479
2480
2481
2482
2483
2484
2485
# File 'lib/wads/widgets.rb', line 2477

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



2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
# File 'lib/wads/widgets.rb', line 2453

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



2467
2468
2469
2470
2471
2472
2473
2474
2475
# File 'lib/wads/widgets.rb', line 2467

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_zObject



2487
2488
2489
# File 'lib/wads/widgets.rb', line 2487

def widget_z 
    Z_ORDER_TEXT
end