jrubyfx 0.9.2-java → 1.0.0-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.
Files changed (47) hide show
  1. data/README.md +19 -17
  2. data/bin/jrubyfx-generator +28 -11
  3. data/lib/jrubyfx.rb +8 -4
  4. data/lib/jrubyfx/{fxml_application.rb → application.rb} +0 -2
  5. data/lib/jrubyfx/controller.rb +307 -0
  6. data/lib/jrubyfx/core_ext/border_pane.rb +0 -1
  7. data/lib/jrubyfx/core_ext/duration.rb +1 -1
  8. data/lib/jrubyfx/core_ext/exts.yml +53 -0
  9. data/lib/jrubyfx/core_ext/image_view.rb +1 -0
  10. data/lib/jrubyfx/core_ext/observable_value.rb +69 -2
  11. data/lib/jrubyfx/core_ext/path.rb +0 -6
  12. data/lib/jrubyfx/core_ext/precompiled.rb +501 -0
  13. data/lib/jrubyfx/core_ext/stage.rb +12 -0
  14. data/lib/jrubyfx/core_ext/table_view.rb +0 -4
  15. data/lib/jrubyfx/core_ext/timeline.rb +3 -7
  16. data/lib/jrubyfx/dsl.rb +168 -150
  17. data/lib/jrubyfx/dsl_map.rb +267 -0
  18. data/lib/jrubyfx/imports.rb +64 -0
  19. data/lib/jrubyfx/java_fx_impl.rb +0 -1
  20. data/lib/jrubyfx/module.rb +172 -0
  21. data/lib/jrubyfx/{jfx_imports.rb → part_imports.rb} +17 -9
  22. data/lib/jrubyfx/utils.rb +13 -4
  23. data/lib/jrubyfx/utils/common_converters.rb +45 -13
  24. data/lib/jrubyfx/utils/common_utils.rb +1 -1
  25. data/lib/jrubyfx/version.rb +1 -1
  26. data/lib/jrubyfx_tasks.rb +9 -1
  27. metadata +69 -55
  28. data/lib/jrubyfx/core_ext/circle.rb +0 -26
  29. data/lib/jrubyfx/core_ext/drag_event.rb~ +0 -32
  30. data/lib/jrubyfx/core_ext/image_view.rb~ +0 -24
  31. data/lib/jrubyfx/core_ext/labeled.rb +0 -24
  32. data/lib/jrubyfx/core_ext/menu.rb +0 -25
  33. data/lib/jrubyfx/core_ext/menu.rb~ +0 -26
  34. data/lib/jrubyfx/core_ext/menu_bar.rb +0 -25
  35. data/lib/jrubyfx/core_ext/menu_bar.rb~ +0 -24
  36. data/lib/jrubyfx/core_ext/menu_item.rb +0 -22
  37. data/lib/jrubyfx/core_ext/node.rb +0 -26
  38. data/lib/jrubyfx/core_ext/parallel_transition.rb +0 -28
  39. data/lib/jrubyfx/core_ext/parent.rb +0 -28
  40. data/lib/jrubyfx/core_ext/scene.rb +0 -29
  41. data/lib/jrubyfx/core_ext/shape.rb +0 -29
  42. data/lib/jrubyfx/core_ext/stop.rb +0 -31
  43. data/lib/jrubyfx/core_ext/tree_item.rb +0 -25
  44. data/lib/jrubyfx/core_ext/tree_item.rb~ +0 -25
  45. data/lib/jrubyfx/core_ext/tree_view.rb~ +0 -33
  46. data/lib/jrubyfx/fxml_controller.rb +0 -325
  47. data/lib/jrubyfx/fxml_module.rb +0 -98
