resty-generators 0.5.3 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. data/features/generators.feature +67 -0
  2. data/features/step_definitions/simple_steps.rb +1 -0
  3. data/lib/generators/resty/base.rb +15 -3
  4. data/lib/generators/resty/model/model_generator.rb +33 -3
  5. data/lib/generators/resty/scaffold/scaffold_generator.rb +30 -15
  6. data/lib/generators/resty/setup/setup_generator.rb +2 -2
  7. data/lib/generators/resty/setup/setup_generator.rb~ +31 -0
  8. data/lib/generators/resty/setup/templates/ActivityFactory.java~ +7 -0
  9. data/lib/generators/resty/setup/templates/ActivityPlace.java +5 -0
  10. data/lib/generators/resty/setup/templates/ActivityPlace.java~ +8 -0
  11. data/lib/generators/resty/setup/templates/BreadCrumbsPanel.java +3 -2
  12. data/lib/generators/resty/setup/templates/BreadCrumbsPanel.java~ +79 -0
  13. data/lib/generators/resty/setup/templates/GinModule.java~ +7 -0
  14. data/lib/generators/resty/setup/templates/LoginActivity.java~ +58 -0
  15. data/lib/generators/resty/setup/templates/LoginPlace.java~ +20 -0
  16. data/lib/generators/resty/setup/templates/LoginViewImpl.java~ +21 -0
  17. data/lib/generators/resty/setup/templates/Mavenfile +5 -5
  18. data/lib/generators/resty/setup/templates/Mavenfile~ +15 -0
  19. data/lib/generators/resty/setup/templates/MenuPanel.java~ +12 -0
  20. data/lib/generators/resty/setup/templates/PLaceHistoryMapper.java~ +7 -0
  21. data/lib/generators/resty/setup/templates/RestfulPlace.java~ +22 -0
  22. data/lib/generators/resty/setup/templates/SessionActivityPlaceActivityMapper.java~ +71 -0
  23. data/lib/generators/resty/setup/templates/SessionRestService.java~ +23 -0
  24. data/lib/generators/resty/setup/templates/User.java +34 -4
  25. data/lib/generators/resty/setup/templates/authentication.rb +2 -1
  26. data/lib/generators/resty/setup/templates/authentication.rb~ +4 -0
  27. data/lib/generators/resty/setup/templates/empty.css~ +1 -0
  28. data/lib/generators/resty/setup/templates/gwt.css +45 -0
  29. data/lib/generators/resty/setup/templates/initializer.rb~ +1 -0
  30. data/lib/generators/resty/setup/templates/monkey_patch.rb~ +27 -0
  31. data/lib/generators/resty/setup/templates/page.html~ +0 -0
  32. data/lib/generators/resty/setup/templates/session.rb +18 -36
  33. data/lib/generators/resty/setup/templates/session.rb~ +45 -0
  34. data/lib/generators/resty/setup/templates/sessions_controller.rb +27 -8
  35. data/lib/generators/resty/setup/templates/sessions_controller.rb~ +27 -0
  36. data/lib/generators/resty/setup/templates/user.rb +38 -6
  37. data/lib/generators/resty/setup/templates/user.rb~ +27 -0
  38. data/lib/generators/resty/templates/Activity.java +78 -39
  39. data/lib/generators/resty/templates/Activity.java~ +67 -0
  40. data/lib/generators/resty/templates/ActivityPlace.java~ +11 -0
  41. data/lib/generators/resty/templates/ColumnDefinitionsImpl.java~ +24 -0
  42. data/lib/generators/resty/templates/ColumnDefintionsImpl.java~ +34 -0
  43. data/lib/generators/resty/templates/Controller.java~ +49 -0
  44. data/lib/generators/resty/templates/Editor.java +123 -0
  45. data/lib/generators/resty/templates/Editor.java~ +84 -0
  46. data/lib/generators/resty/templates/Editor.ui.xml +41 -0
  47. data/lib/generators/resty/templates/Editor.ui.xml~ +37 -0
  48. data/lib/generators/resty/templates/Event.java +30 -0
  49. data/lib/generators/resty/templates/Event.java~ +31 -0
  50. data/lib/generators/resty/templates/EventHandler.java +8 -0
  51. data/lib/generators/resty/templates/EventHandler.java~ +30 -0
  52. data/lib/generators/resty/templates/Model.java +144 -15
  53. data/lib/generators/resty/templates/Model.java~ +23 -0
  54. data/lib/generators/resty/templates/Place.java +1 -1
  55. data/lib/generators/resty/templates/Place.java~ +21 -0
  56. data/lib/generators/resty/templates/PlaceTokenizer.java +1 -1
  57. data/lib/generators/resty/templates/PlaceTokenizer.java~ +19 -0
  58. data/lib/generators/resty/templates/RestService.java~ +51 -0
  59. data/lib/generators/resty/templates/View.java +15 -4
  60. data/lib/generators/resty/templates/View.java~ +23 -0
  61. data/lib/generators/resty/templates/View.ui.xml +22 -38
  62. data/lib/generators/resty/templates/View.ui.xml~ +17 -0
  63. data/lib/generators/resty/templates/ViewImpl.java +88 -103
  64. data/lib/generators/resty/templates/ViewImpl.java~ +153 -0
  65. data/lib/resty/abstract_session.rb~ +59 -0
  66. data/lib/resty/child_path.rb~ +18 -0
  67. data/lib/resty/session.rb~ +6 -0
  68. metadata +56 -11
