rubeus 0.0.8-java → 0.0.9-java
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +8 -0
- data/LICENSE +20 -0
- data/README.rdoc +17 -0
- data/Rakefile +55 -16
- data/VERSION +1 -0
- data/examples/.gitignore +1 -0
- data/examples/JavaSwingExample01.java +41 -0
- data/examples/jdbc_example.rb +1 -2
- data/examples/notepad.rb +15 -17
- data/examples/nyanco_viewer/nekobean_LICENSE.txt +22 -0
- data/examples/rubeus_swing_example01.rb +0 -2
- data/examples/rubeus_swing_example01_with_class.rb +1 -3
- data/examples/rubeus_swing_jdbc_example01.rb +5 -0
- data/java/.gitignore +3 -0
- data/java/mvn_plugins.yml +57 -0
- data/java/pom.xml +30 -0
- data/java/src/main/java/jp/rubybizcommons/rubeus/extensions/javax/swing/table/DelegatableTableModel.java +54 -0
- data/java/src/main/java/jp/rubybizcommons/rubeus/extensions/javax/swing/table/ReadonlyableTableModel.java +24 -0
- data/lib/rubeus.rb +6 -4
- data/lib/rubeus/awt/attributes.rb +5 -5
- data/lib/rubeus/awt/event.rb +8 -8
- data/lib/rubeus/awt/nestable.rb +4 -4
- data/lib/rubeus/awt/setters.rb +1 -1
- data/lib/rubeus/component_loader.rb +12 -11
- data/lib/rubeus/extensions.rb +6 -6
- data/lib/rubeus/extensions/java.rb +1 -0
- data/lib/rubeus/extensions/java/awt/dimension.rb +1 -1
- data/lib/rubeus/extensions/java/lang.rb +5 -0
- data/lib/rubeus/extensions/java/lang/reflect.rb +4 -0
- data/lib/rubeus/extensions/java/lang/reflect/method.rb +23 -0
- data/lib/rubeus/extensions/java/sql/connection.rb +2 -2
- data/lib/rubeus/extensions/java/sql/database_meta_data.rb +9 -9
- data/lib/rubeus/extensions/java/sql/driver_manager.rb +80 -79
- data/lib/rubeus/extensions/java/sql/result_set.rb +6 -6
- data/lib/rubeus/extensions/java/sql/result_set_meta_data.rb +4 -4
- data/lib/rubeus/extensions/javax/swing/box_layout.rb +4 -4
- data/lib/rubeus/extensions/javax/swing/j_component.rb +1 -1
- data/lib/rubeus/extensions/javax/swing/j_editor_pane.rb +5 -0
- data/lib/rubeus/extensions/javax/swing/j_frame.rb +1 -1
- data/lib/rubeus/extensions/javax/swing/j_list.rb +5 -0
- data/lib/rubeus/extensions/javax/swing/j_scroll_pane.rb +1 -1
- data/lib/rubeus/extensions/javax/swing/j_split_pane.rb +1 -1
- data/lib/rubeus/extensions/javax/swing/j_table.rb +2 -2
- data/lib/rubeus/extensions/javax/swing/j_text_pane.rb +7 -0
- data/lib/rubeus/extensions/javax/swing/table/default_table_model.rb +10 -10
- data/lib/rubeus/extensions/javax/swing/timer.rb +3 -3
- data/lib/rubeus/jdbc.rb +2 -2
- data/lib/rubeus/jdbc/closeable_resource.rb +1 -1
- data/lib/rubeus/jdbc/column.rb +19 -14
- data/lib/rubeus/jdbc/foreign_key.rb +14 -9
- data/lib/rubeus/jdbc/index.rb +15 -10
- data/lib/rubeus/jdbc/meta_element.rb +8 -8
- data/lib/rubeus/jdbc/primary_key.rb +26 -7
- data/lib/rubeus/jdbc/result_set_column.rb +3 -3
- data/lib/rubeus/jdbc/table.rb +47 -36
- data/lib/rubeus/reflection.rb +17 -0
- data/lib/rubeus/swing.rb +1 -1
- data/lib/rubeus/util.rb +3 -0
- data/lib/rubeus/util/java_method_name.rb +31 -0
- data/lib/rubeus/util/name_access_array.rb +6 -4
- data/lib/rubeus/verboseable.rb +3 -3
- data/rmaven.yml +5 -0
- data/rubeus.gemspec +202 -0
- data/test/rubeus/extensions/java/awt/test_dimension.rb +47 -47
- data/test/rubeus/extensions/java/sql/test_database_meta_data.rb +86 -40
- data/test/rubeus/extensions/java/sql/test_driver_manager.rb +9 -2
- data/test/rubeus/extensions/java/sql/test_sql_helper.rb +4 -4
- data/test/rubeus/reflection/test_method_modifier.rb +107 -0
- data/test/rubeus/test_extensions.rb +30 -30
- data/test/rubeus_test.jar +0 -0
- data/test_jar/.classpath +7 -0
- data/test_jar/.gitignore +1 -0
- data/test_jar/.project +17 -0
- data/test_jar/mvn_plugins.yml +57 -0
- data/test_jar/pom.xml +25 -0
- data/test_jar/src/main/java/jp/rubybizcommons/rubeus/test/reflection/VariousFields.java +13 -0
- data/test_jar/src/main/java/jp/rubybizcommons/rubeus/test/reflection/VariousMethods.java +14 -0
- data/test_jar/src/test/java/jp/rubybizcommons/rubeus/test/AppTest.java +38 -0
- metadata +137 -47
- data/test/test_all.rb +0 -2
data/.document
ADDED
data/.gitignore
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 akimatter
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
= rubeus
|
2
|
+
|
3
|
+
Description goes here.
|
4
|
+
|
5
|
+
== Note on Patches/Pull Requests
|
6
|
+
|
7
|
+
* Fork the project.
|
8
|
+
* Make your feature addition or bug fix.
|
9
|
+
* Add tests for it. This is important so I don't break it in a
|
10
|
+
future version unintentionally.
|
11
|
+
* Commit, do not mess with rakefile, version, or history.
|
12
|
+
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
13
|
+
* Send me a pull request. Bonus points for topic branches.
|
14
|
+
|
15
|
+
== Copyright
|
16
|
+
|
17
|
+
Copyright (c) 2010 akimatter. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -1,26 +1,65 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'rubygems'
|
3
|
+
begin
|
4
|
+
require 'rmaven'
|
5
|
+
require 'tasks/mvn'
|
6
|
+
rescue LoadError
|
7
|
+
puts "rmaven (or a dependency) not available. Install it with: gem install rmaven"
|
8
|
+
end
|
1
9
|
require 'rake'
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'jeweler'
|
13
|
+
Jeweler::Tasks.new do |gem|
|
14
|
+
gem.name = "rubeus"
|
15
|
+
gem.platform = "java"
|
16
|
+
gem.summary = %Q{Rubeus provides you an easy access to Java objects from Ruby scripts on JRuby}
|
17
|
+
gem.description = %Q{Rubeus provides you an easy access to Java objects from Ruby scripts on JRuby}
|
18
|
+
gem.email = "rubeus@googlegroups.com"
|
19
|
+
gem.homepage = "http://code.google.com/p/rubeus/"
|
20
|
+
gem.authors = ["akimatter"]
|
21
|
+
gem.add_dependency "activesupport", "= 2.1.2"
|
22
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
23
|
+
gem.add_development_dependency "rcov", ">= 0.9.8"
|
24
|
+
gem.bindir = 'bin'
|
25
|
+
gem.executables = %w[jirb_rubeus jirb_rubeus.bat]
|
26
|
+
end
|
27
|
+
Jeweler::GemcutterTasks.new
|
28
|
+
rescue LoadError
|
29
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
30
|
+
end
|
31
|
+
|
2
32
|
require 'rake/testtask'
|
3
|
-
|
33
|
+
Rake::TestTask.new(:test) do |test|
|
34
|
+
test.libs << 'lib' << 'test'
|
35
|
+
test.pattern = 'test/**/test_*.rb'
|
36
|
+
test.verbose = true
|
37
|
+
end
|
4
38
|
|
5
|
-
|
6
|
-
require '
|
7
|
-
|
39
|
+
begin
|
40
|
+
require 'rcov/rcovtask'
|
41
|
+
Rcov::RcovTask.new do |test|
|
42
|
+
test.libs << 'test'
|
43
|
+
test.pattern = 'test/**/test_*.rb'
|
44
|
+
test.rcov_opts = ['--text-report', '--exclude "(eval),yaml/*,test/*,gems/*"']
|
45
|
+
test.verbose = true
|
46
|
+
end
|
47
|
+
rescue LoadError
|
48
|
+
task :rcov do
|
49
|
+
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
task :test => :check_dependencies
|
8
54
|
|
9
|
-
desc 'Default: run unit tests.'
|
10
55
|
task :default => :test
|
11
56
|
|
12
|
-
|
13
|
-
Rake::
|
14
|
-
|
15
|
-
t.pattern = File.join(File.dirname(__FILE__), 'test', 'rubeus', '**', 'test_*.rb')
|
16
|
-
t.verbose = true
|
17
|
-
end
|
57
|
+
require 'rake/rdoctask'
|
58
|
+
Rake::RDocTask.new do |rdoc|
|
59
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
18
60
|
|
19
|
-
desc 'Generate documentation for the selectable_attr plugin.'
|
20
|
-
Rake::RDocTask.new(:rdoc) do |rdoc|
|
21
61
|
rdoc.rdoc_dir = 'rdoc'
|
22
|
-
rdoc.title
|
23
|
-
rdoc.
|
24
|
-
rdoc.rdoc_files.include('README')
|
62
|
+
rdoc.title = "rubeus #{version}"
|
63
|
+
rdoc.rdoc_files.include('README*')
|
25
64
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
26
65
|
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.9
|
data/examples/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
/test
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import java.awt.*;
|
2
|
+
import java.awt.event.*;
|
3
|
+
import javax.swing.*;
|
4
|
+
|
5
|
+
public class JavaSwingExample01 {
|
6
|
+
|
7
|
+
public static void main(String[] args) {
|
8
|
+
JFrame frame = new JFrame("Rubeus Swing Example 01");
|
9
|
+
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
|
10
|
+
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
|
11
|
+
frame.add(splitPane);
|
12
|
+
JPanel panel = new JPanel();
|
13
|
+
splitPane.setTopComponent(panel);
|
14
|
+
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
|
15
|
+
final JTextField textField = new JTextField();
|
16
|
+
panel.add(textField);
|
17
|
+
final JTextPane textPane = new JTextPane();
|
18
|
+
textField.addKeyListener(new KeyAdapter() {
|
19
|
+
public void keyPressed(KeyEvent event) {
|
20
|
+
if (event.getKeyCode() == 10) {
|
21
|
+
textPane.setText(textPane.getText() + textField.getText() + "\n");
|
22
|
+
textField.setText("");
|
23
|
+
}
|
24
|
+
}
|
25
|
+
});
|
26
|
+
JButton button = new JButton("append");
|
27
|
+
panel.add(button);
|
28
|
+
button.addActionListener(new ActionListener(){
|
29
|
+
public void actionPerformed(ActionEvent event) {
|
30
|
+
textPane.setText(textPane.getText() + textField.getText() + "\n");
|
31
|
+
textField.setText("");
|
32
|
+
}
|
33
|
+
});
|
34
|
+
JScrollPane scrollPane = new JScrollPane(textPane);
|
35
|
+
splitPane.setBottomComponent(scrollPane);
|
36
|
+
scrollPane.setPreferredSize(new Dimension(400, 250));
|
37
|
+
frame.setSize(400, 300);
|
38
|
+
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
39
|
+
frame.setVisible(true);
|
40
|
+
}
|
41
|
+
}
|
data/examples/jdbc_example.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
require 'java'
|
3
2
|
require 'rubygems'
|
4
3
|
require 'rubeus'
|
5
4
|
|
@@ -9,7 +8,7 @@ class JdbcExample
|
|
9
8
|
# include Rubeus::Jdbc
|
10
9
|
|
11
10
|
def test
|
12
|
-
Rubeus::Jdbc::DriverManager.connect("jdbc:derby:
|
11
|
+
Rubeus::Jdbc::DriverManager.connect("jdbc:derby:testdb;create = true", "", "") do |con|
|
13
12
|
con.statement do |stmt|
|
14
13
|
# Drop table TEST if exists
|
15
14
|
begin
|
data/examples/notepad.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
include Java
|
2
|
-
|
3
1
|
require 'rubygems'
|
4
2
|
require 'rubeus'
|
5
3
|
|
@@ -11,22 +9,22 @@ import 'java.io.FileOutputStream'
|
|
11
9
|
rtf_editor_kit = RTFEditorKit.new
|
12
10
|
|
13
11
|
JFrame.new('Notepad') do |frame|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
12
|
+
JScrollPane.new do |pane|
|
13
|
+
pane.vertical_scroll_bar_policy = ScrollPaneConstants::VERTICAL_SCROLLBAR_AS_NEEDED
|
14
|
+
pane.horizontal_scroll_bar_policy = ScrollPaneConstants::HORIZONTAL_SCROLLBAR_NEVER
|
15
|
+
@text_pane = JTextPane.new
|
16
|
+
@text_pane.document = DefaultStyledDocument.new StyleContext.new
|
17
|
+
end
|
20
18
|
|
21
19
|
file_path = File.join(File.dirname(__FILE__), 'notepad.rtf')
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
20
|
+
rtf_editor_kit.read FileInputStream.new(file_path), @text_pane.document, 0
|
21
|
+
|
22
|
+
@text_pane.listen(:key, :key_released) do |event|
|
23
|
+
rtf_editor_kit.write FileOutputStream.new(file_path), @text_pane.document, 0, @text_pane.document.length
|
24
|
+
end
|
27
25
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
26
|
+
frame.default_close_operation = JFrame::EXIT_ON_CLOSE
|
27
|
+
frame.set_size(300, 200)
|
28
|
+
frame.set_location_relative_to(nil)
|
29
|
+
frame.visible = true
|
32
30
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
ねこび〜ん by カネウチカズコ is licensed under a Creative Commons 表示-継承 2.1 日本 License.
|
2
|
+
|
3
|
+
カネウチカズコ
|
4
|
+
http://blog.cgfm.jp/mutsuki/
|
5
|
+
|
6
|
+
Creative Commons 表示-継承 2.1 日本 License
|
7
|
+
http://creativecommons.org/licenses/by-sa/2.1/jp/
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
クレジット表示について
|
12
|
+
Creative Commons 表示-継承 2.1 日本 License に従いますが、下記に該当する場合にはクレジット表示を緩和してご利用いただくことができます。
|
13
|
+
|
14
|
+
例外事項:
|
15
|
+
|
16
|
+
* netbeans.org, ja.netbeans.org, wiki.netbeans.org などの NetBeans サイトではクレジット表記なしで使用することができます。
|
17
|
+
|
18
|
+
* 個人で使用する場合で、画像を変更・編集なしで使用する場合、 クレジット表示なしで使用することができます。
|
19
|
+
(ここで言う変更、編集には画像の拡大・縮小・背景画像変更は含みません)
|
20
|
+
|
21
|
+
クレジット表示をされない場合、余裕があればねこび〜んのページ (http://ja.netbeans.org/nekobean)へのリンクを追加してください。
|
22
|
+
|
data/java/.gitignore
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
---
|
2
|
+
- clean
|
3
|
+
- compiler
|
4
|
+
- deploy
|
5
|
+
- install
|
6
|
+
- resources
|
7
|
+
- site
|
8
|
+
- surefire
|
9
|
+
- verifier
|
10
|
+
- ear
|
11
|
+
- ejb
|
12
|
+
- jar
|
13
|
+
- rar
|
14
|
+
- war
|
15
|
+
- shade
|
16
|
+
- changelog
|
17
|
+
- changes
|
18
|
+
- checkstyle
|
19
|
+
- clover
|
20
|
+
- doap
|
21
|
+
- docck
|
22
|
+
- javadoc
|
23
|
+
- jxr
|
24
|
+
- pmd
|
25
|
+
- project-info-reports
|
26
|
+
- surefire-report
|
27
|
+
- ant
|
28
|
+
- antrun
|
29
|
+
- archetype
|
30
|
+
- assembly
|
31
|
+
- dependency
|
32
|
+
- enforcer
|
33
|
+
- gpg
|
34
|
+
- help
|
35
|
+
- invoker
|
36
|
+
- one
|
37
|
+
- patch
|
38
|
+
- plugin
|
39
|
+
- release
|
40
|
+
- remote-resources
|
41
|
+
- repository
|
42
|
+
- scm
|
43
|
+
- source
|
44
|
+
- stage
|
45
|
+
- eclipse
|
46
|
+
- idea
|
47
|
+
- build-helper
|
48
|
+
- castor
|
49
|
+
- javacc
|
50
|
+
- jdepend
|
51
|
+
- native
|
52
|
+
- sql
|
53
|
+
- taglist
|
54
|
+
- cargo
|
55
|
+
- jaxme
|
56
|
+
- jetty
|
57
|
+
- jalopy
|
data/java/pom.xml
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
2
|
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
3
|
+
<modelVersion>4.0.0</modelVersion>
|
4
|
+
<groupId>jp.rubybizcommons.rubeus</groupId>
|
5
|
+
<artifactId>rubeus-java</artifactId>
|
6
|
+
<packaging>jar</packaging>
|
7
|
+
<version>0.0.7</version>
|
8
|
+
<name>rubeus-java</name>
|
9
|
+
<url>http://maven.apache.org</url>
|
10
|
+
<build>
|
11
|
+
<plugins>
|
12
|
+
<plugin>
|
13
|
+
<groupId>org.apache.maven.plugins</groupId>
|
14
|
+
<artifactId>maven-compiler-plugin</artifactId>
|
15
|
+
<configuration>
|
16
|
+
<source>1.5</source>
|
17
|
+
<target>1.5</target>
|
18
|
+
</configuration>
|
19
|
+
</plugin>
|
20
|
+
</plugins>
|
21
|
+
</build>
|
22
|
+
<dependencies>
|
23
|
+
<dependency>
|
24
|
+
<groupId>junit</groupId>
|
25
|
+
<artifactId>junit</artifactId>
|
26
|
+
<version>3.8.1</version>
|
27
|
+
<scope>test</scope>
|
28
|
+
</dependency>
|
29
|
+
</dependencies>
|
30
|
+
</project>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
package jp.rubybizcommons.rubeus.extensions.javax.swing.table;
|
2
|
+
|
3
|
+
import javax.swing.event.TableModelListener;
|
4
|
+
import javax.swing.table.TableModel;
|
5
|
+
|
6
|
+
public class DelegatableTableModel implements TableModel {
|
7
|
+
|
8
|
+
private final TableModel source;
|
9
|
+
|
10
|
+
public DelegatableTableModel(TableModel source) {
|
11
|
+
super();
|
12
|
+
this.source = source;
|
13
|
+
}
|
14
|
+
|
15
|
+
public TableModel getSource(){
|
16
|
+
return this.source;
|
17
|
+
}
|
18
|
+
|
19
|
+
public void addTableModelListener(TableModelListener l) {
|
20
|
+
source.addTableModelListener(l);
|
21
|
+
}
|
22
|
+
|
23
|
+
public Class<?> getColumnClass(int columnIndex) {
|
24
|
+
return source.getColumnClass(columnIndex);
|
25
|
+
}
|
26
|
+
|
27
|
+
public int getColumnCount() {
|
28
|
+
return source.getColumnCount();
|
29
|
+
}
|
30
|
+
|
31
|
+
public String getColumnName(int columnIndex) {
|
32
|
+
return source.getColumnName(columnIndex);
|
33
|
+
}
|
34
|
+
|
35
|
+
public int getRowCount() {
|
36
|
+
return source.getRowCount();
|
37
|
+
}
|
38
|
+
|
39
|
+
public Object getValueAt(int rowIndex, int columnIndex) {
|
40
|
+
return source.getValueAt(rowIndex, columnIndex);
|
41
|
+
}
|
42
|
+
|
43
|
+
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
44
|
+
return source.isCellEditable(rowIndex, columnIndex);
|
45
|
+
}
|
46
|
+
|
47
|
+
public void removeTableModelListener(TableModelListener l) {
|
48
|
+
source.removeTableModelListener(l);
|
49
|
+
}
|
50
|
+
|
51
|
+
public void setValueAt(Object value, int rowIndex, int columnIndex) {
|
52
|
+
source.setValueAt(value, rowIndex, columnIndex);
|
53
|
+
}
|
54
|
+
}
|