glimmer-cs-gladiator 0.6.1 → 0.7.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +241 -0
- data/LICENSE.txt +1 -1
- data/README.md +28 -10
- data/VERSION +1 -1
- data/glimmer-cs-gladiator.gemspec +70 -0
- data/images/glimmer-cs-gladiator-logo.png +0 -0
- data/lib/models/glimmer/gladiator/dir.rb +2 -2
- data/lib/models/glimmer/gladiator/file.rb +23 -15
- data/lib/views/glimmer/gladiator.rb +754 -510
- data/lib/views/glimmer/gladiator/text_editor.rb +115 -96
- metadata +16 -12
@@ -18,10 +18,14 @@ module Glimmer
|
|
18
18
|
APP_ROOT = ::File.expand_path('../../../..', __FILE__)
|
19
19
|
# TODO make sure COMMAND_KEY doesn't clash on Linux/Windows for CMD+CTRL shortcuts
|
20
20
|
COMMAND_KEY = OS.mac? ? :command : :ctrl
|
21
|
+
VERSION = ::File.read(::File.join(APP_ROOT, 'VERSION')).to_s.strip
|
22
|
+
LICENSE = ::File.read(::File.join(APP_ROOT, 'LICENSE.txt')).to_s.strip
|
23
|
+
ICON = ::File.expand_path(::File.join(APP_ROOT, 'images', 'glimmer-cs-gladiator-logo.png'))
|
21
24
|
|
22
25
|
class << self
|
23
26
|
attr_accessor :drag_and_drop
|
24
27
|
attr_accessor :drag
|
28
|
+
attr_accessor :startup
|
25
29
|
end
|
26
30
|
|
27
31
|
## Add options like the following to configure CustomShell by outside consumers
|
@@ -38,7 +42,7 @@ module Glimmer
|
|
38
42
|
def split_orientation=(value)
|
39
43
|
@split_orientation = value
|
40
44
|
save_config
|
41
|
-
if @loaded_config && !split_pane?
|
45
|
+
if @loaded_config && !split_pane? && !value.nil?
|
42
46
|
Gladiator.drag = true
|
43
47
|
child_path = project_dir.selected_child_path
|
44
48
|
project_dir.selected_child = nil
|
@@ -52,9 +56,11 @@ module Glimmer
|
|
52
56
|
pane_count = @tab_folder_sash_form&.children&.size
|
53
57
|
pane_count && pane_count > 1
|
54
58
|
end
|
55
|
-
|
56
|
-
attr_reader :find_text, :
|
57
|
-
attr_accessor :current_tab_item, :current_tab_folder, :current_text_editor
|
59
|
+
|
60
|
+
attr_reader :find_text, :filter_text, :rename_in_progress, :line_number_text, :file_tree, :split_orientation
|
61
|
+
attr_accessor :current_tab_item, :current_tab_folder, :current_text_editor, :tab_folder1, :tab_folder2, :maximized_pane, :maximized_editor
|
62
|
+
alias maximized_pane? maximized_pane
|
63
|
+
alias maximized_editor? maximized_editor
|
58
64
|
|
59
65
|
## Uncomment before_body block to pre-initialize variables to use in body
|
60
66
|
#
|
@@ -62,17 +68,25 @@ module Glimmer
|
|
62
68
|
before_body {
|
63
69
|
# TODO consider doing loading project files after displaying the GUI instead of holding it up before
|
64
70
|
project_dir #pre-initialize directory
|
65
|
-
at_exit do
|
71
|
+
TOPLEVEL_BINDING.receiver.send(:at_exit) do
|
66
72
|
project_dir.selected_child&.write_raw_dirty_content
|
67
73
|
end
|
68
74
|
Display.setAppName('Gladiator')
|
69
75
|
# make sure the display events are only hooked once if multiple gladiators are created
|
70
76
|
unless defined?(@@display)
|
71
77
|
@@display = display {
|
78
|
+
# TODO look into why a weird java dialog comes up on about (maybe a non-issue once packaged)
|
79
|
+
on_about {
|
80
|
+
display_about_dialog
|
81
|
+
}
|
72
82
|
on_swt_keydown { |key_event|
|
73
83
|
focused_gladiator = display.focus_control.shell&.get_data('custom_shell')
|
74
84
|
focused_gladiator.handle_display_shortcut(key_event) if !focused_gladiator.nil? && key_event.widget.shell == focused_gladiator&.swt_widget
|
75
85
|
}
|
86
|
+
on_swt_Close {
|
87
|
+
save_config
|
88
|
+
project_dir.selected_child&.write_dirty_content
|
89
|
+
}
|
76
90
|
}
|
77
91
|
end
|
78
92
|
|
@@ -88,23 +102,24 @@ module Glimmer
|
|
88
102
|
#
|
89
103
|
after_body {
|
90
104
|
observe(project_dir, 'children') do
|
91
|
-
select_tree_item unless @rename_in_progress
|
105
|
+
select_tree_item unless @rename_in_progress || Gladiator.startup
|
92
106
|
end
|
93
107
|
observe(project_dir, 'selected_child') do |selected_file|
|
94
108
|
if selected_file
|
95
109
|
if Gladiator.drag && !@tab_folder2
|
96
|
-
|
110
|
+
self.tab_folder1 = current_tab_folder
|
97
111
|
@tab_folder_sash_form.content {
|
98
|
-
|
112
|
+
self.current_tab_folder = self.tab_folder2 = tab_folder {}
|
99
113
|
@current_tab_folder.swt_widget.setData('proxy', @current_tab_folder)
|
100
114
|
}
|
115
|
+
body_root.pack_same_size
|
101
116
|
end
|
102
|
-
select_tree_item unless @rename_in_progress
|
117
|
+
select_tree_item unless @rename_in_progress || Gladiator.startup
|
103
118
|
found_tab_item = selected_tab_item
|
104
119
|
if found_tab_item
|
105
120
|
@current_tab_folder.swt_widget.setSelection(found_tab_item)
|
106
121
|
@current_tab_item = found_tab_item.getData('proxy')
|
107
|
-
@current_text_editor = found_tab_item.getData('text_editor')
|
122
|
+
@current_text_editor = found_tab_item.getData('text_editor') unless found_tab_item.getData('text_editor').nil?
|
108
123
|
@current_tab_folder.swt_widget.setData('selected_tab_item', @current_tab_item)
|
109
124
|
elsif selected_file
|
110
125
|
@current_tab_folder.content {
|
@@ -114,37 +129,42 @@ module Glimmer
|
|
114
129
|
margin_width 0
|
115
130
|
margin_height 0
|
116
131
|
}
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
132
|
+
tab_folder = nil
|
133
|
+
the_text_editor = nil
|
134
|
+
the_tab_item.content {
|
135
|
+
@current_text_editor = the_text_editor = text_editor(project_dir: project_dir, file: selected_file)
|
136
|
+
@current_tab_folder.swt_widget.setData('selected_tab_item', @current_tab_item)
|
137
|
+
the_tab_item.swt_tab_item.setData('text_editor', @current_text_editor)
|
138
|
+
@current_text_editor.text_proxy.content {
|
139
|
+
on_focus_gained {
|
140
|
+
tab_folder = the_text_editor.swt_widget.getParent.getParent
|
141
|
+
self.current_tab_folder = tab_folder.getData('proxy')
|
142
|
+
@current_tab_item = the_tab_item
|
143
|
+
@current_text_editor = the_text_editor
|
144
|
+
@current_tab_folder.swt_widget.setData('selected_tab_item', @current_tab_item)
|
145
|
+
@current_tab_folder.swt_widget.setSelection(@current_tab_item.swt_tab_item)
|
146
|
+
project_dir.selected_child = @current_tab_item.swt_tab_item.getData('file')
|
147
|
+
}
|
128
148
|
}
|
129
149
|
}
|
150
|
+
|
130
151
|
on_swt_show {
|
131
152
|
@current_tab_item = the_tab_item
|
132
153
|
@current_text_editor = the_text_editor
|
133
|
-
|
154
|
+
self.current_tab_folder = @current_tab_item.swt_widget.getParent.getData('proxy')
|
134
155
|
@current_tab_folder.swt_widget.setData('selected_tab_item', @current_tab_item)
|
135
156
|
@current_tab_folder.swt_widget.setSelection(@current_tab_item.swt_tab_item)
|
136
157
|
project_dir.selected_child = selected_file
|
137
|
-
|
138
|
-
@current_text_editor&.text_widget&.setFocus
|
139
|
-
}
|
158
|
+
@current_text_editor&.text_widget&.setFocus
|
140
159
|
}
|
141
160
|
on_widget_disposed {
|
142
|
-
|
161
|
+
project_dir.selected_child&.write_dirty_content
|
162
|
+
tab_item_file = the_tab_item.swt_tab_item.get_data('file')
|
163
|
+
tab_item_file.close unless [@tab_folder1, @tab_folder2].compact.map(&:items).flatten(1).detect {|ti| ti.get_data('file') == tab_item_file}
|
143
164
|
}
|
144
165
|
}
|
145
166
|
@current_tab_item.swt_tab_item.setData('file_path', selected_file.path)
|
146
167
|
@current_tab_item.swt_tab_item.setData('file', selected_file)
|
147
|
-
@current_tab_item.swt_tab_item.setData('text_editor', @current_text_editor)
|
148
168
|
@current_tab_item.swt_tab_item.setData('proxy', @current_tab_item)
|
149
169
|
}
|
150
170
|
@current_tab_folder.swt_widget.setSelection(@current_tab_item.swt_tab_item)
|
@@ -153,6 +173,22 @@ module Glimmer
|
|
153
173
|
@current_text_editor&.text_widget&.setFocus
|
154
174
|
end
|
155
175
|
end
|
176
|
+
observe(self, 'maximized_pane') do
|
177
|
+
if tab_folder2
|
178
|
+
@tab_folder_sash_form.maximized_control = (current_tab_folder.swt_widget if maximized_pane?)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
observe(self, 'maximized_editor') do
|
182
|
+
@file_area_and_editor_area_sash_form.maximized_control = (@editor_area_composite.swt_widget if maximized_editor?)
|
183
|
+
if !maximized_editor?
|
184
|
+
expand_navigation_expand_bar_height
|
185
|
+
else
|
186
|
+
collapse_navigation_expand_bar_height
|
187
|
+
end
|
188
|
+
@navigation_expand_item.swt_expand_item.set_expanded !maximized_editor?
|
189
|
+
body_root.pack_same_size
|
190
|
+
async_exec { body_root.pack_same_size }
|
191
|
+
end
|
156
192
|
observe(project_dir, 'selected_child') do
|
157
193
|
save_config
|
158
194
|
end
|
@@ -170,19 +206,30 @@ module Glimmer
|
|
170
206
|
#
|
171
207
|
body {
|
172
208
|
shell {
|
173
|
-
grid_layout(2, false)
|
174
|
-
|
175
209
|
text "Gladiator - #{::File.expand_path(project_dir.path)}"
|
176
210
|
minimum_size 520, 250
|
177
211
|
size 1440, 900
|
212
|
+
image ICON
|
178
213
|
|
179
214
|
on_swt_show {
|
180
215
|
swt_widget.setSize(@config[:shell_width], @config[:shell_height]) if @config[:shell_width] && @config[:shell_height]
|
181
216
|
swt_widget.setLocation(@config[:shell_x], @config[:shell_y]) if @config[:shell_x] && @config[:shell_y]
|
182
217
|
@loaded_config = true
|
183
218
|
}
|
184
|
-
|
219
|
+
|
220
|
+
on_shell_closed {
|
221
|
+
save_config
|
185
222
|
project_dir.selected_child&.write_dirty_content
|
223
|
+
if @tab_folder2
|
224
|
+
current_tab_folder.swt_widget.getItems.each do |tab_item|
|
225
|
+
tab_item.getData('proxy')&.dispose
|
226
|
+
end
|
227
|
+
close_tab_folder
|
228
|
+
end
|
229
|
+
current_tab_folder.swt_widget.getItems.each do |tab_item|
|
230
|
+
tab_item.getData('proxy')&.dispose
|
231
|
+
end
|
232
|
+
body_root.close unless current_tab_folder.swt_widget.getItems.empty?
|
186
233
|
}
|
187
234
|
on_widget_disposed {
|
188
235
|
project_dir.selected_child&.write_dirty_content
|
@@ -194,46 +241,109 @@ module Glimmer
|
|
194
241
|
save_config
|
195
242
|
}
|
196
243
|
on_shell_deactivated {
|
197
|
-
|
244
|
+
project_dir.selected_child&.write_dirty_content
|
198
245
|
}
|
199
246
|
|
247
|
+
if OS.mac?
|
248
|
+
display.swt_display.system_menu.items.find {|mi| mi.id == swt(:id_quit)}.add_selection_listener {
|
249
|
+
save_config
|
250
|
+
project_dir.selected_child&.write_dirty_content
|
251
|
+
display.swt_display.shells.each(&:close)
|
252
|
+
}
|
253
|
+
end
|
254
|
+
|
200
255
|
menu_bar {
|
201
256
|
menu {
|
202
257
|
text '&File'
|
203
258
|
|
204
259
|
menu_item {
|
205
260
|
text 'New &Scratchpad'
|
261
|
+
accelerator COMMAND_KEY, :shift, :s
|
206
262
|
on_widget_selected {
|
207
|
-
|
208
|
-
project_dir.selected_child_path = ''
|
209
|
-
rescue => e
|
210
|
-
puts e.full_message
|
211
|
-
end
|
263
|
+
project_dir.selected_child_path = ''
|
212
264
|
}
|
213
265
|
}
|
214
|
-
menu_item(:separator)
|
215
266
|
menu_item {
|
216
267
|
text 'Open &Project...'
|
268
|
+
accelerator COMMAND_KEY, :o
|
217
269
|
on_widget_selected {
|
218
270
|
open_project
|
219
271
|
}
|
220
272
|
}
|
273
|
+
menu_item(:separator)
|
274
|
+
menu_item {
|
275
|
+
text '&Quit Project'
|
276
|
+
accelerator COMMAND_KEY, :alt, :q
|
277
|
+
on_widget_selected {
|
278
|
+
save_config
|
279
|
+
project_dir.selected_child&.write_dirty_content
|
280
|
+
body_root.close
|
281
|
+
}
|
282
|
+
}
|
221
283
|
}
|
222
284
|
menu {
|
223
285
|
text '&View'
|
224
286
|
menu {
|
225
|
-
text '&Split'
|
226
|
-
|
227
|
-
text '&
|
228
|
-
|
229
|
-
|
230
|
-
|
287
|
+
text '&Split Pane'
|
288
|
+
menu { |menu_proxy|
|
289
|
+
text '&Orientation'
|
290
|
+
menu_item(:radio) {
|
291
|
+
text '&Horizontal'
|
292
|
+
selection bind(self, :split_orientation,
|
293
|
+
on_read: ->(o) { split_pane? && o == swt(:horizontal) },
|
294
|
+
on_write: ->(b) { b.nil? ? nil : (b ? swt(:horizontal) : swt(:vertical)) })
|
295
|
+
}
|
296
|
+
menu_item(:radio) {
|
297
|
+
text '&Vertical'
|
298
|
+
selection bind(self, :split_orientation,
|
299
|
+
on_read: ->(o) { split_pane? && o == swt(:vertical) },
|
300
|
+
on_write: ->(b) { b.nil? ? nil : (b ? swt(:vertical) : swt(:horizontal)) })
|
301
|
+
}
|
302
|
+
}
|
303
|
+
menu_item(:check) {
|
304
|
+
text '&Maximize Pane'
|
305
|
+
enabled bind(self, :tab_folder2)
|
306
|
+
accelerator COMMAND_KEY, :shift, :m
|
307
|
+
selection bind(self, :maximized_pane)
|
308
|
+
}
|
309
|
+
menu_item {
|
310
|
+
text 'Reset &Panes'
|
311
|
+
enabled bind(self, :tab_folder2)
|
312
|
+
accelerator COMMAND_KEY, :shift, :p
|
313
|
+
on_widget_selected {
|
314
|
+
if tab_folder2
|
315
|
+
self.maximized_pane = false
|
316
|
+
@tab_folder_sash_form.weights = [1, 1]
|
317
|
+
end
|
318
|
+
}
|
231
319
|
}
|
232
|
-
menu_item
|
233
|
-
text '&
|
234
|
-
|
235
|
-
|
236
|
-
|
320
|
+
menu_item {
|
321
|
+
text '&Unsplit'
|
322
|
+
enabled bind(self, :tab_folder2)
|
323
|
+
accelerator COMMAND_KEY, :shift, :u
|
324
|
+
on_widget_selected {
|
325
|
+
if tab_folder2
|
326
|
+
self.maximized_pane = false
|
327
|
+
navigate_to_next_tab_folder if current_tab_folder != tab_folder2
|
328
|
+
close_all_tabs(tab_folder2)
|
329
|
+
self.split_orientation = nil
|
330
|
+
body_root.pack_same_size
|
331
|
+
end
|
332
|
+
}
|
333
|
+
}
|
334
|
+
}
|
335
|
+
menu_item(:check) {
|
336
|
+
text '&Maximize Editor'
|
337
|
+
accelerator COMMAND_KEY, :ctrl, :m
|
338
|
+
selection bind(self, :maximized_editor)
|
339
|
+
}
|
340
|
+
menu_item {
|
341
|
+
text '&Reset All'
|
342
|
+
accelerator COMMAND_KEY, :ctrl, :r
|
343
|
+
on_widget_selected {
|
344
|
+
self.maximized_editor = false
|
345
|
+
@file_area_and_editor_area_sash_form.weights = [1, 5]
|
346
|
+
@side_bar_sash_form.weights = [1, 1]
|
237
347
|
}
|
238
348
|
}
|
239
349
|
}
|
@@ -254,468 +364,480 @@ module Glimmer
|
|
254
364
|
# }
|
255
365
|
menu_item {
|
256
366
|
text '&Ruby'
|
367
|
+
accelerator COMMAND_KEY, :shift, :r
|
368
|
+
on_widget_selected {
|
369
|
+
begin
|
370
|
+
project_dir.selected_child.run
|
371
|
+
rescue Exception => e
|
372
|
+
dialog {
|
373
|
+
text 'Run - Ruby - Error Encountered!'
|
374
|
+
label {
|
375
|
+
text e.full_message
|
376
|
+
}
|
377
|
+
}.open
|
378
|
+
end
|
379
|
+
}
|
380
|
+
}
|
381
|
+
}
|
382
|
+
menu {
|
383
|
+
text '&Help'
|
384
|
+
menu_item {
|
385
|
+
text '&About'
|
386
|
+
accelerator COMMAND_KEY, :shift, :a
|
257
387
|
on_widget_selected {
|
258
|
-
|
388
|
+
display_about_dialog
|
259
389
|
}
|
260
390
|
}
|
261
391
|
}
|
262
392
|
}
|
393
|
+
|
394
|
+
@file_area_and_editor_area_sash_form = sash_form(:horizontal) {
|
395
|
+
weights 1, 5
|
263
396
|
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
}
|
269
|
-
|
270
|
-
layout_data(:fill, :fill, false, true) {
|
271
|
-
width_hint 300
|
272
|
-
}
|
273
|
-
@side_bar_sash_form = sash_form(:vertical) {
|
274
|
-
layout_data(:fill, :fill, true, true)
|
275
|
-
sash_width 4
|
276
|
-
|
277
|
-
resize_expand_items = lambda { |event=nil|
|
278
|
-
@file_lookup_expand_item&.swt_expand_item&.height = @file_lookup_expand_bar.size.y - @file_lookup_expand_item.swt_expand_item.header_height
|
279
|
-
@file_explorer_expand_item&.swt_expand_item&.height = @file_explorer_expand_bar.size.y - @file_explorer_expand_item.swt_expand_item.header_height
|
397
|
+
composite {
|
398
|
+
grid_layout(1, false) {
|
399
|
+
margin_width 0
|
400
|
+
margin_height 0
|
280
401
|
}
|
281
402
|
|
282
|
-
@
|
283
|
-
layout_data
|
284
|
-
|
285
|
-
foreground @default_foreground
|
403
|
+
@side_bar_sash_form = sash_form(:vertical) {
|
404
|
+
layout_data(:fill, :fill, true, true)
|
405
|
+
sash_width 4
|
286
406
|
|
287
|
-
|
288
|
-
@file_lookup_expand_item
|
407
|
+
resize_expand_items = lambda { |event=nil|
|
408
|
+
@file_lookup_expand_item&.swt_expand_item&.height = @file_lookup_expand_bar.size.y - @file_lookup_expand_item.swt_expand_item.header_height
|
409
|
+
@file_explorer_expand_item&.swt_expand_item&.height = @file_explorer_expand_bar.size.y - @file_explorer_expand_item.swt_expand_item.header_height
|
289
410
|
}
|
290
411
|
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
412
|
+
@file_lookup_expand_bar = expand_bar {
|
413
|
+
layout_data :fill, :fill, true, true
|
414
|
+
font height: 17, style: :bold
|
415
|
+
foreground @default_foreground
|
416
|
+
|
417
|
+
on_swt_show {
|
418
|
+
@file_lookup_expand_item.swt_expand_item.height = @file_lookup_expand_bar.size.y - @file_lookup_expand_item.swt_expand_item.header_height
|
297
419
|
}
|
298
|
-
text 'File Lookup'
|
299
|
-
height display.bounds.height
|
300
420
|
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
key_event.keyCode == swt(:arrow_up) ||
|
308
|
-
key_event.keyCode == swt(:arrow_down)
|
309
|
-
@file_lookup_list.swt_widget.select(0) if @file_lookup_list.swt_widget.getSelectionIndex() == -1
|
310
|
-
@file_lookup_list.swt_widget.setFocus
|
311
|
-
end
|
421
|
+
on_swt_Resize(&resize_expand_items)
|
422
|
+
|
423
|
+
@file_lookup_expand_item = expand_item {
|
424
|
+
grid_layout {
|
425
|
+
margin_width 0
|
426
|
+
margin_height 0
|
312
427
|
}
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
428
|
+
text 'File Lookup'
|
429
|
+
height display.bounds.height
|
430
|
+
|
431
|
+
@filter_text = text {
|
432
|
+
layout_data :fill, :center, true, false
|
433
|
+
text bind(project_dir, 'filter')
|
434
|
+
on_key_pressed { |key_event|
|
435
|
+
if key_event.keyCode == swt(:tab) ||
|
436
|
+
key_event.keyCode == swt(:cr) ||
|
437
|
+
key_event.keyCode == swt(:arrow_up) ||
|
438
|
+
key_event.keyCode == swt(:arrow_down)
|
439
|
+
@file_lookup_list.swt_widget.select(0) if @file_lookup_list.swt_widget.getSelectionIndex() == -1
|
440
|
+
@file_lookup_list.swt_widget.setFocus
|
441
|
+
end
|
442
|
+
}
|
322
443
|
}
|
323
|
-
|
324
|
-
|
444
|
+
|
445
|
+
@file_lookup_list = list(:border, :h_scroll, :v_scroll) {
|
446
|
+
layout_data :fill, :fill, true, true
|
447
|
+
#visible bind(self, 'project_dir.filter') {|f| !!f}
|
448
|
+
selection bind(project_dir, :filtered_path)
|
449
|
+
foreground @default_foreground
|
450
|
+
on_mouse_up {
|
325
451
|
project_dir.selected_child_path = @file_lookup_list.swt_widget.getSelection.first
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
452
|
+
}
|
453
|
+
on_key_pressed { |key_event|
|
454
|
+
if Glimmer::SWT::SWTProxy.include?(key_event.keyCode, :cr)
|
455
|
+
project_dir.selected_child_path = @file_lookup_list.swt_widget.getSelection.first
|
456
|
+
@current_text_editor&.text_widget&.setFocus
|
457
|
+
end
|
458
|
+
}
|
459
|
+
drag_source(DND::DROP_COPY) {
|
460
|
+
transfer [TextTransfer.getInstance].to_java(Transfer)
|
461
|
+
on_drag_set_data { |event|
|
462
|
+
Gladiator.drag = true
|
463
|
+
list = event.widget.getControl
|
464
|
+
event.data = list.getSelection.first
|
465
|
+
}
|
335
466
|
}
|
336
467
|
}
|
337
468
|
}
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
}
|
349
|
-
|
350
|
-
on_item_expanded {
|
351
|
-
@file_lookup_expand_item.swt_expand_item.height = @file_lookup_expand_item_height if @file_lookup_expand_item_height
|
352
|
-
@side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
|
353
|
-
}
|
354
|
-
|
355
|
-
}
|
356
|
-
|
357
|
-
@file_explorer_expand_bar = expand_bar {
|
358
|
-
layout_data :fill, :fill, true, true
|
359
|
-
font height: 17, style: :bold
|
360
|
-
foreground @default_foreground
|
469
|
+
|
470
|
+
on_item_collapsed { |event|
|
471
|
+
if @file_explorer_expand_item.swt_expand_item.get_expanded
|
472
|
+
@file_lookup_expand_item_height = @file_lookup_expand_item.swt_expand_item.height
|
473
|
+
@file_lookup_expand_item.swt_expand_item.height = 0
|
474
|
+
@file_lookup_expand_bar_height = @file_lookup_expand_bar.swt_widget.size.y
|
475
|
+
@file_explorer_expand_bar_height = @file_explorer_expand_bar.swt_widget.size.y
|
476
|
+
@side_bar_sash_form.weights = [@file_lookup_expand_item.swt_expand_item.header_height, @file_lookup_expand_bar_height + @file_explorer_expand_bar_height - @file_lookup_expand_item.swt_expand_item.header_height]
|
477
|
+
end
|
478
|
+
}
|
361
479
|
|
362
|
-
|
363
|
-
|
480
|
+
on_item_expanded {
|
481
|
+
@file_lookup_expand_item.swt_expand_item.height = @file_lookup_expand_item_height if @file_lookup_expand_item_height
|
482
|
+
@side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
|
483
|
+
}
|
484
|
+
|
364
485
|
}
|
365
486
|
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
487
|
+
@file_explorer_expand_bar = expand_bar {
|
488
|
+
layout_data :fill, :fill, true, true
|
489
|
+
font height: 17, style: :bold
|
490
|
+
foreground @default_foreground
|
491
|
+
|
492
|
+
on_swt_show {
|
493
|
+
@file_explorer_expand_item.swt_expand_item.height = @file_explorer_expand_bar.size.y - @file_explorer_expand_item.swt_expand_item.header_height
|
372
494
|
}
|
373
|
-
text 'File Explorer'
|
374
|
-
height display.bounds.height
|
375
495
|
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
transfer [TextTransfer.getInstance].to_java(Transfer)
|
383
|
-
on_drag_set_data { |event|
|
384
|
-
Gladiator.drag = true
|
385
|
-
tree = event.widget.getControl
|
386
|
-
tree_item = tree.getSelection.first
|
387
|
-
event.data = tree_item.getData.path
|
388
|
-
}
|
496
|
+
on_swt_Resize(&resize_expand_items)
|
497
|
+
|
498
|
+
@file_explorer_expand_item = expand_item {
|
499
|
+
grid_layout {
|
500
|
+
margin_width 0
|
501
|
+
margin_height 0
|
389
502
|
}
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
503
|
+
text 'File Explorer'
|
504
|
+
height display.bounds.height
|
505
|
+
|
506
|
+
@file_tree = tree(:virtual, :border, :h_scroll, :v_scroll) {
|
507
|
+
layout_data :fill, :fill, true, true
|
508
|
+
#visible bind(self, 'project_dir.filter') {|f| !f}
|
509
|
+
items bind(self, :project_dir), tree_properties(children: :children, text: :name)
|
510
|
+
foreground @default_foreground
|
511
|
+
drag_source(DND::DROP_COPY) {
|
512
|
+
transfer [TextTransfer.getInstance].to_java(Transfer)
|
513
|
+
on_drag_set_data { |event|
|
514
|
+
Gladiator.drag = true
|
515
|
+
tree = event.widget.getControl
|
516
|
+
tree_item = tree.getSelection.first
|
517
|
+
event.data = tree_item.getData.path
|
395
518
|
}
|
396
519
|
}
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
520
|
+
menu {
|
521
|
+
@open_menu_item = menu_item {
|
522
|
+
text 'Open'
|
523
|
+
on_widget_selected {
|
524
|
+
project_dir.selected_child_path = extract_tree_item_path(@file_tree.swt_widget.getSelection.first)
|
525
|
+
}
|
403
526
|
}
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
527
|
+
menu_item(:separator)
|
528
|
+
menu_item {
|
529
|
+
text 'Delete'
|
530
|
+
on_widget_selected {
|
531
|
+
tree_item = @file_tree.swt_widget.getSelection.first
|
532
|
+
delete_tree_item(tree_item)
|
533
|
+
}
|
409
534
|
}
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
535
|
+
menu_item {
|
536
|
+
text 'Refresh'
|
537
|
+
on_widget_selected {
|
538
|
+
project_dir.refresh
|
539
|
+
}
|
415
540
|
}
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
541
|
+
menu_item {
|
542
|
+
text 'Rename'
|
543
|
+
on_widget_selected {
|
544
|
+
rename_selected_tree_item
|
545
|
+
}
|
421
546
|
}
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
547
|
+
menu_item {
|
548
|
+
text 'New Directory'
|
549
|
+
on_widget_selected {
|
550
|
+
add_new_directory_to_selected_tree_item
|
551
|
+
}
|
552
|
+
}
|
553
|
+
menu_item {
|
554
|
+
text 'New File'
|
555
|
+
on_widget_selected {
|
556
|
+
add_new_file_to_selected_tree_item
|
557
|
+
}
|
427
558
|
}
|
428
559
|
}
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
560
|
+
on_swt_menudetect { |event|
|
561
|
+
path = extract_tree_item_path(@file_tree.swt_widget.getSelection.first)
|
562
|
+
@open_menu_item.swt_widget.setEnabled(!::Dir.exist?(path)) if path
|
563
|
+
}
|
564
|
+
on_mouse_up {
|
565
|
+
if Gladiator.drag_and_drop
|
566
|
+
Gladiator.drag_and_drop = false
|
567
|
+
else
|
568
|
+
project_dir.selected_child_path = extract_tree_item_path(@file_tree.swt_widget.getSelection&.first)
|
569
|
+
@current_text_editor&.text_widget&.setFocus
|
570
|
+
end
|
571
|
+
}
|
572
|
+
on_key_pressed { |key_event|
|
573
|
+
if Glimmer::SWT::SWTProxy.include?(key_event.keyCode, :cr)
|
574
|
+
project_dir.selected_child_path = extract_tree_item_path(@file_tree.swt_widget.getSelection&.first)
|
575
|
+
@current_text_editor&.text_widget&.setFocus
|
576
|
+
end
|
577
|
+
}
|
578
|
+
on_paint_control {
|
579
|
+
root_item = @file_tree.swt_widget.getItems.first
|
580
|
+
if root_item && !root_item.getExpanded
|
581
|
+
root_item.setExpanded(true)
|
582
|
+
end
|
583
|
+
}
|
453
584
|
}
|
454
585
|
}
|
455
|
-
|
586
|
+
|
587
|
+
on_item_collapsed { |event|
|
588
|
+
if @file_lookup_expand_item.swt_expand_item.get_expanded
|
589
|
+
@file_explorer_expand_item_height = @file_explorer_expand_item.swt_expand_item.height
|
590
|
+
@file_explorer_expand_item.swt_expand_item.height = 0
|
591
|
+
@file_explorer_expand_bar_height = @file_explorer_expand_bar.swt_widget.size.y
|
592
|
+
@file_lookup_expand_bar_height = @file_lookup_expand_bar.swt_widget.size.y
|
593
|
+
@side_bar_sash_form.weights = [@file_explorer_expand_bar_height + @file_explorer_expand_bar_height - @file_explorer_expand_item.swt_expand_item.header_height, @file_explorer_expand_item.swt_expand_item.header_height]
|
594
|
+
end
|
595
|
+
}
|
456
596
|
|
457
|
-
|
458
|
-
|
459
|
-
@
|
460
|
-
|
461
|
-
|
462
|
-
@file_lookup_expand_bar_height = @file_lookup_expand_bar.swt_widget.size.y
|
463
|
-
@side_bar_sash_form.weights = [@file_explorer_expand_bar_height + @file_explorer_expand_bar_height - @file_explorer_expand_item.swt_expand_item.header_height, @file_explorer_expand_item.swt_expand_item.header_height]
|
464
|
-
end
|
465
|
-
}
|
466
|
-
|
467
|
-
on_item_expanded {
|
468
|
-
@file_explorer_expand_item.swt_expand_item.height = @file_explorer_expand_item_height if @file_explorer_expand_item_height
|
469
|
-
@side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
|
597
|
+
on_item_expanded {
|
598
|
+
@file_explorer_expand_item.swt_expand_item.height = @file_explorer_expand_item_height if @file_explorer_expand_item_height
|
599
|
+
@side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
|
600
|
+
}
|
601
|
+
|
470
602
|
}
|
471
|
-
|
603
|
+
|
472
604
|
}
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
@file_tree_editor.minimumHeight = 20;
|
481
|
-
|
482
|
-
}
|
483
|
-
|
484
|
-
composite {
|
485
|
-
grid_layout(1, false) {
|
486
|
-
margin_width 0
|
487
|
-
margin_height 0
|
605
|
+
|
606
|
+
# TODO see if you could replace some of this with Glimmer DSL/API syntax
|
607
|
+
@file_tree_editor = TreeEditor.new(@file_tree.swt_widget);
|
608
|
+
@file_tree_editor.horizontalAlignment = swt(:left);
|
609
|
+
@file_tree_editor.grabHorizontal = true;
|
610
|
+
@file_tree_editor.minimumHeight = 20;
|
611
|
+
|
488
612
|
}
|
489
|
-
layout_data :fill, :fill, true, true
|
490
613
|
|
491
|
-
@
|
492
|
-
|
493
|
-
|
494
|
-
|
614
|
+
@editor_area_composite = composite {
|
615
|
+
grid_layout(1, false) {
|
616
|
+
margin_width 0
|
617
|
+
margin_height 0
|
618
|
+
}
|
495
619
|
|
496
|
-
@
|
497
|
-
|
498
|
-
height
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
stat_font = {name: 'Consolas', height: OS.mac? ? 15 : 12}
|
505
|
-
|
506
|
-
# row 1
|
507
|
-
|
508
|
-
label {
|
509
|
-
layout_data(:left, :center, false, false)
|
510
|
-
text 'File:'
|
511
|
-
foreground @default_foreground
|
512
|
-
}
|
620
|
+
@navigation_expand_bar = expand_bar {
|
621
|
+
layout_data :fill, :top, true, false
|
622
|
+
font height: 17, style: :bold
|
623
|
+
foreground @default_foreground
|
624
|
+
|
625
|
+
@navigation_expand_item = expand_item {
|
626
|
+
text 'Navigation'
|
627
|
+
height 115
|
513
628
|
|
514
|
-
|
515
|
-
|
516
|
-
horizontal_span 2
|
629
|
+
grid_layout(5, false) {
|
630
|
+
margin_right 5
|
517
631
|
}
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
632
|
+
|
633
|
+
stat_font = {name: 'Consolas', height: OS.mac? ? 15 : 12}
|
634
|
+
|
635
|
+
# row 1
|
636
|
+
|
637
|
+
label {
|
638
|
+
layout_data(:left, :center, false, false)
|
639
|
+
text 'File:'
|
640
|
+
foreground @default_foreground
|
525
641
|
}
|
526
|
-
|
527
|
-
|
642
|
+
|
643
|
+
@file_path_label = styled_text(:none) {
|
644
|
+
layout_data(:fill, :center, true, false) {
|
645
|
+
horizontal_span 2
|
646
|
+
}
|
647
|
+
background color(:widget_background)
|
648
|
+
foreground @default_foreground
|
649
|
+
editable false
|
650
|
+
caret nil
|
651
|
+
text bind(project_dir, 'selected_child.path')
|
652
|
+
on_mouse_up {
|
653
|
+
@file_path_label.swt_widget.selectAll
|
654
|
+
}
|
655
|
+
on_focus_lost {
|
656
|
+
@file_path_label.swt_widget.setSelection(0, 0)
|
657
|
+
}
|
528
658
|
}
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
foreground @default_foreground
|
535
|
-
}
|
536
|
-
label(:right) {
|
537
|
-
layout_data(:fill, :center, true, false)
|
538
|
-
text bind(project_dir, 'selected_child.caret_position')
|
539
|
-
foreground @default_foreground
|
540
|
-
font stat_font
|
541
|
-
}
|
542
|
-
|
543
|
-
# row 2
|
544
|
-
|
545
|
-
label {
|
546
|
-
layout_data(:left, :center, false, false)
|
547
|
-
text 'Line:'
|
548
|
-
foreground @default_foreground
|
549
|
-
}
|
550
|
-
@line_number_text = text {
|
551
|
-
layout_data(:fill, :center, true, false) {
|
552
|
-
minimum_width 400
|
659
|
+
|
660
|
+
label {
|
661
|
+
layout_data(:left, :center, false, false)
|
662
|
+
text 'Caret Position:'
|
663
|
+
foreground @default_foreground
|
553
664
|
}
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
@current_text_editor&.text_widget&.setFocus
|
560
|
-
end
|
665
|
+
label(:right) {
|
666
|
+
layout_data(:fill, :center, true, false)
|
667
|
+
text bind(project_dir, 'selected_child.caret_position')
|
668
|
+
foreground @default_foreground
|
669
|
+
font stat_font
|
561
670
|
}
|
562
|
-
|
563
|
-
|
671
|
+
|
672
|
+
# row 2
|
673
|
+
|
674
|
+
label {
|
675
|
+
layout_data(:left, :center, false, false)
|
676
|
+
text 'Line:'
|
677
|
+
foreground @default_foreground
|
564
678
|
}
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
# row 3
|
581
|
-
|
582
|
-
label {
|
583
|
-
layout_data(:left, :center, false, false)
|
584
|
-
text 'Find:'
|
585
|
-
foreground @default_foreground
|
586
|
-
}
|
587
|
-
@find_text = text {
|
588
|
-
layout_data(:fill, :center, true, false) {
|
589
|
-
minimum_width 400
|
679
|
+
@line_number_text = text {
|
680
|
+
layout_data(:fill, :center, true, false) {
|
681
|
+
minimum_width 400
|
682
|
+
}
|
683
|
+
text bind(project_dir, 'selected_child.line_number', on_read: :to_s, on_write: :to_i)
|
684
|
+
foreground @default_foreground
|
685
|
+
font stat_font
|
686
|
+
on_key_pressed { |key_event|
|
687
|
+
if key_event.keyCode == swt(:cr)
|
688
|
+
@current_text_editor&.text_widget&.setFocus
|
689
|
+
end
|
690
|
+
}
|
691
|
+
on_verify_text { |event|
|
692
|
+
event.doit = !event.text.match(/^\d*$/).to_a.empty?
|
693
|
+
}
|
590
694
|
}
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
project_dir.selected_child&.find_next
|
598
|
-
end
|
599
|
-
if key_event.keyCode == swt(:cr)
|
600
|
-
project_dir.selected_child&.find_next
|
601
|
-
end
|
695
|
+
label # filler
|
696
|
+
|
697
|
+
label {
|
698
|
+
layout_data(:left, :center, false, false)
|
699
|
+
text 'Line Position:'
|
700
|
+
foreground @default_foreground
|
602
701
|
}
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
margin_height 0
|
702
|
+
label(:right) {
|
703
|
+
layout_data(:fill, :center, true, false)
|
704
|
+
text bind(project_dir, 'selected_child.line_position')
|
705
|
+
foreground @default_foreground
|
706
|
+
font stat_font
|
609
707
|
}
|
610
|
-
|
611
|
-
|
708
|
+
|
709
|
+
# row 3
|
710
|
+
|
711
|
+
label {
|
712
|
+
layout_data(:left, :center, false, false)
|
713
|
+
text 'Find:'
|
714
|
+
foreground @default_foreground
|
715
|
+
}
|
716
|
+
@find_text = text {
|
717
|
+
layout_data(:fill, :center, true, false) {
|
718
|
+
minimum_width 400
|
719
|
+
}
|
720
|
+
text bind(project_dir, 'selected_child.find_text')
|
721
|
+
foreground @default_foreground
|
722
|
+
font stat_font
|
612
723
|
on_key_pressed { |key_event|
|
724
|
+
if key_event.stateMask == swt(COMMAND_KEY) && key_event.keyCode == swt(:cr)
|
725
|
+
project_dir.selected_child.case_sensitive = !project_dir.selected_child.case_sensitive
|
726
|
+
project_dir.selected_child&.find_next
|
727
|
+
end
|
613
728
|
if key_event.keyCode == swt(:cr)
|
614
729
|
project_dir.selected_child&.find_next
|
615
730
|
end
|
616
731
|
}
|
617
732
|
}
|
733
|
+
composite {
|
734
|
+
layout_data(:left, :center, true, false)
|
735
|
+
row_layout {
|
736
|
+
margin_width 0
|
737
|
+
margin_height 0
|
738
|
+
}
|
739
|
+
button(:check) {
|
740
|
+
selection bind(project_dir, 'selected_child.case_sensitive')
|
741
|
+
on_key_pressed { |key_event|
|
742
|
+
if key_event.keyCode == swt(:cr)
|
743
|
+
project_dir.selected_child&.find_next
|
744
|
+
end
|
745
|
+
}
|
746
|
+
}
|
747
|
+
label {
|
748
|
+
text 'Case-sensitive'
|
749
|
+
foreground @default_foreground
|
750
|
+
}
|
751
|
+
}
|
752
|
+
|
618
753
|
label {
|
619
|
-
|
754
|
+
layout_data(:left, :center, false, false)
|
755
|
+
text 'Selection Count:'
|
620
756
|
foreground @default_foreground
|
621
757
|
}
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
foreground @default_foreground
|
628
|
-
}
|
629
|
-
label(:right) {
|
630
|
-
layout_data(:fill, :center, true, false)
|
631
|
-
text bind(project_dir, 'selected_child.selection_count')
|
632
|
-
foreground @default_foreground
|
633
|
-
font stat_font
|
634
|
-
}
|
635
|
-
|
636
|
-
# row 4
|
637
|
-
|
638
|
-
label {
|
639
|
-
layout_data(:left, :center, false, false)
|
640
|
-
text 'Replace:'
|
641
|
-
foreground @default_foreground
|
642
|
-
}
|
643
|
-
@replace_text = text {
|
644
|
-
layout_data(:fill, :center, true, false) {
|
645
|
-
minimum_width 400
|
758
|
+
label(:right) {
|
759
|
+
layout_data(:fill, :center, true, false)
|
760
|
+
text bind(project_dir, 'selected_child.selection_count')
|
761
|
+
foreground @default_foreground
|
762
|
+
font stat_font
|
646
763
|
}
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
764
|
+
|
765
|
+
# row 4
|
766
|
+
|
767
|
+
label {
|
768
|
+
layout_data(:left, :center, false, false)
|
769
|
+
text 'Replace:'
|
770
|
+
foreground @default_foreground
|
652
771
|
}
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
772
|
+
@replace_text = text {
|
773
|
+
layout_data(:fill, :center, true, false) {
|
774
|
+
minimum_width 400
|
775
|
+
}
|
776
|
+
text bind(project_dir, 'selected_child.replace_text')
|
777
|
+
foreground @default_foreground
|
778
|
+
font stat_font
|
779
|
+
on_focus_gained {
|
780
|
+
project_dir.selected_child&.ensure_find_next
|
781
|
+
}
|
782
|
+
on_key_pressed { |key_event|
|
783
|
+
if key_event.keyCode == swt(:cr)
|
784
|
+
if project_dir.selected_child
|
785
|
+
Command.do(project_dir.selected_child, :replace_next!)
|
786
|
+
end
|
657
787
|
end
|
658
|
-
|
788
|
+
}
|
789
|
+
}
|
790
|
+
label # filler
|
791
|
+
label {
|
792
|
+
layout_data(:left, :center, false, false)
|
793
|
+
text 'Top Pixel:'
|
794
|
+
foreground @default_foreground
|
795
|
+
}
|
796
|
+
label(:right) {
|
797
|
+
layout_data(:fill, :center, true, false)
|
798
|
+
text bind(project_dir, 'selected_child.top_pixel')
|
799
|
+
foreground @default_foreground
|
800
|
+
font stat_font
|
659
801
|
}
|
660
802
|
}
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
text 'Top Pixel:'
|
665
|
-
foreground @default_foreground
|
666
|
-
}
|
667
|
-
label(:right) {
|
668
|
-
layout_data(:fill, :center, true, false)
|
669
|
-
text bind(project_dir, 'selected_child.top_pixel')
|
670
|
-
foreground @default_foreground
|
671
|
-
font stat_font
|
803
|
+
|
804
|
+
on_item_collapsed {
|
805
|
+
collapse_navigation_expand_bar_height
|
672
806
|
}
|
673
|
-
}
|
674
807
|
|
675
|
-
|
676
|
-
|
677
|
-
@navigation_expand_item.swt_expand_item.height = 0
|
678
|
-
async_exec {
|
679
|
-
body_root.pack_same_size
|
808
|
+
on_item_expanded {
|
809
|
+
expand_navigation_expand_bar_height
|
680
810
|
}
|
811
|
+
|
681
812
|
}
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
813
|
+
|
814
|
+
@tab_folder_sash_form = sash_form {
|
815
|
+
layout_data(:fill, :fill, true, true) {
|
816
|
+
width_hint 768
|
817
|
+
height_hint 576
|
818
|
+
minimum_width 768
|
819
|
+
minimum_height 576
|
687
820
|
}
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
drag_source(DND::DROP_COPY) {
|
703
|
-
transfer [TextTransfer.getInstance].to_java(Transfer)
|
704
|
-
event_data = nil
|
705
|
-
on_drag_start {|event|
|
706
|
-
Gladiator.drag = true
|
707
|
-
tab_folder = event.widget.getControl
|
708
|
-
tab_item = tab_folder.getItem(Point.new(event.x, event.y))
|
709
|
-
event_data = tab_item.getData('file_path')
|
710
|
-
}
|
711
|
-
on_drag_set_data { |event|
|
712
|
-
event.data = event_data
|
821
|
+
orientation bind(self, :split_orientation) {|value| async_exec { body_root.pack_same_size}; value}
|
822
|
+
self.current_tab_folder = self.tab_folder1 = tab_folder {
|
823
|
+
drag_source(DND::DROP_COPY) {
|
824
|
+
transfer [TextTransfer.getInstance].to_java(Transfer)
|
825
|
+
event_data = nil
|
826
|
+
on_drag_start {|event|
|
827
|
+
Gladiator.drag = true
|
828
|
+
tab_folder = event.widget.getControl
|
829
|
+
tab_item = tab_folder.getItem(Point.new(event.x, event.y))
|
830
|
+
event_data = tab_item.getData('file_path')
|
831
|
+
}
|
832
|
+
on_drag_set_data { |event|
|
833
|
+
event.data = event_data
|
834
|
+
}
|
713
835
|
}
|
714
836
|
}
|
837
|
+
@current_tab_folder.swt_widget.setData('proxy', @current_tab_folder)
|
715
838
|
}
|
716
|
-
@current_tab_folder.swt_widget.setData('proxy', @current_tab_folder)
|
717
839
|
}
|
718
|
-
}
|
840
|
+
} # end of sash form
|
719
841
|
}
|
720
842
|
}
|
721
843
|
|
@@ -741,7 +863,7 @@ module Glimmer
|
|
741
863
|
project_dir.ignore_paths ||= ['packages', 'tmp']
|
742
864
|
open_file_paths1 = @config[:open_file_paths1] || @config[:open_file_paths]
|
743
865
|
open_file_paths2 = @config[:open_file_paths2]
|
744
|
-
self.split_orientation = swt(@config[:split_orientation]
|
866
|
+
self.split_orientation = (swt(@config[:split_orientation]) rescue swt(:horizontal)) if @config[:split_orientation]
|
745
867
|
if @progress_bar_shell.nil?
|
746
868
|
@progress_bar_shell = shell(body_root, :title) {
|
747
869
|
text 'Gladiator'
|
@@ -763,53 +885,72 @@ module Glimmer
|
|
763
885
|
open_file_paths1.to_a.each do |file_path|
|
764
886
|
async_exec {
|
765
887
|
Gladiator.drag = false
|
888
|
+
Gladiator.startup = file_path != open_file_paths1.to_a[-1]
|
766
889
|
project_dir.selected_child_path = file_path
|
767
890
|
}
|
768
891
|
end
|
769
892
|
# TODO replace the next line with one that selects the visible tab
|
770
893
|
async_exec {
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
894
|
+
# TODO check why this is not working
|
895
|
+
if open_file_paths1.to_a.include?(@config[:selected_child_path])
|
896
|
+
Gladiator.drag = false
|
897
|
+
Gladiator.startup = false
|
898
|
+
project_dir.selected_child_path = @config[:selected_child_path] if @config[:selected_child_path]
|
899
|
+
project_dir.selected_child&.caret_position = project_dir.selected_child&.caret_position_for_caret_position_start_of_line(@config[:caret_position].to_i) if @config[:caret_position]
|
900
|
+
project_dir.selected_child&.top_pixel = @config[:top_pixel].to_i if @config[:top_pixel]
|
901
|
+
end
|
775
902
|
}
|
776
903
|
async_exec {
|
777
904
|
open_file_paths2.to_a.each do |file_path|
|
778
905
|
async_exec {
|
779
906
|
Gladiator.drag = true
|
907
|
+
Gladiator.startup = file_path != open_file_paths2.to_a[-1]
|
780
908
|
project_dir.selected_child_path = file_path
|
781
909
|
}
|
782
910
|
end
|
783
911
|
# TODO replace the next line with one that selects the visible tab
|
784
912
|
async_exec {
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
913
|
+
# TODO check why this is not working
|
914
|
+
if open_file_paths2.to_a.include?(@config[:selected_child_path])
|
915
|
+
Gladiator.drag = true
|
916
|
+
Gladiator.startup = false
|
917
|
+
project_dir.selected_child_path = @config[:selected_child_path] if @config[:selected_child_path]
|
918
|
+
project_dir.selected_child&.caret_position = project_dir.selected_child&.caret_position_for_caret_position_start_of_line(@config[:caret_position].to_i) if @config[:caret_position]
|
919
|
+
project_dir.selected_child&.top_pixel = @config[:top_pixel].to_i if @config[:top_pixel]
|
920
|
+
end
|
789
921
|
}
|
790
922
|
async_exec {
|
791
923
|
Gladiator.drag = false
|
792
|
-
@progress_bar_shell
|
924
|
+
@progress_bar_shell&.close
|
793
925
|
@progress_bar_shell = nil
|
794
926
|
@loaded_config = true
|
795
927
|
}
|
796
928
|
}
|
929
|
+
async_exec {
|
930
|
+
Thread.new {
|
931
|
+
all_files = open_file_paths1.to_a + open_file_paths2.to_a
|
932
|
+
all_files.each do |file|
|
933
|
+
project_dir.find_child_file(file)&.dirty_content
|
934
|
+
end
|
935
|
+
}
|
936
|
+
}
|
797
937
|
else
|
798
938
|
@loaded_config = true
|
799
939
|
end
|
800
940
|
end
|
801
941
|
|
802
942
|
def save_config
|
803
|
-
return
|
943
|
+
return if !@loaded_config || body_root.disposed?
|
804
944
|
child = project_dir.selected_child
|
805
945
|
return if child.nil?
|
806
946
|
tab_folder1 = @tab_folder1 || @current_tab_folder
|
807
947
|
tab_folder2 = @tab_folder2
|
808
948
|
open_file_paths1 = tab_folder1&.swt_widget&.items.to_a.map {|i| i.get_data('file_path')}
|
809
949
|
open_file_paths2 = tab_folder2&.swt_widget&.items.to_a.map {|i| i.get_data('file_path')}
|
950
|
+
split_orientation_value = split_orientation == swt(:horizontal) ? 'horizontal' : (split_orientation == swt(:vertical) ? 'vertical' : nil)
|
810
951
|
@config = {
|
811
952
|
selected_child_path: child.path,
|
812
|
-
split_orientation:
|
953
|
+
split_orientation: split_orientation_value,
|
813
954
|
caret_position: child.caret_position,
|
814
955
|
top_pixel: child.top_pixel,
|
815
956
|
shell_width: swt_widget&.getBounds&.width,
|
@@ -825,23 +966,70 @@ module Glimmer
|
|
825
966
|
rescue => e
|
826
967
|
puts e.full_message
|
827
968
|
end
|
969
|
+
|
970
|
+
def navigate_to_next_tab_folder
|
971
|
+
if tab_folder2
|
972
|
+
self.maximized_pane = false
|
973
|
+
if current_tab_folder == tab_folder1
|
974
|
+
self.current_tab_folder = tab_folder2
|
975
|
+
else
|
976
|
+
self.current_tab_folder = tab_folder1
|
977
|
+
end
|
978
|
+
self.current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
979
|
+
self.project_dir.selected_child = current_tab_item&.swt_tab_item&.getData('file')
|
980
|
+
self.current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
981
|
+
current_tab_item&.swt_tab_item&.getData('text_editor')&.text_widget&.setFocus
|
982
|
+
end
|
983
|
+
end
|
828
984
|
|
829
|
-
def
|
985
|
+
def navigate_to_previous_tab_folder
|
986
|
+
if tab_folder2
|
987
|
+
self.maximized_pane = false
|
988
|
+
if current_tab_folder == tab_folder2
|
989
|
+
self.current_tab_folder = tab_folder1
|
990
|
+
else
|
991
|
+
self.current_tab_folder = tab_folder2
|
992
|
+
end
|
993
|
+
self.current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
994
|
+
self.project_dir.selected_child = current_tab_item&.swt_tab_item&.getData('file')
|
995
|
+
self.current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
996
|
+
current_tab_item&.swt_tab_item&.getData('text_editor')&.text_widget&.setFocus
|
997
|
+
end
|
998
|
+
end
|
999
|
+
|
1000
|
+
def close_all_tabs(closing_tab_folder = nil)
|
1001
|
+
closing_tab_folder ||= current_tab_folder
|
1002
|
+
closing_tab_folder.swt_widget.getItems.each do |tab_item|
|
1003
|
+
project_dir.selected_child_path_history.delete(tab_item.getData('file_path'))
|
1004
|
+
tab_item.getData('proxy')&.dispose
|
1005
|
+
end
|
1006
|
+
close_tab_folder(closing_tab_folder)
|
1007
|
+
if self.current_tab_item.nil?
|
1008
|
+
filter_text.swt_widget.selectAll
|
1009
|
+
filter_text.swt_widget.setFocus
|
1010
|
+
end
|
1011
|
+
end
|
1012
|
+
|
1013
|
+
def close_tab_folder(closing_tab_folder = nil, single_tab: false)
|
1014
|
+
closing_tab_folder ||= current_tab_folder
|
830
1015
|
if @tab_folder2 && !selected_tab_item
|
831
|
-
if
|
1016
|
+
if closing_tab_folder == @tab_folder2
|
832
1017
|
@tab_folder2.swt_widget.dispose
|
833
|
-
|
1018
|
+
self.current_tab_folder = @tab_folder1
|
834
1019
|
else
|
835
1020
|
@tab_folder1.swt_widget.dispose
|
836
|
-
|
1021
|
+
self.current_tab_folder = self.tab_folder1 = @tab_folder2
|
837
1022
|
end
|
838
|
-
|
1023
|
+
self.tab_folder2 = nil
|
1024
|
+
body_root.pack_same_size
|
839
1025
|
|
840
|
-
@current_tab_item =
|
1026
|
+
@current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
841
1027
|
@current_text_editor = @current_tab_item.swt_tab_item.getData('text_editor')
|
842
1028
|
project_dir.selected_child = @current_tab_item.swt_tab_item.getData('file')
|
843
|
-
|
844
|
-
|
1029
|
+
@current_text_editor&.text_widget&.setFocus
|
1030
|
+
async_exec { @current_text_editor&.text_widget&.setFocus }
|
1031
|
+
elsif !single_tab
|
1032
|
+
self.current_tab_item = self.current_text_editor = project_dir.selected_child = nil
|
845
1033
|
end
|
846
1034
|
end
|
847
1035
|
|
@@ -856,6 +1044,19 @@ module Glimmer
|
|
856
1044
|
def other_tab_items
|
857
1045
|
@current_tab_folder.swt_widget.getItems.reject { |ti| ti.getData('file_path') == project_dir.selected_child&.path }
|
858
1046
|
end
|
1047
|
+
|
1048
|
+
def collapse_navigation_expand_bar_height
|
1049
|
+
@navigation_expand_item_height = @navigation_expand_item.swt_expand_item.height if @navigation_expand_item.swt_expand_item.height > 0
|
1050
|
+
@navigation_expand_item.swt_expand_item.height = 0
|
1051
|
+
body_root.pack_same_size
|
1052
|
+
async_exec { body_root.pack_same_size }
|
1053
|
+
end
|
1054
|
+
|
1055
|
+
def expand_navigation_expand_bar_height
|
1056
|
+
@navigation_expand_item.swt_expand_item.height = @navigation_expand_item_height || 140
|
1057
|
+
body_root.pack_same_size
|
1058
|
+
async_exec { body_root.pack_same_size }
|
1059
|
+
end
|
859
1060
|
|
860
1061
|
def extract_tree_item_path(tree_item)
|
861
1062
|
return if tree_item.nil?
|
@@ -949,22 +1150,24 @@ module Glimmer
|
|
949
1150
|
file = edited_tree_item.getData
|
950
1151
|
file_path = file.path
|
951
1152
|
file.name
|
952
|
-
if
|
953
|
-
|
954
|
-
else
|
955
|
-
found_text_editor&.file = file
|
956
|
-
found_tab_item&.setData('file', file)
|
957
|
-
found_tab_item&.setData('file_path', file.path)
|
958
|
-
found_tab_item&.setText(file.name)
|
959
|
-
body_root.pack_same_size
|
960
|
-
if current_file
|
1153
|
+
if ::File.file?(file_path)
|
1154
|
+
if new_file
|
961
1155
|
project_dir.selected_child_path = file_path
|
962
1156
|
else
|
963
|
-
|
1157
|
+
found_text_editor&.file = file
|
1158
|
+
found_tab_item&.setData('file', file)
|
1159
|
+
found_tab_item&.setData('file_path', file.path)
|
1160
|
+
found_tab_item&.setText(file.name)
|
1161
|
+
body_root.pack_same_size
|
1162
|
+
if current_file
|
1163
|
+
project_dir.selected_child_path = file_path
|
1164
|
+
else
|
1165
|
+
selected_tab_item&.getData('text_editor')&.text_widget&.setFocus
|
1166
|
+
end
|
1167
|
+
async_exec {
|
1168
|
+
@file_tree.swt_widget.showItem(edited_tree_item)
|
1169
|
+
}
|
964
1170
|
end
|
965
|
-
async_exec {
|
966
|
-
@file_tree.swt_widget.showItem(edited_tree_item)
|
967
|
-
}
|
968
1171
|
end
|
969
1172
|
project_dir.resume_refresh
|
970
1173
|
},
|
@@ -982,6 +1185,7 @@ module Glimmer
|
|
982
1185
|
|
983
1186
|
def open_project
|
984
1187
|
selected_directory = directory_dialog.open
|
1188
|
+
return if selected_directory.nil?
|
985
1189
|
@progress_bar_shell = shell(body_root, :title) {
|
986
1190
|
text 'Gladiator'
|
987
1191
|
fill_layout(:vertical) {
|
@@ -1008,30 +1212,59 @@ module Glimmer
|
|
1008
1212
|
}
|
1009
1213
|
end
|
1010
1214
|
|
1215
|
+
def display_about_dialog
|
1216
|
+
dialog {
|
1217
|
+
grid_layout(2, false) {
|
1218
|
+
margin_width 15
|
1219
|
+
margin_height 15
|
1220
|
+
}
|
1221
|
+
|
1222
|
+
background :white
|
1223
|
+
image ICON
|
1224
|
+
text 'About'
|
1225
|
+
|
1226
|
+
label {
|
1227
|
+
layout_data :center, :center, false, false
|
1228
|
+
background :white
|
1229
|
+
image ICON, height: 260
|
1230
|
+
}
|
1231
|
+
label {
|
1232
|
+
layout_data :fill, :fill, true, true
|
1233
|
+
background :white
|
1234
|
+
text "Gladiator v#{VERSION}\n\n#{LICENSE}\n\nGladiator icon made by Freepik from www.flaticon.com"
|
1235
|
+
}
|
1236
|
+
}.open
|
1237
|
+
end
|
1238
|
+
|
1011
1239
|
def handle_display_shortcut(key_event)
|
1012
1240
|
if key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == 'f'
|
1013
|
-
|
1014
|
-
|
1241
|
+
find_action = lambda do
|
1242
|
+
if current_text_editor&.text_widget&.getSelectionText && current_text_editor&.text_widget&.getSelectionText&.size.to_i > 0
|
1243
|
+
find_text.swt_widget.setText current_text_editor.text_widget.getSelectionText
|
1244
|
+
end
|
1245
|
+
find_text.swt_widget.selectAll
|
1246
|
+
find_text.swt_widget.setFocus
|
1247
|
+
end
|
1248
|
+
if @navigation_expand_item.swt_expand_item.get_expanded
|
1249
|
+
find_action.call
|
1250
|
+
else
|
1251
|
+
@navigation_expand_item.swt_expand_item.set_expanded true
|
1252
|
+
async_exec {
|
1253
|
+
body_root.pack_same_size
|
1254
|
+
find_action.call
|
1255
|
+
}
|
1015
1256
|
end
|
1016
|
-
find_text.swt_widget.selectAll
|
1017
|
-
find_text.swt_widget.setFocus
|
1018
1257
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == 'c'
|
1019
1258
|
Clipboard.copy(project_dir.selected_child.path)
|
1020
1259
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == 'g'
|
1021
1260
|
project_dir.selected_child.find_previous
|
1022
|
-
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == '
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1261
|
+
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == 'o'
|
1262
|
+
self.maximized_pane = false
|
1263
|
+
old_split_orientation = self.split_orientation
|
1264
|
+
self.split_orientation = split_pane? && split_orientation == swt(:horizontal) ? swt(:vertical) : swt(:horizontal)
|
1265
|
+
@tab_folder_sash_form.weights = [1, 1] if old_split_orientation.nil?
|
1026
1266
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == 'w'
|
1027
|
-
|
1028
|
-
project_dir.selected_child_path_history.delete(tab_item.getData('file_path'))
|
1029
|
-
tab_item.getData('proxy')&.dispose
|
1030
|
-
end
|
1031
|
-
close_tab_folder
|
1032
|
-
self.current_tab_item = self.current_text_editor = project_dir.selected_child = nil
|
1033
|
-
filter_text.swt_widget.selectAll
|
1034
|
-
filter_text.swt_widget.setFocus
|
1267
|
+
close_all_tabs
|
1035
1268
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :alt) && extract_char(key_event) == 'w'
|
1036
1269
|
other_tab_items.each do |tab_item|
|
1037
1270
|
project_dir.selected_child_path_history.delete(tab_item.getData('file_path'))
|
@@ -1041,17 +1274,22 @@ module Glimmer
|
|
1041
1274
|
if selected_tab_item
|
1042
1275
|
project_dir.selected_child_path_history.delete(project_dir.selected_child.path)
|
1043
1276
|
selected_tab_item.getData('proxy')&.dispose
|
1044
|
-
close_tab_folder
|
1277
|
+
close_tab_folder(single_tab: true)
|
1278
|
+
# if self.current_tab_item.nil?
|
1279
|
+
# filter_text.swt_widget.selectAll
|
1280
|
+
# filter_text.swt_widget.setFocus
|
1281
|
+
# else
|
1282
|
+
# current_text_editor&.text_widget&.setFocus
|
1283
|
+
# end
|
1045
1284
|
if selected_tab_item.nil?
|
1046
1285
|
self.current_tab_item = self.current_text_editor = project_dir.selected_child = nil
|
1047
1286
|
filter_text.swt_widget.selectAll
|
1048
1287
|
filter_text.swt_widget.setFocus
|
1049
1288
|
else
|
1050
1289
|
current_text_editor&.text_widget&.setFocus
|
1290
|
+
# async_exec { current_text_editor&.text_widget&.setFocus }
|
1051
1291
|
end
|
1052
1292
|
end
|
1053
|
-
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == 'o'
|
1054
|
-
self.split_orientation = split_pane? && split_orientation == swt(:horizontal) ? swt(:vertical) : swt(:horizontal)
|
1055
1293
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == ']'
|
1056
1294
|
current_tab_folder.swt_widget.setSelection((current_tab_folder.swt_widget.getSelectionIndex() + 1) % current_tab_folder.swt_widget.getItemCount) if current_tab_folder.swt_widget.getItemCount > 0
|
1057
1295
|
current_text_editor&.text_widget&.setFocus
|
@@ -1059,27 +1297,9 @@ module Glimmer
|
|
1059
1297
|
current_tab_folder.swt_widget.setSelection((current_tab_folder.swt_widget.getSelectionIndex() - 1) % current_tab_folder.swt_widget.getItemCount) if current_tab_folder.swt_widget.getItemCount > 0
|
1060
1298
|
current_text_editor&.text_widget&.setFocus
|
1061
1299
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :ctrl) && extract_char(key_event) == ']'
|
1062
|
-
|
1063
|
-
if current_tab_folder == tab_folder1
|
1064
|
-
self.current_tab_folder = tab_folder2
|
1065
|
-
else
|
1066
|
-
self.current_tab_folder = tab_folder1
|
1067
|
-
end
|
1068
|
-
self.current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
1069
|
-
self.project_dir.selected_child = current_tab_item&.swt_tab_item&.getData('file')
|
1070
|
-
current_tab_item&.swt_tab_item&.getData('text_editor')&.text_widget&.setFocus
|
1071
|
-
end
|
1300
|
+
navigate_to_next_tab_folder
|
1072
1301
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :ctrl) && extract_char(key_event) == '['
|
1073
|
-
|
1074
|
-
if current_tab_folder == tab_folder2
|
1075
|
-
self.current_tab_folder = tab_folder1
|
1076
|
-
else
|
1077
|
-
self.current_tab_folder = tab_folder2
|
1078
|
-
end
|
1079
|
-
self.current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
1080
|
-
self.project_dir.selected_child = current_tab_item&.swt_tab_item&.getData('file')
|
1081
|
-
current_tab_item&.swt_tab_item&.getData('text_editor')&.text_widget&.setFocus
|
1082
|
-
end
|
1302
|
+
navigate_to_previous_tab_folder
|
1083
1303
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY) && extract_char(key_event) == '1'
|
1084
1304
|
current_tab_folder.swt_widget.setSelection(0) if current_tab_folder.swt_widget.getItemCount >= 1
|
1085
1305
|
current_text_editor&.text_widget&.setFocus
|
@@ -1110,12 +1330,36 @@ module Glimmer
|
|
1110
1330
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY) && extract_char(key_event) == 'g'
|
1111
1331
|
project_dir.selected_child.find_next
|
1112
1332
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY) && extract_char(key_event) == 'l'
|
1113
|
-
|
1114
|
-
|
1333
|
+
unless @navigation_expand_item.swt_expand_item.get_expanded
|
1334
|
+
@navigation_expand_item.swt_expand_item.set_expanded true
|
1335
|
+
@navigation_expand_item.swt_expand_item.height = @navigation_expand_item_height if @navigation_expand_item_height
|
1336
|
+
async_exec {
|
1337
|
+
body_root.pack_same_size
|
1338
|
+
}
|
1339
|
+
async_exec {
|
1340
|
+
line_number_text.swt_widget.selectAll
|
1341
|
+
line_number_text.swt_widget.setFocus
|
1342
|
+
}
|
1343
|
+
else
|
1344
|
+
line_number_text.swt_widget.selectAll
|
1345
|
+
line_number_text.swt_widget.setFocus
|
1346
|
+
end
|
1115
1347
|
elsif key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == 'r'
|
1348
|
+
self.maximized_editor = false
|
1349
|
+
unless @file_lookup_expand_item.swt_expand_item.get_expanded
|
1350
|
+
@file_lookup_expand_item.swt_expand_item.set_expanded true
|
1351
|
+
@file_lookup_expand_item.swt_expand_item.height = @file_lookup_expand_item_height if @file_lookup_expand_item_height
|
1352
|
+
@side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
|
1353
|
+
end
|
1116
1354
|
filter_text.swt_widget.selectAll
|
1117
1355
|
filter_text.swt_widget.setFocus
|
1118
1356
|
elsif key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == 't'
|
1357
|
+
self.maximized_editor = false
|
1358
|
+
unless @file_explorer_expand_item.swt_expand_item.get_expanded
|
1359
|
+
@file_explorer_expand_item.swt_expand_item.set_expanded true
|
1360
|
+
@file_explorer_expand_item.swt_expand_item.height = @file_explorer_expand_item_height if @file_explorer_expand_item_height
|
1361
|
+
@side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
|
1362
|
+
end
|
1119
1363
|
select_tree_item unless rename_in_progress
|
1120
1364
|
file_tree.swt_widget.setFocus
|
1121
1365
|
elsif key_event.keyCode == swt(:esc)
|