resty-generators 0.5.3 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/features/generators.feature +67 -0
- data/features/step_definitions/simple_steps.rb +1 -0
- data/lib/generators/resty/base.rb +15 -3
- data/lib/generators/resty/model/model_generator.rb +33 -3
- data/lib/generators/resty/scaffold/scaffold_generator.rb +30 -15
- data/lib/generators/resty/setup/setup_generator.rb +2 -2
- data/lib/generators/resty/setup/setup_generator.rb~ +31 -0
- data/lib/generators/resty/setup/templates/ActivityFactory.java~ +7 -0
- data/lib/generators/resty/setup/templates/ActivityPlace.java +5 -0
- data/lib/generators/resty/setup/templates/ActivityPlace.java~ +8 -0
- data/lib/generators/resty/setup/templates/BreadCrumbsPanel.java +3 -2
- data/lib/generators/resty/setup/templates/BreadCrumbsPanel.java~ +79 -0
- data/lib/generators/resty/setup/templates/GinModule.java~ +7 -0
- data/lib/generators/resty/setup/templates/LoginActivity.java~ +58 -0
- data/lib/generators/resty/setup/templates/LoginPlace.java~ +20 -0
- data/lib/generators/resty/setup/templates/LoginViewImpl.java~ +21 -0
- data/lib/generators/resty/setup/templates/Mavenfile +5 -5
- data/lib/generators/resty/setup/templates/Mavenfile~ +15 -0
- data/lib/generators/resty/setup/templates/MenuPanel.java~ +12 -0
- data/lib/generators/resty/setup/templates/PLaceHistoryMapper.java~ +7 -0
- data/lib/generators/resty/setup/templates/RestfulPlace.java~ +22 -0
- data/lib/generators/resty/setup/templates/SessionActivityPlaceActivityMapper.java~ +71 -0
- data/lib/generators/resty/setup/templates/SessionRestService.java~ +23 -0
- data/lib/generators/resty/setup/templates/User.java +34 -4
- data/lib/generators/resty/setup/templates/authentication.rb +2 -1
- data/lib/generators/resty/setup/templates/authentication.rb~ +4 -0
- data/lib/generators/resty/setup/templates/empty.css~ +1 -0
- data/lib/generators/resty/setup/templates/gwt.css +45 -0
- data/lib/generators/resty/setup/templates/initializer.rb~ +1 -0
- data/lib/generators/resty/setup/templates/monkey_patch.rb~ +27 -0
- data/lib/generators/resty/setup/templates/page.html~ +0 -0
- data/lib/generators/resty/setup/templates/session.rb +18 -36
- data/lib/generators/resty/setup/templates/session.rb~ +45 -0
- data/lib/generators/resty/setup/templates/sessions_controller.rb +27 -8
- data/lib/generators/resty/setup/templates/sessions_controller.rb~ +27 -0
- data/lib/generators/resty/setup/templates/user.rb +38 -6
- data/lib/generators/resty/setup/templates/user.rb~ +27 -0
- data/lib/generators/resty/templates/Activity.java +78 -39
- data/lib/generators/resty/templates/Activity.java~ +67 -0
- data/lib/generators/resty/templates/ActivityPlace.java~ +11 -0
- data/lib/generators/resty/templates/ColumnDefinitionsImpl.java~ +24 -0
- data/lib/generators/resty/templates/ColumnDefintionsImpl.java~ +34 -0
- data/lib/generators/resty/templates/Controller.java~ +49 -0
- data/lib/generators/resty/templates/Editor.java +123 -0
- data/lib/generators/resty/templates/Editor.java~ +84 -0
- data/lib/generators/resty/templates/Editor.ui.xml +41 -0
- data/lib/generators/resty/templates/Editor.ui.xml~ +37 -0
- data/lib/generators/resty/templates/Event.java +30 -0
- data/lib/generators/resty/templates/Event.java~ +31 -0
- data/lib/generators/resty/templates/EventHandler.java +8 -0
- data/lib/generators/resty/templates/EventHandler.java~ +30 -0
- data/lib/generators/resty/templates/Model.java +144 -15
- data/lib/generators/resty/templates/Model.java~ +23 -0
- data/lib/generators/resty/templates/Place.java +1 -1
- data/lib/generators/resty/templates/Place.java~ +21 -0
- data/lib/generators/resty/templates/PlaceTokenizer.java +1 -1
- data/lib/generators/resty/templates/PlaceTokenizer.java~ +19 -0
- data/lib/generators/resty/templates/RestService.java~ +51 -0
- data/lib/generators/resty/templates/View.java +15 -4
- data/lib/generators/resty/templates/View.java~ +23 -0
- data/lib/generators/resty/templates/View.ui.xml +22 -38
- data/lib/generators/resty/templates/View.ui.xml~ +17 -0
- data/lib/generators/resty/templates/ViewImpl.java +88 -103
- data/lib/generators/resty/templates/ViewImpl.java~ +153 -0
- data/lib/resty/abstract_session.rb~ +59 -0
- data/lib/resty/child_path.rb~ +18 -0
- data/lib/resty/session.rb~ +6 -0
- metadata +56 -11
@@ -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
|
+
}
|
@@ -4,39 +4,168 @@ package <%= models_package %>;
|
|
4
4
|
import java.util.Date;
|
5
5
|
<% end -%>
|
6
6
|
|
7
|
+
<% if !options[:singleton] || options[:timestamps] || options[:modified_by] -%>
|
8
|
+
import org.codehaus.jackson.annotate.JsonCreator;
|
9
|
+
import org.codehaus.jackson.annotate.JsonProperty;
|
10
|
+
<% end -%>
|
7
11
|
import org.fusesource.restygwt.client.Json;
|
8
12
|
import org.fusesource.restygwt.client.Json.Style;
|
9
13
|
|
14
|
+
import de.mkristian.gwt.rails.models.HasToDisplay;
|
15
|
+
<% unless options[:singleton] -%>
|
16
|
+
import de.mkristian.gwt.rails.models.Identifyable;
|
17
|
+
<% end -%>
|
18
|
+
|
10
19
|
@Json(style = Style.RAILS<% if class_name.downcase == class_name.underscore -%>)<% else -%>, name = "<%= class_name.underscore %>")<% end %>
|
11
|
-
public class <%= class_name %> {
|
20
|
+
public class <%= class_name %> implements HasToDisplay<% unless options[:singleton] %>, Identifyable<% end -%> {
|
12
21
|
|
13
22
|
<% unless options[:singleton] -%>
|
14
|
-
public int id;
|
23
|
+
public final int id;
|
24
|
+
<% end -%>
|
25
|
+
<% if options[:timestamps] -%>
|
26
|
+
|
27
|
+
@Json(name = "created_at")
|
28
|
+
private final Date createdAt;
|
29
|
+
|
30
|
+
@Json(name = "updated_at")
|
31
|
+
private final Date updatedAt;
|
32
|
+
<% end -%>
|
33
|
+
<% if options[:modified_by] -%>
|
34
|
+
|
35
|
+
@Json(name = "modified_by")
|
36
|
+
private final User modifiedBy;
|
15
37
|
<% end -%>
|
16
38
|
<% for attribute in attributes -%>
|
17
39
|
<% name = attribute.name.camelcase.sub(/^(.)/) {$1.downcase} -%>
|
18
40
|
|
41
|
+
<% if attribute.type == :belongs_to -%>
|
42
|
+
@Json(name = "<%= name.underscore %>_id")
|
43
|
+
private int <%= name %>Id;
|
44
|
+
<% end -%>
|
19
45
|
<% if name != name.underscore -%> @Json(name = "<%= name.underscore %>")
|
20
46
|
<% end -%>
|
21
|
-
<% if attribute.type == :has_one -%>
|
22
|
-
|
47
|
+
<% if attribute.type == :has_one || attribute.type == :belongs_to -%>
|
48
|
+
private <%= attribute.name.classify %> <%= name %>;
|
23
49
|
<% elsif attribute.type == :has_many -%>
|
24
|
-
|
50
|
+
private java.util.List<<%= attribute.name.classify %>> <%= name %>;
|
25
51
|
<% else -%>
|
26
|
-
|
52
|
+
private <%= type_map[attribute.type] || attribute.type.to_s.classify %> <%= name %>;
|
27
53
|
<% end -%>
|
28
54
|
<% end -%>
|
29
|
-
<% if options[:timestamps]
|
55
|
+
<% if !options[:singleton] || options[:timestamps] || options[:modified_by] -%>
|
30
56
|
|
31
|
-
|
32
|
-
|
57
|
+
public <%= class_name %>(){
|
58
|
+
this(<% unless options[:singleton] -%>0<% if options[:timestamps] -%>, null, null<% if options[:modified_by] -%>, null<% end -%><% end -%><% else -%><% if options[:timestamps] -%>null, null<% if options[:modified_by] -%>, null<% end -%><% else -%><% if options[:modified_by] -%>null<% end -%><% end -%><% end -%><% for attribute in attributes -%><% if attribute.type == :belongs_to -%>, 0<% end -%><% end -%>);
|
59
|
+
}
|
60
|
+
|
61
|
+
@JsonCreator
|
62
|
+
public <%= class_name %>(<% unless options[:singleton] -%>@JsonProperty("id") int id<% if options[:timestamps] -%>,
|
63
|
+
@JsonProperty("createdAt") Date createdAt,
|
64
|
+
@JsonProperty("updatedAt") Date updatedAt<% if options[:modified_by] -%>,
|
65
|
+
@JsonProperty("modifiedBy") User modifiedBy<% end -%><% end -%><% else -%><% if options[:timestamps] -%>@JsonProperty("createdAt") Date createdAt,
|
66
|
+
@JsonProperty("updatedAt") Date updatedAt<% if options[:modified_by] -%>,
|
67
|
+
@JsonProperty("modifiedBy") User modifiedBy<% end -%><% else -%><% if options[:modified_by] -%>@JsonProperty("modifiedBy") Date modifiedBy<% end -%><% end -%><% end -%><% for attribute in attributes -%><% if attribute.type == :belongs_to -%>,
|
68
|
+
<% name = attribute.name.camelcase.sub(/^(.)/) {$1.downcase} -%>
|
69
|
+
@JsonProperty("<%= name %>Id") int <%= name %>Id<% end -%><% end -%>){
|
70
|
+
<% unless options[:singleton] -%>
|
71
|
+
this.id = id;
|
72
|
+
<% end -%>
|
73
|
+
<% if options[:timestamps] -%>
|
74
|
+
this.createdAt = createdAt;
|
75
|
+
this.updatedAt = updatedAt;
|
76
|
+
<% end -%>
|
77
|
+
<% if options[:modified_by] -%>
|
78
|
+
this.modifiedBy = modifiedBy;
|
79
|
+
<% end -%>
|
80
|
+
<% for attribute in attributes -%>
|
81
|
+
<% if attribute.type == :belongs_to -%>
|
82
|
+
<% name = attribute.name.camelcase.sub(/^(.)/) {$1.downcase} -%>
|
83
|
+
this.<%= name %>Id = <%= name %>Id;
|
84
|
+
<% end -%>
|
85
|
+
<% end -%>
|
86
|
+
}
|
87
|
+
<% end -%>
|
88
|
+
<% unless options[:singleton] -%>
|
33
89
|
|
34
|
-
|
35
|
-
|
90
|
+
public int getId(){
|
91
|
+
return id;
|
92
|
+
}
|
36
93
|
<% end -%>
|
37
|
-
<% if options[:
|
94
|
+
<% if options[:timestamps] -%>
|
38
95
|
|
39
|
-
|
40
|
-
|
96
|
+
public Date getCreatedAt(){
|
97
|
+
return createdAt;
|
98
|
+
}
|
99
|
+
|
100
|
+
public Date getUpdatedAt(){
|
101
|
+
return updatedAt;
|
102
|
+
}
|
103
|
+
<% end -%>
|
104
|
+
<% if options[:modified_by] -%>
|
105
|
+
|
106
|
+
public User getModifiedBy(){
|
107
|
+
return modifiedBy;
|
108
|
+
}
|
109
|
+
<% end -%>
|
110
|
+
<% for attribute in attributes -%>
|
111
|
+
<% name = attribute.name.camelcase.sub(/^(.)/) {$1.downcase} -%>
|
112
|
+
|
113
|
+
<% if attribute.type == :has_one || attribute.type == :belongs_to -%>
|
114
|
+
public <%= attribute.name.classify %> get<%= attribute.name.camelcase %>(){
|
115
|
+
return <%= name %>;
|
116
|
+
}
|
117
|
+
|
118
|
+
public void set<%= attribute.name.camelcase %>(<%= attribute.name.classify %> value){
|
119
|
+
<%= name %> = value;
|
120
|
+
<% if attribute.type == :belongs_to -%>
|
121
|
+
<%= name %>Id = value == null ? 0 : value.getId();
|
122
|
+
<% end -%>
|
123
|
+
}
|
124
|
+
<% if attribute.type == :belongs_to -%>
|
125
|
+
|
126
|
+
public int get<%= attribute.name.camelcase %>Id(){
|
127
|
+
return <%= name %>Id;
|
128
|
+
}
|
129
|
+
<% end -%>
|
130
|
+
<% elsif attribute.type == :has_many -%>
|
131
|
+
//TODO private java.util.List<<%= attribute.name.classify %>> <%= name %>;
|
132
|
+
<% else -%>
|
133
|
+
public <%= type_map[attribute.type] || attribute.type.to_s.classify %> get<%= name.camelcase %>(){
|
134
|
+
return <%= name %>;
|
135
|
+
}
|
136
|
+
|
137
|
+
public void set<%= attribute.name.camelcase %>(<%= type_map[attribute.type] || attribute.type.to_s.classify %> value){
|
138
|
+
<%= name %> = value;
|
139
|
+
}
|
140
|
+
<% end -%>
|
141
|
+
<% end -%>
|
142
|
+
<% if attributes.detect {|a| a.type == :belongs_to } -%>
|
143
|
+
|
144
|
+
public <%= class_name %> minimalClone() {
|
145
|
+
<%= class_name %> clone = new <%= class_name %>(<% unless options[:singleton] -%>id, <% end -%><% if options[:timestamps] -%>null, updatedAt, <% end -%><% if options[:modified_by] -%>null, <% end -%><%= attributes.select {|a| a.type == :belongs_to }.collect do |attribute|
|
146
|
+
name = attribute.name.camelcase.sub(/^(.)/) {$1.downcase}
|
147
|
+
"#{name}Id"
|
148
|
+
end.join ',' -%>);
|
149
|
+
<% attributes.select {|attr| ![:belongs_to, :has_one, :has_many].include?(attr.type) }.each do |attribute| -%>
|
150
|
+
<% name = attribute.name.camelcase.sub(/^(.)/) {$1.downcase} -%>
|
151
|
+
clone.set<%= attribute.name.camelcase %>(this.<%= name %>);
|
41
152
|
<% end -%>
|
42
|
-
|
153
|
+
return clone;
|
154
|
+
}
|
155
|
+
<% end -%>
|
156
|
+
<% unless options[:singleton] -%>
|
157
|
+
|
158
|
+
public int hashCode(){
|
159
|
+
return id;
|
160
|
+
}
|
161
|
+
|
162
|
+
public boolean equals(Object other){
|
163
|
+
return (other instanceof <%= class_name %>) &&
|
164
|
+
((<%= class_name %>)other).id == id;
|
165
|
+
}
|
166
|
+
<% end -%>
|
167
|
+
|
168
|
+
public String toDisplay() {
|
169
|
+
return <%= attributes.first.name.camelcase.sub(/^(.)/) {$1.downcase} %><% unless attributes.first.type == :string %> + ""<% end -%>;
|
170
|
+
}
|
171
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
package <%= models_base_package %>;
|
2
|
+
|
3
|
+
public class <%= class_name %> {
|
4
|
+
|
5
|
+
<% for attribute in attributes -%>
|
6
|
+
<% if attribute.type == :has_one -%>
|
7
|
+
<%= attribute.name.classify %> <%= attribute.name %>;
|
8
|
+
<% elsif attribute.type == :has_many -%>
|
9
|
+
java.util.List<<%= attribute.name.classify %>> <%= attribute.name %>;
|
10
|
+
<% else -%>
|
11
|
+
<%= type_map[attribute.type] || attribute.type.to_s.classify %> <%= attribute.name %>;
|
12
|
+
<% end -%>
|
13
|
+
|
14
|
+
<% end -%>
|
15
|
+
<% if options[:timestamps] %>
|
16
|
+
//TODO timestamps
|
17
|
+
|
18
|
+
<% end -%>
|
19
|
+
<% if options[:timestamps] %>
|
20
|
+
//TODO modified_by
|
21
|
+
|
22
|
+
<% end -%>
|
23
|
+
}
|
@@ -19,7 +19,7 @@ public class <%= class_name %>Place extends ActivityPlace<<%= class_name %>> {
|
|
19
19
|
}
|
20
20
|
|
21
21
|
public <%= class_name %>Place(<%= class_name %> model, RestfulAction restfulAction) {
|
22
|
-
super(model, restfulAction, "<%= table_name %>");
|
22
|
+
super(<% unless options[:singleton] -%>model.getId(), <% end -%>model, restfulAction, "<%= table_name %>");
|
23
23
|
}
|
24
24
|
|
25
25
|
public <%= class_name %>Place(int id, RestfulAction restfulAction) {
|
@@ -0,0 +1,21 @@
|
|
1
|
+
package <%= places_package %>;
|
2
|
+
|
3
|
+
import <%= gwt_rails_package %>.RestfulAction;
|
4
|
+
|
5
|
+
import <%= managed_package %>.RestfulPlace;
|
6
|
+
import <%= managed_package %>.ActivityFactory;
|
7
|
+
|
8
|
+
import <%= models_package %>.<%= class_name %>;
|
9
|
+
|
10
|
+
import com.google.gwt.activity.shared.Activity;
|
11
|
+
|
12
|
+
public class <%= class_name %>Place extends RestfulPlace<<%= class_name %>>{
|
13
|
+
|
14
|
+
public Activity create(ActivityFactory factory){
|
15
|
+
return factory.create(this);
|
16
|
+
}
|
17
|
+
|
18
|
+
public <%= class_name %>Place(RestfulAction restfulAction) {
|
19
|
+
super(restfulAction);
|
20
|
+
}
|
21
|
+
}
|
@@ -13,7 +13,7 @@ public class <%= class_name %>PlaceTokenizer extends RestfulPlaceTokenizer<<%= c
|
|
13
13
|
return new <%= class_name %>Place(t.action);
|
14
14
|
}
|
15
15
|
else {
|
16
|
-
return new <%= class_name %>Place(t.
|
16
|
+
return new <%= class_name %>Place(t.id, t.action);
|
17
17
|
}
|
18
18
|
<% end -%>
|
19
19
|
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
package <%= places_package %>;
|
2
|
+
|
3
|
+
import <%= gwt_rails_package %>.RestfulActionEnum;
|
4
|
+
|
5
|
+
import com.google.gwt.place.shared.PlaceTokenizer;
|
6
|
+
import com.google.gwt.place.shared.Prefix;
|
7
|
+
|
8
|
+
@Prefix("<%= table_name %>")
|
9
|
+
public class <%= class_name %>PlaceTokenizer implements PlaceTokenizer<<%= class_name %>Place> {
|
10
|
+
|
11
|
+
public <%= class_name %>Place getPlace(String token) {
|
12
|
+
return new <%= class_name %>Place(RestfulActionEnum.toRestfulAction(token));
|
13
|
+
}
|
14
|
+
|
15
|
+
public String getToken(<%= class_name %>Place place) {
|
16
|
+
return place.action.token();
|
17
|
+
}
|
18
|
+
|
19
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
package <%= restservices_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_package %>.*;
|
13
|
+
<% end -%>
|
14
|
+
|
15
|
+
@Path("/<%= table_name %><%= options[:singleton] ? '.json' : '' %>")
|
16
|
+
//@Options(dispatcher = RestfulRetryingDispatcher.class)
|
17
|
+
public interface <%= controller_class_name %>RestService extends RestService {
|
18
|
+
|
19
|
+
<% actions.each do |action|
|
20
|
+
case action_map[action]
|
21
|
+
when :get_all -%>
|
22
|
+
@GET @Path("/<%= table_name %>.json")
|
23
|
+
//@Options(dispatcher = RetryingDispatcher.class)
|
24
|
+
void <%= action %>(MethodCallback<List<<%= class_name %>>> callback);
|
25
|
+
|
26
|
+
// @GET @Path("/<%= table_name %>.json")
|
27
|
+
// void <%= action %>(MethodCallback<List<<%= class_name %>>> callback, @QueryParam("limit") int limit, @QueryParam("offset") int offset);
|
28
|
+
//
|
29
|
+
<% when :get_single -%>
|
30
|
+
@GET<% unless options[:singleton] -%> @Path("/<%= table_name %>/{id}.json")<% end %>
|
31
|
+
void <%= action %>(<% unless options[:singleton] -%>@PathParam("id") int id, <% end -%>MethodCallback<<%= class_name %>> callback);
|
32
|
+
|
33
|
+
<% when :post -%>
|
34
|
+
@POST @Path("/<%= table_name %>.json")
|
35
|
+
void <%= action %>(<%= class_name %> value, MethodCallback<<%= class_name %>> callback);
|
36
|
+
|
37
|
+
<% when :put -%>
|
38
|
+
@PUT<% unless options[:singleton] -%> @Path("/<%= table_name %>/{id}.json")<% end %>
|
39
|
+
void <%= action %>(<% unless options[:singleton] -%>@PathParam("id") @Attribute("id") <% end -%><%= class_name %> value, MethodCallback<<%= class_name %>> callback);
|
40
|
+
|
41
|
+
<% when :delete -%>
|
42
|
+
@DELETE @Path("/<%= table_name %>/{id}.json")
|
43
|
+
void <%= action %>(@PathParam("id") @Attribute("id") <%= class_name %> value, MethodCallback<Void> callback);
|
44
|
+
|
45
|
+
<% else -%>
|
46
|
+
@GET @Path("/<%= table_name %>/<%= action %>.json")
|
47
|
+
void <%= action %>(MethodCallback<Void> callback);
|
48
|
+
|
49
|
+
<% end
|
50
|
+
end -%>
|
51
|
+
}
|
@@ -1,8 +1,13 @@
|
|
1
1
|
package <%= views_package %>;
|
2
2
|
|
3
|
-
<%
|
3
|
+
<% if !options[:singleton] || attributes.detect { |a| a.type == :belongs_to} -%>
|
4
4
|
import java.util.List;
|
5
5
|
|
6
|
+
<% end -%>
|
7
|
+
<% for attribute in attributes -%>
|
8
|
+
<% if attribute.type == :belongs_to -%>
|
9
|
+
import <%= models_package %>.<%= attribute.name.classify %>;
|
10
|
+
<% end -%>
|
6
11
|
<% end -%>
|
7
12
|
import <%= models_package %>.<%= class_name %>;
|
8
13
|
|
@@ -27,7 +32,9 @@ public interface <%= class_name %>View extends IsWidget {
|
|
27
32
|
}
|
28
33
|
void setPresenter(Presenter presenter);
|
29
34
|
|
30
|
-
void
|
35
|
+
void edit(<%= class_name %> model);
|
36
|
+
|
37
|
+
<%= class_name %> flush();
|
31
38
|
<% unless options[:singleton] -%>
|
32
39
|
|
33
40
|
void reset(List<<%= class_name %>> models);
|
@@ -36,8 +43,6 @@ public interface <%= class_name %>View extends IsWidget {
|
|
36
43
|
void reset(RestfulAction action);
|
37
44
|
|
38
45
|
void setEnabled(boolean enabled);
|
39
|
-
|
40
|
-
<%= class_name %> retrieve<%= class_name %>();
|
41
46
|
<% unless options[:singleton] -%>
|
42
47
|
|
43
48
|
void updateInList(<%= class_name %> model);
|
@@ -46,4 +51,10 @@ public interface <%= class_name %>View extends IsWidget {
|
|
46
51
|
|
47
52
|
void addToList(<%= class_name %> model);
|
48
53
|
<% end -%>
|
54
|
+
<% for attribute in attributes -%>
|
55
|
+
<% if attribute.type == :belongs_to -%>
|
56
|
+
|
57
|
+
void reset<%= attribute.name.classify.to_s.pluralize %>(List<<%= attribute.name.classify %>> list);
|
58
|
+
<% end -%>
|
59
|
+
<% end -%>
|
49
60
|
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
package <%= views_package %>;
|
2
|
+
|
3
|
+
import java.util.List;
|
4
|
+
|
5
|
+
import <%= models_package %>.<%= class_name %>;
|
6
|
+
|
7
|
+
import com.google.gwt.place.shared.Place;
|
8
|
+
import com.google.gwt.user.client.ui.IsWidget;
|
9
|
+
import com.google.inject.ImplementedBy;
|
10
|
+
|
11
|
+
@ImplementedBy(<%= class_name %>ViewImpl.class)
|
12
|
+
public interface <%= class_name %>View extends IsWidget {
|
13
|
+
void setPresenter(Presenter presenter);
|
14
|
+
|
15
|
+
public interface Presenter {
|
16
|
+
|
17
|
+
void goTo(Place place);
|
18
|
+
|
19
|
+
void onItemClicked(<%= class_name %> model);
|
20
|
+
}
|
21
|
+
void reset(<%= class_name %> model);
|
22
|
+
void reset(List<<%= class_name %>> models);
|
23
|
+
}
|
@@ -1,48 +1,26 @@
|
|
1
1
|
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
2
2
|
<ui:UiBinder
|
3
3
|
xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
4
|
-
xmlns:g="urn:import:com.google.gwt.user.client.ui"
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
</ui:style>
|
13
|
-
|
14
|
-
<g:FlowPanel styleName="display">
|
15
|
-
<g:FlowPanel styleName="{style.buttons}">
|
4
|
+
xmlns:g="urn:import:com.google.gwt.user.client.ui"
|
5
|
+
xmlns:t="urn:import:<%= editors_package %>">
|
6
|
+
|
7
|
+
<g:FlowPanel styleName="gwt-rails-display">
|
8
|
+
|
9
|
+
<g:Label><%if options[:singleton] -%><%= class_name.underscore.singularize.humanize %><% else -%><%= class_name.underscore.pluralize.humanize %><% end -%></g:Label>
|
10
|
+
|
11
|
+
<g:FlowPanel styleName="gwt-rails-buttons">
|
16
12
|
<% unless options[:singleton] -%>
|
17
13
|
<g:Button ui:field="newButton">New</g:Button>
|
18
14
|
<% end -%>
|
19
15
|
<g:Button ui:field="editButton">Edit</g:Button>
|
16
|
+
<g:Button ui:field="showButton">Show</g:Button>
|
20
17
|
</g:FlowPanel>
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
<% if options[:timestamps] %>
|
28
|
-
<g:Label>created at: </g:Label>
|
29
|
-
<g:DateLabel ui:field="createdAt" predefinedFormat="DATE_TIME_MEDIUM"/>
|
30
|
-
<g:Label>updated at: </g:Label>
|
31
|
-
<g:DateLabel ui:field="updatedAt" predefinedFormat="DATE_TIME_MEDIUM" />
|
32
|
-
<% end -%>
|
33
|
-
</g:FlowPanel>
|
34
|
-
<g:FlowPanel styleName="{style.fields}">
|
35
|
-
<% for attribute in attributes -%>
|
36
|
-
<% if attribute.type != :has_one && attribute.type != :has_many -%>
|
37
|
-
<% name = attribute.name.camelcase.sub(/^(.)/){ $1.downcase } -%>
|
38
|
-
<g:FlowPanel styleName="{style.field}">
|
39
|
-
<g:HTML><label name="<%= name %>"><%= name.underscore.humanize %></label></g:HTML>
|
40
|
-
<g:TextBox ui:field="<%= name %>" name="<%= name %>"/>
|
41
|
-
</g:FlowPanel>
|
42
|
-
<% end -%>
|
43
|
-
<% end -%>
|
44
|
-
</g:FlowPanel>
|
45
|
-
<g:FlowPanel styleName="{style.buttons}">
|
18
|
+
|
19
|
+
<g:FlowPanel ui:field="model" styleName="gwt-rails-model">
|
20
|
+
|
21
|
+
<t:<%= class_name %>Editor ui:field="editor" styleName="gwt-rails-model-editor" />
|
22
|
+
|
23
|
+
<g:FlowPanel styleName="gwt-rails-buttons">
|
46
24
|
<% unless options[:singleton] -%>
|
47
25
|
<g:Button ui:field="createButton">Create</g:Button>
|
48
26
|
<% end -%>
|
@@ -51,9 +29,15 @@
|
|
51
29
|
<g:Button ui:field="deleteButton">Delete</g:Button>
|
52
30
|
<% end -%>
|
53
31
|
</g:FlowPanel>
|
32
|
+
|
54
33
|
</g:FlowPanel>
|
55
34
|
<% unless options[:singleton] -%>
|
56
|
-
|
35
|
+
|
36
|
+
<g:FlowPanel styleName="gwt-rails-model-list">
|
37
|
+
<g:FlexTable ui:field="list"/>
|
38
|
+
</g:FlowPanel>
|
57
39
|
<% end -%>
|
40
|
+
|
58
41
|
</g:FlowPanel>
|
42
|
+
|
59
43
|
</ui:UiBinder>
|