glimmer 0.1.3 → 0.1.4.swt.pre.4.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0c2d8ed17928ac65a3760bbbc43fb7dafb718bb500116e4de2f2c355311bdc32
4
+ data.tar.gz: a79c62bbc5cbbdabe7882cf8241f6c76fcd9aaed183c407528a7142c141853ff
5
+ SHA512:
6
+ metadata.gz: 7e26a2ce37f22ff29b225102d69b17e948931ef0d7786702ec49e6bed5f9d20bb3ef272283edae340e71bc9a193993c98640960b753eebb32db42b9a5c384937
7
+ data.tar.gz: d07a82c549e2d89cafd96b95429d4c9d07c1ae189e725c627269b3578e76b9244be4f9ad5bf84c103277cca4269e7d13c4e39a8a5046aa3faf0346becfff975d
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ glimmer
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ jruby-9.1.12.0
data/Gemfile CHANGED
@@ -1,9 +1,12 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
- gem 'facets', '2.9.0'
3
+ gem 'facets', '3.1.0'
4
4
 
5
5
  group :development do
6
- gem "bundler"
7
- gem "jeweler", "~> 1.5.2"
8
- gem "rcov", ">= 0"
6
+ gem "rdoc", "~> 2.3.0"
7
+ gem "bundler", "~> 1.0"
8
+ gem "jeweler", "~> 2.3.0"
9
+ gem "coveralls", "= 0.8.5", require: false
10
+ gem "simplecov", "~> 0.10.0", require: nil
11
+ gem "puts_debuggerer", "0.6.1"
9
12
  end
