Class: GlimmerApplication

Inherits:
Object
  • Object
show all
Defined in:
lib/glimmer_application.rb

Constant Summary collapse

OPERATING_SYSTEMS_SUPPORTED =
["mac", "windows", "linux"]
TEXT_USAGE =
"Usage: glimmer application.rb\n\nRuns a Glimmer application using JRuby, automatically preloading\nthe glimmer ruby gem and SWT jar dependency.\n\nExample: glimmer hello_world.rb\nThis runs the Glimmer application hello_world.rb\n"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(application_path) ⇒ GlimmerApplication

Returns a new instance of GlimmerApplication.



37
38
39
# File 'lib/glimmer_application.rb', line 37

def initialize(application_path)
  @application_path = application_path
end

Class Method Details

.jruby_command_optionsObject



28
29
30
# File 'lib/glimmer_application.rb', line 28

def jruby_command_options
  "#{jruby_os_specific_options} -J-classpath \"#{swt_jar_file}\""
end

.jruby_os_specific_optionsObject



24
25
26
# File 'lib/glimmer_application.rb', line 24

def jruby_os_specific_options
  OS.mac? ? "-J-XstartOnFirstThread" : ""
end

.launch(application) ⇒ Object



32
33
34
# File 'lib/glimmer_application.rb', line 32

def launch(application)
  system "jruby #{jruby_command_options} -r glimmer -S #{application}"
end

.platform_osObject



16
17
18
# File 'lib/glimmer_application.rb', line 16

def platform_os
  OPERATING_SYSTEMS_SUPPORTED.detect {|os| OS.send("#{os}?")}
end

.swt_jar_fileObject



20
21
22
# File 'lib/glimmer_application.rb', line 20

def swt_jar_file
  @swt_jar_file ||= File.expand_path(File.join(__FILE__, '..', '..', 'vendor', 'swt', platform_os, 'swt.jar'))
end

Instance Method Details

#display_usageObject



54
55
56
# File 'lib/glimmer_application.rb', line 54

def display_usage
  puts TEXT_USAGE
end

#launch_applicationObject



49
50
51
52
# File 'lib/glimmer_application.rb', line 49

def launch_application
  puts "Launching Glimmer Application: #{@application_path}"
  self.class.launch(@application_path)
end

#startObject



41
42
43
44
45
46
47
# File 'lib/glimmer_application.rb', line 41

def start
  if @application_path
    launch_application
  else
    display_usage
  end
end