bowline 0.4.6 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|