require 'spec_helper' require 'swing/shared' describe Swing::JTable do context 'creation' do let(:new_args) { [2, 2] } it_behaves_like 'enhanced Awt::Component' it_behaves_like 'enhanced Swing::JComponent' it 'allows to set properties via constructor' do model = Class.new(Swing::Table::DefaultTableModel).new column_model = Class.new(Swing::Table::DefaultTableColumnModel).new field = Swing::JTextField.new editor = Class.new(Swing::DefaultCellEditor).new field header = Class.new(Swing::Table::JTableHeader).new selection_model = Class.new(Swing::DefaultListSelectionModel).new properties = { :auto_create_columns_from_model => true, :auto_resize_mode => Swing::JTable::AUTO_RESIZE_ALL_COLUMNS, :row_height => 21, :model => model, :column_model => column_model, :selection_model => selection_model, :drag_enabled => true, :cell_editor => editor, :row_margin => 13, :show_horizontal_lines => false, :show_vertical_lines => false, :table_header => header, :cell_selection_enabled => false, :row_selection_allowed => true, } @table = described_class.new *(new_args.push properties) # p @table.methods.sort.grep /election/ properties.each do |name, value| @table.send(name).should == value end end it 'auto-creates appropriate property classes as needed' do properties = { :grid_color => [1, 2, 3], :intercell_spacing => [1, 1], :preferred_scrollable_viewport_size => [100, 100], :selection_background => [1, 2, 3], :selection_foreground => [3, 2, 1], } @table = described_class.new *(new_args.push properties) properties.each do |name, value| @table.send(name).should == @table.class.attributes[name].new(*value) end end it 'also sets some options without getter equivalent' do properties = { :selection_mode => Swing::ListSelectionModel::SINGLE_INTERVAL_SELECTION, :show_grid => false, } @table = described_class.new *(new_args.push properties) end it 'unable to set this combination of properties for some reason', :failing => true do properties = { :cell_selection_enabled => false, :row_selection_allowed => true, :column_selection_allowed => true, } @table = described_class.new *(new_args.push properties) properties.each do |name, value| p name, value @table.send(name).should == value end end end end