swing_paradise 0.1.46

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.

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