rubeus 0.0.5-java → 0.0.6-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/examples/jdbc_example.rb +71 -0
- data/examples/nyanco_viewer/nyanco_disp_label.rb +18 -2
- data/examples/rubeus_swing_example02.rb +17 -0
- data/examples/rubeus_swing_example03.rb +40 -0
- data/lib/rubeus.rb +2 -2
- data/lib/rubeus/awt/nestable.rb +2 -2
- data/lib/rubeus/extensions/java.rb +1 -0
- data/lib/rubeus/extensions/java/sql/connection.rb +2 -0
- data/lib/rubeus/extensions/java/sql/driver_manager.rb +10 -3
- data/lib/rubeus/extensions/java/sql/result_set.rb +2 -0
- data/lib/rubeus/extensions/java/sql/result_set_meta_data.rb +4 -0
- data/lib/rubeus/extensions/java/sql/statement.rb +2 -0
- data/lib/rubeus/extensions/javax/swing/j_tabbed_pane.rb +62 -0
- data/lib/rubeus/extensions/javax/swing/table/default_table_model.rb +8 -2
- data/lib/rubeus/extensions/javax/swing/timer.rb +26 -0
- data/lib/rubeus/jdbc.rb +14 -3
- data/lib/rubeus/jdbc/column.rb +2 -2
- metadata +7 -2
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'java'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rubeus'
|
4
|
+
|
5
|
+
def setup_derby
|
6
|
+
return if ENV_JAVA['java.class.path'].split(File::PATH_SEPARATOR).any?{|path| /derby[\-\.\d]*\.jar$/ =~ path}
|
7
|
+
if ENV_JAVA["java.specification.version"] == "1.6"
|
8
|
+
begin
|
9
|
+
require File.join(ENV_JAVA['java.home'], 'db', 'lib', 'derby.jar')
|
10
|
+
return
|
11
|
+
rescue LoadError
|
12
|
+
# ignore error if not installed JavaDB
|
13
|
+
# Apple's JDK doesn't include Apache Derby
|
14
|
+
end
|
15
|
+
end
|
16
|
+
puts "JavaDB is not installed."
|
17
|
+
puts "Please add derby.jar to your CLASSPATH."
|
18
|
+
end
|
19
|
+
|
20
|
+
setup_derby
|
21
|
+
|
22
|
+
class JdbcExample
|
23
|
+
include Rubeus::Jdbc
|
24
|
+
|
25
|
+
def initialize
|
26
|
+
# Register Driver
|
27
|
+
Java::OrgApacheDerbyJdbc::EmbeddedDriver
|
28
|
+
end
|
29
|
+
|
30
|
+
def test
|
31
|
+
DriverManager.connect("jdbc:derby:test;create = true", "", "") do |con|
|
32
|
+
con.statement do |stmt|
|
33
|
+
# Drop table TEST if exists
|
34
|
+
begin
|
35
|
+
stmt.execute_update("DROP TABLE TEST")
|
36
|
+
rescue
|
37
|
+
# ignore error if table not exist
|
38
|
+
end
|
39
|
+
|
40
|
+
# Setup table and data
|
41
|
+
stmt.execute_update("CREATE TABLE TEST(id int, data char(10))")
|
42
|
+
stmt.execute_update("INSERT INTO TEST VALUES(1, 'first')")
|
43
|
+
stmt.execute_update("INSERT INTO TEST VALUES(2, 'second')")
|
44
|
+
|
45
|
+
# Query
|
46
|
+
stmt.query("SELECT * FROM TEST") do |rs|
|
47
|
+
rs.each do |rsNext|
|
48
|
+
print "|", rsNext.getInt("ID"), "|", rsNext.getString("DATA"), "|\n"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Query by each_array
|
53
|
+
stmt.query("SELECT * FROM TEST") do |rs|
|
54
|
+
rs.each_array do |rsNext|
|
55
|
+
print "|", rsNext[0], "|", rsNext[1], "|\n"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# Connection#query by each_hash
|
60
|
+
con.query("SELECT * FROM TEST") do |rs|
|
61
|
+
rs.each_hash do |rsNext|
|
62
|
+
print "|", rsNext["ID"], "|", rsNext["DATA"], "|\n"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
JdbcExample.new.test
|
@@ -24,8 +24,24 @@ class NyancoDispLabel < javax.swing.JLabel
|
|
24
24
|
include DD
|
25
25
|
def drop(e)
|
26
26
|
e.accept_drop java.awt.dnd.DnDConstants::ACTION_COPY_OR_MOVE
|
27
|
+
|
28
|
+
# Supported Flavors
|
27
29
|
java_file_list_flavor = java.awt.datatransfer.DataFlavor.javaFileListFlavor
|
28
|
-
|
29
|
-
|
30
|
+
string_flavor = java.awt.datatransfer.DataFlavor.stringFlavor
|
31
|
+
uri_flavor = java.awt.datatransfer.DataFlavor.new("text/uri-list;class=java.lang.String")
|
32
|
+
|
33
|
+
if e.transferable.isDataFlavorSupported(java_file_list_flavor)
|
34
|
+
image_path = e.transferable.get_transfer_data(java_file_list_flavor)[0].absolute_path
|
35
|
+
elsif e.transferable.isDataFlavorSupported(string_flavor)
|
36
|
+
image_path = java.net.URL.new(e.transferable.get_transfer_data(string_flavor).split("\r\n")[0])
|
37
|
+
elsif e.transferable.isDataFlavorSupported(uri_flavor)
|
38
|
+
image_path = java.net.URL.new(e.transferable.get_transfer_data(uri_flavor).split("\r\n")[0])
|
39
|
+
else
|
40
|
+
# Unsupported data
|
41
|
+
end
|
42
|
+
|
43
|
+
if image_path
|
44
|
+
self.icon = javax.swing.ImageIcon.new(image_path)
|
45
|
+
end
|
30
46
|
end
|
31
47
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rubeus'
|
3
|
+
|
4
|
+
Rubeus::Swing.irb
|
5
|
+
|
6
|
+
JFrame.new do |frame|
|
7
|
+
label = JLabel.new
|
8
|
+
|
9
|
+
t = Timer.new(500) do
|
10
|
+
label.text = Time.now.to_s
|
11
|
+
end
|
12
|
+
t.start
|
13
|
+
|
14
|
+
frame.title = "Rubeus Timer Example"
|
15
|
+
frame.size = "250 x 50"
|
16
|
+
frame.visible = true
|
17
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rubeus'
|
3
|
+
|
4
|
+
class JTabbedPaneExample
|
5
|
+
include Rubeus::Swing
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
JFrame.new(:title => 'JTabbedPane Example') do |f|
|
9
|
+
tp = JTabbedPane.new(:LEFT, :SCROLL_TAB_LAYOUT) do |tp|
|
10
|
+
# tab #1
|
11
|
+
JSplitPane.new(:HORIZONTAL_SPLIT) do
|
12
|
+
JButton.new("button") do
|
13
|
+
javax.swing.JOptionPane.showMessageDialog(f, "button pushed!")
|
14
|
+
tp.set_selected_index(1)
|
15
|
+
end
|
16
|
+
JLabel.new("<- Push this button.")
|
17
|
+
end
|
18
|
+
|
19
|
+
# tab #2
|
20
|
+
JPanel.new do |p|
|
21
|
+
p.layout = BoxLayout.new(:Y_AXIS)
|
22
|
+
JLabel.new("Notepad")
|
23
|
+
JTextArea.new
|
24
|
+
end
|
25
|
+
|
26
|
+
# tab #3
|
27
|
+
jl = JLabel.new("This is a JTabbedPane Example.")
|
28
|
+
|
29
|
+
# tab settings
|
30
|
+
tp.set_titles(['First tab', 'Second Tab'])
|
31
|
+
tp.set_icons(['', '', 'nyanco_viewer/nekobean_s.png'])
|
32
|
+
tp.set_tips((1..3).to_a.map { |num| "tip#{num}" })
|
33
|
+
end
|
34
|
+
|
35
|
+
f.visible = true
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
JTabbedPaneExample.new
|
data/lib/rubeus.rb
CHANGED
@@ -4,10 +4,10 @@ gem "activesupport", ">=2.0.2"
|
|
4
4
|
require "active_support/core_ext/string"
|
5
5
|
|
6
6
|
module Rubeus
|
7
|
-
VERSION = "0.0.
|
7
|
+
VERSION = "0.0.6"
|
8
8
|
autoload :Awt, "rubeus/awt"
|
9
9
|
autoload :Swing, "rubeus/swing"
|
10
|
-
|
10
|
+
autoload :Jdbc, "rubeus/jdbc"
|
11
11
|
end
|
12
12
|
|
13
13
|
unless File.basename($PROGRAM_NAME) == 'gem' and ARGV.first == 'build'
|
data/lib/rubeus/awt/nestable.rb
CHANGED
@@ -54,7 +54,7 @@ module Rubeus::Awt
|
|
54
54
|
return object
|
55
55
|
end
|
56
56
|
|
57
|
-
def
|
57
|
+
def container?
|
58
58
|
Context.container_class_names.include?(self.java_class.name)
|
59
59
|
end
|
60
60
|
|
@@ -67,7 +67,7 @@ module Rubeus::Awt
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def process_block_for_new(object, &block)
|
70
|
-
if self.
|
70
|
+
if self.container?
|
71
71
|
self.add_new_component_to(object, &block)
|
72
72
|
elsif object.respond_to?(:listen)
|
73
73
|
object.listen(*self.default_event_type, &block)
|
@@ -1,9 +1,16 @@
|
|
1
|
+
Rubeus::Jdbc.depend_on("Connection")
|
2
|
+
|
1
3
|
module Rubeus::Extensions::Java::Sql
|
2
4
|
module DriverManager
|
3
|
-
|
5
|
+
def self.included(base)
|
6
|
+
base.extend ClassMethods
|
7
|
+
base.extend Rubeus::Jdbc::CloseableResource
|
8
|
+
end
|
4
9
|
|
5
|
-
|
6
|
-
|
10
|
+
module ClassMethods
|
11
|
+
def connect(url, user, password, &block)
|
12
|
+
with_close(get_connection(url, user, password), &block)
|
13
|
+
end
|
7
14
|
end
|
8
15
|
end
|
9
16
|
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
Rubeus::Swing.depend_on("JComponent")
|
2
|
+
|
3
|
+
module Rubeus::Extensions::Javax::Swing
|
4
|
+
module JTabbedPane
|
5
|
+
def self.included(base)
|
6
|
+
base.perform_as_container
|
7
|
+
base.extend(ClassMethods)
|
8
|
+
base.instance_eval do
|
9
|
+
alias :new_without_rubeus :new
|
10
|
+
alias :new :new_with_rubeus
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module ClassMethods
|
15
|
+
def new_with_rubeus(*args, &block)
|
16
|
+
# Convert to constant value if symbol is designated
|
17
|
+
new_args = args.map do |arg|
|
18
|
+
if arg.is_a?(Symbol)
|
19
|
+
const_get(arg)
|
20
|
+
else
|
21
|
+
arg
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
new_without_rubeus(*new_args, &block)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# set_title_at utility
|
30
|
+
def set_titles(arr)
|
31
|
+
tab_setting(arr, :set_title_at)
|
32
|
+
end
|
33
|
+
|
34
|
+
# set_icon_at utility
|
35
|
+
def set_icons(arr)
|
36
|
+
tab_setting(arr, :set_image_icon_at)
|
37
|
+
end
|
38
|
+
|
39
|
+
# alias for set_icon_at set image_path_string instread
|
40
|
+
def set_image_icon_at(index, image_path)
|
41
|
+
if image_path && java.io.File.new(image_path).exists
|
42
|
+
image_icon = javax.swing.ImageIcon.new(image_path)
|
43
|
+
set_icon_at(index, image_icon)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# set_tool_tip_text_at utility
|
48
|
+
def set_tips(arr)
|
49
|
+
tab_setting(arr, :set_tool_tip_text_at)
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
def tab_setting(arr, method_name)
|
54
|
+
self.tab_count.times do |i|
|
55
|
+
if arr.length > i
|
56
|
+
self.send(method_name, i, arr[i])
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
@@ -45,7 +45,7 @@ module Rubeus::Extensions::Javax::Swing::Table
|
|
45
45
|
return new_without_rubeus(data, column_names)
|
46
46
|
end
|
47
47
|
elsif (args.length == 2) and (args.first.class.name == 'REXML::Document' and args.last.is_a?(Hash))
|
48
|
-
result = new_without_rubeus
|
48
|
+
result = new_without_rubeus(vectorize_if_array(args.last[:column_paths]), 0)
|
49
49
|
result.load_from_xml(*args)
|
50
50
|
return result
|
51
51
|
end
|
@@ -83,7 +83,13 @@ module Rubeus::Extensions::Javax::Swing::Table
|
|
83
83
|
end
|
84
84
|
self.row_count = 0
|
85
85
|
rexml_doc.elements.each(row_path) do |row|
|
86
|
-
|
86
|
+
values = col_paths.map do |col_path|
|
87
|
+
element = row.elements[col_path]
|
88
|
+
element ? element.text :
|
89
|
+
options[:ignore_unexist_column] ? nil :
|
90
|
+
(raise ArgumentError, "column '#{col_path}' not found.")
|
91
|
+
end
|
92
|
+
add_row(values)
|
87
93
|
end
|
88
94
|
end
|
89
95
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Rubeus::Extensions::Javax::Swing
|
2
|
+
module Timer
|
3
|
+
def self.included(base)
|
4
|
+
base.extend ClassMethods
|
5
|
+
base.instance_eval do
|
6
|
+
alias :new_without_rubeus :new
|
7
|
+
alias :new :new_with_rubeus
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
module ClassMethods
|
12
|
+
def new_with_rubeus(interval, &block)
|
13
|
+
# Create ActionListener implement class
|
14
|
+
mod = Module.new do
|
15
|
+
define_method("actionPerformed", &block)
|
16
|
+
end
|
17
|
+
|
18
|
+
obj = Object.new
|
19
|
+
obj.extend(mod)
|
20
|
+
|
21
|
+
# Use original constructor
|
22
|
+
new_without_rubeus(interval, obj)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/rubeus/jdbc.rb
CHANGED
@@ -1,6 +1,17 @@
|
|
1
|
+
require "rubeus/component_loader"
|
2
|
+
|
1
3
|
module Rubeus
|
2
|
-
|
3
|
-
|
4
|
-
|
4
|
+
Jdbc = ComponentLoader.new("java.sql") do
|
5
|
+
class_to_package.update(
|
6
|
+
# $JAVA_HOME/lib/classlistにないものリスト
|
7
|
+
'Connection' => 'java.sql',
|
8
|
+
'DriverManager' => 'java.sql',
|
9
|
+
'ResultSet' => 'java.sql',
|
10
|
+
'ResultSetMetaData' => 'java.sql',
|
11
|
+
'Statement' => 'java.sql'
|
12
|
+
)
|
5
13
|
end
|
6
14
|
end
|
15
|
+
|
16
|
+
require "rubeus/jdbc/closeable_resource"
|
17
|
+
require "rubeus/jdbc/column"
|
data/lib/rubeus/jdbc/column.rb
CHANGED
@@ -9,7 +9,7 @@ module Rubeus::Jdbc
|
|
9
9
|
:column_label , # String # 印刷や表示に使用する、指定された列の推奨タイトルを取得します。
|
10
10
|
:column_name , # String # 指定された列の名前を取得します。
|
11
11
|
:column_type , # int # 指定された列の SQL 型を取得します。
|
12
|
-
:
|
12
|
+
:column_type_name , # String # 指定された列のデータベース固有の型名を取得します。
|
13
13
|
:precision , # int # 指定された列の 10 進桁数を取得します。
|
14
14
|
:scale , # int # 指定された列の小数点以下の桁数を取得します。
|
15
15
|
:schema_name , # String # 指定された列のテーブルのスキーマを取得します。
|
@@ -18,7 +18,7 @@ module Rubeus::Jdbc
|
|
18
18
|
:case_sensitive , # boolean # 列の大文字と小文字が区別されるかどうかを示します。
|
19
19
|
:currency , # boolean # 指定された列がキャッシュの値かどうかを示します。
|
20
20
|
:definitely_writable, # boolean # 指定された列の書き込みが必ず成功するかどうかを示します。
|
21
|
-
:
|
21
|
+
:is_nullable , # int # 指定された列に NULL をセットできるかどうかを示します。
|
22
22
|
:read_only , # boolean # 指定された列が絶対的に書き込み可能でないかどうかを示します。
|
23
23
|
:searchable , # boolean # 指定された列を where 節で使用できるかどうかを示します。
|
24
24
|
:signed , # boolean # 指定された列の値が符号付き数値かどうかを示します。
|
metadata
CHANGED
@@ -5,9 +5,9 @@ executables:
|
|
5
5
|
- jirb_rubeus
|
6
6
|
- jirb_rubeus.bat
|
7
7
|
version: !ruby/object:Gem::Version
|
8
|
-
version: 0.0.
|
8
|
+
version: 0.0.6
|
9
9
|
post_install_message:
|
10
|
-
date: 2008-
|
10
|
+
date: 2008-08-31 15:00:00 +00:00
|
11
11
|
files:
|
12
12
|
- bin/jirb_rubeus
|
13
13
|
- bin/jirb_rubeus.bat
|
@@ -41,15 +41,20 @@ files:
|
|
41
41
|
- lib/rubeus/extensions/javax/swing/j_panel.rb
|
42
42
|
- lib/rubeus/extensions/javax/swing/j_scroll_pane.rb
|
43
43
|
- lib/rubeus/extensions/javax/swing/j_split_pane.rb
|
44
|
+
- lib/rubeus/extensions/javax/swing/j_tabbed_pane.rb
|
44
45
|
- lib/rubeus/extensions/javax/swing/j_table.rb
|
45
46
|
- lib/rubeus/extensions/javax/swing/j_text_field.rb
|
46
47
|
- lib/rubeus/extensions/javax/swing/j_window.rb
|
48
|
+
- lib/rubeus/extensions/javax/swing/timer.rb
|
47
49
|
- lib/rubeus/extensions/javax/swing/table/default_table_model.rb
|
48
50
|
- lib/rubeus/jdbc/closeable_resource.rb
|
49
51
|
- lib/rubeus/jdbc/column.rb
|
52
|
+
- examples/jdbc_example.rb
|
50
53
|
- examples/notepad.rb
|
51
54
|
- examples/rubeus_swing_example01.rb
|
52
55
|
- examples/rubeus_swing_example01_with_class.rb
|
56
|
+
- examples/rubeus_swing_example02.rb
|
57
|
+
- examples/rubeus_swing_example03.rb
|
53
58
|
- examples/nyanco_viewer/nyanco_disp_label.rb
|
54
59
|
- examples/nyanco_viewer/nyanco_viewer_rubeus.rb
|
55
60
|
- examples/notepad.rtf
|