@@ -0,0 +1,267 @@
1
+ =begin
2
+ JRubyFX - Write JavaFX and FXML in Ruby
3
+ Copyright (C) 2013 The JRubyFX Team
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ =end
17
+
18
+ # DO NOT MODIFY THIS FILE!
19
+ # This file is generated by the `rake reflect` task.
20
+
21
+ module JRubyFX
22
+ module DSL
23
+ NAME_TO_CLASSES = {
24
+ # Manual overrides
25
+ 'observable_array_list' => proc { |*args| FXCollections.observable_array_list(*args) },
26
+ 'double_property' => SimpleDoubleProperty,
27
+ 'xy_chart_series' => Java::javafx.scene.chart.XYChart::Series,
28
+ 'xy_chart_data' => Java::javafx.scene.chart.XYChart::Data,
29
+ # Automatically generated
30
+ 'animation' => Animation,
31
+ 'animation_timer' => AnimationTimer,
32
+ 'fade_transition' => FadeTransition,
33
+ 'fill_transition' => FillTransition,
34
+ 'interpolator' => Interpolator,
35
+ 'key_frame' => KeyFrame,
36
+ 'key_value' => KeyValue,
37
+ 'parallel_transition' => ParallelTransition,
38
+ 'path_transition' => PathTransition,
39
+ 'pause_transition' => PauseTransition,
40
+ 'rotate_transition' => RotateTransition,
41
+ 'scale_transition' => ScaleTransition,
42
+ 'sequential_transition' => SequentialTransition,
43
+ 'stroke_transition' => StrokeTransition,
44
+ 'timeline' => Timeline,
45
+ 'transition' => Transition,
46
+ 'translate_transition' => TranslateTransition,
47
+ 'platform' => Platform,
48
+ 'simple_boolean_property' => SimpleBooleanProperty,
49
+ 'simple_double_property' => SimpleDoubleProperty,
50
+ 'simple_float_property' => SimpleFloatProperty,
51
+ 'simple_integer_property' => SimpleIntegerProperty,
52
+ 'simple_list_property' => SimpleListProperty,
53
+ 'simple_long_property' => SimpleLongProperty,
54
+ 'simple_map_property' => SimpleMapProperty,
55
+ 'simple_object_property' => SimpleObjectProperty,
56
+ 'simple_set_property' => SimpleSetProperty,
57
+ 'simple_string_property' => SimpleStringProperty,
58
+ 'change_listener' => ChangeListener,
59
+ 'fx_collections' => FXCollections,
60
+ 'event' => Event,
61
+ 'action_event' => ActionEvent,
62
+ 'event_handler' => EventHandler,
63
+ 'initializable' => Initializable,
64
+ 'load_exception' => LoadException,
65
+ 'horizontal_direction' => HorizontalDirection,
66
+ 'h_pos' => HPos,
67
+ 'insets' => Insets,
68
+ 'orientation' => Orientation,
69
+ 'pos' => Pos,
70
+ 'rectangle2_d' => Rectangle2D,
71
+ 'side' => Side,
72
+ 'vertical_direction' => VerticalDirection,
73
+ 'v_pos' => VPos,
74
+ 'group' => Group,
75
+ 'node' => Node,
76
+ 'parent' => Parent,
77
+ 'scene' => Scene,
78
+ 'canvas' => Canvas,
79
+ 'area_chart' => AreaChart,
80
+ 'axis' => Axis,
81
+ 'bar_chart' => BarChart,
82
+ 'bubble_chart' => BubbleChart,
83
+ 'category_axis' => CategoryAxis,
84
+ 'chart' => Chart,
85
+ 'line_chart' => LineChart,
86
+ 'number_axis' => NumberAxis,
87
+ 'pie_chart' => PieChart,
88
+ 'scatter_chart' => ScatterChart,
89
+ 'stacked_area_chart' => StackedAreaChart,
90
+ 'stacked_bar_chart' => StackedBarChart,
91
+ 'value_axis' => ValueAxis,
92
+ 'xy_chart' => XYChart,
93
+ 'accordion' => Accordion,
94
+ 'button' => Button,
95
+ 'cell' => Cell,
96
+ 'check_box' => CheckBox,
97
+ 'check_box_tree_item' => CheckBoxTreeItem,
98
+ 'check_menu_item' => CheckMenuItem,
99
+ 'choice_box' => ChoiceBox,
100
+ 'color_picker' => ColorPicker,
101
+ 'combo_box' => ComboBox,
102
+ 'context_menu' => ContextMenu,
103
+ 'hyperlink' => Hyperlink,
104
+ 'label' => Label,
105
+ 'list_cell' => ListCell,
106
+ 'list_view' => ListView,
107
+ 'menu' => Menu,
108
+ 'menu_bar' => MenuBar,
109
+ 'menu_button' => MenuButton,
110
+ 'menu_item' => MenuItem,
111
+ 'pagination' => Pagination,
112
+ 'password_field' => PasswordField,
113
+ 'popup_control' => PopupControl,
114
+ 'progress_bar' => ProgressBar,
115
+ 'progress_indicator' => ProgressIndicator,
116
+ 'radio_button' => RadioButton,
117
+ 'radio_menu_item' => RadioMenuItem,
118
+ 'scroll_bar' => ScrollBar,
119
+ 'scroll_pane' => ScrollPane,
120
+ 'separator' => Separator,
121
+ 'separator_menu_item' => SeparatorMenuItem,
122
+ 'slider' => Slider,
123
+ 'split_menu_button' => SplitMenuButton,
124
+ 'split_pane' => SplitPane,
125
+ 'tab' => Tab,
126
+ 'table_view' => TableView,
127
+ 'table_cell' => TableCell,
128
+ 'table_column' => TableColumn,
129
+ 'tab_pane' => TabPane,
130
+ 'text_area' => TextArea,
131
+ 'text_field' => TextField,
132
+ 'titled_pane' => TitledPane,
133
+ 'toggle_button' => ToggleButton,
134
+ 'toggle_group' => ToggleGroup,
135
+ 'tool_bar' => ToolBar,
136
+ 'tooltip' => Tooltip,
137
+ 'tree_cell' => TreeCell,
138
+ 'tree_item' => TreeItem,
139
+ 'tree_view' => TreeView,
140
+ 'content_display' => ContentDisplay,
141
+ 'overrun_style' => OverrunStyle,
142
+ 'selection_mode' => SelectionMode,
143
+ 'blend' => Blend,
144
+ 'blend_mode' => BlendMode,
145
+ 'bloom' => Bloom,
146
+ 'blur_type' => BlurType,
147
+ 'box_blur' => BoxBlur,
148
+ 'color_adjust' => ColorAdjust,
149
+ 'color_input' => ColorInput,
150
+ 'displacement_map' => DisplacementMap,
151
+ 'drop_shadow' => DropShadow,
152
+ 'gaussian_blur' => GaussianBlur,
153
+ 'glow' => Glow,
154
+ 'image_input' => ImageInput,
155
+ 'inner_shadow' => InnerShadow,
156
+ 'lighting' => Lighting,
157
+ 'motion_blur' => MotionBlur,
158
+ 'perspective_transform' => PerspectiveTransform,
159
+ 'reflection' => Reflection,
160
+ 'sepia_tone' => SepiaTone,
161
+ 'shadow' => Shadow,
162
+ 'image' => Image,
163
+ 'image_view' => ImageView,
164
+ 'pixel_reader' => PixelReader,
165
+ 'pixel_writer' => PixelWriter,
166
+ 'clipboard' => Clipboard,
167
+ 'clipboard_content' => ClipboardContent,
168
+ 'context_menu_event' => ContextMenuEvent,
169
+ 'drag_event' => DragEvent,
170
+ 'gesture_event' => GestureEvent,
171
+ 'input_event' => InputEvent,
172
+ 'input_method_event' => InputMethodEvent,
173
+ 'key_code' => KeyCode,
174
+ 'key_event' => KeyEvent,
175
+ 'mnemonic' => Mnemonic,
176
+ 'mouse_drag_event' => MouseDragEvent,
177
+ 'mouse_event' => MouseEvent,
178
+ 'rotate_event' => RotateEvent,
179
+ 'scroll_event' => ScrollEvent,
180
+ 'swipe_event' => SwipeEvent,
181
+ 'touch_event' => TouchEvent,
182
+ 'transfer_mode' => TransferMode,
183
+ 'zoom_event' => ZoomEvent,
184
+ 'anchor_pane' => AnchorPane,
185
+ 'border_pane' => BorderPane,
186
+ 'column_constraints' => ColumnConstraints,
187
+ 'flow_pane' => FlowPane,
188
+ 'grid_pane' => GridPane,
189
+ 'hbox' => HBox,
190
+ 'pane' => Pane,
191
+ 'priority' => Priority,
192
+ 'row_constraints' => RowConstraints,
193
+ 'stack_pane' => StackPane,
194
+ 'tile_pane' => TilePane,
195
+ 'vbox' => VBox,
196
+ 'audio_clip' => AudioClip,
197
+ 'audio_equalizer' => AudioEqualizer,
198
+ 'audio_track' => AudioTrack,
199
+ 'equalizer_band' => EqualizerBand,
200
+ 'media' => Media,
201
+ 'media_exception' => MediaException,
202
+ 'media_error_event' => MediaErrorEvent,
203
+ 'media_marker_event' => MediaMarkerEvent,
204
+ 'media_player' => MediaPlayer,
205
+ 'media_view' => MediaView,
206
+ 'video_track' => VideoTrack,
207
+ 'color' => Color,
208
+ 'cycle_method' => CycleMethod,
209
+ 'image_pattern' => ImagePattern,
210
+ 'linear_gradient' => LinearGradient,
211
+ 'paint' => Paint,
212
+ 'radial_gradient' => RadialGradient,
213
+ 'stop' => Stop,
214
+ 'arc' => Arc,
215
+ 'arc_to' => ArcTo,
216
+ 'arc_type' => ArcType,
217
+ 'circle' => Circle,
218
+ 'close_path' => ClosePath,
219
+ 'cubic_curve' => CubicCurve,
220
+ 'cubic_curve_to' => CubicCurveTo,
221
+ 'ellipse' => Ellipse,
222
+ 'fill_rule' => FillRule,
223
+ 'hline_to' => HLineTo,
224
+ 'line' => Line,
225
+ 'line_to' => LineTo,
226
+ 'move_to' => MoveTo,
227
+ 'path' => Path,
228
+ 'path_element' => PathElement,
229
+ 'polygon' => Polygon,
230
+ 'polyline' => Polyline,
231
+ 'quad_curve' => QuadCurve,
232
+ 'quad_curve_to' => QuadCurveTo,
233
+ 'rectangle' => Rectangle,
234
+ 'shape' => Shape,
235
+ 'stroke_line_cap' => StrokeLineCap,
236
+ 'stroke_line_join' => StrokeLineJoin,
237
+ 'stroke_type' => StrokeType,
238
+ 'svg_path' => SVGPath,
239
+ 'vline_to' => VLineTo,
240
+ 'font' => Font,
241
+ 'font_posture' => FontPosture,
242
+ 'font_smoothing_type' => FontSmoothingType,
243
+ 'font_weight' => FontWeight,
244
+ 'text' => Text,
245
+ 'text_alignment' => TextAlignment,
246
+ 'text_bounds_type' => TextBoundsType,
247
+ 'affine' => Affine,
248
+ 'rotate' => Rotate,
249
+ 'scale' => Scale,
250
+ 'shear' => Shear,
251
+ 'translate' => Translate,
252
+ 'web_view' => WebView,
253
+ 'html_editor' => HTMLEditor,
254
+ 'directory_chooser' => DirectoryChooser,
255
+ 'file_chooser' => FileChooser,
256
+ 'modality' => Modality,
257
+ 'popup' => Popup,
258
+ 'popup_window' => PopupWindow,
259
+ 'screen' => Screen,
260
+ 'stage' => Stage,
261
+ 'stage_style' => StageStyle,
262
+ 'window' => Window,
263
+ 'window_event' => WindowEvent,
264
+ 'duration' => Duration,
265
+ }
266
+ end
267
+ end
@@ -0,0 +1,64 @@
1
+ =begin
2
+ JRubyFX - Write JavaFX and FXML in Ruby
3
+ Copyright (C) 2013 The JRubyFX Team
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ =end
17
+
18
+ require_relative 'utils'
19
+
20
+ # Update load path to include the JavaFX runtime and fail nicely if we can't find it
21
+ begin
22
+ if ENV['JFX_DIR']
23
+ $LOAD_PATH << ENV['JFX_DIR']
24
+ else #should we check for 1.7 vs 1.8? oh well, adding extra paths won't hurt anybody (maybe performance loading)
25
+ jfx_path = ENV_JAVA["sun.boot.library.path"]
26
+ $LOAD_PATH << if jfx_path.include? ":\\" and !jfx_path.include? "/" # can be tricked, but should work fine
27
+ #windows
28
+ jfx_path.gsub(/\\bin[\\]*$/i, "\\lib")
29
+ else
30
+ # *nix
31
+ jfx_path.gsub(/[\/\\][amdix345678_]+$/, "") # strip i386 or amd64 (including variants). TODO: ARM
32
+ end
33
+ end
34
+
35
+ # Java 8 (after ea-b75) and above has JavaFX as part of the normal distib, only require it if we are 7 or below
36
+ jre = ENV_JAVA["java.runtime.version"].match %r{^(?<version>(?<major>\d+)\.(?<minor>\d+))\.(?<patch>\d+)(_\d+)?-?(?<release>ea|u\d)?(-?b(?<build>\d+))?}
37
+ require 'jfxrt.jar' if ENV['JFX_DIR'] or
38
+ jre[:version].to_f < 1.8 or
39
+ (jre[:version].to_f == 1.8 and jre[:release] == 'ea' and jre[:build].to_i < 75)
40
+
41
+ # Attempt to load a javafx class
42
+ Java.javafx.application.Application
43
+ rescue LoadError, NameError
44
+ puts "JavaFX runtime not found. Please install Java 7u6 or newer or set environment variable JFX_DIR to the folder that contains jfxrt.jar "
45
+ puts "If you have Java 7u6 or later, this is a bug. Please report to the issue tracker on github. Include your OS version, 32/64bit, and architecture (x86, ARM, PPC, etc)"
46
+ exit -1
47
+ end
48
+
49
+ module JRubyFX
50
+ # If you need JavaFX, just include this module. Its sole purpose in life is to
51
+ # import all JavaFX stuff, plus a few useful Java classes (like Void)
52
+ module FXImports
53
+
54
+ # If something is missing, just java_import it in your code.
55
+ # And then ask us to put it in this list
56
+ #
57
+
58
+ # The below lines are generated by `rake reflect`. Do not edit.
59
+
60
+ java_import 'javafx.animation.Animation','javafx.animation.AnimationTimer','javafx.animation.FadeTransition','javafx.animation.FillTransition','javafx.animation.Interpolator','javafx.animation.KeyFrame','javafx.animation.KeyValue','javafx.animation.ParallelTransition','javafx.animation.PathTransition','javafx.animation.PauseTransition','javafx.animation.RotateTransition','javafx.animation.ScaleTransition','javafx.animation.SequentialTransition','javafx.animation.StrokeTransition','javafx.animation.Timeline','javafx.animation.Transition','javafx.animation.TranslateTransition','javafx.application.Platform','javafx.beans.property.SimpleBooleanProperty','javafx.beans.property.SimpleDoubleProperty','javafx.beans.property.SimpleFloatProperty','javafx.beans.property.SimpleIntegerProperty','javafx.beans.property.SimpleListProperty','javafx.beans.property.SimpleLongProperty','javafx.beans.property.SimpleMapProperty','javafx.beans.property.SimpleObjectProperty','javafx.beans.property.SimpleSetProperty','javafx.beans.property.SimpleStringProperty','javafx.beans.value.ChangeListener','javafx.collections.FXCollections','javafx.event.Event','javafx.event.ActionEvent','javafx.event.EventHandler','javafx.fxml.Initializable','javafx.fxml.LoadException','javafx.geometry.HorizontalDirection','javafx.geometry.HPos','javafx.geometry.Insets','javafx.geometry.Orientation','javafx.geometry.Pos','javafx.geometry.Rectangle2D','javafx.geometry.Side','javafx.geometry.VerticalDirection','javafx.geometry.VPos','javafx.scene.Group','javafx.scene.Node','javafx.scene.Parent','javafx.scene.Scene','javafx.scene.canvas.Canvas','javafx.scene.chart.AreaChart','javafx.scene.chart.Axis','javafx.scene.chart.BarChart','javafx.scene.chart.BubbleChart','javafx.scene.chart.CategoryAxis','javafx.scene.chart.Chart','javafx.scene.chart.LineChart','javafx.scene.chart.NumberAxis','javafx.scene.chart.PieChart','javafx.scene.chart.ScatterChart','javafx.scene.chart.StackedAreaChart','javafx.scene.chart.StackedBarChart','javafx.scene.chart.ValueAxis','javafx.scene.chart.XYChart','javafx.scene.control.Accordion','javafx.scene.control.Button','javafx.scene.control.Cell','javafx.scene.control.CheckBox','javafx.scene.control.CheckBoxTreeItem','javafx.scene.control.CheckMenuItem','javafx.scene.control.ChoiceBox','javafx.scene.control.ColorPicker','javafx.scene.control.ComboBox','javafx.scene.control.ContextMenu','javafx.scene.control.Hyperlink','javafx.scene.control.Label','javafx.scene.control.ListCell','javafx.scene.control.ListView','javafx.scene.control.Menu','javafx.scene.control.MenuBar','javafx.scene.control.MenuButton','javafx.scene.control.MenuItem','javafx.scene.control.Pagination','javafx.scene.control.PasswordField','javafx.scene.control.PopupControl','javafx.scene.control.ProgressBar','javafx.scene.control.ProgressIndicator','javafx.scene.control.RadioButton','javafx.scene.control.RadioMenuItem','javafx.scene.control.ScrollBar','javafx.scene.control.ScrollPane','javafx.scene.control.Separator','javafx.scene.control.SeparatorMenuItem','javafx.scene.control.Slider','javafx.scene.control.SplitMenuButton','javafx.scene.control.SplitPane','javafx.scene.control.Tab','javafx.scene.control.TableView','javafx.scene.control.TableCell','javafx.scene.control.TableColumn','javafx.scene.control.TabPane','javafx.scene.control.TextArea','javafx.scene.control.TextField','javafx.scene.control.TitledPane','javafx.scene.control.ToggleButton','javafx.scene.control.ToggleGroup','javafx.scene.control.ToolBar','javafx.scene.control.Tooltip','javafx.scene.control.TreeCell','javafx.scene.control.TreeItem','javafx.scene.control.TreeView','javafx.scene.control.ContentDisplay','javafx.scene.control.OverrunStyle','javafx.scene.control.SelectionMode','javafx.scene.effect.Blend','javafx.scene.effect.BlendMode','javafx.scene.effect.Bloom','javafx.scene.effect.BlurType','javafx.scene.effect.BoxBlur','javafx.scene.effect.ColorAdjust','javafx.scene.effect.ColorInput','javafx.scene.effect.DisplacementMap','javafx.scene.effect.DropShadow','javafx.scene.effect.GaussianBlur','javafx.scene.effect.Glow','javafx.scene.effect.ImageInput','javafx.scene.effect.InnerShadow','javafx.scene.effect.Lighting','javafx.scene.effect.MotionBlur','javafx.scene.effect.PerspectiveTransform','javafx.scene.effect.Reflection','javafx.scene.effect.SepiaTone','javafx.scene.effect.Shadow','javafx.scene.image.Image','javafx.scene.image.ImageView','javafx.scene.image.PixelReader','javafx.scene.image.PixelWriter','javafx.scene.input.Clipboard','javafx.scene.input.ClipboardContent','javafx.scene.input.ContextMenuEvent','javafx.scene.input.DragEvent','javafx.scene.input.GestureEvent','javafx.scene.input.InputEvent','javafx.scene.input.InputMethodEvent','javafx.scene.input.KeyCode','javafx.scene.input.KeyEvent','javafx.scene.input.Mnemonic','javafx.scene.input.MouseDragEvent','javafx.scene.input.MouseEvent','javafx.scene.input.RotateEvent','javafx.scene.input.ScrollEvent','javafx.scene.input.SwipeEvent','javafx.scene.input.TouchEvent','javafx.scene.input.TransferMode','javafx.scene.input.ZoomEvent','javafx.scene.layout.AnchorPane','javafx.scene.layout.BorderPane','javafx.scene.layout.ColumnConstraints','javafx.scene.layout.FlowPane','javafx.scene.layout.GridPane','javafx.scene.layout.HBox','javafx.scene.layout.Pane','javafx.scene.layout.Priority','javafx.scene.layout.RowConstraints','javafx.scene.layout.StackPane','javafx.scene.layout.TilePane','javafx.scene.layout.VBox','javafx.scene.media.AudioClip','javafx.scene.media.AudioEqualizer','javafx.scene.media.AudioTrack','javafx.scene.media.EqualizerBand','javafx.scene.media.Media','javafx.scene.media.MediaException','javafx.scene.media.MediaErrorEvent','javafx.scene.media.MediaMarkerEvent','javafx.scene.media.MediaPlayer','javafx.scene.media.MediaView','javafx.scene.media.VideoTrack','javafx.scene.paint.Color','javafx.scene.paint.CycleMethod','javafx.scene.paint.ImagePattern','javafx.scene.paint.LinearGradient','javafx.scene.paint.Paint','javafx.scene.paint.RadialGradient','javafx.scene.paint.Stop','javafx.scene.shape.Arc','javafx.scene.shape.ArcTo','javafx.scene.shape.ArcType','javafx.scene.shape.Circle','javafx.scene.shape.ClosePath','javafx.scene.shape.CubicCurve','javafx.scene.shape.CubicCurveTo','javafx.scene.shape.Ellipse','javafx.scene.shape.FillRule','javafx.scene.shape.HLineTo','javafx.scene.shape.Line','javafx.scene.shape.LineTo','javafx.scene.shape.MoveTo','javafx.scene.shape.Path','javafx.scene.shape.PathElement','javafx.scene.shape.Polygon','javafx.scene.shape.Polyline','javafx.scene.shape.QuadCurve','javafx.scene.shape.QuadCurveTo','javafx.scene.shape.Rectangle','javafx.scene.shape.Shape','javafx.scene.shape.StrokeLineCap','javafx.scene.shape.StrokeLineJoin','javafx.scene.shape.StrokeType','javafx.scene.shape.SVGPath','javafx.scene.shape.VLineTo','javafx.scene.text.Font','javafx.scene.text.FontPosture','javafx.scene.text.FontSmoothingType','javafx.scene.text.FontWeight','javafx.scene.text.Text','javafx.scene.text.TextAlignment','javafx.scene.text.TextBoundsType','javafx.scene.transform.Affine','javafx.scene.transform.Rotate','javafx.scene.transform.Scale','javafx.scene.transform.Shear','javafx.scene.transform.Translate','javafx.scene.web.WebView','javafx.scene.web.HTMLEditor','javafx.stage.DirectoryChooser','javafx.stage.FileChooser','javafx.stage.Modality','javafx.stage.Popup','javafx.stage.PopupWindow','javafx.stage.Screen','javafx.stage.Stage','javafx.stage.StageStyle','javafx.stage.Window','javafx.stage.WindowEvent','javafx.util.Duration'
61
+ java_import 'java.lang.Void'
62
+ end
63
+ end
64
+
@@ -15,7 +15,6 @@ See the License for the specific language governing permissions and
15
15
  limitations under the License.
