swing_paradise 0.1.46

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of swing_paradise might be problematic. Click here for more details.

Files changed (67) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1557 -0
  3. data/doc/README.gen +1510 -0
  4. data/lib/swing_paradise/autoinclude.rb +3 -0
  5. data/lib/swing_paradise/awt/README.md +1 -0
  6. data/lib/swing_paradise/awt/color.rb +45 -0
  7. data/lib/swing_paradise/base_module/base_module.rb +993 -0
  8. data/lib/swing_paradise/classes +1 -0
  9. data/lib/swing_paradise/examples/001_quit_button_example.rb +55 -0
  10. data/lib/swing_paradise/examples/002_text_area_example.rb +55 -0
  11. data/lib/swing_paradise/examples/003_combo_box_example.rb +57 -0
  12. data/lib/swing_paradise/examples/004_jpanel_left_bound_example.rb +41 -0
  13. data/lib/swing_paradise/examples/005_box_layout_example.rb +39 -0
  14. data/lib/swing_paradise/examples/006_frame_example.rb +33 -0
  15. data/lib/swing_paradise/examples/007_textarea_responding_to_enter_key_example.rb +28 -0
  16. data/lib/swing_paradise/examples/008_scrolled_window_example.rb +41 -0
  17. data/lib/swing_paradise/examples/009_font_size_example.rb +39 -0
  18. data/lib/swing_paradise/examples/010_counter_example.rb +183 -0
  19. data/lib/swing_paradise/examples/011_button_with_image_example.rb +58 -0
  20. data/lib/swing_paradise/examples/012_quit_on_escape_key_being_pressed.rb +37 -0
  21. data/lib/swing_paradise/examples/013_simple_box_example.rb +38 -0
  22. data/lib/swing_paradise/examples/014_mouse_events_example.rb +41 -0
  23. data/lib/swing_paradise/examples/015_menu_example.rb +77 -0
  24. data/lib/swing_paradise/examples/016_file_chooser_example.rb +96 -0
  25. data/lib/swing_paradise/examples/017_buttons_example.rb +56 -0
  26. data/lib/swing_paradise/examples/018_colour_chooser_example.rb +51 -0
  27. data/lib/swing_paradise/examples/019_jeditorpane_example.rb +61 -0
  28. data/lib/swing_paradise/examples/020_table_example.rb +77 -0
  29. data/lib/swing_paradise/examples/021_jsplitpane_example.rb +66 -0
  30. data/lib/swing_paradise/examples/022_drawing_oval_example.rb +51 -0
  31. data/lib/swing_paradise/examples/023_show_message_dialog_example.rb +57 -0
  32. data/lib/swing_paradise/java_classes/border_factory/border_factory.rb +19 -0
  33. data/lib/swing_paradise/java_classes/box/box.rb +72 -0
  34. data/lib/swing_paradise/java_classes/button +1 -0
  35. data/lib/swing_paradise/java_classes/checkbox +1 -0
  36. data/lib/swing_paradise/java_classes/combobox +1 -0
  37. data/lib/swing_paradise/java_classes/default_table_model/default_table_model.rb +18 -0
  38. data/lib/swing_paradise/java_classes/frame +1 -0
  39. data/lib/swing_paradise/java_classes/jbutton/jbutton.rb +199 -0
  40. data/lib/swing_paradise/java_classes/jcheckbox/jcheckbox.rb +28 -0
  41. data/lib/swing_paradise/java_classes/jcombobox/jcombobox.rb +31 -0
  42. data/lib/swing_paradise/java_classes/jcomponent/jcomponent.rb +253 -0
  43. data/lib/swing_paradise/java_classes/jeditorpane/jeditorpane.rb +23 -0
  44. data/lib/swing_paradise/java_classes/jfilechooser/jfilechooser.rb +22 -0
  45. data/lib/swing_paradise/java_classes/jframe/jframe.rb +319 -0
  46. data/lib/swing_paradise/java_classes/jlabel/jlabel.rb +171 -0
  47. data/lib/swing_paradise/java_classes/jmenu/jmenu.rb +13 -0
  48. data/lib/swing_paradise/java_classes/jmenubar/jmenubar.rb +13 -0
  49. data/lib/swing_paradise/java_classes/jpanel/jpanel.rb +115 -0
  50. data/lib/swing_paradise/java_classes/jscrollpane/jscrollpane.rb +84 -0
  51. data/lib/swing_paradise/java_classes/jspinner/jspinner.rb +17 -0
  52. data/lib/swing_paradise/java_classes/jtextarea/jtextarea.rb +120 -0
  53. data/lib/swing_paradise/java_classes/jtextfield/jtextfield.rb +314 -0
  54. data/lib/swing_paradise/java_classes/label +1 -0
  55. data/lib/swing_paradise/java_classes/panel +1 -0
  56. data/lib/swing_paradise/java_classes/spinner +1 -0
  57. data/lib/swing_paradise/java_classes/textarea +1 -0
  58. data/lib/swing_paradise/misc/misc.rb +57 -0
  59. data/lib/swing_paradise/prototype/prototype.rb +79 -0
  60. data/lib/swing_paradise/requires/require_the_project.rb +15 -0
  61. data/lib/swing_paradise/toplevel_methods/misc.rb +293 -0
  62. data/lib/swing_paradise/version/version.rb +17 -0
  63. data/lib/swing_paradise/widget_collection/README.md +2 -0
  64. data/lib/swing_paradise/widget_collection/text_viewer.rb +160 -0
  65. data/lib/swing_paradise.rb +1 -0
  66. data/swing_paradise.gemspec +42 -0
  67. metadata +120 -0
