bowline 0.4.6 → 0.5.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.
- data/Rakefile +1 -0
- data/TODO +11 -0
- data/VERSION +1 -1
- data/assets/bowline.js +194 -0
- data/assets/json2.js +479 -0
- data/assets/osx/Info.plist.erb +45 -0
- data/assets/osx/bowline.png +0 -0
- data/assets/osx/makeicns +0 -0
- data/bowline.gemspec +47 -11
- data/lib/bowline.rb +35 -15
- data/lib/bowline/binders.rb +168 -131
- data/lib/bowline/commands/build.rb +3 -0
- data/lib/bowline/commands/generate.rb +3 -1
- data/lib/bowline/commands/run.rb +7 -4
- data/lib/bowline/desktop.rb +26 -0
- data/lib/bowline/desktop/app.rb +9 -0
- data/lib/bowline/desktop/bridge.rb +97 -0
- data/lib/bowline/desktop/clipboard.rb +9 -0
- data/lib/bowline/desktop/dialog.rb +28 -0
- data/lib/bowline/desktop/dock.rb +9 -0
- data/lib/bowline/desktop/host.rb +10 -0
- data/lib/bowline/desktop/js.rb +92 -0
- data/lib/bowline/desktop/misc.rb +9 -0
- data/lib/bowline/desktop/network.rb +7 -0
- data/lib/bowline/desktop/proxy.rb +94 -0
- data/lib/bowline/desktop/sound.rb +8 -0
- data/lib/bowline/desktop/window.rb +31 -0
- data/lib/bowline/desktop/window_manager.rb +72 -0
- data/lib/bowline/desktop/window_methods.rb +70 -0
- data/lib/bowline/generators.rb +3 -2
- data/lib/bowline/generators/application.rb +8 -5
- data/lib/bowline/generators/binder.rb +10 -6
- data/lib/bowline/generators/model.rb +9 -0
- data/lib/bowline/generators/window.rb +28 -0
- data/lib/bowline/helpers.rb +0 -3
- data/lib/bowline/initializer.rb +65 -11
- data/lib/bowline/library.rb +31 -0
- data/lib/bowline/local_model.rb +116 -0
- data/lib/bowline/logging.rb +23 -0
- data/lib/bowline/platform.rb +73 -0
- data/lib/bowline/tasks/app.rake +80 -148
- data/lib/bowline/tasks/libs.rake +59 -0
- data/lib/bowline/version.rb +2 -2
- data/lib/bowline/watcher.rb +91 -0
- data/templates/binder.rb +2 -8
- data/templates/config/environment.rb +3 -2
- data/templates/main_window.rb +7 -0
- data/templates/model.rb +1 -1
- data/templates/public/index.html +2 -1
- data/templates/script/build +3 -0
- data/templates/script/generate +3 -0
- data/templates/script/init +0 -16
- data/templates/window.rb +3 -0
- data/vendor/pathname.rb +1099 -0
- data/vendor/progressbar.rb +236 -0
- metadata +48 -9
- data/assets/jquery.bowline.js +0 -156
- data/lib/bowline/async.rb +0 -29
- data/lib/bowline/binders/collection.rb +0 -59
- data/lib/bowline/binders/singleton.rb +0 -31
- data/lib/bowline/jquery.rb +0 -31
- data/lib/bowline/observer.rb +0 -66
- data/lib/bowline/window.rb +0 -19
@@ -0,0 +1,45 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>CFBundleDevelopmentRegion</key>
|
6
|
+
<string>English</string>
|
7
|
+
<key>CFBundleExecutable</key>
|
8
|
+
<string><%= config_name %></string>
|
9
|
+
<key>CFBundleIconFile</key>
|
10
|
+
<string><%= config_icon %></string>
|
11
|
+
<key>CFBundleIdentifier</key>
|
12
|
+
<string><%= config_id %></string>
|
13
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
14
|
+
<string>6.0</string>
|
15
|
+
<key>CFBundleName</key>
|
16
|
+
<string><%= config_name %></string>
|
17
|
+
<key>CFBundlePackageType</key>
|
18
|
+
<string>APPL</string>
|
19
|
+
<key>CFBundleSignature</key>
|
20
|
+
<string>WRUN</string>
|
21
|
+
<key>CFBundleVersion</key>
|
22
|
+
<string>0.8.0</string>
|
23
|
+
<key>CFBundleDocumentTypes</key>
|
24
|
+
<array>
|
25
|
+
<dict>
|
26
|
+
<key>CFBundleTypeExtensions</key>
|
27
|
+
<array>
|
28
|
+
<string>*</string>
|
29
|
+
</array>
|
30
|
+
<key>CFBundleTypeMIMETypes</key>
|
31
|
+
<array>
|
32
|
+
<string>*/*</string>
|
33
|
+
</array>
|
34
|
+
<key>CFBundleTypeName</key>
|
35
|
+
<string>Any</string>
|
36
|
+
<key>CFBundleTypeRole</key>
|
37
|
+
<string>Viewer</string>
|
38
|
+
<key>LSTypeIsPackage</key>
|
39
|
+
<false/>
|
40
|
+
<key>NSPersistentStoreTypeKey</key>
|
41
|
+
<string>Binary</string>
|
42
|
+
</dict>
|
43
|
+
</array>
|
44
|
+
</dict>
|
45
|
+
</plist>
|
Binary file
|
data/assets/osx/makeicns
ADDED
Binary file
|
data/bowline.gemspec
CHANGED
@@ -1,18 +1,22 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
1
4
|
# -*- encoding: utf-8 -*-
|
2
5
|
|
3
6
|
Gem::Specification.new do |s|
|
4
7
|
s.name = %q{bowline}
|
5
|
-
s.version = "0.
|
8
|
+
s.version = "0.5.0"
|
6
9
|
|
7
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
11
|
s.authors = ["Alex MacCaw"]
|
9
|
-
s.date = %q{2009-
|
12
|
+
s.date = %q{2009-12-20}
|
10
13
|
s.default_executable = %q{bowline-gen}
|
11
14
|
s.description = %q{Ruby/JS GUI framework}
|
12
15
|
s.email = %q{alex@leadthinking.com}
|
13
16
|
s.executables = ["bowline-gen"]
|
14
17
|
s.extra_rdoc_files = [
|
15
|
-
"README.txt"
|
18
|
+
"README.txt",
|
19
|
+
"TODO"
|
16
20
|
]
|
17
21
|
s.files = [
|
18
22
|
".gitignore",
|
@@ -20,10 +24,15 @@ Gem::Specification.new do |s|
|
|
20
24
|
"MIT-LICENSE",
|
21
25
|
"README.txt",
|
22
26
|
"Rakefile",
|
27
|
+
"TODO",
|
23
28
|
"VERSION",
|
24
|
-
"assets/
|
29
|
+
"assets/bowline.js",
|
25
30
|
"assets/jquery.chain.js",
|
26
31
|
"assets/jquery.js",
|
32
|
+
"assets/json2.js",
|
33
|
+
"assets/osx/Info.plist.erb",
|
34
|
+
"assets/osx/bowline.png",
|
35
|
+
"assets/osx/makeicns",
|
27
36
|
"bin/bowline-gen",
|
28
37
|
"bowline.gemspec",
|
29
38
|
"examples/account.rb",
|
@@ -32,10 +41,8 @@ Gem::Specification.new do |s|
|
|
32
41
|
"examples/twitter.html",
|
33
42
|
"examples/users.rb",
|
34
43
|
"lib/bowline.rb",
|
35
|
-
"lib/bowline/async.rb",
|
36
44
|
"lib/bowline/binders.rb",
|
37
|
-
"lib/bowline/
|
38
|
-
"lib/bowline/binders/singleton.rb",
|
45
|
+
"lib/bowline/commands/build.rb",
|
39
46
|
"lib/bowline/commands/console.rb",
|
40
47
|
"lib/bowline/commands/generate.rb",
|
41
48
|
"lib/bowline/commands/run.rb",
|
@@ -47,6 +54,21 @@ Gem::Specification.new do |s|
|
|
47
54
|
"lib/bowline/dependencies/lib/dependencies/dependency.rb",
|
48
55
|
"lib/bowline/dependencies/lib/dependencies/repository.rb",
|
49
56
|
"lib/bowline/dependencies/lib/ext/rubygems.rb",
|
57
|
+
"lib/bowline/desktop.rb",
|
58
|
+
"lib/bowline/desktop/app.rb",
|
59
|
+
"lib/bowline/desktop/bridge.rb",
|
60
|
+
"lib/bowline/desktop/clipboard.rb",
|
61
|
+
"lib/bowline/desktop/dialog.rb",
|
62
|
+
"lib/bowline/desktop/dock.rb",
|
63
|
+
"lib/bowline/desktop/host.rb",
|
64
|
+
"lib/bowline/desktop/js.rb",
|
65
|
+
"lib/bowline/desktop/misc.rb",
|
66
|
+
"lib/bowline/desktop/network.rb",
|
67
|
+
"lib/bowline/desktop/proxy.rb",
|
68
|
+
"lib/bowline/desktop/sound.rb",
|
69
|
+
"lib/bowline/desktop/window.rb",
|
70
|
+
"lib/bowline/desktop/window_manager.rb",
|
71
|
+
"lib/bowline/desktop/window_methods.rb",
|
50
72
|
"lib/bowline/ext/array.rb",
|
51
73
|
"lib/bowline/ext/class.rb",
|
52
74
|
"lib/bowline/ext/object.rb",
|
@@ -57,18 +79,22 @@ Gem::Specification.new do |s|
|
|
57
79
|
"lib/bowline/generators/helper.rb",
|
58
80
|
"lib/bowline/generators/migration.rb",
|
59
81
|
"lib/bowline/generators/model.rb",
|
82
|
+
"lib/bowline/generators/window.rb",
|
60
83
|
"lib/bowline/helpers.rb",
|
61
84
|
"lib/bowline/initializer.rb",
|
62
|
-
"lib/bowline/
|
63
|
-
"lib/bowline/
|
85
|
+
"lib/bowline/library.rb",
|
86
|
+
"lib/bowline/local_model.rb",
|
87
|
+
"lib/bowline/logging.rb",
|
88
|
+
"lib/bowline/platform.rb",
|
64
89
|
"lib/bowline/tasks/app.rake",
|
65
90
|
"lib/bowline/tasks/bowline.rb",
|
66
91
|
"lib/bowline/tasks/database.rake",
|
67
92
|
"lib/bowline/tasks/gems.rake",
|
93
|
+
"lib/bowline/tasks/libs.rake",
|
68
94
|
"lib/bowline/tasks/log.rake",
|
69
95
|
"lib/bowline/tasks/misc.rake",
|
70
96
|
"lib/bowline/version.rb",
|
71
|
-
"lib/bowline/
|
97
|
+
"lib/bowline/watcher.rb",
|
72
98
|
"templates/Rakefile",
|
73
99
|
"templates/binder.rb",
|
74
100
|
"templates/config/application.yml",
|
@@ -77,15 +103,21 @@ Gem::Specification.new do |s|
|
|
77
103
|
"templates/config/environment.rb",
|
78
104
|
"templates/gitignore",
|
79
105
|
"templates/helper.rb",
|
106
|
+
"templates/main_window.rb",
|
80
107
|
"templates/migration.rb",
|
81
108
|
"templates/model.rb",
|
82
109
|
"templates/public/icon.png",
|
83
110
|
"templates/public/index.html",
|
84
111
|
"templates/public/javascripts/application.js",
|
85
112
|
"templates/public/stylesheets/application.css",
|
113
|
+
"templates/script/build",
|
86
114
|
"templates/script/console",
|
115
|
+
"templates/script/generate",
|
87
116
|
"templates/script/init",
|
88
|
-
"templates/script/run"
|
117
|
+
"templates/script/run",
|
118
|
+
"templates/window.rb",
|
119
|
+
"vendor/pathname.rb",
|
120
|
+
"vendor/progressbar.rb"
|
89
121
|
]
|
90
122
|
s.homepage = %q{http://github.com/maccman/bowline}
|
91
123
|
s.rdoc_options = ["--charset=UTF-8"]
|
@@ -105,12 +137,16 @@ Gem::Specification.new do |s|
|
|
105
137
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
106
138
|
s.add_runtime_dependency(%q<templater>, [">= 0.3.2"])
|
107
139
|
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.2"])
|
140
|
+
s.add_runtime_dependency(%q<rubyzip2>, [">= 2.0.1"])
|
108
141
|
else
|
109
142
|
s.add_dependency(%q<templater>, [">= 0.3.2"])
|
110
143
|
s.add_dependency(%q<activesupport>, [">= 2.3.2"])
|
144
|
+
s.add_dependency(%q<rubyzip2>, [">= 2.0.1"])
|
111
145
|
end
|
112
146
|
else
|
113
147
|
s.add_dependency(%q<templater>, [">= 0.3.2"])
|
114
148
|
s.add_dependency(%q<activesupport>, [">= 2.3.2"])
|
149
|
+
s.add_dependency(%q<rubyzip2>, [">= 2.0.1"])
|
115
150
|
end
|
116
151
|
end
|
152
|
+
|
data/lib/bowline.rb
CHANGED
@@ -1,21 +1,24 @@
|
|
1
1
|
Thread.abort_on_exception = true
|
2
2
|
|
3
3
|
module Bowline
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
def lib_path
|
5
|
+
File.expand_path(
|
6
|
+
File.join(File.dirname(__FILE__), *%w[..])
|
7
|
+
)
|
7
8
|
end
|
9
|
+
module_function :lib_path
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
js.location = "app://public/#{name}.html"
|
11
|
+
def assets_path
|
12
|
+
File.join(lib_path, "assets")
|
12
13
|
end
|
14
|
+
module_function :assets_path
|
13
15
|
|
14
|
-
|
16
|
+
module Base
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
18
20
|
$LOAD_PATH << File.dirname(__FILE__)
|
21
|
+
$LOAD_PATH << File.join(Bowline.lib_path, "vendor")
|
19
22
|
|
20
23
|
require 'bowline/version'
|
21
24
|
|
@@ -24,15 +27,32 @@ require 'bowline/ext/array'
|
|
24
27
|
require 'bowline/ext/class'
|
25
28
|
require 'bowline/ext/string'
|
26
29
|
|
27
|
-
require 'bowline/
|
28
|
-
require 'bowline/
|
30
|
+
require 'bowline/logging'
|
31
|
+
require 'bowline/watcher'
|
32
|
+
require 'bowline/local_model'
|
33
|
+
|
34
|
+
require 'bowline/platform'
|
35
|
+
require 'bowline/library'
|
36
|
+
|
37
|
+
require 'bowline/desktop'
|
38
|
+
require 'bowline/desktop/app'
|
39
|
+
require 'bowline/desktop/bridge'
|
40
|
+
require 'bowline/desktop/clipboard'
|
41
|
+
require 'bowline/desktop/dialog'
|
42
|
+
require 'bowline/desktop/dock'
|
43
|
+
require 'bowline/desktop/host'
|
44
|
+
require 'bowline/desktop/misc'
|
45
|
+
require 'bowline/desktop/network'
|
46
|
+
require 'bowline/desktop/sound'
|
47
|
+
require 'bowline/desktop/window_methods'
|
48
|
+
require 'bowline/desktop/window'
|
49
|
+
require 'bowline/desktop/js'
|
50
|
+
require 'bowline/desktop/proxy'
|
51
|
+
require 'bowline/desktop/bridge'
|
52
|
+
require 'bowline/desktop/window_manager.rb'
|
53
|
+
|
29
54
|
require 'bowline/helpers'
|
30
55
|
require 'bowline/dependencies/lib/dependencies'
|
31
56
|
require 'bowline/initializer'
|
32
57
|
|
33
|
-
require 'bowline/
|
34
|
-
require 'bowline/observer'
|
35
|
-
|
36
|
-
require 'bowline/binders'
|
37
|
-
require 'bowline/binders/collection'
|
38
|
-
require 'bowline/binders/singleton'
|
58
|
+
require 'bowline/binders'
|
data/lib/bowline/binders.rb
CHANGED
@@ -1,165 +1,202 @@
|
|
1
1
|
module Bowline
|
2
2
|
module Binders
|
3
3
|
class Base
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
Bowline::js
|
8
|
-
end
|
4
|
+
extend Bowline::Watcher::Base
|
5
|
+
extend Bowline::Desktop::Bridge::ClassMethods
|
6
|
+
js_expose
|
9
7
|
|
10
|
-
|
11
|
-
def
|
12
|
-
|
8
|
+
class << self
|
9
|
+
def windows
|
10
|
+
@windows ||= []
|
13
11
|
end
|
14
|
-
|
15
|
-
#
|
16
|
-
def
|
17
|
-
|
12
|
+
|
13
|
+
# Called by JS when first bound
|
14
|
+
def setup(window)
|
15
|
+
self.windows << window
|
16
|
+
self.items = all
|
17
|
+
true
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
def js_invoke(window, method, *args)
|
21
|
+
if method == :setup
|
22
|
+
setup(window)
|
23
|
+
else
|
24
|
+
send(method, *args)
|
25
|
+
end
|
23
26
|
end
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
Bowline::show_view(*args)
|
27
|
+
|
28
|
+
def instance_invoke(id, meth, *args) #:nodoc:
|
29
|
+
self.new(id).send(meth, *args)
|
28
30
|
end
|
29
31
|
|
30
|
-
def
|
31
|
-
|
32
|
+
def find(id)
|
33
|
+
klass.find(id)
|
32
34
|
end
|
33
|
-
|
34
|
-
def
|
35
|
-
|
36
|
-
when String
|
37
|
-
# Params comes in a string (since it's a
|
38
|
-
# serialized form) - we need to make it into
|
39
|
-
# a nestled hash. Stolen from Ramaze
|
40
|
-
m = proc {|_,o,n|o.merge(n,&m)}
|
41
|
-
@params = params.inject({}) do |hash, (key, value)|
|
42
|
-
parts = key.split(/[\]\[]+/)
|
43
|
-
hash.merge(parts.reverse.inject(value) { |x, i| {i => x} }, &m)
|
44
|
-
end
|
45
|
-
else
|
46
|
-
@params = p
|
47
|
-
end
|
35
|
+
|
36
|
+
def all
|
37
|
+
klass.all
|
48
38
|
end
|
49
39
|
|
50
|
-
def
|
51
|
-
|
40
|
+
def items=(items) #:nodoc:
|
41
|
+
bowline.populate(name, items.to_js).call
|
52
42
|
end
|
53
43
|
|
54
|
-
def
|
55
|
-
|
56
|
-
|
57
|
-
|
44
|
+
def created(item) #:nodoc:
|
45
|
+
bowline.created(
|
46
|
+
name,
|
47
|
+
item.id,
|
48
|
+
item.to_js
|
49
|
+
).call
|
58
50
|
end
|
59
51
|
|
60
|
-
def
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
52
|
+
def updated(item) #:nodoc:
|
53
|
+
bowline.updated(
|
54
|
+
name,
|
55
|
+
item.id,
|
56
|
+
item.to_js
|
57
|
+
).call
|
65
58
|
end
|
66
59
|
|
67
|
-
def
|
68
|
-
|
69
|
-
|
70
|
-
|
60
|
+
def removed(item) #:nodoc:
|
61
|
+
bowline.removed(
|
62
|
+
name,
|
63
|
+
item.id
|
64
|
+
).call
|
71
65
|
end
|
66
|
+
|
67
|
+
protected
|
68
|
+
# Associate the binder with a model
|
69
|
+
# to setup callbacks so changes to the
|
70
|
+
# model are automatically reflected in
|
71
|
+
# the view. Usage:
|
72
|
+
# expose Post
|
73
|
+
#
|
74
|
+
# When the exposed class is created/updated/deleted
|
75
|
+
# the binder's callbacks are executed and the view
|
76
|
+
# updated accordingly.
|
77
|
+
#
|
78
|
+
# klass needs to respond to:
|
79
|
+
# * all
|
80
|
+
# * find(id)
|
81
|
+
# * after_create(method)
|
82
|
+
# * after_update(method)
|
83
|
+
# * after_destroy(method)
|
84
|
+
#
|
85
|
+
# klass instance needs to respond to:
|
86
|
+
# * id
|
87
|
+
#
|
88
|
+
# You can override .to_js on the model instance
|
89
|
+
# in order to return specific attributes for the view
|
90
|
+
def expose(klass)
|
91
|
+
@klass = klass
|
92
|
+
@klass.after_create(method(:created))
|
93
|
+
@klass.after_update(method(:updated))
|
94
|
+
@klass.after_destroy(method(:removed))
|
95
|
+
end
|
96
|
+
|
97
|
+
# Returns class set by the 'expose' method
|
98
|
+
def klass
|
99
|
+
@klass || raise("klass not set - see expose method")
|
100
|
+
end
|
101
|
+
|
102
|
+
# JavaScript proxy to the page:
|
103
|
+
# page.myFunc(1,2,3).call
|
104
|
+
def page
|
105
|
+
Bowline::Desktop::Proxy.new(
|
106
|
+
windows.length == 1 ? windows.first : windows
|
107
|
+
)
|
108
|
+
end
|
109
|
+
|
110
|
+
# JavaScript proxy to the Bowline object:
|
111
|
+
# bowline.log("msg").call
|
112
|
+
def bowline
|
113
|
+
page.Bowline
|
114
|
+
end
|
72
115
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
return if self == Bowline::Binders::Base
|
79
|
-
return if child == Bowline::Binders::Singleton
|
80
|
-
return if child == Bowline::Binders::Collection
|
81
|
-
name = child.name.underscore
|
82
|
-
name = name.split('/').last
|
83
|
-
js.send("bowline_#{name}_setup=", child.method(:setup))
|
84
|
-
js.send("bowline_#{name}_instance=", child.method(:instance))
|
85
|
-
js.send("bowline_#{name}=", child.method(:send))
|
86
|
-
end
|
116
|
+
# Javascript proxy to jQuery:
|
117
|
+
# jquery.getJSON("http://example.com")
|
118
|
+
def jquery
|
119
|
+
page.jQuery
|
120
|
+
end
|
87
121
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
122
|
+
# See Bowline::logger
|
123
|
+
def logger
|
124
|
+
Bowline::logger
|
125
|
+
end
|
126
|
+
|
127
|
+
# Trigger events on all elements
|
128
|
+
# bound to this binder:
|
129
|
+
# trigger(:reload, {:key => :value})
|
130
|
+
def trigger(event, data = nil)
|
131
|
+
bowline.trigger(
|
132
|
+
name,
|
133
|
+
format_event(event),
|
134
|
+
data
|
135
|
+
).call
|
136
|
+
end
|
137
|
+
|
138
|
+
# Helper method to trigger a loading
|
139
|
+
# event either side of a block:
|
140
|
+
# loading {
|
141
|
+
# # Slow code, e.g. http call
|
142
|
+
# }
|
143
|
+
def loading(&block)
|
144
|
+
trigger(:loading, true)
|
145
|
+
yield
|
146
|
+
trigger(:loading, false)
|
147
|
+
end
|
148
|
+
|
149
|
+
def format_event(name) #:nodoc:
|
150
|
+
name.is_a?(Array) ?
|
151
|
+
name.join('.') :
|
152
|
+
name.to_s
|
153
|
+
end
|
93
154
|
end
|
94
155
|
|
95
156
|
attr_reader :element
|
96
157
|
attr_reader :item
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
end
|
108
|
-
|
109
|
-
# Trigger jQuery events on this element
|
110
|
-
def trigger(event, data = nil)
|
111
|
-
self.element.trigger(
|
112
|
-
self.class.format_event(event),
|
113
|
-
data
|
114
|
-
)
|
115
|
-
end
|
116
|
-
|
117
|
-
# Raw DOM element
|
118
|
-
def dom
|
119
|
-
self.element[0]
|
120
|
-
end
|
121
|
-
|
122
|
-
# Shortcut methods
|
123
|
-
|
124
|
-
# See self.class.show_view
|
125
|
-
def show_view(*args)
|
126
|
-
self.class.show_view(*args)
|
158
|
+
|
159
|
+
# Instance of an element on the view.
|
160
|
+
#
|
161
|
+
# item.destroy
|
162
|
+
# element.highlight.call
|
163
|
+
def initialize(id, *args) #:nodoc:
|
164
|
+
@element = self.class.bowline.element(
|
165
|
+
self.class.name, id
|
166
|
+
)
|
167
|
+
@item = self.class.find(id)
|
127
168
|
end
|
169
|
+
|
170
|
+
protected
|
171
|
+
# Trigger jQuery events on this element:
|
172
|
+
# trigger(:highlight)
|
173
|
+
def trigger(event, data = nil)
|
174
|
+
element.trigger(
|
175
|
+
self.class.format_event(event),
|
176
|
+
data
|
177
|
+
).call
|
178
|
+
end
|
179
|
+
|
180
|
+
# Remove element from the view
|
181
|
+
def remove!
|
182
|
+
self.class.removed(item)
|
183
|
+
end
|
128
184
|
|
129
|
-
|
130
|
-
def js
|
131
|
-
self.class.js
|
132
|
-
end
|
133
|
-
alias :page :js
|
185
|
+
# Shortcut methods
|
134
186
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
187
|
+
# See self.class.js
|
188
|
+
def page
|
189
|
+
self.class.page
|
190
|
+
end
|
139
191
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
192
|
+
# See self.class.jquery
|
193
|
+
def jquery
|
194
|
+
self.class.jquery
|
195
|
+
end
|
144
196
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
end
|
149
|
-
|
150
|
-
private
|
151
|
-
# This is just a unique identifier
|
152
|
-
# for the item - and isn't
|
153
|
-
# used in the dom
|
154
|
-
def item_id
|
155
|
-
if item.respond_to?(:dom_id)
|
156
|
-
item.dom_id
|
157
|
-
else
|
158
|
-
[
|
159
|
-
item.id,
|
160
|
-
self.class.name.underscore
|
161
|
-
].join("_")
|
162
|
-
end
|
197
|
+
# See self.class.logger
|
198
|
+
def logger
|
199
|
+
self.class.logger
|
163
200
|
end
|
164
201
|
end
|
165
202
|
end
|