Neurogami-jimpanzee 1.0.2.1 → 1.0.3.2
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.
- data/History.txt +7 -0
- data/Jimpanzee.gemspec +0 -0
- data/Manifest.txt +2 -2
- data/README.md +1 -1
- data/bin/jimpanzee +1 -1
- data/lib/jimpanzee_version.rb +9 -0
- data/lib/monkeybars/controller.rb +61 -46
- data/lib/monkeybars/view.rb +9 -0
- data/skeleton/lib/java/{monkeybars-1.0.2.1.jar → monkeybars-1.0.3.1.jar} +0 -0
- data/skeleton/src/manifest.rb +11 -1
- data/skeleton/tasks/jimpanzee.rake +173 -0
- metadata +4 -3
- data/skeleton/tasks/monkeybars.rake +0 -89
data/History.txt
CHANGED
data/Jimpanzee.gemspec
CHANGED
Binary file
|
data/Manifest.txt
CHANGED
@@ -22,14 +22,14 @@ lib/monkeybars/view_nesting.rb
|
|
22
22
|
lib/monkeybars/view_positioning.rb
|
23
23
|
lib/jimpanzee_version.rb
|
24
24
|
skeleton/Rakefile
|
25
|
-
skeleton/lib/java/monkeybars-1.0.
|
25
|
+
skeleton/lib/java/monkeybars-1.0.3.1.jar
|
26
26
|
skeleton/lib/ruby/README.txt
|
27
27
|
skeleton/src/application_controller.rb
|
28
28
|
skeleton/src/application_view.rb
|
29
29
|
skeleton/src/main.rb
|
30
30
|
skeleton/src/manifest.rb
|
31
31
|
skeleton/src/resolver.rb
|
32
|
-
skeleton/tasks/
|
32
|
+
skeleton/tasks/jimpanzee.rake
|
33
33
|
spec/spec_helper.rb
|
34
34
|
spec/unit/component_mixin_spec.rb
|
35
35
|
spec/unit/controller_spec.rb
|
data/README.md
CHANGED
data/bin/jimpanzee
CHANGED
@@ -84,10 +84,11 @@ module Monkeybars
|
|
84
84
|
class Controller
|
85
85
|
include TaskProcessor
|
86
86
|
include EventHandlerRegistrationAndDispatchMixin
|
87
|
+
|
87
88
|
|
88
89
|
@@instance_list ||= Hash.new {|hash, key| hash[key] = []}
|
89
90
|
@@instance_lock ||= Hash.new {|hash, key| hash[key] = Mutex.new }
|
90
|
-
|
91
|
+
|
91
92
|
# Controllers cannot be instantiated via a call to new, instead use instance
|
92
93
|
# to retrieve the instance of the view. Currently only one instance of a
|
93
94
|
# controller is created but in the near future a configurable limit will be
|
@@ -102,7 +103,7 @@ module Monkeybars
|
|
102
103
|
end
|
103
104
|
end
|
104
105
|
end
|
105
|
-
|
106
|
+
|
106
107
|
# Always returns a new instance of the controller.
|
107
108
|
#
|
108
109
|
# controller1 = MyController.create_instance
|
@@ -113,7 +114,7 @@ module Monkeybars
|
|
113
114
|
def self.create_instance
|
114
115
|
new
|
115
116
|
end
|
116
|
-
|
117
|
+
|
117
118
|
# Declares the view class (as a symbol) to use when instantiating the controller.
|
118
119
|
#
|
119
120
|
# set_view :MyView
|
@@ -175,7 +176,7 @@ module Monkeybars
|
|
175
176
|
raise "'Update' is a reserved method name" if :update == method
|
176
177
|
self.send(:class_variable_set, :@@update_method_name, method)
|
177
178
|
end
|
178
|
-
|
179
|
+
|
179
180
|
# Valid close actions are
|
180
181
|
# * :nothing
|
181
182
|
# * :close (default)
|
@@ -195,7 +196,7 @@ module Monkeybars
|
|
195
196
|
def self.set_close_action(action)
|
196
197
|
self.send(:class_variable_set, :@@close_action, action)
|
197
198
|
end
|
198
|
-
|
199
|
+
|
199
200
|
# Returns a frozen hash of ControllerName => [instances] pairs. This is
|
200
201
|
# useful if you need to iterate over all active controllers to call update
|
201
202
|
# or to check for a status.
|
@@ -208,29 +209,29 @@ module Monkeybars
|
|
208
209
|
def self.active_controllers
|
209
210
|
@@instance_list.clone.freeze
|
210
211
|
end
|
211
|
-
|
212
|
+
|
212
213
|
# See EventHandlerRegistrationAndDispatchMixin::ClassMethods#add_listener
|
213
214
|
class << self
|
214
|
-
|
215
|
+
alias_method :original_add_listener, :add_listener
|
215
216
|
end
|
216
217
|
def self.add_listener(details)
|
217
218
|
original_add_listener(details)
|
218
219
|
hide_protected_class_methods #workaround for JRuby bug #1283
|
219
220
|
end
|
220
|
-
|
221
|
-
|
221
|
+
|
222
|
+
private
|
222
223
|
def self.hide_protected_class_methods #JRuby bug #1283
|
223
224
|
private_class_method :new
|
224
225
|
end
|
225
226
|
hide_protected_class_methods
|
226
|
-
|
227
|
+
|
227
228
|
def self.__new__
|
228
229
|
object = new
|
229
230
|
@@instance_list[self] << object
|
230
231
|
@@instance_list[self].uniq!
|
231
232
|
object
|
232
233
|
end
|
233
|
-
|
234
|
+
|
234
235
|
def initialize
|
235
236
|
@model_has_block = false
|
236
237
|
@__model = create_new_model unless self.class.model_class.nil?
|
@@ -239,25 +240,25 @@ module Monkeybars
|
|
239
240
|
@__transfer = {}
|
240
241
|
@__view_state = nil
|
241
242
|
setup_implicit_and_explicit_event_handlers
|
242
|
-
|
243
|
+
|
243
244
|
action = close_action
|
244
245
|
unless [:nothing, :close, :exit, :dispose, :hide].include?(action)
|
245
246
|
raise "Unknown close action: #{action}. Only :nothing, :close, :exit, :dispose, and :hide are supported"
|
246
247
|
end
|
247
|
-
|
248
|
+
|
248
249
|
window_type = if @__view.instance_variable_get(:@main_view_component).kind_of? javax.swing.JInternalFrame
|
249
250
|
"internalFrame"
|
250
|
-
|
251
|
+
else
|
251
252
|
"window"
|
252
|
-
|
253
|
-
|
253
|
+
end
|
254
|
+
|
254
255
|
unless @__view.nil?
|
255
256
|
@__view.close_action(Monkeybars::View::CloseActions::METHOD, MonkeybarsWindowAdapter.new(:"#{window_type}Closing" => self.method(:built_in_close_method)))
|
256
257
|
end
|
257
|
-
|
258
|
+
|
258
259
|
@closed = true
|
259
260
|
end
|
260
|
-
|
261
|
+
|
261
262
|
def close_action
|
262
263
|
if self.class.class_variables.member?("@@close_action")
|
263
264
|
action = self.class.send(:class_variable_get, :@@close_action)
|
@@ -266,7 +267,7 @@ module Monkeybars
|
|
266
267
|
end
|
267
268
|
action
|
268
269
|
end
|
269
|
-
|
270
|
+
|
270
271
|
public
|
271
272
|
# Calls the method that was set using Controller.set_update_method. If no method has been set defined, this call is ignored.
|
272
273
|
def update
|
@@ -281,7 +282,7 @@ module Monkeybars
|
|
281
282
|
def update_view
|
282
283
|
@__view.update(model, transfer)
|
283
284
|
end
|
284
|
-
|
285
|
+
|
285
286
|
# Sends a signal to the view. The view will process the signal (if it is
|
286
287
|
# defined in the view via View.define_signal) and optionally invoke the
|
287
288
|
#callback that is passed in as a block.
|
@@ -294,7 +295,7 @@ module Monkeybars
|
|
294
295
|
def signal(signal_name, &callback)
|
295
296
|
@__view.process_signal(signal_name, model, transfer, &callback)
|
296
297
|
end
|
297
|
-
|
298
|
+
|
298
299
|
# Nests a controller under this controller with the given key
|
299
300
|
# def add_user_button_action_performed
|
300
301
|
# @controllers << UserController.create_instance
|
@@ -308,7 +309,7 @@ module Monkeybars
|
|
308
309
|
nested_view = sub_controller.instance_variable_get(:@__view)
|
309
310
|
@__view.add_nested_view(name, nested_view, nested_view.instance_variable_get(:@main_view_component), model, transfer)
|
310
311
|
end
|
311
|
-
|
312
|
+
|
312
313
|
# Removes the nested controller with the given key
|
313
314
|
# This does not do any cleanup on the nested controller's instance.
|
314
315
|
#
|
@@ -326,6 +327,13 @@ module Monkeybars
|
|
326
327
|
@__view.remove_nested_view(name, nested_view, nested_view.instance_variable_get(:@main_view_component), model, transfer)
|
327
328
|
end
|
328
329
|
|
330
|
+
|
331
|
+
# You cannot jusrt call the Rubty 'exit' to exit the application process, you need the Java exit.
|
332
|
+
#
|
333
|
+
def application_exit
|
334
|
+
java.lang.System.exit(0)
|
335
|
+
end
|
336
|
+
|
329
337
|
# Returns true if the view is visible, false otherwise
|
330
338
|
def visible?
|
331
339
|
@__view.visible?
|
@@ -335,7 +343,7 @@ module Monkeybars
|
|
335
343
|
def hide
|
336
344
|
@__view.hide
|
337
345
|
end
|
338
|
-
|
346
|
+
|
339
347
|
# Disposes the view
|
340
348
|
def dispose
|
341
349
|
@__view.dispose
|
@@ -345,7 +353,7 @@ module Monkeybars
|
|
345
353
|
def show
|
346
354
|
@__view.show
|
347
355
|
end
|
348
|
-
|
356
|
+
|
349
357
|
# True if close has been called on the controller
|
350
358
|
def closed?
|
351
359
|
@closed
|
@@ -370,19 +378,19 @@ module Monkeybars
|
|
370
378
|
@@instance_list[self.class] << self
|
371
379
|
end
|
372
380
|
end
|
373
|
-
|
381
|
+
|
374
382
|
if closed?
|
375
383
|
load(*args, &block)
|
376
384
|
@__view.on_first_update(model, transfer)
|
377
385
|
clear_view_state
|
378
386
|
@closed = false
|
379
387
|
end
|
380
|
-
|
388
|
+
|
381
389
|
show
|
382
|
-
|
390
|
+
|
383
391
|
self #allow var assignment off of open, i.e. screen = SomeScreen.instance.open
|
384
392
|
end
|
385
|
-
|
393
|
+
|
386
394
|
# Stub to be overriden in sub-class. This is where you put the code you would
|
387
395
|
# normally put in initialize, it will be called the first time open is called
|
388
396
|
# on the controller.
|
@@ -397,9 +405,16 @@ module Monkeybars
|
|
397
405
|
original_handle_event(component_name, event_name, event)
|
398
406
|
clear_view_state
|
399
407
|
end
|
408
|
+
|
409
|
+
|
400
410
|
|
411
|
+
def have_focus?
|
412
|
+
!@__view.have_focus?.nil?
|
413
|
+
end
|
414
|
+
alias_method :focused?, :have_focus?
|
415
|
+
|
401
416
|
private
|
402
|
-
|
417
|
+
|
403
418
|
# Returns the model object. This is the object that is passed to the view
|
404
419
|
# when update_view is called. This model is *not* the same model that you
|
405
420
|
# get from #view_state. Values that you want to propogate from the
|
@@ -407,7 +422,7 @@ module Monkeybars
|
|
407
422
|
def model #:doc:
|
408
423
|
@__model
|
409
424
|
end
|
410
|
-
|
425
|
+
|
411
426
|
# Returns the transfer object which is a transient hash passed to the view
|
412
427
|
# whenever #update_view is called. The transfer is cleared after each call
|
413
428
|
# to #update_view. The transfer is used to pass data to and
|
@@ -427,7 +442,7 @@ module Monkeybars
|
|
427
442
|
def transfer #:doc:
|
428
443
|
@__transfer
|
429
444
|
end
|
430
|
-
|
445
|
+
|
431
446
|
# Returns a ViewState object which contains a model and a transfer hash of the
|
432
447
|
# view's current contents as defined by the view's mappings. This is for use in
|
433
448
|
# event handlers. The contents of the model and transfer are *not* the same as
|
@@ -463,19 +478,19 @@ module Monkeybars
|
|
463
478
|
def view_model # :doc:
|
464
479
|
view_state.model
|
465
480
|
end
|
466
|
-
|
481
|
+
|
467
482
|
# Equivalent to view_state.transfer
|
468
483
|
def view_transfer
|
469
484
|
view_state.transfer
|
470
485
|
end
|
471
|
-
|
486
|
+
|
472
487
|
# Resets memoized view_state value. This is called automatically after each
|
473
488
|
# event so it would only need to be called if view_state is used outside
|
474
489
|
# of an event handler.
|
475
490
|
def clear_view_state # :doc:
|
476
491
|
@__view_state = nil
|
477
492
|
end
|
478
|
-
|
493
|
+
|
479
494
|
# This method is almost always used from within an event handler to propogate
|
480
495
|
# the view_state to the model. Updates the model from the source provided
|
481
496
|
# (typically from view_state). The list of properties defines what is modified
|
@@ -492,7 +507,7 @@ module Monkeybars
|
|
492
507
|
def update_model(source, *properties) # :doc:
|
493
508
|
update_provided_model(source, @__model, *properties)
|
494
509
|
end
|
495
|
-
|
510
|
+
|
496
511
|
# This method works just like Controller#update_model except that the target
|
497
512
|
# is not implicitly the model. The second parameter is a target object for
|
498
513
|
# the properties to be propogated to. This is useful if you have a composite
|
@@ -511,29 +526,29 @@ module Monkeybars
|
|
511
526
|
destination.send("#{property}=", source.send(property))
|
512
527
|
end
|
513
528
|
end
|
514
|
-
|
529
|
+
|
515
530
|
@@model_class_for_child_controller ||= {}
|
516
531
|
def self.model_class
|
517
532
|
@@model_class_for_child_controller[self]
|
518
533
|
end
|
519
|
-
|
534
|
+
|
520
535
|
def self.model_class=(model)
|
521
536
|
@@model_class_for_child_controller[self] = model
|
522
537
|
end
|
523
|
-
|
538
|
+
|
524
539
|
@@view_class_for_child_controller ||= {}
|
525
540
|
def self.view_class
|
526
541
|
@@view_class_for_child_controller[self]
|
527
542
|
end
|
528
|
-
|
543
|
+
|
529
544
|
def self.view_class=(view)
|
530
545
|
@@view_class_for_child_controller[self] = view
|
531
546
|
end
|
532
|
-
|
547
|
+
|
533
548
|
def sub_controllers
|
534
549
|
@__sub_controllers ||= {}
|
535
550
|
end
|
536
|
-
|
551
|
+
|
537
552
|
def create_new_model
|
538
553
|
begin
|
539
554
|
unless self.class.model_class.first.nil?
|
@@ -548,7 +563,7 @@ module Monkeybars
|
|
548
563
|
self.class.model_class.first.constantize.new
|
549
564
|
end
|
550
565
|
end
|
551
|
-
|
566
|
+
|
552
567
|
def create_new_view
|
553
568
|
begin
|
554
569
|
self.class.view_class.constantize.new
|
@@ -581,11 +596,11 @@ module Monkeybars
|
|
581
596
|
# an array so we emulate the array methods that are in common usage.
|
582
597
|
class ViewState
|
583
598
|
attr_reader :model, :transfer
|
584
|
-
|
599
|
+
|
585
600
|
def initialize(model, transfer)
|
586
601
|
@model, @transfer = model, transfer
|
587
602
|
end
|
588
|
-
|
603
|
+
|
589
604
|
def [](index)
|
590
605
|
case index
|
591
606
|
when 0
|
@@ -596,11 +611,11 @@ module Monkeybars
|
|
596
611
|
nil
|
597
612
|
end
|
598
613
|
end
|
599
|
-
|
614
|
+
|
600
615
|
def first
|
601
616
|
@model
|
602
617
|
end
|
603
|
-
|
618
|
+
|
604
619
|
def last
|
605
620
|
@transfer
|
606
621
|
end
|
data/lib/monkeybars/view.rb
CHANGED
@@ -71,6 +71,8 @@ module Monkeybars
|
|
71
71
|
METHOD = :method
|
72
72
|
end
|
73
73
|
|
74
|
+
|
75
|
+
|
74
76
|
private
|
75
77
|
@@view_nestings_for_child_view ||= {}
|
76
78
|
def self.view_nestings
|
@@ -437,6 +439,13 @@ module Monkeybars
|
|
437
439
|
}
|
438
440
|
end
|
439
441
|
|
442
|
+
def have_focus?
|
443
|
+
!@main_view_component.focus_owner?.nil?
|
444
|
+
end
|
445
|
+
alias_method :focused?, :have_focus?
|
446
|
+
|
447
|
+
|
448
|
+
|
440
449
|
def update(model, transfer)
|
441
450
|
self.class.view_mappings.select{|mapping| mapping.maps_to_view?}.each {|mapping| mapping.to_view(self, model, transfer)}
|
442
451
|
transfer.clear
|
Binary file
|
data/skeleton/src/manifest.rb
CHANGED
@@ -22,9 +22,19 @@ end
|
|
22
22
|
|
23
23
|
require 'resolver'
|
24
24
|
|
25
|
+
|
26
|
+
# Good for when you replace an old version with a new version.
|
27
|
+
# Not good if you have more than one version in the same directory. :)
|
28
|
+
# But if take care to have only one monkeybars jar in the folder,
|
29
|
+
# then you don not need to re-edit this file.
|
30
|
+
def monkeybars_jar path
|
31
|
+
Dir.glob(path).select { |f| f =~ /(monkeybars-)(.+).jar$/}.first
|
32
|
+
end
|
33
|
+
|
25
34
|
case Monkeybars::Resolver.run_location
|
26
35
|
when Monkeybars::Resolver::IN_FILE_SYSTEM
|
27
|
-
|
36
|
+
here = File.expand_path File.dirname(__FILE__)
|
37
|
+
add_to_classpath monkeybars_jar( here + '/../lib/java/*.jar' )
|
28
38
|
end
|
29
39
|
|
30
40
|
require 'monkeybars'
|
@@ -0,0 +1,173 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
desc "ALL, CONTROLLER, VIEW, MODEL, UI are valid options."
|
4
|
+
task 'generate'
|
5
|
+
rule(/^generate/) do |t|
|
6
|
+
ARGV[1..-1].each do |generator_command|
|
7
|
+
command, argument = generator_command.split("=")
|
8
|
+
case command
|
9
|
+
when "ALL"
|
10
|
+
generate_tuple argument
|
11
|
+
when "VIEW"
|
12
|
+
generate_view argument
|
13
|
+
when "CONTROLLER"
|
14
|
+
generate_controller argument
|
15
|
+
when "MODEL"
|
16
|
+
generate_model argument
|
17
|
+
when "UI"
|
18
|
+
generate_ui argument
|
19
|
+
|
20
|
+
else
|
21
|
+
$stdout << "Unknown generate target #{argument}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def generate_tuple path
|
27
|
+
pwd = FileUtils.pwd
|
28
|
+
generate_controller path
|
29
|
+
FileUtils.cd pwd
|
30
|
+
generate_model path
|
31
|
+
FileUtils.cd pwd
|
32
|
+
generate_view path, using_ui = true
|
33
|
+
FileUtils.cd pwd
|
34
|
+
generate_ui path
|
35
|
+
end
|
36
|
+
|
37
|
+
def generate_controller path
|
38
|
+
name = setup_directory path
|
39
|
+
file_name = "#{name}_controller.rb"
|
40
|
+
name = camelize name
|
41
|
+
$stdout << "Generating controller #{name}Controller in file #{file_name}\n"
|
42
|
+
File.open(file_name, "w") do |controller_file|
|
43
|
+
controller_file << <<-ENDL
|
44
|
+
class #{name}Controller < ApplicationController
|
45
|
+
set_model '#{name}Model'
|
46
|
+
set_view '#{name}View'
|
47
|
+
set_close_action :exit
|
48
|
+
end
|
49
|
+
ENDL
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def generate_model(path)
|
54
|
+
name = setup_directory(path)
|
55
|
+
file_name = "#{name}_model.rb"
|
56
|
+
name = camelize(name)
|
57
|
+
$stdout << "Generating model #{name}Model in file #{file_name}\n"
|
58
|
+
File.open(file_name, "w") do |model_file|
|
59
|
+
model_file << <<-ENDL
|
60
|
+
class #{name}Model
|
61
|
+
|
62
|
+
end
|
63
|
+
ENDL
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def generate_view path, using_ui = false
|
68
|
+
name = setup_directory path
|
69
|
+
file_name = "#{name}_view.rb"
|
70
|
+
cname = camelize(name)
|
71
|
+
puts "Generating view #{cname}View in file #{file_name}"
|
72
|
+
|
73
|
+
|
74
|
+
require_ui = using_ui ? "require '#{name}_ui'" : ''
|
75
|
+
java_class = using_ui ? "#{cname}Frame" : "'REPLACE_ME' "
|
76
|
+
view_file = %~
|
77
|
+
#{require_ui}
|
78
|
+
|
79
|
+
class #{cname}View < ApplicationView
|
80
|
+
set_java_class #{java_class}
|
81
|
+
|
82
|
+
# Put your load behavior here:
|
83
|
+
def load
|
84
|
+
move_to_center
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
~
|
89
|
+
|
90
|
+
File.open(file_name, "w") {|f| f.puts view_file}
|
91
|
+
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
def generate_ui path
|
98
|
+
name = setup_directory path
|
99
|
+
file_name = "#{name}_ui.rb"
|
100
|
+
name = camelize(name)
|
101
|
+
$stdout << "Generating ui #{name}Frame in file #{file_name}\n"
|
102
|
+
source = %~# Must have the Neurogami::SwingSet files in your project
|
103
|
+
require 'swingset'
|
104
|
+
|
105
|
+
include Neurogami::SwingSet::Core
|
106
|
+
|
107
|
+
class #{name}Frame < Frame
|
108
|
+
FRAME_WIDTH = 420
|
109
|
+
FRAME_HEIGHT = 430
|
110
|
+
|
111
|
+
LABEL_HEIGHT = 20
|
112
|
+
LABEL_WIDTH = 200
|
113
|
+
|
114
|
+
# Need accessor methods for you UI components:
|
115
|
+
attr_accessor :example_label, :example_value
|
116
|
+
|
117
|
+
|
118
|
+
def initialize *args
|
119
|
+
super
|
120
|
+
self.minimum_width = FRAME_WIDTH
|
121
|
+
self.minimum_height = FRAME_HEIGHT
|
122
|
+
self.setSize FRAME_HEIGHT, FRAME_WIDTH
|
123
|
+
set_up_components
|
124
|
+
end
|
125
|
+
|
126
|
+
|
127
|
+
def set_up_components
|
128
|
+
# Assumes you have the MiG layout jar in your project and
|
129
|
+
# bundled with the app.
|
130
|
+
|
131
|
+
component_panel = Panel.new
|
132
|
+
|
133
|
+
component_panel.background_color 255, 255, 255
|
134
|
+
component_panel.size FRAME_WIDTH, FRAME_HEIGHT
|
135
|
+
|
136
|
+
@example_label = Label.new do |l|
|
137
|
+
l.font = Font.new "Lucida Grande", 0, 18
|
138
|
+
l.minimum_dimensions LABEL_WIDTH, LABEL_HEIGHT
|
139
|
+
l.text = "Example label"
|
140
|
+
end
|
141
|
+
|
142
|
+
@example_value = Label.new do |l|
|
143
|
+
l.font = Font.new "Lucida Grande", 0, 18
|
144
|
+
l.minimum_dimensions LABEL_WIDTH, LABEL_HEIGHT
|
145
|
+
l.text = "An example"
|
146
|
+
end
|
147
|
+
|
148
|
+
component_panel.add @example_label, 'grow x'
|
149
|
+
component_panel.add @example_value, "gap unrelated"
|
150
|
+
|
151
|
+
add component_panel
|
152
|
+
|
153
|
+
end
|
154
|
+
end ~
|
155
|
+
|
156
|
+
File.open(file_name, "w"){ |f| f.puts source }
|
157
|
+
end
|
158
|
+
|
159
|
+
def setup_directory(path)
|
160
|
+
FileUtils.mkdir_p path.gsub("\\", "/")
|
161
|
+
FileUtils.cd(path)
|
162
|
+
path.split("/").last
|
163
|
+
end
|
164
|
+
|
165
|
+
def camelize(name, first_letter_in_uppercase = true)
|
166
|
+
name = name.to_s
|
167
|
+
if first_letter_in_uppercase
|
168
|
+
name.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
|
169
|
+
else
|
170
|
+
name[0..0] + camelize(name[1..-1])
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Neurogami-jimpanzee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.2
|
4
|
+
version: 1.0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Britt
|
@@ -41,6 +41,7 @@ files:
|
|
41
41
|
- bin/jimpanzee
|
42
42
|
- lib/monkeybars.rb
|
43
43
|
- lib/monkeybars/controller.rb
|
44
|
+
- lib/jimpanzee_version.rb
|
44
45
|
- lib/monkeybars/debug.rb
|
45
46
|
- lib/monkeybars/event_handler.rb
|
46
47
|
- lib/monkeybars/event_handler_registration_and_dispatch_mixin.rb
|
@@ -54,14 +55,14 @@ files:
|
|
54
55
|
- lib/monkeybars/view_nesting.rb
|
55
56
|
- lib/monkeybars/view_positioning.rb
|
56
57
|
- lib/monkeybars/view.rb
|
57
|
-
- skeleton/tasks/
|
58
|
+
- skeleton/tasks/jimpanzee.rake
|
58
59
|
- skeleton/src/application_view.rb
|
59
60
|
- skeleton/src/main.rb
|
60
61
|
- skeleton/src/application_controller.rb
|
61
62
|
- skeleton/src/resolver.rb
|
62
63
|
- skeleton/src/manifest.rb
|
63
64
|
- skeleton/lib/java/README.txt
|
64
|
-
- skeleton/lib/java/monkeybars-1.0.
|
65
|
+
- skeleton/lib/java/monkeybars-1.0.3.1.jar
|
65
66
|
- skeleton/lib/ruby/README.md
|
66
67
|
- skeleton/lib/ruby/README.txt
|
67
68
|
- skeleton/Rakefile
|
@@ -1,89 +0,0 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
|
3
|
-
desc "ALL, CONTROLLER, VIEW, MODEL are valid options."
|
4
|
-
task 'generate'
|
5
|
-
rule(/^generate/) do |t|
|
6
|
-
ARGV[1..-1].each do |generator_command|
|
7
|
-
command, argument = generator_command.split("=")
|
8
|
-
case command
|
9
|
-
when "ALL"
|
10
|
-
generate_tuple(argument)
|
11
|
-
when "VIEW"
|
12
|
-
generate_view(argument)
|
13
|
-
when "CONTROLLER"
|
14
|
-
generate_controller(argument)
|
15
|
-
when "MODEL"
|
16
|
-
generate_model(argument)
|
17
|
-
else
|
18
|
-
$stdout << "Unknown generate target #{argument}"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def generate_tuple(path)
|
24
|
-
pwd = FileUtils.pwd
|
25
|
-
generate_controller(path)
|
26
|
-
FileUtils.cd(pwd)
|
27
|
-
generate_model(path)
|
28
|
-
FileUtils.cd(pwd)
|
29
|
-
generate_view(path)
|
30
|
-
end
|
31
|
-
|
32
|
-
def generate_controller(path)
|
33
|
-
name = setup_directory(path)
|
34
|
-
file_name = "#{name}_controller.rb"
|
35
|
-
name = camelize(name)
|
36
|
-
$stdout << "Generating controller #{name}Controller in file #{file_name}\n"
|
37
|
-
File.open(file_name, "w") do |controller_file|
|
38
|
-
controller_file << <<-ENDL
|
39
|
-
class #{name}Controller < ApplicationController
|
40
|
-
set_model '#{name}Model'
|
41
|
-
set_view '#{name}View'
|
42
|
-
set_close_action :exit
|
43
|
-
end
|
44
|
-
ENDL
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def generate_model(path)
|
49
|
-
name = setup_directory(path)
|
50
|
-
file_name = "#{name}_model.rb"
|
51
|
-
name = camelize(name)
|
52
|
-
$stdout << "Generating model #{name}Model in file #{file_name}\n"
|
53
|
-
File.open(file_name, "w") do |model_file|
|
54
|
-
model_file << <<-ENDL
|
55
|
-
class #{name}Model
|
56
|
-
|
57
|
-
end
|
58
|
-
ENDL
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def generate_view(path)
|
63
|
-
name = setup_directory(path)
|
64
|
-
file_name = "#{name}_view.rb"
|
65
|
-
name = camelize(name)
|
66
|
-
$stdout << "Generating view #{name}View in file #{file_name}\n"
|
67
|
-
File.open(file_name, "w") do |view_file|
|
68
|
-
view_file << <<-ENDL
|
69
|
-
class #{name}View < ApplicationView
|
70
|
-
set_java_class ''
|
71
|
-
end
|
72
|
-
ENDL
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def setup_directory(path)
|
77
|
-
FileUtils.mkdir_p path.gsub("\\", "/")
|
78
|
-
FileUtils.cd(path)
|
79
|
-
path.split("/").last
|
80
|
-
end
|
81
|
-
|
82
|
-
def camelize(name, first_letter_in_uppercase = true)
|
83
|
-
name = name.to_s
|
84
|
-
if first_letter_in_uppercase
|
85
|
-
name.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
|
86
|
-
else
|
87
|
-
name[0..0] + camelize(name[1..-1])
|
88
|
-
end
|
89
|
-
end
|