16
16
  =end
17
17
  #:nodoc: all
18
- require 'jrubyfx'
19
18
 
20
19
  # Due to certain bugs in JRuby 1.7 (namely some newInstance mapping bugs), we
21
20
  # are forced to re-create the Launcher if we want a pure ruby wrapper
@@ -0,0 +1,172 @@
1
+ =begin
2
+ JRubyFX - Write JavaFX and FXML in Ruby
3
+ Copyright (C) 2013 The JRubyFX Team
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ =end
17
+
18
+ require_relative 'utils/common_utils'
19
+
20
+ # This module contains useful methods for defining JavaFX code. Include it in your
21
+ # class to use it, and the JRubyFX::FXImports. JRubyFX::Application and JRubyFX::Controller already include it.
22
+ module JRubyFX
23
+ include JRubyFX::FXImports
24
+ include JRubyFX::Utils::CommonUtils
25
+
26
+ ##
27
+ # call-seq:
28
+ # with(obj, hash) => obj
29
+ # with(obj) { block } => obj
30
+ # with(obj, hash) { block }=> obj
31
+ #
32
+ # Set properties (e.g. setters) on the passed in object plus also invoke
33
+ # any block passed against this object.
34
+ # === Examples
35
+ #
36
+ # with(grid, vgap: 2, hgap: 2) do
37
+ # set_pref_size(500, 400)
38
+ # children << location << go << view
39
+ # end
40
+ #
41
+ def with(obj, properties = {}, &block)
42
+ populate_properties(obj, properties)
43
+
44
+ if block_given?
45
+ # cache the proxy - http://wiki.jruby.org/Persistence
46
+ obj.class.__persistent__ = true if obj.class.ancestors.include? JavaProxy
47
+ obj.extend(JRubyFX)
48
+ obj.instance_eval(&block)
49
+ end
50
+
51
+ obj
52
+ end
53
+
54
+ ##
55
+ # call-seq:
56
+ # run_later { block }
57
+ #
58
+ # Convenience method so anything can safely schedule to run on JavaFX
59
+ # main thread.
60
+ def run_later(&block)
61
+ Platform.run_later &block
62
+ end
63
+
64
+ ##
65
+ # call-seq:
66
+ # build(class) => obj
67
+ # build(class, hash) => obj
68
+ # build(class) { block } => obj
69
+ # build(class, hash) { block } => obj
70
+ #
71
+ # Create "build" a new JavaFX instance with the provided class and
72
+ # set properties (e.g. setters) on that new instance plus also invoke
73
+ # any block passed against this new instance. This also can build a proc
74
+ # or lambda form in which case the return value of the block will be what
75
+ # is used to set the additional properties on.
76
+ # === Examples
77
+ #
78
+ # grid = build(GridPane, vgap: 2, hgap: 2) do
79
+ # set_pref_size(500, 400)
80
+ # children << location << go << view
81
+ # end
82
+ #
83
+ # build(proc { Foo.new }, vgap: 2, hgap: 2)
84
+ #
85
+ def build(klass, *args, &block)
86
+ args, properties = split_args_from_properties(*args)
87
+
88
+ obj = if klass.kind_of? Proc
89
+ klass.call(*args)
90
+ else
91
+ klass.new(*attempt_conversion(klass, :new, *args))
92
+ end
93
+
94
+ with(obj, properties, &block)
95
+ end
96
+
97
+ def self.included(mod)
98
+ mod.extend(JRubyFX::FXMLClassUtils)
99
+ end
100
+
101
+ module FXMLClassUtils
102
+ def fxml_raw_accessor(symbol_name, type=java::lang::String)
103
+ # TODO: RDoc
104
+ # TODO: somebody clean this up
105
+ # TODO: _reader and _writer
106
+ send(:define_method, symbol_name.id2name.snake_case + "=") do |val|
107
+ instance_variable_set("@#{symbol_name}", val)
108
+ end
109
+ send(:define_method, symbol_name.id2name.snake_case) do
110
+ instance_variable_get("@#{symbol_name}")
111
+ end
112
+ send(:define_method, symbol_name.id2name.snake_case + "GetType") do
113
+ return type.java_class
114
+ end
115
+ camel = symbol_name.id2name
116
+ camel = camel[0].upcase + camel[1..-1]
117
+ send(:define_method, "set" + camel) do |val|
118
+ instance_variable_set("@#{symbol_name}", val)
119
+ end
120
+ send(:define_method, "get" + camel) do
121
+ instance_variable_get("@#{symbol_name}")
122
+ end
123
+ send(:define_method, symbol_name.id2name + "GetType") do
124
+ return type.java_class
125
+ end
126
+ end
127
+ def fxml_accessor(symbol_name,ptype=Java::javafx.beans.property.SimpleStringProperty, type=nil)
128
+ # TODO: RDoc
129
+ # TODO: somebody clean this up
130
+ # TODO: _reader and _writer ? maybe? not?
131
+ pname = symbol_name.id2name + "Property"
132
+ unless type
133
+ type = ptype.java_class.java_instance_methods.find_all{|x|x.name == "getValue"}.map{|x|x.return_type}.find_all{|x|x != java.lang.Object.java_class}
134
+ if type.length != 1
135
+ raise "Unknown property type. Please manually supply a type or report this as a bug"
136
+ end
137
+ type = type[0]
138
+ else
139
+ type = type.java_class
140
+ end
141
+ send(:define_method, symbol_name.id2name.snake_case + "=") do |val|
142
+ send(pname).setValue val
143
+ end
144
+ send(:define_method, symbol_name.id2name.snake_case) do
145
+ send(pname).getValue
146
+ end
147
+ send(:define_method, symbol_name.id2name.snake_case + "GetType") do
148
+ return type
149
+ end
150
+ camel = symbol_name.id2name
151
+ camel = camel[0].upcase + camel[1..-1]
152
+ send(:define_method, "set" + camel) do |val|
153
+ send(pname).setValue val
154
+ end
155
+ send(:define_method, "get" + camel) do
156
+ send(pname).getValue
157
+ end
158
+ send(:define_method, symbol_name.id2name + "GetType") do
159
+ return type
160
+ end
161
+ send(:define_method, pname) do
162
+ unless instance_variable_get("@#{symbol_name}")
163
+ instance_variable_set("@#{symbol_name}", ptype.new(self, symbol_name.to_s))
164
+ end
165
+ return instance_variable_get("@#{symbol_name}")
166
+ end
167
+ add_method_signature pname, [ptype]
168
+ add_method_signature "set" + camel, [java.lang.Void, type]
169
+ add_method_signature "get" + camel, [type]
170
+ end
171
+ end
172
+ end