diff --git a/.gitignore b/.gitignore index a459874a..1f59bae4 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ deps dist pkg *.app +docs-* diff --git a/Gemfile b/Gemfile index fb4ccc02..db08979d 100644 --- a/Gemfile +++ b/Gemfile @@ -8,7 +8,8 @@ gem 'swt' group :development do gem "ruby-debug" - #gem "guard" + gem "guard" + gem "guard-rspec" #gem "spork" #gem 'yard' diff --git a/Gemfile.lock b/Gemfile.lock index 091cc308..5619d304 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,10 +11,16 @@ GEM term-ansicolor (>= 1.0.6) diff-lcs (1.1.3) facets (2.9.2) + ffi (1.0.11-java) gherkin (2.5.1) json (>= 1.4.6) gherkin (2.5.1-java) json (>= 1.4.6) + guard (1.0.0) + ffi (>= 0.5.0) + thor (~> 0.14.6) + guard-rspec (0.6.0) + guard (>= 0.10.0) json (1.6.1) json (1.6.1-java) linecache (0.46) @@ -38,6 +44,7 @@ GEM ruby-debug-base (0.10.4-java) swt (0.12) term-ansicolor (1.0.6) + thor (0.14.6) PLATFORMS java @@ -47,6 +54,8 @@ DEPENDENCIES cucumber facets gherkin + guard + guard-rspec log4jruby rake rspec diff --git a/archive/base_framework_adapter.rb b/archive/base_framework_adapter.rb new file mode 100644 index 00000000..60303d38 --- /dev/null +++ b/archive/base_framework_adapter.rb @@ -0,0 +1,106 @@ +module BaseFrameworkAdapter + module Shoes + class Base + attr_accessor :adapted_object + + def initialize(adapted_object) + self.adapted_object = adapted_object + end + end + + ## Adapts the BaseController methods specific for the framework. + #class BaseController < Base + # # Queues the block call, so that it is only gets executed in the main thread. + # def queue(&block) + # end + #end + + # Adapter Template for the BaseApp methods specific for the framework. + class App < Base + + def initialize(opts={}, &blk) + end + + # Returns the framework_adapter for this class. + def framework_adapter + framework_adapter_for('App') + end + + + # Runs the application, starting anything the framework needs. + def run + end + + # Refreshes the GUI application, running just one event loop. + # + # This method is mostly useful when writing tests. It shouldn't be used + # in normal applications. + def refresh + end + + # Exits the application, freeing any resources used by the framework. + def quit + end + end + + ## Adapts the BaseModel methods specific for the framework + #class BaseElement < Base + #end + + # Adapts the BaseView methods specific for the framework + class BaseNative < Base + # Queues the block call, so that it is only gets executed in the main thread. + def queue(&block) + end + + # Adds a widget to the given container widget. + def add_widget_to_container(widget, container_widget) + end + + # Removes a widget from the given container widget. + def remove_widget_from_container(widget, container_widget) + end + + # Removes all children from the given container widget. + def remove_all_children(container_widget) + end + + # Sets the widget name for the given widget if given. + def set_widget_name(widget, widget_name) + end + + # Autoconnects signals handlers for the view. If +other_target+ is given + # it is used instead of the view itself. + def autoconnect_signals(view, other_target = nil) + end + + # Connects the signal from the widget to the given receiver block. + # The block is executed in the context of the receiver. + def connect_declared_signal_block(widget, signal, receiver, block) + end + + # Connects the signal from the widget to the given receiver method. + def connect_declared_signal(widget, signal, receiver, method) + end + + # Builds widgets from the given filename, using the proper builder. + def build_widgets_from(filename) + end + + # Registers widgets as attributes of the view class. + def register_widgets + end + + class << self + # Returns the builder file extension to be used for this view class. + def builder_file_extension + end + end + end + + ## Adapts the BaseViewHelper methods specific for the framework + #class BaseViewHelper + #end + end +end + diff --git a/archive/button.rb b/archive/button.rb new file mode 100644 index 00000000..58abbfef --- /dev/null +++ b/archive/button.rb @@ -0,0 +1,20 @@ +module Shoes +class Button < Native + + attr_accessor :button + + def initialize(parent,opts={}, &blk) + super(opts) + opts[:text] ||= "Button" + @button = javax.swing.JButton.new(opts[:text]) + @button.add_action_listener(&blk) unless blk.nil? + parent.add(@button) + return @button + end + + def to_java + @button.to_java + end + +end +end \ No newline at end of file diff --git a/archive/shoes.rb b/archive/shoes.rb new file mode 100644 index 00000000..8823a481 --- /dev/null +++ b/archive/shoes.rb @@ -0,0 +1,36 @@ +require 'java' + +require 'rubygems' +require 'facets/hash' + +require 'swt' + +require 'lib/log4j/log4j-1.2.16.jar' +require 'log4jruby' +require 'log4jruby/logger_for_class' +logger = Log4jruby::Logger.get('test', :tracing => true, :level => :debug ) +logger.debug("Shoooes!") + +require 'swt_shoes/app' +#require 'swt_shoes/element_methods' +require 'swt_shoes/layout' +#require 'swt_shoes/native' +require 'swt_shoes/window' +#require 'swt_shoes/flow' +#require 'swt_shoes/button' +#require 'swt_shoes/animation' + +module Shoes + + include Log4jruby::LoggerForClass + + def self.app(opts={}, &blk) + Shoes::App.new(opts, &blk) + logger.debug "Exiting Shoes.app" + end + +end + +def window(*a, &b) + Shoes.app(*a, &b) +end diff --git a/spec/shoes/animation_spec.rb b/archive/spec_brown_shoes/animation_spec.rb similarity index 100% rename from spec/shoes/animation_spec.rb rename to archive/spec_brown_shoes/animation_spec.rb diff --git a/spec/check_spec.rb b/archive/spec_brown_shoes/check_spec.rb similarity index 100% rename from spec/check_spec.rb rename to archive/spec_brown_shoes/check_spec.rb diff --git a/archive/spec_brown_shoes/element_methods_spec.rb b/archive/spec_brown_shoes/element_methods_spec.rb new file mode 100644 index 00000000..19eb412f --- /dev/null +++ b/archive/spec_brown_shoes/element_methods_spec.rb @@ -0,0 +1,60 @@ +require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') + +describe "Basic Element Methods" do + + before(:all) do + @gui = Shoes.app do + + + button :text => "Change to Hello", :id => 'button_one' + + button :text => 'Change to Goodbye', :id => 'button_two' + + end + end + + it "Should return 0 for left for button_one" do + @gui.elements['button_one'].left.should be 0 + end + + it "Should return 0 for top of button_one" do + @gui.elements['button_one'].top.should be 0 + end + + it "Should return 0 for left for button_two" do + @gui.elements['button_two'].left.should be 0 + end + + it "Should return 0 for top for button_two" do + @gui.elements['button_two'].top.should be 147 + end + + it "Should make button_one invisible when hide is called" do + @gui.elements['button_one'].hide + @gui.elements['button_one'].to_java.isVisible.should be false + end + + it "Should make button_one visible when show is called" do + @gui.elements['button_one'].hide + @gui.elements['button_one'].show + @gui.elements['button_one'].to_java.isVisible.should be true + end + + it "Should make button_one hidden when toggle is called and it is visible" do + @gui.elements['button_one'].show + @gui.elements['button_one'].toggle + @gui.elements['button_one'].to_java.isVisible.should be false + end + + it "Should make button_one visible after being hidden when toggle is called and it is hidden" do + @gui.elements['button_one'].hide + @gui.elements['button_one'].toggle + @gui.elements['button_one'].to_java.isVisible.should be true + end + + + after(:all) do + @gui.frame.dispose() + end + +end diff --git a/spec/shoes/elementary_button_spec.rb b/archive/spec_brown_shoes/elementary_button_spec.rb similarity index 100% rename from spec/shoes/elementary_button_spec.rb rename to archive/spec_brown_shoes/elementary_button_spec.rb diff --git a/archive/spec_brown_shoes/flow_spec.rb b/archive/spec_brown_shoes/flow_spec.rb new file mode 100644 index 00000000..1dd26ee4 --- /dev/null +++ b/archive/spec_brown_shoes/flow_spec.rb @@ -0,0 +1,37 @@ +require "spec_brown_helper" +import javax.swing.JPanel +import javax.swing.border.EmptyBorder + +describe Shoes::Flow do + + let(:parent_container) { JPanel.new } + + it "should have a container as JPanel" do + flow = Shoes::Flow.new(parent_container) + flow.parent_container.should == parent_container + flow.container.should be_a JPanel + flow.container.should_not === flow.parent_container + end + + it "should horizontally stack 3 widgets" do + button1 = button2 = button3 = nil + tflow = Shoes::Flow.new(parent_container) do + button1 = button("Button1") + button2 = button("Button2") + button3 = button("Button3") + end + debugger + button1.left.should >= 0 + button2.left.should > 0 + button2.left.should >= button1.left + button1.width + end + + it "should have a margin" do + button1 = nil + flow = Shoes::Flow.new(parent_container, :margin => 10) + + flow.container.border.should be_a EmptyBorder + flow.container.border.border_insets.left.should == 10 + end + +end \ No newline at end of file diff --git a/spec/shoes/image_spec.rb b/archive/spec_brown_shoes/image_spec.rb similarity index 100% rename from spec/shoes/image_spec.rb rename to archive/spec_brown_shoes/image_spec.rb diff --git a/archive/spec_brown_shoes/images/shoe.jpg b/archive/spec_brown_shoes/images/shoe.jpg new file mode 100644 index 00000000..66c2ad19 Binary files /dev/null and b/archive/spec_brown_shoes/images/shoe.jpg differ diff --git a/archive/spec_brown_shoes/native_spec.rb b/archive/spec_brown_shoes/native_spec.rb new file mode 100644 index 00000000..ccf03726 --- /dev/null +++ b/archive/spec_brown_shoes/native_spec.rb @@ -0,0 +1,7 @@ +require "spec_helper" + +describe Shoes::Native do + + it "should do something" do + end +end \ No newline at end of file diff --git a/archive/window.rb b/archive/window.rb new file mode 100644 index 00000000..a3774ee5 --- /dev/null +++ b/archive/window.rb @@ -0,0 +1,35 @@ +#require 'shoes/framework_adapters/swt_shoes/layout' + +module SwtShoes + class Window < Layout + + DEFAULT_WIDTH = 800 + DEFAULT_HEIGHT = 600 + DEFAULT_TITLE = "Shooes!" + + attr_reader :container + + def initialize(opts = {}, &blk) + opts.stringify_keys! + @elements = opts['elements'] + + @container = Swt::Widgets::Shell.new($display, Swt::SWT::CLOSE) + + width, height = opts['width'] || DEFAULT_WIDTH, opts['height'] || DEFAULT_HEIGHT + + @container.setSize(width, height) + @container.setText(opts['title'] || DEFAULT_TITLE) + + if opts['on_close'] + logger.debug "Shell #{@container.inspect} adding block #{blk.inspect}" + @container.addListener(Swt::SWT::Close, opts['on_close']) + end + + instance_eval &blk if block_given? + #@container.pack + + @container.open + end + + end +end \ No newline at end of file diff --git a/lib/shoes.rb b/lib/shoes.rb index bb4e1bc2..df0172f3 100644 --- a/lib/shoes.rb +++ b/lib/shoes.rb @@ -6,8 +6,13 @@ require 'lib/log4j/log4j-1.2.16.jar' require 'log4jruby' require 'log4jruby/logger_for_class' -logger = Log4jruby::Logger.get('test', :tracing => true, :level => :debug ) -logger.debug("Shoooes!") + +module Shoes + attr_accessor :logger + + @logger = Log4jruby::Logger.get('test', :tracing => true, :level => :debug) + @logger.debug("Shoooes!") +end require 'shoes/app' #require 'shoes/native' @@ -18,7 +23,7 @@ #require 'shoes/layout' #require 'shoes/button' #require 'shoes/stack' -#require 'shoes/flow' +require 'shoes/flow' #require 'shoes/edit_line' #require 'shoes/edit_box' #require 'shoes/check' diff --git a/lib/shoes/element_methods.rb b/lib/shoes/element_methods.rb index e730d98e..23415a94 100644 --- a/lib/shoes/element_methods.rb +++ b/lib/shoes/element_methods.rb @@ -13,12 +13,12 @@ module ElementMethods #end def flow(opts = {}, &blk) - swt_flow = Shoes::Flow.new(container, opts, &blk) + swt_flow = Shoes::Flow.new(self, self.gui_container, opts, blk) end def button(text, opts={}, &blk) - button = Shoes::Button.new(container, text, opts, &blk) + button = Shoes::Button.new(gui_container, text, opts, &blk) #@elements[button.to_s] = button #button end diff --git a/lib/shoes/flow.rb b/lib/shoes/flow.rb index 79c401aa..e28cabb3 100644 --- a/lib/shoes/flow.rb +++ b/lib/shoes/flow.rb @@ -1,43 +1,32 @@ -require 'shoes/layout' +require 'facets/hash' module Shoes -class Flow < Layout - import java.awt.BorderLayout - import java.awt.Dimension - import java.awt.FlowLayout - import javax.swing.JPanel - import javax.swing.BoxLayout - - import javax.swing.border.EmptyBorder - - attr_accessor :parent_container, :container - - def initialize(parent_container, opts={}, &blk) - opts.stringify_keys! - @parent_container = parent_container - @container = JPanel.new() - #layout = BoxLayout.new(@container, BoxLayout::LINE_AXIS) - layout = FlowLayout.new - layout.alignment = FlowLayout::LEFT - - @container.set_layout(layout) - #debugger - unless parent_container.is_a? BorderLayout - if(opts['height'] && opts['width']) - #@container.set_preferred_size(Dimension.new(opts['width'], opts['height'])) - end - end + class Flow + + include Shoes::ElementMethods - if margin = opts['margin'] - #@container.border = EmptyBorder.new(margin, margin, margin, margin) - #@container.border = javax.swing.border.LineBorder.new(java.awt.Color::RED, 2, true) - @container.setBackground(java.awt.Color::PINK) - end + attr_accessor :parent_container, :parent_gui_container, :gui_container + attr_accessor :blk + attr_accessor :width, :height, :margin + + + def initialize(parent_container, parent_gui_container, opts={}, blk = nil) + self.parent_container = parent_container + self.parent_gui_container = parent_gui_container + opts.stringify_keys! - instance_eval &blk if block_given? - parent_container.add(container, BorderLayout::CENTER) + self.width = opts['width'] + self.height = opts['height'] + self.margin = opts['margin'] - super + self.blk = blk + + gui_flow_init + + instance_eval &blk unless blk.nil? + + gui_flow_add_to_parent + + end end -end end \ No newline at end of file diff --git a/lib/swing_shoes.rb b/lib/swing_shoes.rb index e46dc1e5..3621214c 100644 --- a/lib/swing_shoes.rb +++ b/lib/swing_shoes.rb @@ -1,6 +1,8 @@ require 'white_shoes' require 'swing_shoes/app' +require 'swing_shoes/flow' + require 'swing_shoes/common_methods' require 'swing_shoes/button' diff --git a/lib/swing_shoes/flow.rb b/lib/swing_shoes/flow.rb new file mode 100644 index 00000000..1b284de9 --- /dev/null +++ b/lib/swing_shoes/flow.rb @@ -0,0 +1,51 @@ +require 'shoes/layout' + +module SwingShoes + module Flow + import java.awt.BorderLayout + import java.awt.Dimension + import java.awt.FlowLayout + import javax.swing.JPanel + import javax.swing.BoxLayout + + import javax.swing.border.EmptyBorder + + def gui_flow_init + #def initialize(parent_container, opts={}, &blk) + # opts.stringify_keys! + # @parent_container = parent_container + self.gui_container = container = JPanel.new() + #layout = BoxLayout.new(@container, BoxLayout::LINE_AXIS) + layout = FlowLayout.new + layout.alignment = FlowLayout::LEFT + + container.set_layout(layout) + + #debugger + unless self.parent_gui_container.is_a? BorderLayout + if (self.height && self.width) + container.set_preferred_size(Dimension.new(self.width, self.height)) + end + end + + if self.margin + container.border = EmptyBorder.new(margin, margin, margin, margin) + #@container.border = javax.swing.border.LineBorder.new(java.awt.Color::RED, 2, true) + #@container.setBackground(java.awt.Color::PINK) + end + + end + + def gui_flow_add_to_parent + self.parent_gui_container.add(self.gui_container, BorderLayout::CENTER) + end + end +end + + +module Shoes + class Flow + include SwingShoes::Flow + end +end + diff --git a/lib/swt_shoes/app.rb b/lib/swt_shoes/app.rb index eb75fd42..a7b9c308 100644 --- a/lib/swt_shoes/app.rb +++ b/lib/swt_shoes/app.rb @@ -10,7 +10,7 @@ module SwtShoes module App def gui_init - self.gui_container = container = Swt::Widgets::Shell.new($display, Swt::SWT::CLOSE) + self.gui_container = container = Swt::Widgets::Shell.new(Swt.display, Swt::SWT::CLOSE) opts = self.opts @@ -22,19 +22,19 @@ def gui_init def gui_open - container.open + self.gui_container.open Swt.event_loop { Swt.display.isDisposed } - logger.debug "Swt.display disposed... exiting Shoes::App.new" + Shoes.logger.debug "Swt.display disposed... exiting Shoes::App.new" end private def main_window_on_close lambda { - logger.debug "main_window on_close block begin... disposing Swt.display" + Shoes.logger.debug "main_window on_close block begin... disposing Swt.display" Swt.display.dispose - logger.debug "Swt.display disposed" + Shoes.logger.debug "Swt.display disposed" } end end diff --git a/lib/swt_shoes/flow.rb b/lib/swt_shoes/flow.rb index e99c8d55..ddc4d8ec 100644 --- a/lib/swt_shoes/flow.rb +++ b/lib/swt_shoes/flow.rb @@ -1,41 +1,45 @@ -#require 'shoes/framework_adapters/swt_shoes/layout' - module SwtShoes # flow takes these options # :margin - integer - add this many pixels to all 4 sides of the layout - class Flow < Layout - - # container - holds the widgets and controls painting - # layout - directs the container on _where_ to place widgets - attr_reader :container, :layout + module Flow - def initialize composite_parent, opts = {}, &blk - @container = Swt::Widgets::Composite.new(composite_parent, Swt::SWT::NONE) + def gui_flow_init + self.gui_container = container = Swt::Widgets::Composite.new(self.parent_gui_container, Swt::SWT::NONE) # RowLayout is horizontal by default, wrapping by default - @layout = Swt::Layout::RowLayout.new + layout = Swt::Layout::RowLayout.new # set the margins - margin(opts[:margin]) if opts[:margin] + set_margin(layout) - if opts['width'] && opts['height'] - @container.setSize(opts['width'], opts['height']) + if self.width && self.height + container.setSize(self.width, self.height) end - @container.setLayout(@layout) - - instance_eval &blk if block_given? + container.setLayout(layout) + end - @container.pack + def gui_flow_add_to_parent + #self.parent_gui_container.add(self.gui_container) end # Add this many pixels to margins on layout - def margin(margin_pixels) - @layout.marginTop = margin_pixels - @layout.marginRight = margin_pixels - @layout.marginBottom = margin_pixels - @layout.marginLeft = margin_pixels + def set_margin(layout) + if margin_pixels = self.margin + layout.marginTop = margin_pixels + layout.marginRight = margin_pixels + layout.marginBottom = margin_pixels + layout.marginLeft = margin_pixels + end end end end + + +module Shoes + class Flow + include SwtShoes::Flow + end +end + diff --git a/lib/white_shoes.rb b/lib/white_shoes.rb index cb064ec2..e6ca3e8e 100644 --- a/lib/white_shoes.rb +++ b/lib/white_shoes.rb @@ -1,6 +1,7 @@ -require 'white_shoes/base' +#require 'white_shoes/base' require 'white_shoes/app' +require 'white_shoes/flow' require 'rubygems' require 'facets/hash' diff --git a/lib/white_shoes/app.rb b/lib/white_shoes/app.rb index 5c00dc4d..09766d60 100644 --- a/lib/white_shoes/app.rb +++ b/lib/white_shoes/app.rb @@ -12,7 +12,9 @@ def gui_open end end -class Shoes::App - include WhiteShoes::App +module Shoes + class App + include WhiteShoes::App + end end diff --git a/lib/white_shoes/flow.rb b/lib/white_shoes/flow.rb new file mode 100644 index 00000000..b1c70b7e --- /dev/null +++ b/lib/white_shoes/flow.rb @@ -0,0 +1,25 @@ + +module WhiteShoes +# flow takes these options +# :margin - integer - add this many pixels to all 4 sides of the layout + + module Flow + + def gui_flow_init + self.gui_container = "A new Container" + end + + def gui_flow_add_to_parent + + end + end + +end + + +module Shoes + class Flow + include WhiteShoes::Flow + end +end + diff --git a/samples/swt_examples/artifacts.jar b/samples/swt_examples/artifacts.jar new file mode 100644 index 00000000..7fa27f1b Binary files /dev/null and b/samples/swt_examples/artifacts.jar differ diff --git a/samples/swt_examples/binary/org.eclipse.sdk.examples_root_3.4.0.v20110503-817mFcfFEdccNz0Jhh8BTgNN b/samples/swt_examples/binary/org.eclipse.sdk.examples_root_3.4.0.v20110503-817mFcfFEdccNz0Jhh8BTgNN new file mode 100644 index 00000000..89b91ceb Binary files /dev/null and b/samples/swt_examples/binary/org.eclipse.sdk.examples_root_3.4.0.v20110503-817mFcfFEdccNz0Jhh8BTgNN differ diff --git a/samples/swt_examples/content.jar b/samples/swt_examples/content.jar new file mode 100644 index 00000000..75631a82 Binary files /dev/null and b/samples/swt_examples/content.jar differ diff --git a/samples/swt_examples/features/org.eclipse.sdk.examples.source_3.4.0.v20110503.jar b/samples/swt_examples/features/org.eclipse.sdk.examples.source_3.4.0.v20110503.jar new file mode 100644 index 00000000..7ac7d3b7 Binary files /dev/null and b/samples/swt_examples/features/org.eclipse.sdk.examples.source_3.4.0.v20110503.jar differ diff --git a/samples/swt_examples/features/org.eclipse.sdk.examples_3.4.0.v20110503-817mFcfFEdccNz0Jhh8BTgNN.jar b/samples/swt_examples/features/org.eclipse.sdk.examples_3.4.0.v20110503-817mFcfFEdccNz0Jhh8BTgNN.jar new file mode 100644 index 00000000..6802cfc3 Binary files /dev/null and b/samples/swt_examples/features/org.eclipse.sdk.examples_3.4.0.v20110503-817mFcfFEdccNz0Jhh8BTgNN.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.compare.examples.source_3.1.200.I20110510-0800.jar b/samples/swt_examples/plugins/org.eclipse.compare.examples.source_3.1.200.I20110510-0800.jar new file mode 100644 index 00000000..ae3f4ef9 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.compare.examples.source_3.1.200.I20110510-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.compare.examples.xml.source_3.3.200.I20110510-0800.jar b/samples/swt_examples/plugins/org.eclipse.compare.examples.xml.source_3.3.200.I20110510-0800.jar new file mode 100644 index 00000000..9bb92d9b Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.compare.examples.xml.source_3.3.200.I20110510-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.compare.examples.xml_3.3.200.I20110510-0800.jar b/samples/swt_examples/plugins/org.eclipse.compare.examples.xml_3.3.200.I20110510-0800.jar new file mode 100644 index 00000000..b7f5d040 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.compare.examples.xml_3.3.200.I20110510-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.compare.examples_3.1.200.I20110510-0800.jar b/samples/swt_examples/plugins/org.eclipse.compare.examples_3.1.200.I20110510-0800.jar new file mode 100644 index 00000000..71a685cc Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.compare.examples_3.1.200.I20110510-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.debug.examples.core.source_1.3.0.v20110511.jar b/samples/swt_examples/plugins/org.eclipse.debug.examples.core.source_1.3.0.v20110511.jar new file mode 100644 index 00000000..20844329 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.debug.examples.core.source_1.3.0.v20110511.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.debug.examples.core_1.3.0.v20110511.jar b/samples/swt_examples/plugins/org.eclipse.debug.examples.core_1.3.0.v20110511.jar new file mode 100644 index 00000000..7cb6a67c Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.debug.examples.core_1.3.0.v20110511.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.debug.examples.ui.source_1.3.0.v20110511.jar b/samples/swt_examples/plugins/org.eclipse.debug.examples.ui.source_1.3.0.v20110511.jar new file mode 100644 index 00000000..c365ccad Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.debug.examples.ui.source_1.3.0.v20110511.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.debug.examples.ui_1.3.0.v20110511.jar b/samples/swt_examples/plugins/org.eclipse.debug.examples.ui_1.3.0.v20110511.jar new file mode 100644 index 00000000..ac69ad65 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.debug.examples.ui_1.3.0.v20110511.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.jface.examples.databinding.source_1.0.200.I20100601-0800.jar b/samples/swt_examples/plugins/org.eclipse.jface.examples.databinding.source_1.0.200.I20100601-0800.jar new file mode 100644 index 00000000..b27a2114 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.jface.examples.databinding.source_1.0.200.I20100601-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.jface.examples.databinding_1.0.200.I20100601-0800.jar b/samples/swt_examples/plugins/org.eclipse.jface.examples.databinding_1.0.200.I20100601-0800.jar new file mode 100644 index 00000000..4506d8f1 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.jface.examples.databinding_1.0.200.I20100601-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.sdk.examples.source_3.2.0.v20110503.jar b/samples/swt_examples/plugins/org.eclipse.sdk.examples.source_3.2.0.v20110503.jar new file mode 100644 index 00000000..764267f3 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.sdk.examples.source_3.2.0.v20110503.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.sdk.examples_3.2.0.v20110503.jar b/samples/swt_examples/plugins/org.eclipse.sdk.examples_3.2.0.v20110503.jar new file mode 100644 index 00000000..8d96c790 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.sdk.examples_3.2.0.v20110503.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.browser.demos.source_3.1.200.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.browser.demos.source_3.1.200.v3738a.jar new file mode 100644 index 00000000..ce88d924 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.browser.demos.source_3.1.200.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.browser.demos_3.1.200.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.browser.demos_3.1.200.v3738a.jar new file mode 100644 index 00000000..8c845fa0 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.browser.demos_3.1.200.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.browser.source_3.1.100.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.browser.source_3.1.100.v3738a.jar new file mode 100644 index 00000000..83f3e640 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.browser.source_3.1.100.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.browser_3.1.100.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.browser_3.1.100.v3738a.jar new file mode 100644 index 00000000..07eaa39c Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.browser_3.1.100.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.controls.source_3.1.100.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.controls.source_3.1.100.v3738a.jar new file mode 100644 index 00000000..ab089ebc Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.controls.source_3.1.100.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.controls_3.1.100.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.controls_3.1.100.v3738a.jar new file mode 100644 index 00000000..c6b4f67d Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.controls_3.1.100.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.launcher.source_3.1.100.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.launcher.source_3.1.100.v3738a.jar new file mode 100644 index 00000000..73bebe24 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.launcher.source_3.1.100.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.launcher_3.1.100.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.launcher_3.1.100.v3738a.jar new file mode 100644 index 00000000..33bf34b1 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.launcher_3.1.100.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.layouts.source_3.1.100.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.layouts.source_3.1.100.v3738a.jar new file mode 100644 index 00000000..4f7eab20 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.layouts.source_3.1.100.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.layouts_3.1.100.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.layouts_3.1.100.v3738a.jar new file mode 100644 index 00000000..4c720720 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.layouts_3.1.100.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.ole.win32.source_3.1.100.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.ole.win32.source_3.1.100.v3738a.jar new file mode 100644 index 00000000..f072720d Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.ole.win32.source_3.1.100.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.ole.win32_3.1.100.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.ole.win32_3.1.100.v3738a.jar new file mode 100644 index 00000000..205f4f6c Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.ole.win32_3.1.100.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.paint.source_3.1.100.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.paint.source_3.1.100.v3738a.jar new file mode 100644 index 00000000..05fe1c13 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.paint.source_3.1.100.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.paint_3.1.100.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.paint_3.1.100.v3738a.jar new file mode 100644 index 00000000..ff53a4eb Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.paint_3.1.100.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples.source_3.7.0.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples.source_3.7.0.v3738a.jar new file mode 100644 index 00000000..b8fcbacf Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples.source_3.7.0.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.swt.examples_3.7.0.v3738a.jar b/samples/swt_examples/plugins/org.eclipse.swt.examples_3.7.0.v3738a.jar new file mode 100644 index 00000000..0e284b6d Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.swt.examples_3.7.0.v3738a.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.team.examples.filesystem.source_3.4.100.I20110510-0800.jar b/samples/swt_examples/plugins/org.eclipse.team.examples.filesystem.source_3.4.100.I20110510-0800.jar new file mode 100644 index 00000000..28df2e3b Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.team.examples.filesystem.source_3.4.100.I20110510-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.team.examples.filesystem_3.4.100.I20110510-0800.jar b/samples/swt_examples/plugins/org.eclipse.team.examples.filesystem_3.4.100.I20110510-0800.jar new file mode 100644 index 00000000..055d892f Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.team.examples.filesystem_3.4.100.I20110510-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.contributions.source_3.3.100.I20100509-0800.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.contributions.source_3.3.100.I20100509-0800.jar new file mode 100644 index 00000000..4892a56d Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.contributions.source_3.3.100.I20100509-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.contributions_3.3.100.I20100509-0800.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.contributions_3.3.100.I20100509-0800.jar new file mode 100644 index 00000000..fcf086df Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.contributions_3.3.100.I20100509-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.fieldassist.source_1.1.2.I20100601-0800.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.fieldassist.source_1.1.2.I20100601-0800.jar new file mode 100644 index 00000000..25fea57c Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.fieldassist.source_1.1.2.I20100601-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.fieldassist_1.1.2.I20100601-0800.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.fieldassist_1.1.2.I20100601-0800.jar new file mode 100644 index 00000000..807d69b4 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.fieldassist_1.1.2.I20100601-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.javaeditor.source_3.1.300.v20110524-0800.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.javaeditor.source_3.1.300.v20110524-0800.jar new file mode 100644 index 00000000..9dc5b48c Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.javaeditor.source_3.1.300.v20110524-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.javaeditor_3.1.300.v20110524-0800.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.javaeditor_3.1.300.v20110524-0800.jar new file mode 100644 index 00000000..47f95514 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.javaeditor_3.1.300.v20110524-0800.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.multipageeditor.source_3.2.200.I20110413-1600.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.multipageeditor.source_3.2.200.I20110413-1600.jar new file mode 100644 index 00000000..4be11b4d Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.multipageeditor.source_3.2.200.I20110413-1600.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.multipageeditor_3.2.200.I20110413-1600.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.multipageeditor_3.2.200.I20110413-1600.jar new file mode 100644 index 00000000..48e2c1dd Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.multipageeditor_3.2.200.I20110413-1600.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.propertysheet.source_3.2.200.I20110413-1600.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.propertysheet.source_3.2.200.I20110413-1600.jar new file mode 100644 index 00000000..7c85632f Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.propertysheet.source_3.2.200.I20110413-1600.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.propertysheet_3.2.200.I20110413-1600.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.propertysheet_3.2.200.I20110413-1600.jar new file mode 100644 index 00000000..17c4f3e6 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.propertysheet_3.2.200.I20110413-1600.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.readmetool.source_3.3.100.I20110413-1600.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.readmetool.source_3.3.100.I20110413-1600.jar new file mode 100644 index 00000000..e1228b93 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.readmetool.source_3.3.100.I20110413-1600.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.readmetool_3.3.100.I20110413-1600.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.readmetool_3.3.100.I20110413-1600.jar new file mode 100644 index 00000000..1178c002 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.readmetool_3.3.100.I20110413-1600.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.undo.source_3.2.200.I20110413-1600.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.undo.source_3.2.200.I20110413-1600.jar new file mode 100644 index 00000000..d9028e91 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.undo.source_3.2.200.I20110413-1600.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.undo_3.2.200.I20110413-1600.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.undo_3.2.200.I20110413-1600.jar new file mode 100644 index 00000000..d4f79a7a Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.undo_3.2.200.I20110413-1600.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.views.properties.tabbed.article.source_3.2.1.I20100517-1500.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.views.properties.tabbed.article.source_3.2.1.I20100517-1500.jar new file mode 100644 index 00000000..92261c87 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.views.properties.tabbed.article.source_3.2.1.I20100517-1500.jar differ diff --git a/samples/swt_examples/plugins/org.eclipse.ui.examples.views.properties.tabbed.article_3.2.1.I20100517-1500.jar b/samples/swt_examples/plugins/org.eclipse.ui.examples.views.properties.tabbed.article_3.2.1.I20100517-1500.jar new file mode 100644 index 00000000..244ddf41 Binary files /dev/null and b/samples/swt_examples/plugins/org.eclipse.ui.examples.views.properties.tabbed.article_3.2.1.I20100517-1500.jar differ diff --git a/spec/shoes/app_spec.rb b/spec/shoes/app_spec.rb index eecb79be..4dc5879d 100644 --- a/spec/shoes/app_spec.rb +++ b/spec/shoes/app_spec.rb @@ -11,7 +11,9 @@ args = {:args => true} Shoes::App.any_instance.stub(:flow) app = Shoes::App.new args, &input_blk - app.opts.should == args + app.should respond_to :width + app.should respond_to :height + app.should respond_to :title app.blk.should == input_blk end diff --git a/spec/shoes/element_methods_spec.rb b/spec/shoes/element_methods_spec.rb new file mode 100644 index 00000000..4b5a6327 --- /dev/null +++ b/spec/shoes/element_methods_spec.rb @@ -0,0 +1,76 @@ +require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') + +describe "Basic Element Methods" do + + before(:all) do + #@gui = Shoes.app do + # + # + # button :text => "Change to Hello", :id => 'button_one' + # + # button :text => 'Change to Goodbye', :id => 'button_two' + # + #end + end + + describe "flow" do + class ElementMethodsShoeLaces + attr_accessor :gui_container + include Shoes::ElementMethods + end + it "should use self, gui_container, opts, blk" do + subject = ElementMethodsShoeLaces.new + subject.gui_container = "gui_container" + blk = lambda {} + opts = mock(:hash) + Shoes::Flow.should_receive(:new). + with(subject, "gui_container", opts, blk) + subject.flow opts, &blk + end + end + + #it "Should return 0 for left for button_one" do + # @gui.elements['button_one'].left.should be 0 + #end + # + #it "Should return 0 for top of button_one" do + # @gui.elements['button_one'].top.should be 0 + #end + # + #it "Should return 0 for left for button_two" do + # @gui.elements['button_two'].left.should be 0 + #end + # + #it "Should return 0 for top for button_two" do + # @gui.elements['button_two'].top.should be 147 + #end + # + #it "Should make button_one invisible when hide is called" do + # @gui.elements['button_one'].hide + # @gui.elements['button_one'].to_java.isVisible.should be false + #end + # + #it "Should make button_one visible when show is called" do + # @gui.elements['button_one'].hide + # @gui.elements['button_one'].show + # @gui.elements['button_one'].to_java.isVisible.should be true + #end + # + #it "Should make button_one hidden when toggle is called and it is visible" do + # @gui.elements['button_one'].show + # @gui.elements['button_one'].toggle + # @gui.elements['button_one'].to_java.isVisible.should be false + #end + # + #it "Should make button_one visible after being hidden when toggle is called and it is hidden" do + # @gui.elements['button_one'].hide + # @gui.elements['button_one'].toggle + # @gui.elements['button_one'].to_java.isVisible.should be true + #end + + + #after(:all) do + # @gui.frame.dispose() + #end + # +end diff --git a/spec/shoes/flow_spec.rb b/spec/shoes/flow_spec.rb index 798cfa6b..dce5e576 100644 --- a/spec/shoes/flow_spec.rb +++ b/spec/shoes/flow_spec.rb @@ -1,36 +1,53 @@ require "spec_helper" -describe Shoes::Flow do - let(:display) { SWT::Widgets::Display.getDefault } - let(:parent_container) { SWT::Widgets::Shell.new(display) } - - it "should have a SWT Composite" do - flow = Shoes::Flow.new(parent_container) - flow.container.should be_a SWT::Layouts::Composite - end +require "white_shoes" - it "should horizontally stack 3 widgets" do - button1 = button2 = button3 = nil - Shoes::Flow.new(parent_container) do - button1 = button("Button1") - button2 = button("Button2") - button3 = button("Button3") - end - button1.left.should >= 0 - button2.left.should >= button1.left + button1.width - end +describe Shoes::Flow do + - it "should have a margin" do - button1 = nil - flow = Shoes::Flow.new(parent_container, :margin => 10) do - button1 = button("Button1") + describe "initialize" do + it "should set accessors" do + input_block = lambda {} + input_opts = {:width => 131, :height => 137, :margin => 143} + flow = Shoes::Flow.new("parent_container", "parent_gui_container", input_opts, input_block) + flow.parent_container.should == "parent_container" + flow.parent_gui_container.should == "parent_gui_container" + flow.width.should == 131 + flow.height.should == 137 + flow.margin.should == 143 + flow.blk.should == input_block end - button1.top.should == 10 - button1.left.should == 10 - end - - after :all do - SWT::Widgets::Display.getDefault.dispose end + #let(:display) { SWT::Widgets::Display.getDefault } + #let(:parent_container) { SWT::Widgets::Shell.new(display) } + # + #it "should have a SWT Composite" do + # flow = Shoes::Flow.new(parent_container) + # flow.container.should be_a SWT::Layouts::Composite + #end + # + #it "should horizontally stack 3 widgets" do + # button1 = button2 = button3 = nil + # Shoes::Flow.new(parent_container) do + # button1 = button("Button1") + # button2 = button("Button2") + # button3 = button("Button3") + # end + # button1.left.should >= 0 + # button2.left.should >= button1.left + button1.width + #end + # + #it "should have a margin" do + # button1 = nil + # flow = Shoes::Flow.new(parent_container, :margin => 10) do + # button1 = button("Button1") + # end + # button1.top.should == 10 + # button1.left.should == 10 + #end + # + #after :all do + # SWT::Widgets::Display.getDefault.dispose + #end end \ No newline at end of file diff --git a/spec/shoes/todo/animation_spec.rb b/spec/shoes/todo/animation_spec.rb new file mode 100644 index 00000000..bd63a46f --- /dev/null +++ b/spec/shoes/todo/animation_spec.rb @@ -0,0 +1,16 @@ +require "spec_helper" +require 'shoes/runnable_block' + +describe Shoes::Animation do + before do + @main_display = mock(:display, :shells => [], :dispose => true, + :timer_exec => true) + end + + it "should create a Runnable" do + mock_runnable = mock(:runnable, :init => true) + Shoes::RunnableBlock.should_receive(:new).and_return mock_runnable + Shoes::Animation.new(1) {} + end + +end diff --git a/spec/shoes/button_spec.rb b/spec/shoes/todo/button_spec.rb similarity index 100% rename from spec/shoes/button_spec.rb rename to spec/shoes/todo/button_spec.rb diff --git a/spec/shoes/configuration_spec.rb b/spec/shoes/todo/configuration_spec.rb similarity index 100% rename from spec/shoes/configuration_spec.rb rename to spec/shoes/todo/configuration_spec.rb diff --git a/spec/shoes/todo/elementary_button_spec.rb b/spec/shoes/todo/elementary_button_spec.rb new file mode 100644 index 00000000..41a58d0e --- /dev/null +++ b/spec/shoes/todo/elementary_button_spec.rb @@ -0,0 +1,40 @@ +require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') + +describe "Elementary Button Example" do + before(:all) do + @gui = Shoes.app do + stack do + edit_line :id => "edit" + + button :text => "Change to Hello", :id => 'button_one' do + @elements['edit'].to_java.setText("Hello") + end + + button :text => 'Change to Goodbye', :id => 'button_two' do + @elements['edit'].to_java.setText("Goodbye") + end + + end + end + end + + it "Should contain elements with id of edit, button_one, and button_two" do + @gui.elements.should include('edit') + @gui.elements.should include('button_one') + @gui.elements.should include('button_two') + end + + it "Should make the edit_box's contents say 'Hello' when button_one is clicked" do + @gui.elements['button_one'].to_java.doClick() + @gui.elements['edit'].to_java.getText.should == 'Hello' + end + + it "Should make the edit_box's contents say 'Goodbye' when button_two is clicked" do + @gui.elements['button_two'].to_java.doClick() + @gui.elements['edit'].to_java.getText.should == 'Goodbye' + end + + after(:all) do + @gui.frame.dispose() + end +end diff --git a/spec/shoes/todo/image_spec.rb b/spec/shoes/todo/image_spec.rb new file mode 100644 index 00000000..2158ef28 --- /dev/null +++ b/spec/shoes/todo/image_spec.rb @@ -0,0 +1,17 @@ +require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') + +describe "Images" do + before(:all) do + @gui = Shoes.app do + image File.expand_path(File.dirname(__FILE__) + '/images/shoe.jpg'), :id => 'image' + end + end + + it "Should have a image with the image id" do + @gui.elements.should include('image') + end + + after(:all) do + @gui.frame.dispose() + end +end diff --git a/spec/shoes/native_spec.rb b/spec/shoes/todo/native_spec.rb similarity index 100% rename from spec/shoes/native_spec.rb rename to spec/shoes/todo/native_spec.rb diff --git a/spec/shoes/runnable_block_spec.rb b/spec/shoes/todo/runnable_block_spec.rb similarity index 100% rename from spec/shoes/runnable_block_spec.rb rename to spec/shoes/todo/runnable_block_spec.rb diff --git a/spec/shoes/stack_spec.rb b/spec/shoes/todo/stack_spec.rb similarity index 100% rename from spec/shoes/stack_spec.rb rename to spec/shoes/todo/stack_spec.rb diff --git a/spec/shoes/swt_constants_spec.rb b/spec/shoes/todo/swt_constants_spec.rb similarity index 100% rename from spec/shoes/swt_constants_spec.rb rename to spec/shoes/todo/swt_constants_spec.rb diff --git a/spec/shoes/window_spec.rb b/spec/shoes/todo/window_spec.rb similarity index 100% rename from spec/shoes/window_spec.rb rename to spec/shoes/todo/window_spec.rb diff --git a/spec/shoes_spec.rb b/spec/shoes_spec.rb deleted file mode 100644 index 1fb4753f..00000000 --- a/spec/shoes_spec.rb +++ /dev/null @@ -1,29 +0,0 @@ -require 'spec_helper' - -describe "Shoes" do - let(:mock_window) { mock(:window) } - let(:mock_display) { mock(:display, :dispose => true) } - before do - SwtDisplay.stub!(:new) { mock_display } - mock_display.stub!(:shells) { [] } - end - - describe "as a simple App" do - it "should have a window" do - Shoes::Window.should_receive(:new).and_return(mock_window) - - Shoes.app {} - end - it "should pass opts to the main window" do - Shoes::Window.should_receive(:new). - with(:title => "Spec Title", - :width => 200, :height => 200, - :resizable => false). - and_return(mock_window) - - Shoes.app(:title => "Spec Title", - :width => 200, :height => 200, - :resizable => false) {} - end - end -end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb deleted file mode 100644 index a3b26d55..00000000 --- a/spec/spec_helper.rb +++ /dev/null @@ -1,9 +0,0 @@ - -$:<< '../lib' -require 'java' - -require 'rspec' - -require 'shoes' - -Dir["./spec/white_shoes/shared_examples/**/*.rb"].each {|f| require f} diff --git a/spec/swing_shoes/flow_spec.rb b/spec/swing_shoes/flow_spec.rb new file mode 100644 index 00000000..0683a349 --- /dev/null +++ b/spec/swing_shoes/flow_spec.rb @@ -0,0 +1,66 @@ +require "spec_helper" + +require 'swing_shoes/spec_helper' +import javax.swing.JPanel + +describe SwingShoes::Flow do + + class FlowShoeLaces + include SwingShoes::Flow + attr_accessor :parent_gui_container, :gui_container, :opts, :width, :height, :margin + end + + let(:stub_gui_parent) { JPanel.new } + let(:shoelace) { + shoelace = FlowShoeLaces.new + shoelace.parent_gui_container = stub_gui_parent + shoelace + } + + describe "WhiteShoes requirements" do + + before do + subject.parent_gui_container = stub_gui_parent + end + + it_behaves_like "A WhiteShoes Shoes::Flow" + end + + it "should have a container and layout" do + shoelace.gui_flow_init + shoelace.gui_container.should be_a JPanel + shoelace.gui_container.get_layout.should be_a java.awt.FlowLayout + end + + it "should set height and width" do + mock_container = mock(:jpanel, :set_layout => true) + + #JPanel, once for container, once during Swing internal #set_preferred_siee + JPanel.should_receive(:new).twice.and_return mock_container + + mock_dimension = mock(:dimension) + java.awt.Dimension.should_receive(:new).with(131,137).and_return mock_dimension + + shoelace.width = 131 + shoelace.height = 137 + mock_container.should_receive(:set_preferred_size). + with(mock_dimension) + shoelace.gui_flow_init + end + + it "should have a margin" do + mock_container = mock(:jpanel, :set_layout => true) + + mock_border = mock(:border) + javax.swing.border.EmptyBorder.should_receive(:new). + with(7,7,7,7).and_return mock_border + shoelace.margin = 7 + + shoelace.gui_flow_init + end + + after :all do + SWT::Widgets::Display.getDefault.dispose + end + +end \ No newline at end of file diff --git a/spec/swing_shoes/spec_helper.rb b/spec/swing_shoes/spec_helper.rb index 7e1b1ad2..7b96ccbb 100644 --- a/spec/swing_shoes/spec_helper.rb +++ b/spec/swing_shoes/spec_helper.rb @@ -1,2 +1,3 @@ require "swing_shoes" + diff --git a/spec/swt_shoes/flow_spec.rb b/spec/swt_shoes/flow_spec.rb new file mode 100644 index 00000000..c3d19b3a --- /dev/null +++ b/spec/swt_shoes/flow_spec.rb @@ -0,0 +1,79 @@ +require "spec_helper" + +require 'swt_shoes/spec_helper' + +describe SwtShoes::Flow do + + class FlowShoeLaces + include SwtShoes::Flow + attr_accessor :parent_gui_container, :gui_container, :opts, :width, :height, :margin + end + + let(:parent_gui_container) { Swt.display } + let(:mock_slot) { mock(:slot) } + let(:shoelace) { + shoelace = FlowShoeLaces.new + shoelace.parent_gui_container = parent_gui_container + shoelace + } + + describe "WhiteShoes requirements" do + + let(:stub_gui_parent) { Swt::Widgets::Shell.new } + before do + subject.parent_gui_container = stub_gui_parent + end + + it_behaves_like "A WhiteShoes Shoes::Flow" + end + + + describe "gui_flow_init" do + + before do + Swt::Widgets::Composite.should_receive(:new).with(parent_gui_container, anything).and_return mock_slot + end + it "should create a composite and set accessor" do + mock_slot.stub(:setLayout) + shoelace.gui_flow_init + shoelace.gui_container.should == mock_slot + end + + it "should use a RowLayout" do + mock_slot.should_receive(:setLayout).with(an_instance_of(Swt::Layout::RowLayout)) + shoelace.gui_flow_init + end + + it "should set height and width" do + mock_slot.stub(:setLayout) + shoelace.width = 111 + shoelace.height = 129 + mock_slot.should_receive(:setSize).with(111, 129) + shoelace.gui_flow_init + end + + it "should set margins" do + mock_slot.stub(:setLayout) + shoelace.margin = 131 + mock_layout = mock(:layout) + Swt::Layout::RowLayout.should_receive(:new).and_return mock_layout + mock_layout.should_receive(:marginTop=).with 131 + mock_layout.should_receive(:marginRight=).with 131 + mock_layout.should_receive(:marginBottom=).with 131 + mock_layout.should_receive(:marginLeft=).with 131 + shoelace.gui_flow_init + + end + end + + describe "git_flow_add_to_parent" do + #it "should add gui_container to parent_gui_container" do + # gui_container = mock(:gui_container) + # shoelace.gui_container = gui_container + # parent_gui_container.should_receive(:add).with(gui_container) + # shoelace.gui_flow_add_to_parent + #end + end + +end + diff --git a/spec/swt_shoes/spec_helper.rb b/spec/swt_shoes/spec_helper.rb index abee0f42..577b3a9f 100644 --- a/spec/swt_shoes/spec_helper.rb +++ b/spec/swt_shoes/spec_helper.rb @@ -1,2 +1,4 @@ require "swt_shoes" + +require 'swt' \ No newline at end of file diff --git a/spec/todo/check_spec.rb b/spec/todo/check_spec.rb new file mode 100644 index 00000000..d580333c --- /dev/null +++ b/spec/todo/check_spec.rb @@ -0,0 +1,32 @@ +require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') + +describe "Check element" do + before(:all) do + @gui = Shoes.app do + check :id=>"check_one" + end + end + + it "Should have a checkbox with the id of check_one" do + @gui.elements.should include('check_one') + end + + it "Should initially be unchecked" do + @gui.elements['check_one'].checked?.should == false + end + + it "Should become checked when checked=true is called" do + @gui.elements['check_one'].checked=true + @gui.elements['check_one'].checked?.should == true + end + + it "Should become unchecked when checked=false is called" do + @gui.elements['check_one'].checked=true + @gui.elements['check_one'].checked=false + @gui.elements['check_one'].checked?.should == false + end + + after(:all) do + @gui.frame.dispose() + end +end diff --git a/spec/homebrew_spec.rb b/spec/todo/homebrew_spec.rb similarity index 100% rename from spec/homebrew_spec.rb rename to spec/todo/homebrew_spec.rb diff --git a/spec/mock_helpers.rb b/spec/todo/mock_helpers.rb similarity index 100% rename from spec/mock_helpers.rb rename to spec/todo/mock_helpers.rb diff --git a/spec/spec_brown_helper.rb b/spec/todo/spec_brown_helper.rb similarity index 100% rename from spec/spec_brown_helper.rb rename to spec/todo/spec_brown_helper.rb diff --git a/spec/white_shoes/flow_spec.rb b/spec/white_shoes/flow_spec.rb new file mode 100644 index 00000000..33e2d802 --- /dev/null +++ b/spec/white_shoes/flow_spec.rb @@ -0,0 +1,42 @@ +require "spec_helper" + +require 'white_shoes' + +describe WhiteShoes::Flow do + + it_behaves_like "A WhiteShoes Shoes::Flow" + + # + #let(:display) { SWT::Widgets::Display.getDefault } + #let(:parent_container) { SWT::Widgets::Shell.new(display) } + # + #it "should have a SWT Composite" do + # flow = Shoes::Flow.new(parent_container) + # flow.container.should be_a SWT::Layouts::Composite + #end + # + #it "should horizontally stack 3 widgets" do + # button1 = button2 = button3 = nil + # Shoes::Flow.new(parent_container) do + # button1 = button("Button1") + # button2 = button("Button2") + # button3 = button("Button3") + # end + # button1.left.should >= 0 + # button2.left.should >= button1.left + button1.width + #end + # + #it "should have a margin" do + # button1 = nil + # flow = Shoes::Flow.new(parent_container, :margin => 10) do + # button1 = button("Button1") + # end + # button1.top.should == 10 + # button1.left.should == 10 + #end + # + #after :all do + # SWT::Widgets::Display.getDefault.dispose + #end + +end \ No newline at end of file diff --git a/spec/white_shoes/shared_examples/shared_shoes_app_spec.rb b/spec/white_shoes/shared_examples/shared_shoes_app_spec.rb index f4b22599..7b965119 100644 --- a/spec/white_shoes/shared_examples/shared_shoes_app_spec.rb +++ b/spec/white_shoes/shared_examples/shared_shoes_app_spec.rb @@ -1,6 +1,6 @@ shared_examples "A WhiteShoes Shoes::App" do - class ShoeLaces + class ShoeLacesApp attr_accessor :opts, :blk, :gui_container attr_accessor :width, :height, :title @@ -12,7 +12,7 @@ def initialize(opts, &blk) end end let(:shoelaces) { - shoelaces = ShoeLaces.new({}) {} + shoelaces = ShoeLacesApp.new({}) {} shoelaces.stub_chain(:logger, :debug) shoelaces.extend described_class shoelaces @@ -22,8 +22,6 @@ def initialize(opts, &blk) describe "gui_init" do it "should leave a reference to the framework object for further operations" do - subject.should respond_to(:gui_container) - subject.should respond_to(:gui_container=) subject.should_receive(:gui_container=).with(anything) subject.gui_init end diff --git a/spec/white_shoes/shared_examples/shared_shoes_flow_spec.rb b/spec/white_shoes/shared_examples/shared_shoes_flow_spec.rb new file mode 100644 index 00000000..85bbf60c --- /dev/null +++ b/spec/white_shoes/shared_examples/shared_shoes_flow_spec.rb @@ -0,0 +1,24 @@ + +shared_examples_for "A WhiteShoes Shoes::Flow" do + class ShoeLacesFlow + attr_accessor :blk, :gui_container + attr_accessor :width, :height, :margin + attr_accessor :parent_gui_container + end + + let(:shoelaces) { + shoelaces = ShoeLacesFlow.new({}) {} + shoelaces.stub_chain(:logger, :debug) + shoelaces.extend described_class + shoelaces + } + + subject { shoelaces } + + describe "gui_flow_init" do + it "should leave a reference to the container" do + subject.should_receive(:gui_container=).with(anything) + subject.gui_flow_init + end + end +end \ No newline at end of file diff --git a/swing-shoooes b/swing-shoooes index d419c933..f6cf5638 100755 --- a/swing-shoooes +++ b/swing-shoooes @@ -5,4 +5,6 @@ $:<< "lib" require 'shoes' +require 'swing_shoes' + require ARGV[0] diff --git a/testing/blank-window.rb b/testing/blank-window.rb index d3ed3681..f2a5de34 100644 --- a/testing/blank-window.rb +++ b/testing/blank-window.rb @@ -1,3 +1,5 @@ Shoes.app do - + flow do + + end end