@@ -0,0 +1,24 @@
1
+ package <%= views_base_package %>;
2
+
3
+ import java.util.ArrayList;
4
+
5
+ import <% gwt_rails_package %>.ColumnDefinition;
6
+ import <%= views_base_package %>.<%= class_name %>;
7
+
8
+ @SuppressWarnings("serial")
9
+ public class <%= plural_class_name %>ColumnDefinitionsImpl extends
10
+ ArrayList<ColumnDefinition<<%= class_name %>>> {
11
+
12
+ protected <%= plural_class_name %>ColumnDefinitionsImpl() {
13
+
14
+ this.add(new ColumnDefinition<<%= class_name %>>() {
15
+ public void render(<%= class_name %> c, StringBuilder sb) {
16
+ sb.append("<div id='" + c.id + "'>" + "TODO" + "</div>");
17
+ }
18
+
19
+ public boolean isClickable() {
20
+ return true;
21
+ }
22
+ });
23
+ }
24
+ }
@@ -0,0 +1,34 @@
1
+ package <%= views_base_package %>;
2
+
3
+ import java.util.ArrayList;
4
+
5
+ import <% gwt_rails_package %>.ColumnDefinition;
6
+ import <%= views_base_package %>.<%= class_name %>;
7
+
8
+ @SuppressWarnings("serial")
9
+ public class AuditsColumnDefinitionsImpl extends
10
+ ArrayList<ColumnDefinition<Audit>> {
11
+
12
+ private static AuditsColumnDefinitionsImpl instance = null;
13
+
14
+ public static AuditsColumnDefinitionsImpl getInstance() {
15
+ if (instance == null) {
16
+ instance = new AuditsColumnDefinitionsImpl();
17
+ }
18
+
19
+ return instance;
20
+ }
21
+
22
+ protected AuditsColumnDefinitionsImpl() {
23
+
24
+ this.add(new ColumnDefinition<Audit>() {
25
+ public void render(Audit c, StringBuilder sb) {
26
+ sb.append("<div id='" + c.id + "'>" + c.created_at + " [" + c.login + "] " + c.message + "</div>");
27
+ }
28
+
29
+ public boolean isClickable() {
30
+ return true;
31
+ }
32
+ });
33
+ }
34
+ }
@@ -0,0 +1,49 @@
1
+ package <%= controllers_base_package %>;
2
+
3
+ <% if action_map.values.member? :get_all -%>
4
+ import java.util.List;
5
+ <% end -%>
6
+
7
+ import javax.ws.rs.*;
8
+
9
+ import org.fusesource.restygwt.client.*;
10
+
11
+ <% if name -%>
12
+ import <%= models_base_package %>.<%= class_name %>;
13
+ <% end -%>
14
+
15
+ @Path("/<%= table_name %>")
16
+ public interface <%= controller_class_name %>Controller extends RestService {
17
+
18
+ <% actions.each do |action|
19
+ case action_map[action]
20
+ when :get_all -%>
21
+ @GET
22
+ void <%= action %>(MethodCallback<List<<%= class_name %>>> callback);
23
+
24
+ // @GET
25
+ // void <%= action %>(MethodCallback<List<<%= class_name %>>> callback, @QueryParam("limit") int limit, @QueryParam("offset") int offset);
26
+ //
27
+ <% when :get_single -%>
28
+ @GET<% unless options[:singleton] -%> @Path("/{id}")<% end %>
29
+ void <%= action %>(<% unless options[:singleton] -%>@PathParam("id") int id, <% end -%>MethodCallback<<%= class_name %>> callback);
30
+
31
+ <% when :post -%>
32
+ @POST
33
+ void <%= action %>(<%= class_name %> value, MethodCallback<<%= class_name %>> callback);
34
+
35
+ <% when :put -%>
36
+ @PUT<% unless options[:singleton] -%> @Path("/{id}")<% end %>
37
+ void <%= action %>(<% unless options[:singleton] -%>@PathParam("id") @Attribute("id") <% end -%><%= class_name %> value, MethodCallback<<%= class_name %>> callback);
38
+
39
+ <% when :delete -%>
40
+ @DELETE @Path("/{id}")
41
+ void <%= action %>(@PathParam("id") @Attribute("id") <%= class_name %> value, MethodCallback<Void> callback);
42
+
43
+ <% else -%>
44
+ @GET
45
+ void <%= action %>(MethodCallback<Void> callback);
46
+
47
+ <% end
48
+ end -%>
49
+ }
@@ -0,0 +1,123 @@
1
+ package <%= editors_package %>;
2
+
3
+ <% if attributes.detect {|a| a.type == :belongs_to } -%>
4
+ import java.util.ArrayList;
5
+ import java.util.Arrays;
6
+ import java.util.List;
7
+
8
+ <% end -%>
9
+ <% for attribute in attributes -%>
10
+ <% if attribute.type == :belongs_to -%>
11
+ import <%= models_package %>.<%= attribute.name.classify %>;
12
+ <% end -%>
13
+ <% end -%>
14
+ import <%= models_package %>.<%= class_name %>;
15
+ <% if options[:modified_by] -%>
16
+ import <%= models_package %>.User;
17
+ <% end -%>
18
+
19
+ import com.google.gwt.core.client.GWT;
20
+ import com.google.gwt.editor.client.Editor;
21
+ import com.google.gwt.uibinder.client.UiBinder;
22
+ import com.google.gwt.uibinder.client.UiField;
23
+ import com.google.gwt.user.client.ui.Composite;
24
+ <% if options[:timestamps] -%>
25
+ import com.google.gwt.user.client.ui.DateLabel;
26
+ <% end -%>
27
+ <% if !options[:singleton] || options[:timestamps] || options[:modified_by] -%>
28
+ import com.google.gwt.user.client.ui.FlowPanel;
29
+ <% end -%>
30
+ <% unless options[:singleton] -%>
31
+ import com.google.gwt.user.client.ui.NumberLabel;
32
+ <% end -%>
33
+ import com.google.gwt.user.client.ui.*;
34
+ import com.google.gwt.user.client.ui.Widget;
35
+ import com.google.gwt.user.datepicker.client.DateBox;
36
+
37
+ import de.mkristian.gwt.rails.editors.UserLabel;
38
+ import de.mkristian.gwt.rails.editors.DoubleBox;
39
+ import de.mkristian.gwt.rails.editors.IntegerBox;
40
+ import de.mkristian.gwt.rails.editors.LongBox;
41
+ import de.mkristian.gwt.rails.editors.IdentifyableListBox;
42
+
43
+ public class <%= class_name %>Editor extends Composite implements Editor<<%= class_name %>>{
44
+
45
+ interface Binder extends UiBinder<Widget, <%= class_name %>Editor> {}
46
+
47
+ private static final Binder BINDER = GWT.create(Binder.class);
48
+
49
+ <% if !options[:singleton] || options[:timestamps] || options[:modified_by] -%>
50
+ @Ignore @UiField FlowPanel signature;
51
+
52
+ <% end -%>
53
+ <% unless options[:singleton] -%>
54
+ @UiField public NumberLabel<Integer> id;
55
+ <% end -%>
56
+ <% if options[:timestamps] -%>
57
+ @UiField DateLabel createdAt;
58
+ @UiField DateLabel updatedAt;
59
+ <% end -%>
60
+ <% if options[:modified_by] -%>
61
+ @UiField UserLabel<User> modifiedBy;
62
+ <% end -%>
63
+
64
+ <% for attribute in attributes -%>
65
+ <% if attribute.type == :has_one -%>
66
+ // just display them
67
+ // TODO <%= attribute.name.camelcase %> <%= attribute.name %>;
68
+ <% elsif attribute.type == :has_many -%>
69
+ // just display them
70
+ // TODO public java.util.List<<%= attribute.name.camelcase %>> <%= attribute.name %>;
71
+ <% elsif attribute.type == :belongs_to -%>
72
+ @UiField IdentifyableListBox<<%= attribute.name.classify %>> <%= attribute.name.camelcase.sub(/^(.)/){ $1.downcase } %>;
73
+ <% else -%>
74
+ @UiField <%= type_widget_map[attribute.type][2..-1] %> <%= attribute.name.camelcase.sub(/^(.)/){ $1.downcase } %>;
75
+ <% end -%>
76
+
77
+ <% end -%>
78
+ public <%= class_name %>Editor() {
79
+ initWidget(BINDER.createAndBindUi(this));
80
+ }
81
+
82
+ <% for attribute in attributes -%>
83
+ <% if attribute.type == :belongs_to -%>
84
+ <% clazz = attribute.name.classify -%>
85
+ public void reset<%= clazz.to_s.pluralize %>(List<<%= clazz %>> models){
86
+ if(models == null){
87
+ <%= clazz %> model = new <%= clazz %>() {
88
+ public String toDisplay() { return "loading..."; }
89
+ };
90
+ <%= attribute.name.camelcase.sub(/^(.)/){ $1.downcase } %>.setAcceptableValues(Arrays.asList(model));
91
+ }
92
+ else{
93
+ <%= clazz %> model = new <%= clazz %>() {
94
+ public String toDisplay() { return "please select..."; }
95
+ };
96
+ List<<%= clazz %>> list = new ArrayList<<%= clazz %>>();
97
+ list.add(model);
98
+ list.addAll(models);
99
+ <%= attribute.name.camelcase.sub(/^(.)/){ $1.downcase } %>.setAcceptableValues(list);
100
+ }
101
+ }
102
+
103
+ <% end -%>
104
+ <% end -%>
105
+ public void setEnabled(boolean enabled) {
106
+ <% if !options[:singleton] -%>
107
+ this.signature.setVisible(id.getValue() != null && id.getValue() > 0);
108
+ <% elsif options[:timestamps] -%>
109
+ this.signature.setVisible(createdAt.getValue() != null);
110
+ <% elsif options[:modified_by] -%>
111
+ this.signature.setVisible(modifiedBy.getValue() != null);
112
+ <% end -%>
113
+ <% for attribute in attributes -%>
114
+ <% if attribute.type == :has_one -%>
115
+ // TODO <%= attribute.name.camelcase %> <%= attribute.name %>;
116
+ <% elsif attribute.type == :has_many -%>
117
+ // TODO public java.util.List<<%= attribute.name.camelcase %>> <%= attribute.name %>;
118
+ <% else -%>
119
+ this.<%= attribute.name.camelcase.sub(/^(.)/){ $1.downcase } %>.setEnabled(enabled);
120
+ <% end -%>
121
+ <% end -%>
122
+ }
123
+ }
@@ -0,0 +1,84 @@
1
+ package <%= editors_package %>;
2
+
3
+ import <%= models_package %>.<%= class_name %>;
4
+
5
+ import com.google.gwt.core.client.GWT;
6
+ import com.google.gwt.editor.client.Editor;
7
+ import com.google.gwt.uibinder.client.UiBinder;
8
+ import com.google.gwt.uibinder.client.UiField;
9
+ import com.google.gwt.user.client.ui.Composite;
10
+ <% if options[:timestamps] -%>
11
+ import com.google.gwt.user.client.ui.DateLabel;
12
+ <% end -%>
13
+ <% if !options[:singleton] || options[:timestamps] || options[:modified_by] -%>
14
+ import com.google.gwt.user.client.ui.FlowPanel;
15
+ <% end -%>
16
+ <% unless options[:singleton] -%>
17
+ import com.google.gwt.user.client.ui.NumberLabel;
18
+ <% end -%>
19
+ import com.google.gwt.user.client.ui.*;
20
+ import com.google.gwt.user.client.ui.Widget;
21
+ import com.google.gwt.user.datepicker.client.DateBox;
22
+
23
+ import de.mkristian.gwt.rails.editors.DoubleBox;
24
+ import de.mkristian.gwt.rails.editors.IntegerBox;
25
+ import de.mkristian.gwt.rails.editors.LongBox;
26
+
27
+ public class <%= class_name %>Editor extends Composite implements Editor<<%= class_name %>>{
28
+
29
+ interface Binder extends UiBinder<Widget, <%= class_name %>Editor> {}
30
+
31
+ private static final Binder BINDER = GWT.create(Binder.class);
32
+
33
+ <% if !options[:singleton] || options[:timestamps] || options[:modified_by] -%>
34
+ @Ignore @UiField FlowPanel signature;
35
+
36
+ <% end -%>
37
+ <% unless options[:singleton] -%>
38
+ @UiField public NumberLabel<Integer> id;
39
+ <% end -%>
40
+ <% if options[:timestamps] -%>
41
+ @UiField DateLabel createdAt;
42
+ @UiField DateLabel updatedAt;
43
+ <% end -%>
44
+ <% if options[:modified_by] -%>
45
+ @UiField options[:modified_by].classify modifiedBy;
46
+ <% end -%>
47
+
48
+ <% for attribute in attributes -%>
49
+ <% if attribute.type == :has_one -%>
50
+ // TODO <%= attribute.name.camelcase %> <%= attribute.name %>;
51
+ <% elsif attribute.type == :has_many -%>
52
+ // TODO public java.util.List<<%= attribute.name.camelcase %>> <%= attribute.name %>;
53
+ <% elsif attribute.type == :belongs_to -%>
54
+ // TODO
55
+ <% else -%>
56
+ @UiField <%= type_widget_map[attribute.type][2..-1] %> <%= attribute.name.camelcase.sub(/^(.)/){ $1.downcase } %>;
57
+ <% end -%>
58
+
59
+ <% end -%>
60
+ public <%= class_name %>Editor() {
61
+ initWidget(BINDER.createAndBindUi(this));
62
+ }
63
+
64
+ public void setEnabled(boolean enabled) {
65
+ <% if !options[:singleton] -%>
66
+ this.signature.setVisible(id.getValue() != null && id.getValue() > 0);
67
+ <% elsif options[:timestamps] -%>
68
+ this.signature.setVisible(createdAt.getValue() != null);
69
+ <% elsif options[:modified_by] -%>
70
+ this.signature.setVisible(modifiedBy.getValue() != null);
71
+ <% end -%>
72
+ <% for attribute in attributes -%>
73
+ <% if attribute.type == :has_one -%>
74
+ // TODO <%= attribute.name.camelcase %> <%= attribute.name %>;
75
+ <% elsif attribute.type == :has_many -%>
76
+ // TODO public java.util.List<<%= attribute.name.camelcase %>> <%= attribute.name %>;
77
+ <% elsif attribute.type == :belongs_to -%>
78
+ // TODO
79
+ <% else -%>
80
+ this.<%= attribute.name.camelcase.sub(/^(.)/){ $1.downcase } %>.setEnabled(enabled);
81
+ <% end -%>
82
+ <% end -%>
83
+ }
84
+ }
@@ -0,0 +1,41 @@
1
+ <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
2
+ <ui:UiBinder
3
+ xmlns:ui="urn:ui:com.google.gwt.uibinder"
4
+ xmlns:g="urn:import:com.google.gwt.user.client.ui"
5
+ xmlns:d="urn:import:com.google.gwt.user.datepicker.client"
6
+ xmlns:r="urn:import:de.mkristian.gwt.rails.editors">
7
+
8
+ <g:FlowPanel>
9
+
10
+ <g:FlowPanel ui:field="signature" styleName="gwt-rails-model-signature">
11
+ <% unless options[:singleton] -%>
12
+ <g:Label>id: </g:Label>
13
+ <g:NumberLabel ui:field="id" />
14
+ <% end -%>
15
+ <% if options[:timestamps] -%>
16
+ <g:Label>created at: </g:Label>
17
+ <g:DateLabel ui:field="createdAt" predefinedFormat="DATE_TIME_MEDIUM"/>
18
+ <g:Label>updated at: </g:Label>
19
+ <g:DateLabel ui:field="updatedAt" predefinedFormat="DATE_TIME_MEDIUM" />
20
+ <% end -%>
21
+ <% if options[:modified_by] -%>
22
+ <g:Label>modified by: </g:Label>
23
+ <r:UserLabel ui:field="modifiedBy" />
24
+ <% end -%>
25
+ </g:FlowPanel>
26
+
27
+ <g:FlowPanel styleName="gwt-rails-model-fields">
28
+ <% for attribute in attributes -%>
29
+ <% if attribute.type != :has_one && attribute.type != :has_many -%>
30
+ <% name = attribute.name.camelcase.sub(/^(.)/){ $1.downcase } -%>
31
+ <g:HTMLPanel>
32
+ <label name="<%= name %>"><%= name.underscore.humanize %></label>
33
+ <<%= type_widget_map[attribute.type] || 'r:IdentifyableListBox' %> ui:field="<%= name %>"/>
34
+ </g:HTMLPanel>
35
+ <% end -%>
36
+ <% end -%>
37
+ </g:FlowPanel>
38
+
39
+ </g:FlowPanel>
40
+
41
+ </ui:UiBinder>
@@ -0,0 +1,37 @@
1
+ <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
2
+ <ui:UiBinder
3
+ xmlns:ui="urn:ui:com.google.gwt.uibinder"
4
+ xmlns:g="urn:import:com.google.gwt.user.client.ui"
5
+ xmlns:d="urn:import:com.google.gwt.user.datepicker.client"
6
+ xmlns:r="urn:import:de.mkristian.gwt.rails.editors">
7
+
8
+ <g:FlowPanel>
9
+
10
+ <g:FlowPanel ui:field="signature" styleName="gwt-rails-model-signature">
11
+ <% unless options[:singleton] -%>
12
+ <g:Label>id: </g:Label>
13
+ <g:NumberLabel ui:field="id" />
14
+ <% end -%>
15
+ <% if options[:timestamps] -%>
16
+ <g:Label>created at: </g:Label>
17
+ <g:DateLabel ui:field="createdAt" predefinedFormat="DATE_TIME_MEDIUM"/>
18
+ <g:Label>updated at: </g:Label>
19
+ <g:DateLabel ui:field="updatedAt" predefinedFormat="DATE_TIME_MEDIUM" />
20
+ <% end -%>
21
+ </g:FlowPanel>
22
+
23
+ <g:FlowPanel styleName="gwt-rails-model-fields">
24
+ <% for attribute in attributes -%>
25
+ <% if attribute.type != :has_one && attribute.type != :has_many -%>
26
+ <% name = attribute.name.camelcase.sub(/^(.)/){ $1.downcase } -%>
27
+ <g:HTMLPanel>
28
+ <label name="<%= name %>"><%= name.underscore.humanize %></label>
29
+ <<%= type_widget_map[attribute.type] %> ui:field="<%= name %>"/>
30
+ </g:HTMLPanel>
31
+ <% end -%>
32
+ <% end -%>
33
+ </g:FlowPanel>
34
+
35
+ </g:FlowPanel>
36
+
37
+ </ui:UiBinder>
@@ -0,0 +1,30 @@
1
+ package <%= events_package %>;
2
+ <% unless options[:singleton] -%>
3
+
4
+ import java.util.List;
5
+ <% end -%>
6
+
7
+ import <%= models_package %>.<%= class_name %>;
8
+
9
+ import <%= gwt_rails_package %>.events.ModelEvent;
10
+ import <%= gwt_rails_package %>.events.ModelEventHandler;
11
+
12
+ public class <%= class_name %>Event extends ModelEvent<<%= class_name %>> {
13
+
14
+ public static final Type<ModelEventHandler<<%= class_name %>>> TYPE = new Type<ModelEventHandler<<%= class_name %>>>();
15
+
16
+ public <%= class_name %>Event(<%= class_name %> model, ModelEvent.Action action) {
17
+ super(model, action);
18
+ }
19
+ <% unless options[:singleton] -%>
20
+
21
+ public <%= class_name %>Event(List<<%= class_name %>> models, ModelEvent.Action action) {
22
+ super(models, action);
23
+ }
24
+ <% end -%>
25
+
26
+ @Override
27
+ public Type<ModelEventHandler<<%= class_name %>>> getAssociatedType() {
28
+ return TYPE;
29
+ }
30
+ }
@@ -0,0 +1,31 @@
1
+ package <%= events_package %>;
2
+ <% unless options[:singleton] -%>
3
+
4
+ import java.util.List;
5
+ <% end -%>
6
+
7
+ import <%= models_package %>.<%= class_name %>;
8
+
9
+ import <%= gwt_rails_package %>.events.ModelEvent;
10
+ import <%= gwt_rails_package %>.events.ModelEventHandler;
11
+
12
+ public class <%= class_name %>Event extends ModelEvent<<%= class_name %>> {
13
+
14
+ public static final Type<ModelEventHandler<<%= class_name %>>> TYPE = new Type<ModelEventHandler<<%= class_name %>>>();
15
+
16
+ public <%= class_name %>Event(<%= class_name %> model, ModelEvent.Action action) {
17
+ super(model, action);
18
+ }
19
+ <% unless options[:singleton] -%>
20
+
21
+ public <%= class_name %>Event(List<<%= class_name %>> models, ModelEvent.Action action) {
22
+ super(models, action);
23
+ }
24
+ <% end -%>
25
+
26
+ @Override
27
+ public Type<ModelEventHandler<<%= class_name %>>> getAssociatedType() {
28
+ return TYPE;
29
+ }
30
+
31
+ }