data/README.markdown CHANGED
@@ -1,11 +1,13 @@
1
- Glimmer
2
- ===
3
- Glimmer is a JRuby DSL that enables easy and efficient authoring of desktop application user-interfaces. It relies on the robust platform-independent Eclipse SWT library. Glimmer comes with built-in data-binding support to greatly facilitate synchronizing UI with domain models.
1
+ # Glimmer (The Original One And Only)
2
+
3
+ Glimmer is a cross-platform Ruby desktop development library. Glimmer's main innovation is a JRuby DSL that enables easy and efficient authoring of desktop application user-interfaces while relying on the robust platform-independent Eclipse SWT library. Glimmer additionally innovates by having built-in desktop UI data-binding support to greatly facilitate synchronizing the UI with domain models. As a result, that achieves true decoupling of object oriented components, enabling developers to solve business problems without worrying about UI concerns, or alternatively drive development UI-first, and then write clean business components test-first afterward.
4
+
5
+ You may learn more by reading this article: * [Eclipse Zone Tutorial](http://eclipse.dzone.com/articles/an-introduction-glimmer)
4
6
 
5
7
  ![Glimmer](https://github.com/AndyObtiva/glimmer/raw/master/images/Bitter-sweet.jpg)
6
8
 
7
- Example
8
- ---
9
+ ## Example
10
+
9
11
  shell {
10
12
  text "Example"
11
13
  label {
@@ -13,42 +15,42 @@ Example
13
15
  }
14
16
  }.open
15
17
 
16
- Getting Started
17
- ---
18
- 1. Download the "SWT binary and source" archive from the Eclipse site and follow their instructions.
19
- [http://www.eclipse.org/swt/](http://www.eclipse.org/swt/)
20
- 2. Download and setup jRuby 1.5.6 (rvm install jruby -v1.5.6)
21
- 3. Install bundler (gem install bundler)
22
- 4. Install project required gems (bundle install)
23
- 5. Write a program that requires the file "lib/glimmer.rb" (or glimmer gem) and has the UI class (view) include the Glimmer module
24
- 6. Run your program with jruby
25
-
26
- Samples
27
- ---
18
+ ## Getting Started
19
+
20
+ 1. Download and extract the ["SWT binary and source"](http://download.eclipse.org/eclipse/downloads/drops4/R-4.7-201706120950/#SWT).
21
+ 2. Add swt.jar to your Java CLASSPATH environment (e.g. `export CLASSPATH="/path_to_swt_jar/swt.jar"`)
22
+ 3. Download and setup jRuby 1.5.6 (`rvm install jruby-9.1.12.0`)
23
+ 4. Install bundler (gem install bundler)
24
+ 5. Install project required gems (bundle install)
25
+ 6. Write a program that requires the file "lib/glimmer.rb" (or glimmer gem) and has the UI class (view) include the Glimmer module
26
+ 7. Run your program with `bin/glimmer` or jruby (pass `-J-XstartOnFirstThread` option if on the Mac)
27
+
28
+ ## Samples
29
+
28
30
  Check the "samples" folder for examples on how to write Glimmer applications.
29
31
 
30
- Mac Support
31
- ---
32
+ ## Mac Support
33
+
32
34
  In order to run Glimmer on the Mac, you need to pass an extra option to JRuby. For example:
33
- jruby samples/hello_world.rb -XstartOnFirstThread
35
+ `jruby -J-XstartOnFirstThread samples/hello_world.rb`
36
+
37
+ ## Background
34
38
 
35
- Background
36
- ---
37
39
  Ruby is a dynamically-typed object-oriented language, which provides great productivity gains due to its powerful expressive syntax and dynamic nature. While it is proven by the Ruby on Rails framework for web development, it currently lacks a robust platform-independent framework for building desktop applications. Given that Java libraries can now be utilized in Ruby code through JRuby, Eclipse technologies, such as SWT, JFace, and RCP can help fill the gap of desktop application development with Ruby.
38
40
 
39
- Resources
40
- ---
41
+ ## Resources
42
+
41
43
  * [Eclipse Zone Tutorial](http://eclipse.dzone.com/articles/an-introduction-glimmer)
42
44
  * [InfoQ Article](http://www.infoq.com/news/2008/02/glimmer-jruby-swt)
43
45
  * [RubyConf 2008 Video](http://rubyconf2008.confreaks.com/desktop-development-with-glimmer.html)
44
46
  * [Code Painter Blog](http://andymaleh.blogspot.com/search/label/Glimmer)
45
47
 
46
- Contributors
47
- ---
48
+ ## Contributors
49
+
48
50
  * Annas "Andy" Al Maleh (Founder)
49
51
  * Dennis Theisen
50
52
 
51
- License
52
- ---
53
- Copyright (c) 2011 Annas Al Maleh.
54
- See LICENSE.txt for further details.
53
+ ## License
54
+
55
+ Copyright (c) 2007-2017 Annas Al Maleh.
56
+ See LICENSE.txt for further details.
data/Rakefile CHANGED
@@ -17,12 +17,10 @@ Jeweler::Tasks.new do |gem|
17
17
  gem.license = "MIT"
18
18
  gem.summary = %Q{Desktop application development library}
19
19
  gem.description = %Q{JRuby DSL that enables easy and efficient authoring of user-interfaces using the robust platform-independent Eclipse SWT library}
20
- gem.email = "andy@obtiva.com"
21
- gem.authors = ["Andy Maleh"]
22
- # Include your dependencies below. Runtime dependencies are required when using your gem,
23
- # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
- gem.add_runtime_dependency 'facets', '2.9.0'
25
- # gem.add_development_dependency 'rspec', '> 1.2.3'
20
+ gem.email = "andy.am@gmail.com"
21
+ gem.authors = ["AndyMaleh"]
22
+ gem.executables = ['glimmer']
23
+ # dependencies defined in Gemfile
26
24
  end
27
25
  Jeweler::RubygemsDotOrgTasks.new
28
26
 
@@ -31,24 +29,7 @@ Rake::TestTask.new(:test) do |test|
31
29
  test.libs << 'lib' << 'samples' << 'test'
32
30
  test.pattern = 'test/**/*_test.rb'
33
31
  test.verbose = true
34
- test.ruby_opts = ['-J-XstartOnFirstThread']
35
- end
36
-
37
- require 'rcov/rcovtask'
38
- Rcov::RcovTask.new do |test|
39
- test.libs << 'test'
40
- test.pattern = 'test/**/*_test.rb'
41
- test.verbose = true
32
+ test.ruby_opts = ['-J-XstartOnFirstThread -Xcli.debug=true --debug']
42
33
  end
43
34
 
44
35
  task :default => :test
45
-
46
- require 'rake/rdoctask'
47
- Rake::RDocTask.new do |rdoc|
48
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
49
-
50
- rdoc.rdoc_dir = 'rdoc'
51
- rdoc.title = "glimmer #{version}"
52
- rdoc.rdoc_files.include('README*')
53
- rdoc.rdoc_files.include('lib/**/*.rb')
54
- end
data/TODO.md ADDED
@@ -0,0 +1,11 @@
1
+ # TODO
2
+
3
+ Here is a list of tasks to do (please delete once done):
4
+
5
+ * Export executable to path during gem install
6
+ * Route puts to a debug logger with log options
7
+ * Upgrade test suite to RSPec
8
+ * Download/Setup SWT Jar as part of gem install
9
+ * Add version revision matching SWT version (e.g. 0.1.4.swt-4.7.0)
10
+ * Support Tree databinding
11
+ * Increase test coverage to 80%
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4.swt-4.7.0
data/bin/glimmer CHANGED
@@ -1,132 +1,2 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'abbrev'
4
- load File.dirname(__FILE__) + '/../Rakefile'
5
-
6
- # Displayed when no valid command is given
7
- HELP_TEXT = <<-EOS
8
- usage: glimmer COMMAND [ARGS]
9
-
10
- Available COMMANDS:
11
- list - display all installed Glimmer applications (samples)
12
- run - run any glimmer application or sample by name
13
- generate - create a new project with a scaffold of an application
14
-
15
- Note: You can use abbreviations as long as they're unambiguos (g for generate)
16
- EOS
17
-
18
- # the generate-command will create this file for a new project to start with
19
- GLIMMER_BASE_TEMPLATE = <<-EOS
20
- require 'rubygems'
21
- require 'swt'
22
-
23
-
24
- class <%= @name %>
25
- include Glimmer
26
- # Remember to include all SWT packages that you need
27
- # or you will get a `const_missing' error
28
- include_package 'org.eclipse.swt.layout'
29
-
30
- def initialize
31
- build
32
- end
33
-
34
- def build
35
- @shell = shell {
36
- text "<%= @name %>"
37
-
38
- composite {
39
- layout GridLayout.new(2, false)
40
- button {
41
- text "&Click"
42
- on_widget_selected { @label.text("You clicked the button") }
43
- }
44
- @label = label { text "Click the button to change me" }
45
- }
46
- }
47
- end
48
-
49
- def launch
50
- @shell.open
51
- end
52
- end
53
- # Start the application
54
- <%= @name %>.new.launch
55
- EOS
56
-
57
- class GlimmerRunner
58
-
59
- COMMANDS = %w[list run generate]
60
-
61
- PLATFORM_EXTENSION = (PLATFORM =~ /win\d\d/) ? '.bat' : ''
62
- JRUBY_COMMAND = "jruby#{PLATFORM_EXTENSION} -S"
63
- SAMPLES_PATH = File.dirname(__FILE__) + "/../samples"
64
- # This could be avoided by naming the main application like the directory (i.e. without underscores)
65
- # You need to add new multi file applications to this list, so that they can be started using "glimmer run"
66
- SAMPLES = {"contactmanager" => "contact_manager", "tictactoe" => "tic_tac_toe", "glimmereditor" => "glimmer_editor"}
67
-
68
- JRUBY_BAT_LIB_REGEX = /Djava\.library\.path="%ECLIPSE_HOME%\\plugins\\org\.eclipse\.swt\.win32\.win32.x86_3.4.1.v3449c"/
69
-
70
- def initialize(command, name)
71
- @command, @name = command, name
72
- decide
73
- end
74
-
75
- def decide
76
- shortcuts = COMMANDS.abbrev
77
- if @command and shortcuts.keys.include?(cmd = @command.downcase)
78
- send(shortcuts[cmd])
79
- else
80
- puts HELP_TEXT
81
- end
82
- end
83
-
84
- # Run a sample application or any user application with jruby
85
- def run
86
- return puts("usage example: glimmer run tictactoe") unless @name
87
- # Search for the filename (and add the .rb extension if not provided), and run it
88
- if File.exist?("#{@name}#{'.rb' unless @name =~ /.rb$/}")
89
- command = "#{JRUBY_COMMAND} \"#{@name.gsub(/\\/, '/')}#{'.rb' unless @name =~ /.rb$/}\""
90
- else
91
- # Search for all installed samples and try to run of those
92
- command = "#{JRUBY_COMMAND} \"#{SAMPLES_PATH}/#{fetch_app(@name)}.rb\""
93
- end
94
- puts "Starting the application with following command:"
95
- puts command
96
- system command
97
- end
98
-
99
- def list
100
- single_file_apps = Dir["#{SAMPLES_PATH}/*.rb"]
101
- multi_file_apps = Dir["#{SAMPLES_PATH}/*"].reject{ |file| file =~ /.rb$/}
102
- puts "Installed Glimmer applications:"
103
- (single_file_apps + multi_file_apps).each_with_index do |file, index|
104
- puts "#{index+1}. #{File.basename(file, '.*')}"
105
- end
106
- end
107
-
108
- def generate
109
- return puts("usage example: glimmer generate my_test_project") unless @name
110
- puts "Creating project named: #{@name}"
111
- Dir.mkdir(@name)
112
- filename = "#{@name}/#{@name}.rb"
113
- puts "Creating glimmer file: #{filename}"
114
- File.open(filename, 'w') do |file|
115
- file.write(GemHelper.render_template(GLIMMER_BASE_TEMPLATE, {:name => @name.capitalize}))
116
- end
117
- end
118
-
119
- private
120
- # This could be avoided by naming the main application like the directory (i.e. without underscores)
121
- def fetch_app(name)
122
- return name if SAMPLES[name].nil?
123
- "#{name}/#{SAMPLES[name]}"
124
- end
125
-
126
- end
127
-
128
-
129
- # Here's where the action starts
130
- command, name = ARGV[0], ARGV[1]
131
-
132
- GlimmerRunner.new(command, name)
1
+ #!/bin/bash
2
+ ruby -J-XstartOnFirstThread $1
data/glimmer.gemspec CHANGED
@@ -2,28 +2,31 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: glimmer 0.1.4.swt.pre.4.7.0 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
- s.name = %q{glimmer}
8
- s.version = "0.1.3"
8
+ s.name = "glimmer".freeze
9
+ s.version = "0.1.4.swt.pre.4.7.0"
9
10
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Andy Maleh"]
12
- s.date = %q{2011-03-17}
13
- s.default_executable = %q{glimmer}
14
- s.description = %q{JRuby DSL that enables easy and efficient authoring of user-interfaces using the robust platform-independent Eclipse SWT library}
15
- s.email = %q{andy@obtiva.com}
16
- s.executables = ["glimmer"]
11
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1".freeze) if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib".freeze]
13
+ s.authors = ["AndyMaleh".freeze]
14
+ s.date = "2017-07-21"
15
+ s.description = "JRuby DSL that enables easy and efficient authoring of user-interfaces using the robust platform-independent Eclipse SWT library".freeze
16
+ s.email = "andy.am@gmail.com".freeze
17
+ s.executables = ["glimmer".freeze]
17
18
  s.extra_rdoc_files = [
18
19
  "LICENSE.txt",
19
20
  "README.markdown"
20
21
  ]
21
22
  s.files = [
22
- ".rvmrc",
23
+ ".ruby-gemset",
24
+ ".ruby-version",
23
25
  "Gemfile",
24
26
  "LICENSE.txt",
25
27
  "README.markdown",
26
28
  "Rakefile",
29
+ "TODO.md",
27
30
  "VERSION",
28
31
  "bin/glimmer",
29
32
  "glimmer.gemspec",
@@ -76,6 +79,9 @@ Gem::Specification.new do |s|
76
79
  "samples/contactmanager/contact_manager_presenter.rb",
77
80
  "samples/contactmanager/contact_repository.rb",
78
81
  "samples/hello_combo.rb",
82
+ "samples/hello_list_multi_selection.rb",
83
+ "samples/hello_list_single_selection.rb",
84
+ "samples/hello_tab.rb",
79
85
  "samples/hello_world.rb",
80
86
  "samples/login.rb",
81
87
  "samples/tictactoe/tic_tac_toe.rb",
@@ -96,51 +102,39 @@ Gem::Specification.new do |s|
96
102
  "test/samples/tictactoe/tic_tac_toe_test.rb",
97
103
  "test/xml/glimmer_xml_test.rb"
98
104
  ]
99
- s.homepage = %q{http://github.com/AndyObtiva/glimmer}
100
- s.licenses = ["MIT"]
101
- s.require_paths = ["lib"]
102
- s.rubygems_version = %q{1.5.2}
103
- s.summary = %q{Desktop application development library}
104
- s.test_files = [
105
- "test/glimmer_combo_data_binding_test.rb",
106
- "test/glimmer_constant_test.rb",
107
- "test/glimmer_data_binding_test.rb",
108
- "test/glimmer_list_data_binding_test.rb",
109
- "test/glimmer_listeners_test.rb",
110
- "test/glimmer_shine_data_binding_test.rb",
111
- "test/glimmer_tab_item_test.rb",
112
- "test/glimmer_table_data_binding_test.rb",
113
- "test/glimmer_test.rb",
114
- "test/helper.rb",
115
- "test/observable_model_test.rb",
116
- "test/r_widget_test.rb",
117
- "test/samples/contactmanager/contact_manager_presenter_test.rb",
118
- "test/samples/tictactoe/tic_tac_toe_test.rb",
119
- "test/xml/glimmer_xml_test.rb"
120
- ]
105
+ s.homepage = "http://github.com/AndyObtiva/glimmer".freeze
106
+ s.licenses = ["MIT".freeze]
107
+ s.rubygems_version = "2.6.11".freeze
108
+ s.summary = "Desktop application development library".freeze
121
109
 
122
110
  if s.respond_to? :specification_version then
123
- s.specification_version = 3
111
+ s.specification_version = 4
124
112
 
125
113
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
126
- s.add_runtime_dependency(%q<facets>, ["= 2.9.0"])
127
- s.add_development_dependency(%q<bundler>, [">= 0"])
128
- s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
129
- s.add_development_dependency(%q<rcov>, [">= 0"])
130
- s.add_runtime_dependency(%q<facets>, ["= 2.9.0"])
114
+ s.add_runtime_dependency(%q<facets>.freeze, ["= 3.1.0"])
115
+ s.add_development_dependency(%q<rdoc>.freeze, ["~> 2.3.0"])
116
+ s.add_development_dependency(%q<bundler>.freeze, ["~> 1.0"])
117
+ s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3.0"])
118
+ s.add_development_dependency(%q<coveralls>.freeze, ["= 0.8.5"])
119
+ s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.10.0"])
120
+ s.add_development_dependency(%q<puts_debuggerer>.freeze, ["= 0.6.1"])
131
121
  else
132
- s.add_dependency(%q<facets>, ["= 2.9.0"])
133
- s.add_dependency(%q<bundler>, [">= 0"])
134
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
135
- s.add_dependency(%q<rcov>, [">= 0"])
136
- s.add_dependency(%q<facets>, ["= 2.9.0"])
122
+ s.add_dependency(%q<facets>.freeze, ["= 3.1.0"])
123
+ s.add_dependency(%q<rdoc>.freeze, ["~> 2.3.0"])
124
+ s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
125
+ s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.0"])
126
+ s.add_dependency(%q<coveralls>.freeze, ["= 0.8.5"])
127
+ s.add_dependency(%q<simplecov>.freeze, ["~> 0.10.0"])
128
+ s.add_dependency(%q<puts_debuggerer>.freeze, ["= 0.6.1"])
137
129
  end
138
130
  else
139
- s.add_dependency(%q<facets>, ["= 2.9.0"])
140
- s.add_dependency(%q<bundler>, [">= 0"])
141
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
142
- s.add_dependency(%q<rcov>, [">= 0"])
143
- s.add_dependency(%q<facets>, ["= 2.9.0"])
131
+ s.add_dependency(%q<facets>.freeze, ["= 3.1.0"])
132
+ s.add_dependency(%q<rdoc>.freeze, ["~> 2.3.0"])
133
+ s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
134
+ s.add_dependency(%q<jeweler>.freeze, ["~> 2.3.0"])
135
+ s.add_dependency(%q<coveralls>.freeze, ["= 0.8.5"])
136
+ s.add_dependency(%q<simplecov>.freeze, ["~> 0.10.0"])
137
+ s.add_dependency(%q<puts_debuggerer>.freeze, ["= 0.6.1"])
144
138
  end
145
139
  end
146
140
 
@@ -44,16 +44,16 @@ class RWidget
44
44
 
45
45
  def self.widget_exists?(underscored_widget_name)
46
46
  begin
47
- eval underscored_widget_name.camelcase
47
+ eval underscored_widget_name.camelcase(:upper)
48
48
  true
49
- rescue NameError
49
+ rescue NameError
50
50
  false
51
51
  end
52
52
  end
53
-
53
+
54
54
  def widget_listener_exists?(underscored_listener_name)
55
55
  listener_method_name = underscored_listener_name.listener_method_name(:lower)
56
- @widget.getClass.getMethods.each do |widget_method|
56
+ @widget.getClass.getMethods.each do |widget_method|
57
57
  if widget_method.getName.match(/add.*Listener/)
58
58
  widget_method.getParameterTypes.each do |listener_type|
59
59
  listener_type.getMethods.each do |listener_method|
@@ -1,5 +1,5 @@
1
- require File.dirname(__FILE__) + "/contact_manager_presenter"
2
- require File.dirname(__FILE__) + "/../../lib/glimmer"
1
+ require_relative "contact_manager_presenter"
2
+ require_relative "../../lib/glimmer"
3
3
 
4
4
  class RWidget
5
5
  include_package 'org.eclipse.jface.viewers'
@@ -48,13 +48,22 @@ class ContactManager
48
48
  text "Email"
49
49
  width 120
50
50
  }
51
- items bind(contact_manager_presenter, :results), column_properties(:first_name, :last_name, :email)
51
+ items bind(contact_manager_presenter, :results),
52
+ column_properties(:first_name, :last_name, :email)
52
53
  }
53
-
54
- button {
55
- text "&Find"
56
- on_widget_selected {
57
- contact_manager_presenter.find
54
+ composite {
55
+ layout GridLayout.new(2, false)
56
+ button {
57
+ text "&List"
58
+ on_widget_selected {
59
+ contact_manager_presenter.list
60
+ }
61
+ }
62
+ button {
63
+ text "&Find"
64
+ on_widget_selected {
65
+ contact_manager_presenter.find
66
+ }
58
67
  }
59
68
  }
60
69
  }
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/contact_repository"
1
+ require_relative "contact_repository"
2
2
 
3
3
  class ContactManagerPresenter
4
4
  attr_accessor :results
@@ -10,8 +10,12 @@ class ContactManagerPresenter
10
10
  @results = []
11
11
  end
12
12
 
13
+ def list
14
+ self.results=@contact_repository.find({})
15
+ end
16
+
13
17
  def find
14
- filter_map = Hash.new
18
+ filter_map = {}
15
19
  @@contact_attributes.each do |attribute_name|
16
20
  filter_map[attribute_name] = self.send(attribute_name) if self.send(attribute_name)
17
21
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/contact"
1
+ require_relative "contact"
2
2
 
3
3
  class ContactRepository
4
4
  def initialize
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../lib/glimmer"
1
+ require_relative "../lib/glimmer"
2
2
 
3
3
  class Person
4
4
  attr_accessor :country, :country_options
@@ -7,6 +7,10 @@ class Person
7
7
  self.country_options=["", "Canada", "US", "Mexico"]
8
8
  self.country = "Canada"
9
9
  end
10
+
11
+ def reset_country
12
+ self.country = "Canada"
13
+ end
10
14
  end
11
15
 
12
16
  class HelloCombo
@@ -21,7 +25,7 @@ class HelloCombo
21
25
  button {
22
26
  text "Reset"
23
27
  on_widget_selected do
24
- person.country = "Canada"
28
+ person.reset_country
25
29
  end
26
30
  }
27
31
  }
@@ -0,0 +1,46 @@
1
+ require_relative "../lib/glimmer"
2
+
3
+ class Person
4
+ attr_accessor :provinces, :provinces_options
5
+
6
+ def initialize
7
+ self.provinces_options=[
8
+ "",
9
+ "Quebec",
10
+ "Ontario",
11
+ "Manitoba",
12
+ "Saskatchewan",
13
+ "Alberta",
14
+ "British Columbia",
15
+ "Nova Skotia",
16
+ "Newfoundland"
17
+ ]
18
+ self.provinces = ["Quebec", "Manitoba", "Alberta"]
19
+ end
20
+
21
+ def reset_provinces
22
+ self.provinces = ["Quebec", "Manitoba", "Alberta"]
23
+ end
24
+ end
25
+
26
+ class HelloListMultiSelection
27
+ include Glimmer
28
+ def launch
29
+ person = Person.new
30
+ shell {
31
+ composite {
32
+ list(:multi) {
33
+ selection bind(person, :provinces)
34
+ }
35
+ button {
36
+ text "Reset"
37
+ on_widget_selected do
38
+ person.reset_provinces
39
+ end
40
+ }
41
+ }
42
+ }.open
43
+ end
44
+ end
45
+
46
+ HelloListMultiSelection.new.launch
@@ -0,0 +1,36 @@
1
+ require_relative "../lib/glimmer"
2
+
3
+ class Person
4
+ attr_accessor :country, :country_options
5
+
6
+ def initialize
7
+ self.country_options=["", "Canada", "US", "Mexico"]
8
+ self.country = "Canada"
9
+ end
10
+
11
+ def reset_country
12
+ self.country = "Canada"
13
+ end
14
+ end
15
+
16
+ class HelloListSingleSelection
17
+ include Glimmer
18
+ def launch
19
+ person = Person.new
20
+ shell {
21
+ composite {
22
+ list {
23
+ selection bind(person, :country)
24
+ }
25
+ button {
26
+ text "Reset"
27
+ on_widget_selected do
28
+ person.reset_country
29
+ end
30
+ }
31
+ }
32
+ }.open
33
+ end
34
+ end
35
+
36
+ HelloListSingleSelection.new.launch
@@ -0,0 +1,26 @@
1
+ require_relative "../lib/glimmer"
2
+
3
+ class HelloTab
4
+ include Glimmer
5
+ def launch
6
+ shell {
7
+ text "SWT"
8
+ tab_folder {
9
+ tab_item {
10
+ text "Tab 1"
11
+ label {
12
+ text "Hello World!"
13
+ }
14
+ }
15
+ tab_item {
16
+ text "Tab 2"
17
+ label {
18
+ text "Bonjour Univers!"
19
+ }
20
+ }
21
+ }
22
+ }.open
23
+ end
24
+ end
25
+
26
+ HelloTab.new.launch
@@ -1,21 +1,10 @@
1
- require "java"
2
- require File.dirname(__FILE__) + "/../lib/glimmer"
1
+ require_relative "../lib/glimmer"
3
2
 
4
- class HelloWorld
5
- include_package 'org.eclipse.swt'
6
- include_package 'org.eclipse.swt.layout'
7
-
8
- include Glimmer
3
+ include Glimmer
9
4
 
10
- def launch
11
- @shell = shell {
12
- text "SWT"
13
- label {
14
- text "Hello World!"
15
- }
16
- }
17
- @shell.open
18
- end
19
- end
20
-
21
- HelloWorld.new.launch
5
+ shell {
6
+ text "SWT"
7
+ label {
8
+ text "Hello World!"
9
+ }
10
+ }.open
data/samples/login.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require "java"
2
2
  require "observer"
3
- require File.dirname(__FILE__) + "/../lib/glimmer"
3
+ require_relative "../lib/glimmer"
4
4
 
5
5
  #Presents login screen data
6
6
  class LoginPresenter
@@ -32,8 +32,6 @@ class LoginPresenter
32
32
  end
33
33
 
34
34
  def login
35
- self.user_name = ""
36
- self.password = ""
37
35
  self.status = "Logged In"
38
36
  end
39
37
 
@@ -1,5 +1,5 @@
1
- require File.dirname(__FILE__) + "/../../lib/glimmer"
2
- require File.dirname(__FILE__) + "/tic_tac_toe_board"
1
+ require_relative "../../lib/glimmer"
2
+ require_relative "tic_tac_toe_board"
3
3
 
4
4
 
5
5
  class TicTacToe
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/helper"
1
+ require_relative "helper"
2
2
 
3
3
  class GlimmerComboDataBindingTest < Test::Unit::TestCase
4
4
  include Glimmer
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/helper"
1
+ require_relative "helper"
2
2
 
3
3
  class GlimmerTest < Test::Unit::TestCase
4
4
  include Glimmer
@@ -14,13 +14,13 @@ class GlimmerTest < Test::Unit::TestCase
14
14
  def teardown
15
15
  @target.display.dispose if @target.display
16
16
  end
17
-
18
- def test_shell_with_default_layout
17
+
18
+ def test_shell_with_default_layout_and_composite
19
19
  @target = shell {
20
20
  composite(:border, :no_focus) {
21
21
  }
22
22
  }
23
-
23
+
24
24
  assert_equal 1, @target.widget.children.size
25
25
  assert_instance_of Composite, @target.widget.children[0]
26
26
  composite_widget = @target.widget.children[0]
@@ -28,4 +28,3 @@ class GlimmerTest < Test::Unit::TestCase
28
28
  assert_has_style :border, composite_widget
29
29
  end
30
30
  end
31
-
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/helper"
1
+ require_relative "helper"
2
2
 
3
3
  class GlimmerDataBindingTest < Test::Unit::TestCase
4
4
  include Glimmer
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/helper"
1
+ require_relative "helper"
2
2
 
3
3
  class GlimmerListDataBindingTest < Test::Unit::TestCase
4
4
  include Glimmer
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/helper"
1
+ require_relative "helper"
2
2
 
3
3
  class GlimmerDataBindingTest < Test::Unit::TestCase
4
4
  include Glimmer
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + "/helper"
1
+ require_relative "helper"
2
2
 
3
- require File.dirname(__FILE__) + "/../lib/shine"
3
+ require_relative "../lib/shine"
4
4
 
5
5
  class GlimmerDataBindingTest < Test::Unit::TestCase
6
6
  include Glimmer
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/helper"
1
+ require_relative "helper"
2
2
 
3
3
  class GlimmerTest < Test::Unit::TestCase
4
4
  include Glimmer
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/helper"
1
+ require_relative "helper"
2
2
 
3
3
  class GlimmerTableDataBindingTest < Test::Unit::TestCase
4
4
  include Glimmer
data/test/glimmer_test.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/helper"
1
+ require_relative "helper"
2
2
 
3
3
  class GlimmerTest < Test::Unit::TestCase
4
4
  include Glimmer
@@ -163,7 +163,7 @@ class GlimmerTest < Test::Unit::TestCase
163
163
  assert_equal 55, @spinner.widget.getSelection
164
164
  end
165
165
 
166
- def test_shell_and_spinner_default
166
+ def test_shell_and_list_default
167
167
  @target = shell {
168
168
  @list = list {
169
169
  }
@@ -233,6 +233,5 @@ class GlimmerTest < Test::Unit::TestCase
233
233
  assert_has_style :password, text_widget
234
234
  assert_equal "Hello", text_widget.getText
235
235
  end
236
-
237
- end
238
236
 
237
+ end
data/test/helper.rb CHANGED
@@ -1,5 +1,10 @@
1
1
  require 'rubygems'
2
+ require 'simplecov'
3
+ SimpleCov.start
2
4
  require 'bundler'
5
+ require 'test/unit'
6
+ require 'puts_debuggerer'
7
+
3
8
  begin
4
9
  Bundler.setup(:default, :development)
5
10
  rescue Bundler::BundlerError => e
@@ -7,8 +12,6 @@ rescue Bundler::BundlerError => e
7
12
  $stderr.puts "Run `bundle install` to install missing gems"
8
13
  exit e.status_code
9
14
  end
10
- require 'test/unit'
11
-
12
15
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
13
16
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'samples'))
14
17
  $LOAD_PATH.unshift(File.dirname(__FILE__))
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + "/helper"
1
+ require_relative "helper"
2
2
 
3
- require File.dirname(__FILE__) + "/../lib/command_handlers/models/observable_model"
3
+ require_relative "../lib/command_handlers/models/observable_model"
4
4
 
5
5
  require "test/unit"
6
6
  class ObservableModelTest < Test::Unit::TestCase
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/helper"
1
+ require_relative "helper"
2
2
 
3
3
  class RWidgetTest < Test::Unit::TestCase
4
4
  include Glimmer
@@ -1,5 +1,5 @@
1
- require File.dirname(__FILE__) + "/../../helper"
2
- require File.dirname(__FILE__) + "/../../../samples/contactmanager/contact_manager_presenter"
1
+ require_relative "../../helper"
2
+ require_relative "../../../samples/contactmanager/contact_manager_presenter"
3
3
 
4
4
  class ContactManagerPresenterTest < Test::Unit::TestCase
5
5
 
@@ -47,6 +47,30 @@ class ContactManagerPresenterTest < Test::Unit::TestCase
47
47
  assert_equal 0, contacts.size
48
48
  end
49
49
 
50
+ def test_find_specify_no_fields_for_all_results
51
+ contact_manager_presenter = ContactManagerPresenter.new
52
+ contact_manager_presenter.find
53
+ contacts = contact_manager_presenter.results
54
+ assert_not_nil contacts
55
+ assert_equal 4, contacts.size
56
+ assert_equal "Anne", contacts[0].first_name
57
+ assert_equal "Beatrice", contacts[1].first_name
58
+ assert_equal "Frank", contacts[2].first_name
59
+ assert_equal "franky", contacts[3].first_name
60
+ end
61
+
62
+ def test_list_all_results
63
+ contact_manager_presenter = ContactManagerPresenter.new
64
+ contact_manager_presenter.list
65
+ contacts = contact_manager_presenter.results
66
+ assert_not_nil contacts
67
+ assert_equal 4, contacts.size
68
+ assert_equal "Anne", contacts[0].first_name
69
+ assert_equal "Beatrice", contacts[1].first_name
70
+ assert_equal "Frank", contacts[2].first_name
71
+ assert_equal "franky", contacts[3].first_name
72
+ end
73
+
50
74
  def test_initial_results
51
75
  contact_manager_presenter = ContactManagerPresenter.new
52
76
  contacts = contact_manager_presenter.results
@@ -1,5 +1,5 @@
1
- require File.dirname(__FILE__) + "/../../helper"
2
- require File.dirname(__FILE__) + "/../../../samples/tictactoe/tic_tac_toe_board"
1
+ require_relative "../../helper"
2
+ require_relative "../../../samples/tictactoe/tic_tac_toe_board"
3
3
 
4
4
  class TicTacToeTest < Test::Unit::TestCase
5
5
 
@@ -1,5 +1,5 @@
1
- require File.dirname(__FILE__) + "/../helper"
2
- require File.dirname(__FILE__) + "/../../lib/parent"
1
+ require_relative "../helper"
2
+ require_relative "../../lib/parent"
3
3
 
4
4
  class GlimmerXmlTest < Test::Unit::TestCase
5
5
  include Glimmer
metadata CHANGED
@@ -1,114 +1,130 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: glimmer
3
- version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 3
10
- version: 0.1.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4.swt.pre.4.7.0
11
5
  platform: ruby
12
- authors:
13
- - Andy Maleh
14
- autorequire:
6
+ authors:
7
+ - AndyMaleh
8
+ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-03-17 00:00:00 -06:00
19
- default_executable: glimmer
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
11
+ date: 2017-07-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - '='
17
+ - !ruby/object:Gem::Version
18
+ version: 3.1.0
22
19
  name: facets
23
- version_requirements: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - "="
27
- - !ruby/object:Gem::Version
28
- hash: 43
29
- segments:
30
- - 2
31
- - 9
32
- - 0
33
- version: 2.9.0
34
20
  prerelease: false
35
21
  type: :runtime
36
- requirement: *id001
37
- - !ruby/object:Gem::Dependency
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 3.1.0
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: 2.3.0
33
+ name: rdoc
34
+ prerelease: false
35
+ type: :development
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 2.3.0
41
+ - !ruby/object:Gem::Dependency
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.0'
38
47
  name: bundler
39
- version_requirements: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
48
48
  prerelease: false
49
49
  type: :development
50
- requirement: *id002
51
- - !ruby/object:Gem::Dependency
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 2.3.0
52
61
  name: jeweler
53
- version_requirements: &id003 !ruby/object:Gem::Requirement
54
- none: false
55
- requirements:
56
- - - ~>
57
- - !ruby/object:Gem::Version
58
- hash: 7
59
- segments:
60
- - 1
61
- - 5
62
- - 2
63
- version: 1.5.2
64
62
  prerelease: false
65
63
  type: :development
66
- requirement: *id003
67
- - !ruby/object:Gem::Dependency
68
- name: rcov
69
- version_requirements: &id004 !ruby/object:Gem::Requirement
70
- none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
- version: "0"
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 2.3.0
69
+ - !ruby/object:Gem::Dependency
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '='
73
+ - !ruby/object:Gem::Version
74
+ version: 0.8.5
75
+ name: coveralls
78
76
  prerelease: false
79
77
  type: :development
80
- requirement: *id004
81
- - !ruby/object:Gem::Dependency
82
- name: facets
83
- version_requirements: &id005 !ruby/object:Gem::Requirement
84
- none: false
85
- requirements:
86
- - - "="
87
- - !ruby/object:Gem::Version
88
- hash: 43
89
- segments:
90
- - 2
91
- - 9
92
- - 0
93
- version: 2.9.0
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.8.5
83
+ - !ruby/object:Gem::Dependency
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 0.10.0
89
+ name: simplecov
94
90
  prerelease: false
95
- type: :runtime
96
- requirement: *id005
97
- description: JRuby DSL that enables easy and efficient authoring of user-interfaces using the robust platform-independent Eclipse SWT library
98
- email: andy@obtiva.com
99
- executables:
91
+ type: :development
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.10.0
97
+ - !ruby/object:Gem::Dependency
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - '='
101
+ - !ruby/object:Gem::Version
102
+ version: 0.6.1
103
+ name: puts_debuggerer
104
+ prerelease: false
105
+ type: :development
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 0.6.1
111
+ description: JRuby DSL that enables easy and efficient authoring of user-interfaces
112
+ using the robust platform-independent Eclipse SWT library
113
+ email: andy.am@gmail.com
114
+ executables:
100
115
  - glimmer
101
116
  extensions: []
102
-
103
- extra_rdoc_files:
117
+ extra_rdoc_files:
104
118
  - LICENSE.txt
105
119
  - README.markdown
106
- files:
107
- - .rvmrc
120
+ files:
121
+ - ".ruby-gemset"
122
+ - ".ruby-version"
108
123
  - Gemfile
109
124
  - LICENSE.txt
110
125
  - README.markdown
111
126
  - Rakefile
127
+ - TODO.md
112
128
  - VERSION
113
129
  - bin/glimmer
114
130
  - glimmer.gemspec
@@ -161,6 +177,9 @@ files:
161
177
  - samples/contactmanager/contact_manager_presenter.rb
162
178
  - samples/contactmanager/contact_repository.rb
163
179
  - samples/hello_combo.rb
180
+ - samples/hello_list_multi_selection.rb
181
+ - samples/hello_list_single_selection.rb
182
+ - samples/hello_tab.rb
164
183
  - samples/hello_world.rb
165
184
  - samples/login.rb
166
185
  - samples/tictactoe/tic_tac_toe.rb
@@ -180,53 +199,28 @@ files:
180
199
  - test/samples/contactmanager/contact_manager_presenter_test.rb
181
200
  - test/samples/tictactoe/tic_tac_toe_test.rb
182
201
  - test/xml/glimmer_xml_test.rb
183
- has_rdoc: true
184
202
  homepage: http://github.com/AndyObtiva/glimmer
185
- licenses:
203
+ licenses:
186
204
  - MIT
187
- post_install_message:
205
+ metadata: {}
206
+ post_install_message:
188
207
  rdoc_options: []
189
-
190
- require_paths:
208
+ require_paths:
191
209
  - lib
192
- required_ruby_version: !ruby/object:Gem::Requirement
193
- none: false
194
- requirements:
195
- - - ">="
196
- - !ruby/object:Gem::Version
197
- hash: 3
198
- segments:
199
- - 0
200
- version: "0"
201
- required_rubygems_version: !ruby/object:Gem::Requirement
202
- none: false
203
- requirements:
210
+ required_ruby_version: !ruby/object:Gem::Requirement
211
+ requirements:
204
212
  - - ">="
205
- - !ruby/object:Gem::Version
206
- hash: 3
207
- segments:
208
- - 0
209
- version: "0"
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ required_rubygems_version: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - ">"
218
+ - !ruby/object:Gem::Version
219
+ version: 1.3.1
210
220
  requirements: []
211
-
212
- rubyforge_project:
213
- rubygems_version: 1.5.2
214
- signing_key:
215
- specification_version: 3
221
+ rubyforge_project:
222
+ rubygems_version: 2.6.11
223
+ signing_key:
224
+ specification_version: 4
216
225
  summary: Desktop application development library
217
- test_files:
218
- - test/glimmer_combo_data_binding_test.rb
219
- - test/glimmer_constant_test.rb
220
- - test/glimmer_data_binding_test.rb
221
- - test/glimmer_list_data_binding_test.rb
222
- - test/glimmer_listeners_test.rb
223
- - test/glimmer_shine_data_binding_test.rb
224
- - test/glimmer_tab_item_test.rb
225
- - test/glimmer_table_data_binding_test.rb
226
- - test/glimmer_test.rb
227
- - test/helper.rb
228
- - test/observable_model_test.rb
229
- - test/r_widget_test.rb
230
- - test/samples/contactmanager/contact_manager_presenter_test.rb
231
- - test/samples/tictactoe/tic_tac_toe_test.rb
232
- - test/xml/glimmer_xml_test.rb
226
+ test_files: []
data/.rvmrc DELETED
@@ -1 +0,0 @@
1
- rvm use jruby@glimmer --create