@@ -0,0 +1,84 @@
1
+ # =========================================================================== #
2
+ # require 'swing_paradise/java_classes/jscrollpane/jscrollpane.rb'
3
+ # =========================================================================== #
4
+ class Java::JavaxSwing::JScrollPane
5
+
6
+ # ========================================================================= #
7
+ # === use_this_font=
8
+ # ========================================================================= #
9
+ alias use_this_font= setFont
10
+
11
+ # ========================================================================= #
12
+ # === vertical_scrollbar_always
13
+ # ========================================================================= #
14
+ def vertical_scrollbar_always
15
+ setVerticalScrollBarPolicy(
16
+ JScrollPane::VERTICAL_SCROLLBAR_ALWAYS
17
+ )
18
+ end
19
+
20
+ # ========================================================================= #
21
+ # === always_policy
22
+ # ========================================================================= #
23
+ def always_policy
24
+ horizontal_always
25
+ vertical_always
26
+ end
27
+
28
+ # ========================================================================= #
29
+ # === horizontal_always
30
+ # ========================================================================= #
31
+ def horizontal_always
32
+ setHorizontalScrollBarPolicy(JScrollPane::HORIZONTAL_SCROLLBAR_ALWAYS)
33
+ end
34
+
35
+ # ========================================================================= #
36
+ # === vertical_always
37
+ # ========================================================================= #
38
+ def vertical_always
39
+ setVerticalScrollBarPolicy(JScrollPane::VERTICAL_SCROLLBAR_ALWAYS)
40
+ end
41
+
42
+ # ========================================================================= #
43
+ # === dimensions
44
+ #
45
+ # This is just a wrapper over setBounds() to allow us to work with
46
+ # a Hash instead.
47
+ # ========================================================================= #
48
+ def dimensions(
49
+ hash = {
50
+ x_axis: 10,
51
+ y_axis: 20,
52
+ width: 300,
53
+ height: 50
54
+ }
55
+ )
56
+ # is: x-coordinate, y-coordinate, width, height)
57
+ setBounds(
58
+ hash[:x_axis],
59
+ hash[:y_axis],
60
+ hash[:width],
61
+ hash[:height]
62
+ )
63
+ end
64
+
65
+ # ========================================================================= #
66
+ # === bblack1
67
+ #
68
+ # For now this method doesn't do anything; in the future we should
69
+ # create a black border through this method.
70
+ # ========================================================================= #
71
+ def bblack1
72
+ end
73
+
74
+ # ========================================================================= #
75
+ # === pad5px
76
+ # ========================================================================= #
77
+ def pad3px; end
78
+ def pad4px; end
79
+ def pad5px; end
80
+ def pad6px; end
81
+ def pad7px; end
82
+ def pad8px; end
83
+
84
+ end
@@ -0,0 +1,17 @@
1
+ class Java::JavaxSwing::JSpinner
2
+
3
+ # ========================================================================= #
4
+ # === text?
5
+ # ========================================================================= #
6
+ def text?
7
+ getValue.to_s
8
+ end
9
+
10
+ # ========================================================================= #
11
+ # === background=
12
+ # ========================================================================= #
13
+ def background=(i)
14
+ getEditor.getComponent(0).setBackground(i)
15
+ end
16
+
17
+ end
@@ -0,0 +1,120 @@
1
+ # =========================================================================== #
2
+ # require 'swing_paradise/java_classes/jtextarea/jtextarea.rb'
3
+ # =========================================================================== #
4
+ java_import javax.swing.border.Border
5
+ java_import javax.swing.BorderFactory
6
+
7
+ class Java::JavaxSwing::JTextArea
8
+
9
+ alias original_set_font set_font # === original_set_font
10
+
11
+ # ========================================================================= #
12
+ # === set_content
13
+ # ========================================================================= #
14
+ def set_content(i)
15
+ set_text(i.to_s)
16
+ end
17
+
18
+ # ========================================================================= #
19
+ # === use_this_font=
20
+ # ========================================================================= #
21
+ def use_this_font=(i)
22
+ if i.is_a?(String) or i.is_a?(Symbol)
23
+ i = SwingParadise.jruby_font(i)
24
+ end
25
+ setFont(i)
26
+ end
27
+
28
+ # ========================================================================= #
29
+ # === set_font
30
+ # ========================================================================= #
31
+ def set_font(i = :hack_25)
32
+ original_set_font(
33
+ SwingParadise.jruby_font(i)
34
+ )
35
+ end
36
+
37
+ # ========================================================================= #
38
+ # === on_enter_key_pressed
39
+ # ========================================================================= #
40
+ # def on_enter_key_pressed(&block)
41
+ # addActionListener(&block)
42
+ # end
43
+
44
+ # ========================================================================= #
45
+ # === filter_newlines
46
+ # ========================================================================= #
47
+ def filter_newlines
48
+ getDocument.putProperty('filterNewlines', true)
49
+ end
50
+
51
+ # ========================================================================= #
52
+ # === x_y_width_height
53
+ # ========================================================================= #
54
+ def x_y_width_height(
55
+ x = 200,
56
+ y = 320,
57
+ width = 600,
58
+ height = 350
59
+ )
60
+ setBounds(x, y, width, height) # x, y, width, height
61
+ end
62
+
63
+ # ========================================================================= #
64
+ # === make_border
65
+ # ========================================================================= #
66
+ def make_border(
67
+ use_this_colour = Color::BLACK,
68
+ width_of_the_border = 3
69
+ )
70
+ setBorder(
71
+ BorderFactory.createLineBorder(use_this_colour, width_of_the_border)
72
+ )
73
+ end
74
+
75
+ # ========================================================================= #
76
+ # === clear
77
+ # ========================================================================= #
78
+ def clear
79
+ set_text('')
80
+ end
81
+
82
+ # ========================================================================= #
83
+ # === dimensions
84
+ #
85
+ # This is just a wrapper over setBounds() to allow us to work with
86
+ # a Hash instead.
87
+ # ========================================================================= #
88
+ def dimensions(
89
+ hash = {
90
+ x_axis: 10,
91
+ y_axis: 20,
92
+ width: 300,
93
+ height: 50
94
+ }
95
+ )
96
+ # is: x-coordinate, y-coordinate, width, height)
97
+ setBounds(
98
+ hash[:x_axis],
99
+ hash[:y_axis],
100
+ hash[:width],
101
+ hash[:height]
102
+ )
103
+ end
104
+
105
+ # ========================================================================= #
106
+ # === text?
107
+ # ========================================================================= #
108
+ def text?
109
+ getText
110
+ end
111
+
112
+ # Currently not implemented.
113
+ def pad8px
114
+ end
115
+
116
+ def visible_cursor
117
+ e 'visible_cursor has not yet been implemented.'
118
+ end
119
+
120
+ end
@@ -0,0 +1,314 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'swing_paradise/java_classes/jtextfield/jtextfield.rb'
6
+ # =========================================================================== #
7
+ # java_import 'javax.swing.text.JTextComponent'
8
+ # =========================================================================== #
9
+ # https://docs.oracle.com/javase/8/docs/api/javax/swing/JTextField.html
10
+ # =========================================================================== #
11
+ class Java::JavaxSwing::JTextField
12
+
13
+ alias original_set_font set_font # === original_set_font
14
+
15
+ alias select_everything selectAll # === select_everything
16
+
17
+ # ========================================================================= #
18
+ # === on_mouse_click_select_everything
19
+ #
20
+ # This method will, upon left-mouse-button press event, select the
21
+ # whole JTextField.
22
+ #
23
+ # The method works, as verified in January 2024.
24
+ # ========================================================================= #
25
+ def on_mouse_click_select_everything
26
+ mouse_listener {|event|
27
+ if left_mouse_click?(event)
28
+ requestFocus # ← This may not be necessary, but let's see nonetheless.
29
+ select_everything # or: select(0, getText.length)
30
+ end
31
+ }
32
+ end
33
+
34
+ # ========================================================================= #
35
+ # === set_maxsize
36
+ #
37
+ # This is currently not implemented.
38
+ # ========================================================================= #
39
+ def set_maxsize(i = 1)
40
+ # if length > i
41
+ # end
42
+ end
43
+
44
+ # ========================================================================= #
45
+ # === signal_connect
46
+ # ========================================================================= #
47
+ def signal_connect(i = '', &block)
48
+ e '.signal_connect() is not yet implemented.'
49
+ end
50
+
51
+ # ========================================================================= #
52
+ # === on_enter_key_pressed
53
+ # ========================================================================= #
54
+ def on_enter_key_pressed(&block)
55
+ addActionListener(&block)
56
+ end; alias on_enter_key on_enter_key_pressed # === on_enter_key
57
+
58
+ # ========================================================================= #
59
+ # === do_focus
60
+ # ========================================================================= #
61
+ def do_focus
62
+ requestFocusInWindow()
63
+ end
64
+
65
+ # ========================================================================= #
66
+ # === the_user_may_not_modify_this_entry
67
+ #
68
+ # This method will disallow any user-driven changes to the JTextfield
69
+ # at hand.
70
+ # ========================================================================= #
71
+ def the_user_may_not_modify_this_entry
72
+ setEditable(false)
73
+ end; alias disallow_changes the_user_may_not_modify_this_entry # === disallow_changes
74
+
75
+ # ========================================================================= #
76
+ # === use_this_font=
77
+ # ========================================================================= #
78
+ def use_this_font=(i)
79
+ if i.is_a?(String) or i.is_a?(Symbol)
80
+ i = SwingParadise.jruby_font(i)
81
+ end
82
+ setFont(i)
83
+ end
84
+
85
+ # ========================================================================= #
86
+ # === center
87
+ # ========================================================================= #
88
+ def center
89
+ setHorizontalAlignment(JTextField::CENTER)
90
+ end; alias align_to_the_center center # === center
91
+ alias do_center center # === do_center
92
+
93
+ # ========================================================================= #
94
+ # === on_enter
95
+ # ========================================================================= #
96
+ def on_enter(&block)
97
+ addActionListener {|event|
98
+ if event.getKeyCode == KeyEvent::VK_ENTER
99
+ e 'ENTER WAS PRESSED.'
100
+ end
101
+ }
102
+ end
103
+
104
+ # ========================================================================= #
105
+ # === hint=
106
+ # ========================================================================= #
107
+ def hint=(i = '')
108
+ setToolTipText(i)
109
+ end; alias fancy_hint= hint= # === fancy_hint=
110
+
111
+ # ========================================================================= #
112
+ # === shadow_hint=
113
+ # ========================================================================= #
114
+ def shadow_hint=(i = '')
115
+ e 'Todo: implement shadow_hint='
116
+ end
117
+
118
+ # ========================================================================= #
119
+ # === set_background_colour
120
+ #
121
+ # Colours can also be set via:
122
+ #
123
+ # java.awt.Color.new(175, 238, 238)
124
+ #
125
+ # ========================================================================= #
126
+ def set_background_colour(i = ::Color::RED)
127
+ setBackground(i)
128
+ end
129
+
130
+ # ========================================================================= #
131
+ # === set_font
132
+ # ========================================================================= #
133
+ def set_font(i = :hack_25)
134
+ original_set_font(
135
+ SwingParadise.jruby_font(i)
136
+ )
137
+ end
138
+
139
+ # ========================================================================= #
140
+ # === dimensions
141
+ #
142
+ # This is just a wrapper over setBounds() to allow us to work with
143
+ # a Hash instead.
144
+ # ========================================================================= #
145
+ def dimensions(
146
+ hash = {
147
+ x_axis: 10,
148
+ y_axis: 20,
149
+ width: 300,
150
+ height: 50
151
+ }
152
+ )
153
+ # is: x-coordinate, y-coordinate, width, height)
154
+ setBounds(
155
+ hash[:x_axis],
156
+ hash[:y_axis],
157
+ hash[:width],
158
+ hash[:height]
159
+ )
160
+ end
161
+
162
+ # ========================================================================= #
163
+ # === enable_dragging
164
+ # ========================================================================= #
165
+ def enable_dragging
166
+ setDragEnabled(true)
167
+ end
168
+
169
+ # ========================================================================= #
170
+ # === text?
171
+ # ========================================================================= #
172
+ def text?
173
+ getText.to_s
174
+ end
175
+
176
+ # ========================================================================= #
177
+ # === default=
178
+ # ========================================================================= #
179
+ def default=(i)
180
+ setText(i.to_s)
181
+ end
182
+
183
+ alias set_text setText # === set_text
184
+
185
+ alias width_height set_size # === width_height
186
+ alias set_size_request set_size # === set_size_request
187
+
188
+ # ========================================================================= #
189
+ # === <<
190
+ # ========================================================================= #
191
+ def <<(i)
192
+ setText(i)
193
+ end
194
+
195
+ # ========================================================================= #
196
+ # === on_enter_pressed
197
+ # ========================================================================= #
198
+ def on_enter_pressed(&block)
199
+ add_action_listener(&block)
200
+ end
201
+
202
+ # ========================================================================= #
203
+ # Past this points we'll have stubs. These may be improved at a later time,
204
+ # or never. Either way they have to be defined, at the least.
205
+ # ========================================================================= #
206
+
207
+ # ========================================================================= #
208
+ # === highlight_on_click_event
209
+ # ========================================================================= #
210
+ def highlight_on_click_event
211
+ end
212
+
213
+ # ========================================================================= #
214
+ # === add_css_class
215
+ # ========================================================================= #
216
+ def add_css_class(i = '')
217
+ end
218
+
219
+ # ========================================================================= #
220
+ # === pad4px
221
+ # ========================================================================= #
222
+ def pad4px
223
+ end
224
+
225
+ # ========================================================================= #
226
+ # === bblack1
227
+ # ========================================================================= #
228
+ def bblack1
229
+ end
230
+
231
+ # ========================================================================= #
232
+ # === bblack2
233
+ # ========================================================================= #
234
+ def bblack2
235
+ end
236
+
237
+ # ========================================================================= #
238
+ # === bblack3
239
+ # ========================================================================= #
240
+ def bblack3
241
+ end
242
+
243
+ # ========================================================================= #
244
+ # === bblack4
245
+ # ========================================================================= #
246
+ def bblack4
247
+ end
248
+
249
+ # ========================================================================= #
250
+ # === bblack5
251
+ # ========================================================================= #
252
+ def bblack5
253
+ end
254
+
255
+ # ========================================================================= #
256
+ # === clear_background
257
+ #
258
+ # This method currently does not do anything, as it is only necessary
259
+ # in ruby-gtk3 really.
260
+ # ========================================================================= #
261
+ def clear_background
262
+ end
263
+
264
+ # ========================================================================= #
265
+ # === css_class
266
+ #
267
+ # This method currently does not work.
268
+ # ========================================================================= #
269
+ def css_class(i = '')
270
+ end
271
+
272
+ # ========================================================================= #
273
+ # === make_bold
274
+ # ========================================================================= #
275
+ def make_bold(
276
+ font_size = 20
277
+ )
278
+ setFont(
279
+ getFont.deriveFont(Font::BOLD, font_size)
280
+ )
281
+ end
282
+
283
+ # ========================================================================= #
284
+ # === on_click_select_all
285
+ # ========================================================================= #
286
+ def on_click_select_all(&block)
287
+ e 'Todo: implement on-click-select-all.'
288
+ end
289
+
290
+ # ========================================================================= #
291
+ # === on_key_press_event
292
+ # ========================================================================= #
293
+ def on_key_press_event(&block)
294
+ e 'Todo: implement on-key-press-event.'
295
+ end
296
+
297
+ # ========================================================================= #
298
+ # === very_light_yellow_background
299
+ # ========================================================================= #
300
+ def very_light_yellow_background
301
+ set_background_colour(
302
+ java.awt.Color.new(99, 99, 83)
303
+ )
304
+ end; alias very_light_yellowish_background very_light_yellow_background # === very_light_yellowish_background
305
+
306
+ def set_activates_default(i = nil)
307
+ e 'Todo: implement set_activates_default or ignore it.'
308
+ end
309
+
310
+ def enable_events
311
+ e 'enable_events has not yet been implemented.'
312
+ end
313
+
314
+ end
@@ -0,0 +1 @@
1
+ jlabel
@@ -0,0 +1 @@
1
+ jpanel
@@ -0,0 +1 @@
1
+ jspinner
@@ -0,0 +1 @@
1
+ jtextarea
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'swing_paradise/misc/misc.rb'
6
+ # =========================================================================== #
7
+ module SwingParadise
8
+
9
+ # ========================================================================= #
10
+ # === SwingParadise.window
11
+ #
12
+ # This is ultimately a wrapper over JFrame.
13
+ # ========================================================================= #
14
+ def self.window(
15
+ width = 640,
16
+ height = 480
17
+ )
18
+ require 'swing_paradise/java_classes/jframe/jframe.rb'
19
+ widget = Java::JavaxSwing::JFrame.new
20
+ if width and height
21
+ widget.width_height(width, height)
22
+ end
23
+ return widget
24
+ end; self.instance_eval { alias create_frame window } # === SwingParadise.create_frame
25
+
26
+ # ========================================================================= #
27
+ # === SwingParadise.frame
28
+ # ========================================================================= #
29
+ def self.frame(frame_title = '')
30
+ JFrame.new(frame_title)
31
+ end
32
+
33
+ # ========================================================================= #
34
+ # === SwingParadise.jpanel
35
+ # ========================================================================= #
36
+ def self.jpanel
37
+ JPanel.new
38
+ end; self.instance_eval { alias panel jpanel } # === SwingParadise.panel
39
+
40
+ # ========================================================================= #
41
+ # === jframe
42
+ # ========================================================================= #
43
+ def jframe(frame_title = '')
44
+ ::SwingParadise.frame(frame_title)
45
+ end; alias frame jframe # === frame
46
+
47
+ # ========================================================================= #
48
+ # === jtextview
49
+ #
50
+ # JTextArea is the one for multi-line input.
51
+ # ========================================================================= #
52
+ def jtextview(i = '')
53
+ JTextArea.new(i)
54
+ end; alias text_view jtextview # === text_view
55
+ alias textview jtextview # === textview
56
+
57
+ end
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # This is the prototype for jruby-swing applications.
6
+ # =========================================================================== #
7
+ include Java
8
+
9
+ module SwingParadise
10
+
11
+ class Prototype < javax.swing.JFrame
12
+
13
+ require 'swing_paradise'
14
+ include ::SwingParadise::BaseModule # Scope onto the toplevel here.
15
+
16
+ # ========================================================================= #
17
+ # === WIDTH
18
+ # ========================================================================= #
19
+ WIDTH = 1420
20
+
21
+ # ========================================================================= #
22
+ # === HEIGHT
23
+ # ========================================================================= #
24
+ HEIGHT = 820
25
+
26
+ # ========================================================================= #
27
+ # === initialize
28
+ # ========================================================================= #
29
+ def initialize(
30
+ run_already = true
31
+ )
32
+ reset
33
+ run if run_already
34
+ end
35
+
36
+ # ========================================================================= #
37
+ # === reset (reset tag)
38
+ # ========================================================================= #
39
+ def reset
40
+ reset_the_shared_module if respond_to?(:reset_the_shared_module)
41
+ end
42
+
43
+ # ========================================================================= #
44
+ # === run
45
+ # ========================================================================= #
46
+ def run
47
+ frame = frame('Showcasing JEditorPane')
48
+ panel = new_panel # This is an instance of Java::JavaxSwing::JPanel.
49
+ panel.set_font(Font.new 'Sans serif', Font::PLAIN, 85)
50
+ frame.getContentPane.add(panel)
51
+ panel.box_layout
52
+
53
+ panel.hint = 'A quit button example'
54
+ editor_pane = JEditorPane.new
55
+ # editor_pane.readonly
56
+ editor_pane.set_size(820, 600)
57
+ editor_pane.use_this_font = :hack_32
58
+
59
+ # ======================================================================= #
60
+ # Put the editor pane in a scroll pane.
61
+ # ======================================================================= #
62
+ scroll_pane = scroll_pane(editor_pane)
63
+ scroll_pane.vertical_scrollbar_always
64
+ scroll_pane.min_size(820, 700)
65
+
66
+ panel << editor_pane
67
+ panel << quit_button
68
+ frame.set_font(Font.new 'Sans serif', Font::PLAIN, 85)
69
+ frame.exit_on_close
70
+ frame.set_size(WIDTH, HEIGHT)
71
+ frame.setLocationRelativeTo(nil)
72
+ frame.show_all
73
+ end
74
+
75
+ end; end
76
+
77
+ if __FILE__ == $PROGRAM_NAME
78
+ SwingParadise::Prototype.new
79
+ end