Class: Clevic::DefaultView

Inherits:
View show all
Defined in:
lib/clevic/default_view.rb

Overview

A subclass of Clevic::DefaultView is created by Clevic::Record when the latter is included in a Sequel::Model subclass.

The Clevic::DefaultView subclass knows how to:

  • build a fairly sensible UI from the the ORM model metadata.

  • create a UI definition using a class method called define_ui.

See Clevic::ModelBuilder for an example.

Instance Attribute Summary

Attributes inherited from View

#entity_class, #model_builder

Instance Method Summary collapse

Methods inherited from View

[], #define_ui, define_ui_block, #define_ui_block, entity_class, entity_class=, #fields, #initialize, #notify_field, order, order=, views, widget_name, #widget_name

Constructor Details

This class inherits a constructor from Clevic::View

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth, *args, &block) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/clevic/default_view.rb', line 13

def method_missing( meth, *args, &block )
  if entity_class.respond_to?( meth )
    entity_class.send( meth, *args, &block )
  else
    super
  end
end

Instance Method Details

#define_actions(table_view, action_builder) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/clevic/default_view.rb', line 25

def define_actions( table_view, action_builder )
  if entity_class.respond_to?( :actions )
    puts "Deprecated: #{entity_class.name}.actions( table_view, action_builder ). Use define_actions( table_view, action_builder ) instead."
    entity_class.actions( table_view, action_builder )
  elsif entity_class.respond_to?( :define_actions )
    entity_class.define_actions( table_view, action_builder )
  else
    super
  end
end

#notify_data_changed(table_view, top_left_model_index, bottom_right_model_index) ⇒ Object



36
37
38
39
40
41
42
43
44
45
# File 'lib/clevic/default_view.rb', line 36

def notify_data_changed( table_view, top_left_model_index, bottom_right_model_index )
  if entity_class.respond_to?( :data_changed )
    puts "Deprecated: #{entity_class.name}.data_changed( top_left, bottom_right, table_view ). Use notify_data_changed( table_view, top_left_model_index, bottom_right_model_index ) instead."
    entity_class.data_changed( top_left_model_index, bottom_right_model_index, table_view )
  elsif entity_class.respond_to?( :notify_data_changed )
    entity_class.notify_data_changed( table_view, top_left_model_index, bottom_right_model_index )
  else
    super
  end
end

#notify_key_press(table_view, key_press_event, current_model_index) ⇒ Object



47
48
49
50
51
52
53
54
55
56
# File 'lib/clevic/default_view.rb', line 47

def notify_key_press( table_view, key_press_event, current_model_index )
  if entity_class.respond_to?( :key_press_event )
    puts "Deprecated: #{entity_class.name}.key_press_event( key_press_event, current_model_index, table_view ). Use notify_key_press( table_view, key_press_event, current_model_index ) instead."
    entity_class.key_press_event( key_press_event, current_model_index, table_view )
  elsif entity_class.respond_to?( :notify_key_press )
    entity_class.notify_key_press( table_view, key_press_event, current_model_index )
  else
    super
  end
end

#titleObject



21
22
23
# File 'lib/clevic/default_view.rb', line 21

def title
  @title ||= entity_class.name.demodulize.tableize.humanize
end