swing 0.0.5 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY +4 -0
- data/README.rdoc +23 -12
- data/VERSION +1 -1
- data/lib/awt/component.rb +11 -0
- data/lib/awt.rb +4 -0
- data/lib/swing/controls.rb +3 -3
- data/lib/swing/j_button.rb +12 -0
- data/lib/swing/j_check_box.rb +13 -0
- data/lib/swing/j_frame.rb +24 -0
- data/lib/swing/j_label.rb +6 -0
- data/lib/swing/j_list.rb +6 -0
- data/lib/swing/j_menu.rb +5 -0
- data/lib/swing/j_menu_bar.rb +32 -0
- data/lib/swing/j_menu_item.rb +9 -0
- data/lib/swing/j_panel.rb +6 -0
- data/lib/swing/j_scroll_pane.rb +8 -0
- data/lib/swing/j_split_pane.rb +11 -0
- data/lib/swing/j_table.rb +51 -0
- data/lib/swing/{button.rb → old/button.rb} +2 -3
- data/lib/swing/{check_box.rb → old/check_box.rb} +1 -2
- data/lib/swing/{frame.rb → old/frame.rb} +0 -0
- data/lib/swing/{label.rb → old/label.rb} +0 -0
- data/lib/swing/{list.rb → old/list.rb} +0 -0
- data/lib/swing/{menu.rb → old/menu.rb} +0 -0
- data/lib/swing/{menu_bar.rb → old/menu_bar.rb} +5 -1
- data/lib/swing/{menu_item.rb → old/menu_item.rb} +0 -0
- data/lib/swing/{panel.rb → old/panel.rb} +0 -0
- data/lib/swing/{scroll_pane.rb → old/scroll_pane.rb} +0 -0
- data/lib/swing/{split_pane.rb → old/split_pane.rb} +0 -0
- data/lib/swing/{table.rb → old/table.rb} +0 -0
- data/lib/swing.rb +18 -19
- data/lib/{swing → swing_support}/action_listener.rb +2 -2
- data/lib/{swing → swing_support/extensions}/attr_setter.rb +0 -0
- data/lib/swing_support/extensions/attributes.rb +65 -0
- data/lib/swing_support/extensions.rb +4 -0
- data/lib/swing_support.rb +4 -0
- data/spec/awt/component_spec.rb +26 -0
- data/spec/{button_spec.rb → swing/j_button_spec.rb} +2 -2
- metadata +37 -18
data/HISTORY
CHANGED
data/README.rdoc
CHANGED
@@ -4,18 +4,29 @@ url: http://github.com/arvicco/swing
|
|
4
4
|
|
5
5
|
== DESCRIPTION:
|
6
6
|
|
7
|
-
Straightforward wrappers for javax.swing Components that simplify Swing code in
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
7
|
+
Straightforward wrappers for javax.swing Components that simplify Swing code in JRuby-based GUI applications.
|
8
|
+
|
9
|
+
== PROBLEMS:
|
10
|
+
|
11
|
+
This code is NOT production-ready! For production-ready code, try something like Rubeus:
|
12
|
+
[https://github.com/akm/rubeus]. Personally, I've tried to use Rubeus and its auto-magic
|
13
|
+
worked great for some use-cases, but I had problems extending its code when I needed to
|
14
|
+
change default Rubeus behavior. For the life of me, I cannot figure out where all this
|
15
|
+
Rubeus magic happens and how to change ANYTHING without the whole stage with smoke and
|
16
|
+
mirrors falling down on me.
|
17
|
+
|
18
|
+
Maybe it's just me - but I'm uncomfortable with complicated code and prefer much more
|
19
|
+
straightforward solutions. So, I intend this lib to be straightforward - even at the
|
20
|
+
expense of performance.
|
21
|
+
|
22
|
+
== FEATURES:
|
23
|
+
|
24
|
+
Library adds extended functionality to original javax.swing classes, such as:
|
25
|
+
* Ability to set attributes via constructor options:
|
26
|
+
Swing::JButton.new 'Title', :enabled => false
|
27
|
+
* Ability to define settable attributes/properties via attr_setter class macro,
|
28
|
+
as well as (optional) defaults for them that may be different from Swing's original defaults
|
29
|
+
* Auto adding component to parent if ops[:parent] is given to initializer
|
19
30
|
|
20
31
|
== SYNOPSIS:
|
21
32
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/lib/awt.rb
ADDED
data/lib/swing/controls.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
# Swing-based GUI controls
|
2
|
-
require 'swing/
|
3
|
-
require 'swing/
|
4
|
-
require 'swing/
|
2
|
+
require 'swing/j_label'
|
3
|
+
require 'swing/j_button'
|
4
|
+
require 'swing/j_check_box'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'swing'
|
2
|
+
|
3
|
+
module Swing::JCheckBox
|
4
|
+
|
5
|
+
attr_setter :selected
|
6
|
+
|
7
|
+
def initialize *args, &block
|
8
|
+
super *args
|
9
|
+
|
10
|
+
# TODO: Probably need to implement ItemListener as well?
|
11
|
+
self.addActionListener SwingSupport::ActionListener.new &block
|
12
|
+
end
|
13
|
+
end # class JCheckBox
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'swing'
|
2
|
+
|
3
|
+
module Swing::JFrame
|
4
|
+
# include AttrSetter
|
5
|
+
|
6
|
+
attr_setter :layout, :background, :size, :title,
|
7
|
+
:default_close_operation => JFrame::EXIT_ON_CLOSE #DISPOSE_ON_CLOSE, HIDE_ON_CLOSE
|
8
|
+
|
9
|
+
def initialize *args
|
10
|
+
|
11
|
+
super *args
|
12
|
+
|
13
|
+
# setup opts
|
14
|
+
|
15
|
+
self.location_relative_to = nil
|
16
|
+
self.visible = true
|
17
|
+
end
|
18
|
+
|
19
|
+
# Method that subclasses should override to set up their contents before
|
20
|
+
# Frame is made visible
|
21
|
+
def setup opts
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
data/lib/swing/j_list.rb
ADDED
data/lib/swing/j_menu.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'swing'
|
2
|
+
require 'swing/j_menu'
|
3
|
+
require 'swing/j_menu_item'
|
4
|
+
|
5
|
+
module Swing::JMenuBar
|
6
|
+
|
7
|
+
def initialize opts = {}
|
8
|
+
super opts
|
9
|
+
|
10
|
+
if opts[:structure]
|
11
|
+
[opts[:structure]].flatten.each do |element|
|
12
|
+
case element
|
13
|
+
when Hash # Hash defines menu structure
|
14
|
+
element.each do |menu_name, menu_structure|
|
15
|
+
menu = JMenu.new menu_name.to_s, :parent => self
|
16
|
+
menu_structure.each do |item_name, item_action|
|
17
|
+
JMenuItem.new item_name.to_s, :parent => menu, &item_action
|
18
|
+
end
|
19
|
+
end
|
20
|
+
else
|
21
|
+
self.add element
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Post-processing (non-setter) options given to initialize
|
28
|
+
def self.add_component component, parent
|
29
|
+
parent.setJMenuBar component if parent
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'swing'
|
2
|
+
|
3
|
+
module Swing::JSplitPane
|
4
|
+
|
5
|
+
attr_setter :one_touch_expandable, :orientation, :continuous_layout,
|
6
|
+
:divider_size, :divider_location, :resize_weight
|
7
|
+
|
8
|
+
def initialize first, second, opts = {}
|
9
|
+
super(HORIZONTAL_SPLIT, first, second)
|
10
|
+
end
|
11
|
+
end # class JSplitPane
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'swing'
|
2
|
+
|
3
|
+
module Swing::JTable
|
4
|
+
|
5
|
+
# autoCreateColumnsFromModel boolean � � false
|
6
|
+
# autoResizeMode int � � AUTO_RESIZE_ALL_COLUMNS
|
7
|
+
# columnModel TableColumnModel � � DefaultTableColumnModel( )
|
8
|
+
# model TableModel � � DefaultTableModel( )
|
9
|
+
# rowHeight int � � 16
|
10
|
+
# cellSelectionEnabled boolean � � false
|
11
|
+
# columnSelectionAllowed boolean � � false
|
12
|
+
# rowSelectionAllowed boolean � � true
|
13
|
+
# selectionMode int � MULTIPLE_INTERVAL_SELECTION
|
14
|
+
# selectionModel ListSelectionModel � � DefaultListSelectionModel
|
15
|
+
# cellEditor TableCellEditor � � null
|
16
|
+
# dragEnabled boolean � � false
|
17
|
+
# gridColor Color � � From L&F
|
18
|
+
# intercellSpacing Dimension � � Dimension(1, 1)
|
19
|
+
# preferredScrollableViewportSize Dimension � � Dimension(450, 400)
|
20
|
+
# rowMargin int � � 1
|
21
|
+
# selectionBackground Color � � From L&F
|
22
|
+
# selectionForeground Color � � From L&F
|
23
|
+
# showGrid boolean � true
|
24
|
+
# showHorizontalLines boolean � � true
|
25
|
+
# showVerticalLines boolean � � true
|
26
|
+
# tableHeader JTableHeader � � JTableHeader(column-Model)
|
27
|
+
# ----Getters only - NO Setters!
|
28
|
+
# columnCount int � 0
|
29
|
+
# rowCount int � 0
|
30
|
+
# selectedColumn int � -1
|
31
|
+
# selectedColumnCount int � 0
|
32
|
+
# selectedColumns int[] � int[0]
|
33
|
+
# selectedRow int � -1
|
34
|
+
# selectedRowCount int � 0
|
35
|
+
# selectedRows int[] � int[0]
|
36
|
+
# accessibleContext AccessibleContext � JTable.AccessibleJTable
|
37
|
+
# scrollableTracksViewportHeighto boolean � false
|
38
|
+
# scrollableTracksViewportWidtho boolean � false
|
39
|
+
|
40
|
+
attr_setter :auto_create_columns_from_model, :auto_resize_mode, :row_height,
|
41
|
+
:model, :column_model, :selection_model,
|
42
|
+
:drag_enabled, :cell_editor, :grid_color, :intercell_spacing,
|
43
|
+
:preferred_scrollable_viewport_size, :row_margin,
|
44
|
+
:selection_background, :selection_foreground, :show_grid,
|
45
|
+
:show_horizontal_lines, :show_vertical_lines, :table_header,
|
46
|
+
:selection_mode => javax.swing.ListSelectionModel::SINGLE_SELECTION,
|
47
|
+
:cell_selection_enabled => true,
|
48
|
+
:row_selection_allowed => false,
|
49
|
+
:column_selection_allowed => false
|
50
|
+
|
51
|
+
end # class JTable
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -25,8 +25,12 @@ module Swing
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
28
|
-
opts[:parent].setJMenuBar self if opts[:parent]
|
29
28
|
end
|
30
29
|
end
|
31
30
|
|
31
|
+
# Post-processing (non-setter) options given to initialize
|
32
|
+
def self.add_component component, parent
|
33
|
+
parent.setJMenuBar component if parent
|
34
|
+
end
|
35
|
+
|
32
36
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/swing.rb
CHANGED
@@ -1,23 +1,22 @@
|
|
1
|
-
require 'version'
|
2
1
|
require 'rubygems'
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
# Requires ruby source file(s), given as single filename/glob or Array of filenames/globs.
|
7
|
-
# Accepts following options:
|
8
|
-
# :*file*:: Lib(s) required relative to this file - defaults to __FILE__
|
9
|
-
# :*dir*:: Required lib(s) located under this dir name - defaults to gem name
|
10
|
-
#
|
11
|
-
def self.require_libs( libs, opts={} )
|
12
|
-
file = Pathname.new(opts[:file] || __FILE__)
|
13
|
-
[libs].flatten.each do |lib|
|
14
|
-
name = file.dirname + (opts[:dir] || file.basename('.*')) + lib.gsub(/(?<!.rb)$/, '.rb')
|
15
|
-
Pathname.glob(name.to_s).sort.each {|rb| require rb}
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end # module Swing
|
3
|
+
include Java
|
4
|
+
Swing = javax.swing
|
19
5
|
|
20
|
-
|
21
|
-
|
22
|
-
|
6
|
+
require 'version'
|
7
|
+
require 'swing_support'
|
8
|
+
require 'awt'
|
23
9
|
|
10
|
+
#
|
11
|
+
#module Swing
|
12
|
+
# autoload :JButton, "swing/j_button"
|
13
|
+
# autoload :JCheckBox, "swing/j_check_box"
|
14
|
+
# autoload :JButton, "swing/j_button"
|
15
|
+
# autoload :JButton, "swing/j_button"
|
16
|
+
# autoload :JButton, "swing/j_button"
|
17
|
+
# autoload :JButton, "swing/j_button"
|
18
|
+
# autoload :JButton, "swing/j_button"
|
19
|
+
# autoload :Jdbc, "rubeus/jdbc"
|
20
|
+
# autoload :Reflection, "rubeus/reflection"
|
21
|
+
# autoload :Util, "rubeus/util"
|
22
|
+
#end # module Swing
|
File without changes
|
@@ -0,0 +1,65 @@
|
|
1
|
+
import java.awt.Dimension
|
2
|
+
|
3
|
+
module SwingSupport
|
4
|
+
module Extensions
|
5
|
+
# Module allows including classes to receive attribute values in an *opts* Hash
|
6
|
+
# and sets those attributes after object initialization
|
7
|
+
module Attributes
|
8
|
+
def self.included host
|
9
|
+
host.send :extend, ClassMethods
|
10
|
+
host.instance_eval do
|
11
|
+
attr_setter :font, :tool_tip_text, :enabled
|
12
|
+
alias :new_without_attributes :new
|
13
|
+
alias :new :new_with_attributes
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
module ClassMethods
|
18
|
+
def attributes
|
19
|
+
@attributes ||= (superclass.attributes.dup rescue {})
|
20
|
+
end
|
21
|
+
|
22
|
+
# Adds settable attributes for a given class, possibly with defaults
|
23
|
+
# If defaults are given for attributes, they should be put at the end (as opts)
|
24
|
+
def attr_setter *new_attributes
|
25
|
+
if new_attributes.last.is_a? Hash
|
26
|
+
# Some attributes are given with defaults
|
27
|
+
new_attributes_with_defaults = new_attributes.pop
|
28
|
+
new_attributes_with_defaults.each { |name, default| attributes[name] = default }
|
29
|
+
end
|
30
|
+
new_attributes.each { |name| attributes[name] = nil }
|
31
|
+
end
|
32
|
+
|
33
|
+
# Sets attributes after calling original new
|
34
|
+
def new_with_attributes(*args, &block)
|
35
|
+
opts = args.last.is_a?(Hash) ? args.pop : {}
|
36
|
+
component = self.new_without_attributes(*args, &block)
|
37
|
+
|
38
|
+
# Extract known attributes given in opts, or known defaults
|
39
|
+
attributes = attributes().map do |name, default|
|
40
|
+
value = opts.delete name
|
41
|
+
result = if default.nil? # No default, return whatever value
|
42
|
+
value
|
43
|
+
elsif default.respond_to? :call # Default is callable, call it with whatever value
|
44
|
+
default.call *value
|
45
|
+
else # Return either non-nil value or default
|
46
|
+
value.nil? ? default : value
|
47
|
+
end
|
48
|
+
[name, result] unless result.nil?
|
49
|
+
end.compact
|
50
|
+
# yield opts if block_given?
|
51
|
+
attributes.each { |(name, value)| component.send "#{name}=", *value }
|
52
|
+
|
53
|
+
# Post-process non-setter opts
|
54
|
+
add_component component, opts[:parent]
|
55
|
+
component
|
56
|
+
end
|
57
|
+
|
58
|
+
# Post-processing (non-setter) options given to initialize
|
59
|
+
def add_component component, parent
|
60
|
+
parent.add component if parent
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'awt/component'
|
3
|
+
|
4
|
+
describe 'java.awt.Component' do
|
5
|
+
context 'defining new methods' do
|
6
|
+
it 'changes derived Ruby subclases' do
|
7
|
+
button = Swing::JButton.new 'Disconnect', :enabled => false
|
8
|
+
button.should_not be_enabled
|
9
|
+
button.should respond_to :blah
|
10
|
+
button.blah
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'changes derived pure Java subclases' do
|
14
|
+
button = javax.swing.JButton.new 'Disconnect' #, :enabled => false
|
15
|
+
button.should respond_to :blah
|
16
|
+
button.blah
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'with Attributes extension' do
|
21
|
+
it 'allows pure Java subclasses to accept options' do
|
22
|
+
button = javax.swing.JButton.new 'Disconnect', :enabled => false
|
23
|
+
button.should_not be_enabled
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Swing::
|
3
|
+
describe Swing::JButton do
|
4
4
|
it 'is possible to set :enabled attribute to false' do
|
5
|
-
button = Swing::
|
5
|
+
button = Swing::JButton.new 'Disconnect', :enabled => false
|
6
6
|
button.should_not be_enabled
|
7
7
|
end
|
8
8
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: swing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0
|
5
|
+
version: 0.1.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- arvicco
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-25 00:00:00 +04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -49,26 +49,44 @@ extra_rdoc_files:
|
|
49
49
|
- README.rdoc
|
50
50
|
files:
|
51
51
|
- bin/swing
|
52
|
+
- lib/awt.rb
|
52
53
|
- lib/swing.rb
|
54
|
+
- lib/swing_support.rb
|
53
55
|
- lib/version.rb
|
54
|
-
- lib/
|
55
|
-
- lib/swing/attr_setter.rb
|
56
|
-
- lib/swing/button.rb
|
57
|
-
- lib/swing/check_box.rb
|
56
|
+
- lib/awt/component.rb
|
58
57
|
- lib/swing/controls.rb
|
59
|
-
- lib/swing/
|
60
|
-
- lib/swing/
|
61
|
-
- lib/swing/
|
62
|
-
- lib/swing/
|
63
|
-
- lib/swing/
|
64
|
-
- lib/swing/
|
65
|
-
- lib/swing/
|
66
|
-
- lib/swing/
|
67
|
-
- lib/swing/
|
68
|
-
- lib/swing/
|
69
|
-
-
|
58
|
+
- lib/swing/j_button.rb
|
59
|
+
- lib/swing/j_check_box.rb
|
60
|
+
- lib/swing/j_frame.rb
|
61
|
+
- lib/swing/j_label.rb
|
62
|
+
- lib/swing/j_list.rb
|
63
|
+
- lib/swing/j_menu.rb
|
64
|
+
- lib/swing/j_menu_bar.rb
|
65
|
+
- lib/swing/j_menu_item.rb
|
66
|
+
- lib/swing/j_panel.rb
|
67
|
+
- lib/swing/j_scroll_pane.rb
|
68
|
+
- lib/swing/j_split_pane.rb
|
69
|
+
- lib/swing/j_table.rb
|
70
|
+
- lib/swing/old/button.rb
|
71
|
+
- lib/swing/old/check_box.rb
|
72
|
+
- lib/swing/old/frame.rb
|
73
|
+
- lib/swing/old/label.rb
|
74
|
+
- lib/swing/old/list.rb
|
75
|
+
- lib/swing/old/menu.rb
|
76
|
+
- lib/swing/old/menu_bar.rb
|
77
|
+
- lib/swing/old/menu_item.rb
|
78
|
+
- lib/swing/old/panel.rb
|
79
|
+
- lib/swing/old/scroll_pane.rb
|
80
|
+
- lib/swing/old/split_pane.rb
|
81
|
+
- lib/swing/old/table.rb
|
82
|
+
- lib/swing_support/action_listener.rb
|
83
|
+
- lib/swing_support/extensions.rb
|
84
|
+
- lib/swing_support/extensions/attr_setter.rb
|
85
|
+
- lib/swing_support/extensions/attributes.rb
|
70
86
|
- spec/spec_helper.rb
|
71
87
|
- spec/swing_spec.rb
|
88
|
+
- spec/awt/component_spec.rb
|
89
|
+
- spec/swing/j_button_spec.rb
|
72
90
|
- features/swing.feature
|
73
91
|
- features/step_definitions/swing_steps.rb
|
74
92
|
- features/support/env.rb
|
@@ -119,6 +137,7 @@ signing_key:
|
|
119
137
|
specification_version: 3
|
120
138
|
summary: Straightforward wrappers for javax.swing Components
|
121
139
|
test_files:
|
122
|
-
- spec/button_spec.rb
|
123
140
|
- spec/spec_helper.rb
|
124
141
|
- spec/swing_spec.rb
|
142
|
+
- spec/awt/component_spec.rb
|
143
|
+
- spec/swing/j_button_spec.rb
|