glimmer-cs-gladiator 0.6.4 → 0.7.0
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 +16 -0
- data/README.md +18 -6
- data/VERSION +1 -1
- data/glimmer-cs-gladiator.gemspec +7 -7
- data/lib/models/glimmer/gladiator/dir.rb +1 -1
- data/lib/models/glimmer/gladiator/file.rb +5 -10
- data/lib/views/glimmer/gladiator.rb +585 -481
- data/lib/views/glimmer/gladiator/text_editor.rb +0 -2
- metadata +6 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d57a77e5086a7cab8a622d21e6ef4d4089d544e6c8d28f709fb19405523db22e
|
|
4
|
+
data.tar.gz: 8e36f9855229b227658b2873cfece17ea0fd214f447b5cb561d3126f05234f28
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b4795a89aab52db16e32c47b06fdf8800dff22418de7b07c5421704d9be285fdb8c1c230e3d9a068a74aaf85637e7c17a34c74fe3298f75d24c874e6d108b0c9
|
|
7
|
+
data.tar.gz: 8b811a0f1278860b79c334fdebb71eb0c1116e94cfceb028b87e03bc7d06fc904fef4549f789cc6a79e643b2509058268dd6e39623a1823279796d2b4138f5d8
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 0.7.0
|
|
4
|
+
|
|
5
|
+
- Upgrade to glimmer-dsl-swt v4.18.0.0
|
|
6
|
+
- Implement sash form for separator between file area and editing area to make resizable
|
|
7
|
+
- Change shortcut for open project from CMD+SHIFT+P to CMD+O
|
|
8
|
+
- Unsplit pane Menu Item / Keyboard Shortcut (CMD+SHIFT+U)
|
|
9
|
+
- Maximize Split Pane Size Menu Item / Keyboard Shortcut (CMD+SHIFT+M)
|
|
10
|
+
- Reset Split Pane Menu Item / Keyboard Shortcut (CMD+SHIFT+M again while maximized or CMD+SHIFT+P to reset split widths)
|
|
11
|
+
- Maximize Editor Menu Item / Keyboard Shortcut (CMD+CTRL+M)
|
|
12
|
+
- Reset Editor Menu Item / Keyboard Shortcut (CMD+CTRL+M again while maximized or CMD+CTRL+R to reset all sizes)
|
|
13
|
+
- Make CMD R and CMD T shortcuts show the file lookup/file explorer if collapsed (just like CMD + F shows navigation area)
|
|
14
|
+
- Display Accelerators (keyboard shortcuts) on Mac Menu Items
|
|
15
|
+
- Show exception dialog on error when invoking Run -> Ruby
|
|
16
|
+
- Fix issue with creating a new directory in a different project from the main one open
|
|
17
|
+
- Fix issue with quitting gladiator when multiple projects are open requiring multiple presses of CMD+Q
|
|
18
|
+
|
|
3
19
|
## 0.6.4
|
|
4
20
|
|
|
5
21
|
- Ensured Gladiator logo in the about menu has a white background
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# <img src='https://raw.githubusercontent.com/AndyObtiva/glimmer-cs-gladiator/master/images/glimmer-cs-gladiator-logo.svg' height=85 /> Gladiator 0.
|
|
1
|
+
# <img src='https://raw.githubusercontent.com/AndyObtiva/glimmer-cs-gladiator/master/images/glimmer-cs-gladiator-logo.svg' height=85 /> Gladiator 0.7.0 - [Ugliest Text Editor Ever](https://www.reddit.com/r/ruby/comments/hgve8k/gladiator_glimmer_editor_ugliest_text_editor_ever/)
|
|
2
2
|
## [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=40 /> Glimmer Custom Shell](https://github.com/AndyObtiva/glimmer-dsl-swt#custom-shell-gem)
|
|
3
3
|
[](http://badge.fury.io/rb/glimmer-cs-gladiator)
|
|
4
4
|
|
|
@@ -13,6 +13,8 @@ I leave building truly professional text editors to software tooling experts who
|
|
|
13
13
|
|
|
14
14
|
Gladiator currently supports the following text editing features (including keyboard shortcuts with Mac CMD=CTRL on Windows/Linux)
|
|
15
15
|
|
|
16
|
+

|
|
17
|
+
|
|
16
18
|
### Text Editor
|
|
17
19
|
|
|
18
20
|
- Text Editor with Colored Ruby Syntax Highlighting
|
|
@@ -47,8 +49,18 @@ Gladiator currently supports the following text editing features (including keyb
|
|
|
47
49
|
|
|
48
50
|
### Menus
|
|
49
51
|
|
|
50
|
-
- File Menu
|
|
51
|
-
-
|
|
52
|
+
- File Menu:
|
|
53
|
+
- Open Project (CMD+O)
|
|
54
|
+
- Quit Project (CMD+ALT+Q)
|
|
55
|
+
- New Scratchpad for running arbitrary Ruby/Glimmer code without saving to disk (CMD+SHIFT+S)
|
|
56
|
+
- View Menu
|
|
57
|
+
- Split Pane
|
|
58
|
+
- Orientation change to Horizontal/Vertical (CMD+SHIFT+O)
|
|
59
|
+
- Maximize Pane: maximizes current pane in split pane to take entire area (CMD+SHIFT+M)
|
|
60
|
+
- Reset Panes: resets pane sizes if split width/height was adjusted (CMD+SHIFT+P)
|
|
61
|
+
- Unsplit: closes the second pane (CMD+SHIFT+U)
|
|
62
|
+
- Maximize Editor: maximizes editor area to hide file lookup list and file explorer tree (CMD+CTRL+M)
|
|
63
|
+
- Reset All: resizes sizes of all areas in the editor (CMD+CTRL+R)
|
|
52
64
|
- Run Menu to run Ruby code (CMD+SHIFT+R)
|
|
53
65
|
|
|
54
66
|
### Watch External Changes
|
|
@@ -70,9 +82,9 @@ Gladiator currently supports the following text editing features (including keyb
|
|
|
70
82
|
|
|
71
83
|
## Pre-requisites
|
|
72
84
|
|
|
73
|
-
- [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt) (JRuby Desktop Development GUI Framework): '>= 4.17.2.0', '< 5.0.0.0' (dependency included in Ruby gem).
|
|
74
|
-
- [JRuby](https://www.jruby.org/download): Same version required by [Glimmer](https://github.com/AndyObtiva/glimmer-dsl-swt)
|
|
75
85
|
- [JDK](https://www.oracle.com/java/technologies/javase-downloads.html): Same version required by [Glimmer](https://github.com/AndyObtiva/glimmer-dsl-swt)
|
|
86
|
+
- [JRuby](https://www.jruby.org/download): Same version required by [Glimmer](https://github.com/AndyObtiva/glimmer-dsl-swt)
|
|
87
|
+
- [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt) (JRuby Desktop Development GUI Framework): '>= 4.17.2.0', '< 5.0.0.0' (dependency included in Ruby gem).
|
|
76
88
|
|
|
77
89
|
## Setup Instructions
|
|
78
90
|
|
|
@@ -138,7 +150,7 @@ To reuse Gladiator as a Glimmer Custom Shell inside another Glimmer application,
|
|
|
138
150
|
following to the application's `Gemfile`:
|
|
139
151
|
|
|
140
152
|
```
|
|
141
|
-
gem 'glimmer-cs-gladiator', '>= 0.
|
|
153
|
+
gem 'glimmer-cs-gladiator', '>= 0.7.0'
|
|
142
154
|
```
|
|
143
155
|
|
|
144
156
|
Run:
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.7.0
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
|
5
|
-
# stub: glimmer-cs-gladiator 0.
|
|
5
|
+
# stub: glimmer-cs-gladiator 0.7.0 ruby lib
|
|
6
6
|
|
|
7
7
|
Gem::Specification.new do |s|
|
|
8
8
|
s.name = "glimmer-cs-gladiator".freeze
|
|
9
|
-
s.version = "0.
|
|
9
|
+
s.version = "0.7.0"
|
|
10
10
|
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
|
12
12
|
s.require_paths = ["lib".freeze]
|
|
13
13
|
s.authors = ["Andy Maleh".freeze]
|
|
14
|
-
s.date = "
|
|
14
|
+
s.date = "2021-01-11"
|
|
15
15
|
s.description = "Gladiator (short for Glimmer Editor) is a Glimmer sample project under on-going development. It is not intended to be a full-fledged editor by any means, yet mostly a fun educational exercise in using Glimmer to build a text editor. Gladiator is also a personal tool for shaping an editor exactly the way I like. I leave building truly professional text editors to software tooling experts who would hopefully use Glimmer one day.".freeze
|
|
16
16
|
s.email = "andy.am@gmail.com".freeze
|
|
17
17
|
s.executables = ["gladiator".freeze]
|
|
@@ -38,20 +38,20 @@ Gem::Specification.new do |s|
|
|
|
38
38
|
s.homepage = "http://github.com/AndyObtiva/glimmer-cs-gladiator".freeze
|
|
39
39
|
s.licenses = ["MIT".freeze]
|
|
40
40
|
s.rubygems_version = "3.0.6".freeze
|
|
41
|
-
s.summary = "Gladiator (Glimmer Editor) - Glimmer Custom Shell".freeze
|
|
41
|
+
s.summary = "Gladiator (Glimmer Editor) - Glimmer Custom Shell - Text Editor Built in Ruby".freeze
|
|
42
42
|
|
|
43
43
|
if s.respond_to? :specification_version then
|
|
44
44
|
s.specification_version = 4
|
|
45
45
|
|
|
46
46
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
47
|
-
s.add_runtime_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.
|
|
47
|
+
s.add_runtime_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.18.0.0", "< 5.0.0.0"])
|
|
48
48
|
s.add_runtime_dependency(%q<filewatcher>.freeze, ["~> 1.1.1"])
|
|
49
49
|
s.add_runtime_dependency(%q<clipboard>.freeze, ["~> 1.3.5"])
|
|
50
50
|
s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
|
|
51
51
|
s.add_development_dependency(%q<jeweler>.freeze, ["= 2.3.9"])
|
|
52
52
|
s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
|
|
53
53
|
else
|
|
54
|
-
s.add_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.
|
|
54
|
+
s.add_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.18.0.0", "< 5.0.0.0"])
|
|
55
55
|
s.add_dependency(%q<filewatcher>.freeze, ["~> 1.1.1"])
|
|
56
56
|
s.add_dependency(%q<clipboard>.freeze, ["~> 1.3.5"])
|
|
57
57
|
s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
|
|
@@ -59,7 +59,7 @@ Gem::Specification.new do |s|
|
|
|
59
59
|
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
|
60
60
|
end
|
|
61
61
|
else
|
|
62
|
-
s.add_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.
|
|
62
|
+
s.add_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.18.0.0", "< 5.0.0.0"])
|
|
63
63
|
s.add_dependency(%q<filewatcher>.freeze, ["~> 1.1.1"])
|
|
64
64
|
s.add_dependency(%q<clipboard>.freeze, ["~> 1.3.5"])
|
|
65
65
|
s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
|
|
@@ -60,7 +60,7 @@ module Glimmer
|
|
|
60
60
|
def name=(the_name)
|
|
61
61
|
self.display_path = display_path.sub(/#{Regexp.escape(@name)}$/, the_name)
|
|
62
62
|
@name = the_name
|
|
63
|
-
new_path = ::File.expand_path(display_path)
|
|
63
|
+
new_path = @project_dir.nil? ? ::File.expand_path(display_path) : ::File.join(project_dir.path, display_path)
|
|
64
64
|
FileUtils.mv(path, new_path)
|
|
65
65
|
self.path = display_path
|
|
66
66
|
end
|
|
@@ -512,16 +512,11 @@ module Glimmer
|
|
|
512
512
|
end
|
|
513
513
|
|
|
514
514
|
def run
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
load path
|
|
521
|
-
end
|
|
522
|
-
rescue LoadError, SyntaxError, StandardError => e
|
|
523
|
-
# TODO consider showing a message dialog or error message console in the future
|
|
524
|
-
puts e.full_message
|
|
515
|
+
if scratchpad?
|
|
516
|
+
eval content
|
|
517
|
+
else
|
|
518
|
+
write_dirty_content
|
|
519
|
+
load path
|
|
525
520
|
end
|
|
526
521
|
end
|
|
527
522
|
|
|
@@ -42,7 +42,7 @@ module Glimmer
|
|
|
42
42
|
def split_orientation=(value)
|
|
43
43
|
@split_orientation = value
|
|
44
44
|
save_config
|
|
45
|
-
if @loaded_config && !split_pane?
|
|
45
|
+
if @loaded_config && !split_pane? && !value.nil?
|
|
46
46
|
Gladiator.drag = true
|
|
47
47
|
child_path = project_dir.selected_child_path
|
|
48
48
|
project_dir.selected_child = nil
|
|
@@ -56,9 +56,11 @@ module Glimmer
|
|
|
56
56
|
pane_count = @tab_folder_sash_form&.children&.size
|
|
57
57
|
pane_count && pane_count > 1
|
|
58
58
|
end
|
|
59
|
-
|
|
60
|
-
attr_reader :find_text, :
|
|
61
|
-
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
|
|
62
64
|
|
|
63
65
|
## Uncomment before_body block to pre-initialize variables to use in body
|
|
64
66
|
#
|
|
@@ -105,12 +107,12 @@ module Glimmer
|
|
|
105
107
|
observe(project_dir, 'selected_child') do |selected_file|
|
|
106
108
|
if selected_file
|
|
107
109
|
if Gladiator.drag && !@tab_folder2
|
|
108
|
-
|
|
109
|
-
async_exec { body_root.pack_same_size}
|
|
110
|
+
self.tab_folder1 = current_tab_folder
|
|
110
111
|
@tab_folder_sash_form.content {
|
|
111
|
-
|
|
112
|
+
self.current_tab_folder = self.tab_folder2 = tab_folder {}
|
|
112
113
|
@current_tab_folder.swt_widget.setData('proxy', @current_tab_folder)
|
|
113
114
|
}
|
|
115
|
+
body_root.pack_same_size
|
|
114
116
|
end
|
|
115
117
|
select_tree_item unless @rename_in_progress || Gladiator.startup
|
|
116
118
|
found_tab_item = selected_tab_item
|
|
@@ -136,7 +138,7 @@ module Glimmer
|
|
|
136
138
|
@current_text_editor.text_proxy.content {
|
|
137
139
|
on_focus_gained {
|
|
138
140
|
tab_folder = the_text_editor.swt_widget.getParent.getParent
|
|
139
|
-
|
|
141
|
+
self.current_tab_folder = tab_folder.getData('proxy')
|
|
140
142
|
@current_tab_item = the_tab_item
|
|
141
143
|
@current_text_editor = the_text_editor
|
|
142
144
|
@current_tab_folder.swt_widget.setData('selected_tab_item', @current_tab_item)
|
|
@@ -149,13 +151,11 @@ module Glimmer
|
|
|
149
151
|
on_swt_show {
|
|
150
152
|
@current_tab_item = the_tab_item
|
|
151
153
|
@current_text_editor = the_text_editor
|
|
152
|
-
|
|
154
|
+
self.current_tab_folder = @current_tab_item.swt_widget.getParent.getData('proxy')
|
|
153
155
|
@current_tab_folder.swt_widget.setData('selected_tab_item', @current_tab_item)
|
|
154
156
|
@current_tab_folder.swt_widget.setSelection(@current_tab_item.swt_tab_item)
|
|
155
157
|
project_dir.selected_child = selected_file
|
|
156
|
-
|
|
157
|
-
@current_text_editor&.text_widget&.setFocus
|
|
158
|
-
}
|
|
158
|
+
@current_text_editor&.text_widget&.setFocus
|
|
159
159
|
}
|
|
160
160
|
on_widget_disposed {
|
|
161
161
|
project_dir.selected_child&.write_dirty_content
|
|
@@ -168,13 +168,21 @@ module Glimmer
|
|
|
168
168
|
@current_tab_item.swt_tab_item.setData('proxy', @current_tab_item)
|
|
169
169
|
}
|
|
170
170
|
@current_tab_folder.swt_widget.setSelection(@current_tab_item.swt_tab_item)
|
|
171
|
-
|
|
172
171
|
body_root.pack_same_size
|
|
173
|
-
async_exec { body_root.pack_same_size}
|
|
174
172
|
end
|
|
175
173
|
@current_text_editor&.text_widget&.setFocus
|
|
176
174
|
end
|
|
177
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
|
+
@navigation_expand_item.swt_expand_item.set_expanded !maximized_editor?
|
|
184
|
+
body_root.pack_same_size
|
|
185
|
+
end
|
|
178
186
|
observe(project_dir, 'selected_child') do
|
|
179
187
|
save_config
|
|
180
188
|
end
|
|
@@ -192,7 +200,6 @@ module Glimmer
|
|
|
192
200
|
#
|
|
193
201
|
body {
|
|
194
202
|
shell {
|
|
195
|
-
grid_layout(2, false)
|
|
196
203
|
text "Gladiator - #{::File.expand_path(project_dir.path)}"
|
|
197
204
|
minimum_size 520, 250
|
|
198
205
|
size 1440, 900
|
|
@@ -235,7 +242,7 @@ module Glimmer
|
|
|
235
242
|
display.swt_display.system_menu.items.find {|mi| mi.id == swt(:id_quit)}.add_selection_listener {
|
|
236
243
|
save_config
|
|
237
244
|
project_dir.selected_child&.write_dirty_content
|
|
238
|
-
|
|
245
|
+
display.swt_display.shells.each(&:close)
|
|
239
246
|
}
|
|
240
247
|
end
|
|
241
248
|
|
|
@@ -245,37 +252,91 @@ module Glimmer
|
|
|
245
252
|
|
|
246
253
|
menu_item {
|
|
247
254
|
text 'New &Scratchpad'
|
|
255
|
+
accelerator COMMAND_KEY, :shift, :s
|
|
248
256
|
on_widget_selected {
|
|
249
|
-
|
|
250
|
-
project_dir.selected_child_path = ''
|
|
251
|
-
rescue => e
|
|
252
|
-
puts e.full_message
|
|
253
|
-
end
|
|
257
|
+
project_dir.selected_child_path = ''
|
|
254
258
|
}
|
|
255
259
|
}
|
|
256
|
-
menu_item(:separator)
|
|
257
260
|
menu_item {
|
|
258
261
|
text 'Open &Project...'
|
|
262
|
+
accelerator COMMAND_KEY, :o
|
|
259
263
|
on_widget_selected {
|
|
260
264
|
open_project
|
|
261
265
|
}
|
|
262
266
|
}
|
|
267
|
+
menu_item(:separator)
|
|
268
|
+
menu_item {
|
|
269
|
+
text '&Quit Project'
|
|
270
|
+
accelerator COMMAND_KEY, :alt, :q
|
|
271
|
+
on_widget_selected {
|
|
272
|
+
save_config
|
|
273
|
+
project_dir.selected_child&.write_dirty_content
|
|
274
|
+
body_root.close
|
|
275
|
+
}
|
|
276
|
+
}
|
|
263
277
|
}
|
|
264
278
|
menu {
|
|
265
279
|
text '&View'
|
|
266
280
|
menu {
|
|
267
|
-
text '&Split'
|
|
268
|
-
|
|
269
|
-
text '&
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
281
|
+
text '&Split Pane'
|
|
282
|
+
menu { |menu_proxy|
|
|
283
|
+
text '&Orientation'
|
|
284
|
+
menu_item(:radio) {
|
|
285
|
+
text '&Horizontal'
|
|
286
|
+
selection bind(self, :split_orientation,
|
|
287
|
+
on_read: ->(o) { split_pane? && o == swt(:horizontal) },
|
|
288
|
+
on_write: ->(b) { b.nil? ? nil : (b ? swt(:horizontal) : swt(:vertical)) })
|
|
289
|
+
}
|
|
290
|
+
menu_item(:radio) {
|
|
291
|
+
text '&Vertical'
|
|
292
|
+
selection bind(self, :split_orientation,
|
|
293
|
+
on_read: ->(o) { split_pane? && o == swt(:vertical) },
|
|
294
|
+
on_write: ->(b) { b.nil? ? nil : (b ? swt(:vertical) : swt(:horizontal)) })
|
|
295
|
+
}
|
|
273
296
|
}
|
|
274
|
-
menu_item(:
|
|
275
|
-
text '&
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
297
|
+
menu_item(:check) {
|
|
298
|
+
text '&Maximize Pane'
|
|
299
|
+
enabled bind(self, :tab_folder2)
|
|
300
|
+
accelerator COMMAND_KEY, :shift, :m
|
|
301
|
+
selection bind(self, :maximized_pane)
|
|
302
|
+
}
|
|
303
|
+
menu_item {
|
|
304
|
+
text 'Reset &Panes'
|
|
305
|
+
enabled bind(self, :tab_folder2)
|
|
306
|
+
accelerator COMMAND_KEY, :shift, :p
|
|
307
|
+
on_widget_selected {
|
|
308
|
+
if tab_folder2
|
|
309
|
+
self.maximized_pane = false
|
|
310
|
+
@tab_folder_sash_form.weights = [1, 1]
|
|
311
|
+
end
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
menu_item {
|
|
315
|
+
text '&Unsplit'
|
|
316
|
+
enabled bind(self, :tab_folder2)
|
|
317
|
+
accelerator COMMAND_KEY, :shift, :u
|
|
318
|
+
on_widget_selected {
|
|
319
|
+
if tab_folder2
|
|
320
|
+
self.maximized_pane = false
|
|
321
|
+
navigate_to_next_tab_folder if current_tab_folder != tab_folder2
|
|
322
|
+
close_all_tabs(tab_folder2)
|
|
323
|
+
self.split_orientation = nil
|
|
324
|
+
body_root.pack_same_size
|
|
325
|
+
end
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
menu_item(:check) {
|
|
330
|
+
text '&Maximize Editor'
|
|
331
|
+
accelerator COMMAND_KEY, :ctrl, :m
|
|
332
|
+
selection bind(self, :maximized_editor)
|
|
333
|
+
}
|
|
334
|
+
menu_item {
|
|
335
|
+
text '&Reset All'
|
|
336
|
+
accelerator COMMAND_KEY, :ctrl, :r
|
|
337
|
+
on_widget_selected {
|
|
338
|
+
self.maximized_editor = false
|
|
339
|
+
@file_area_and_editor_area_sash_form.weights = [1, 5]
|
|
279
340
|
}
|
|
280
341
|
}
|
|
281
342
|
}
|
|
@@ -296,8 +357,18 @@ module Glimmer
|
|
|
296
357
|
# }
|
|
297
358
|
menu_item {
|
|
298
359
|
text '&Ruby'
|
|
360
|
+
accelerator COMMAND_KEY, :shift, :r
|
|
299
361
|
on_widget_selected {
|
|
300
|
-
|
|
362
|
+
begin
|
|
363
|
+
project_dir.selected_child.run
|
|
364
|
+
rescue Exception => e
|
|
365
|
+
dialog {
|
|
366
|
+
text 'Run - Ruby - Error Encountered!'
|
|
367
|
+
label {
|
|
368
|
+
text e.full_message
|
|
369
|
+
}
|
|
370
|
+
}.open
|
|
371
|
+
end
|
|
301
372
|
}
|
|
302
373
|
}
|
|
303
374
|
}
|
|
@@ -305,468 +376,461 @@ module Glimmer
|
|
|
305
376
|
text '&Help'
|
|
306
377
|
menu_item {
|
|
307
378
|
text '&About'
|
|
379
|
+
accelerator COMMAND_KEY, :shift, :a
|
|
308
380
|
on_widget_selected {
|
|
309
381
|
display_about_dialog
|
|
310
382
|
}
|
|
311
383
|
}
|
|
312
384
|
}
|
|
313
385
|
}
|
|
386
|
+
|
|
387
|
+
@file_area_and_editor_area_sash_form = sash_form(:horizontal) {
|
|
388
|
+
weights 1, 5
|
|
314
389
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
layout_data(:fill, :fill, false, true) {
|
|
322
|
-
width_hint 300
|
|
323
|
-
}
|
|
324
|
-
@side_bar_sash_form = sash_form(:vertical) {
|
|
325
|
-
layout_data(:fill, :fill, true, true)
|
|
326
|
-
sash_width 4
|
|
327
|
-
|
|
328
|
-
resize_expand_items = lambda { |event=nil|
|
|
329
|
-
@file_lookup_expand_item&.swt_expand_item&.height = @file_lookup_expand_bar.size.y - @file_lookup_expand_item.swt_expand_item.header_height
|
|
330
|
-
@file_explorer_expand_item&.swt_expand_item&.height = @file_explorer_expand_bar.size.y - @file_explorer_expand_item.swt_expand_item.header_height
|
|
390
|
+
composite {
|
|
391
|
+
grid_layout(1, false) {
|
|
392
|
+
margin_width 0
|
|
393
|
+
margin_height 0
|
|
331
394
|
}
|
|
332
395
|
|
|
333
|
-
@
|
|
334
|
-
layout_data
|
|
335
|
-
|
|
336
|
-
foreground @default_foreground
|
|
396
|
+
@side_bar_sash_form = sash_form(:vertical) {
|
|
397
|
+
layout_data(:fill, :fill, true, true)
|
|
398
|
+
sash_width 4
|
|
337
399
|
|
|
338
|
-
|
|
339
|
-
@file_lookup_expand_item
|
|
400
|
+
resize_expand_items = lambda { |event=nil|
|
|
401
|
+
@file_lookup_expand_item&.swt_expand_item&.height = @file_lookup_expand_bar.size.y - @file_lookup_expand_item.swt_expand_item.header_height
|
|
402
|
+
@file_explorer_expand_item&.swt_expand_item&.height = @file_explorer_expand_bar.size.y - @file_explorer_expand_item.swt_expand_item.header_height
|
|
340
403
|
}
|
|
341
404
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
405
|
+
@file_lookup_expand_bar = expand_bar {
|
|
406
|
+
layout_data :fill, :fill, true, true
|
|
407
|
+
font height: 17, style: :bold
|
|
408
|
+
foreground @default_foreground
|
|
409
|
+
|
|
410
|
+
on_swt_show {
|
|
411
|
+
@file_lookup_expand_item.swt_expand_item.height = @file_lookup_expand_bar.size.y - @file_lookup_expand_item.swt_expand_item.header_height
|
|
348
412
|
}
|
|
349
|
-
text 'File Lookup'
|
|
350
|
-
height display.bounds.height
|
|
351
413
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
key_event.keyCode == swt(:arrow_up) ||
|
|
359
|
-
key_event.keyCode == swt(:arrow_down)
|
|
360
|
-
@file_lookup_list.swt_widget.select(0) if @file_lookup_list.swt_widget.getSelectionIndex() == -1
|
|
361
|
-
@file_lookup_list.swt_widget.setFocus
|
|
362
|
-
end
|
|
414
|
+
on_swt_Resize(&resize_expand_items)
|
|
415
|
+
|
|
416
|
+
@file_lookup_expand_item = expand_item {
|
|
417
|
+
grid_layout {
|
|
418
|
+
margin_width 0
|
|
419
|
+
margin_height 0
|
|
363
420
|
}
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
421
|
+
text 'File Lookup'
|
|
422
|
+
height display.bounds.height
|
|
423
|
+
|
|
424
|
+
@filter_text = text {
|
|
425
|
+
layout_data :fill, :center, true, false
|
|
426
|
+
text bind(project_dir, 'filter')
|
|
427
|
+
on_key_pressed { |key_event|
|
|
428
|
+
if key_event.keyCode == swt(:tab) ||
|
|
429
|
+
key_event.keyCode == swt(:cr) ||
|
|
430
|
+
key_event.keyCode == swt(:arrow_up) ||
|
|
431
|
+
key_event.keyCode == swt(:arrow_down)
|
|
432
|
+
@file_lookup_list.swt_widget.select(0) if @file_lookup_list.swt_widget.getSelectionIndex() == -1
|
|
433
|
+
@file_lookup_list.swt_widget.setFocus
|
|
434
|
+
end
|
|
435
|
+
}
|
|
373
436
|
}
|
|
374
|
-
|
|
375
|
-
|
|
437
|
+
|
|
438
|
+
@file_lookup_list = list(:border, :h_scroll, :v_scroll) {
|
|
439
|
+
layout_data :fill, :fill, true, true
|
|
440
|
+
#visible bind(self, 'project_dir.filter') {|f| !!f}
|
|
441
|
+
selection bind(project_dir, :filtered_path)
|
|
442
|
+
foreground @default_foreground
|
|
443
|
+
on_mouse_up {
|
|
376
444
|
project_dir.selected_child_path = @file_lookup_list.swt_widget.getSelection.first
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
445
|
+
}
|
|
446
|
+
on_key_pressed { |key_event|
|
|
447
|
+
if Glimmer::SWT::SWTProxy.include?(key_event.keyCode, :cr)
|
|
448
|
+
project_dir.selected_child_path = @file_lookup_list.swt_widget.getSelection.first
|
|
449
|
+
@current_text_editor&.text_widget&.setFocus
|
|
450
|
+
end
|
|
451
|
+
}
|
|
452
|
+
drag_source(DND::DROP_COPY) {
|
|
453
|
+
transfer [TextTransfer.getInstance].to_java(Transfer)
|
|
454
|
+
on_drag_set_data { |event|
|
|
455
|
+
Gladiator.drag = true
|
|
456
|
+
list = event.widget.getControl
|
|
457
|
+
event.data = list.getSelection.first
|
|
458
|
+
}
|
|
386
459
|
}
|
|
387
460
|
}
|
|
388
461
|
}
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
on_item_expanded {
|
|
402
|
-
@file_lookup_expand_item.swt_expand_item.height = @file_lookup_expand_item_height if @file_lookup_expand_item_height
|
|
403
|
-
@side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
@file_explorer_expand_bar = expand_bar {
|
|
409
|
-
layout_data :fill, :fill, true, true
|
|
410
|
-
font height: 17, style: :bold
|
|
411
|
-
foreground @default_foreground
|
|
462
|
+
|
|
463
|
+
on_item_collapsed { |event|
|
|
464
|
+
if @file_explorer_expand_item.swt_expand_item.get_expanded
|
|
465
|
+
@file_lookup_expand_item_height = @file_lookup_expand_item.swt_expand_item.height
|
|
466
|
+
@file_lookup_expand_item.swt_expand_item.height = 0
|
|
467
|
+
@file_lookup_expand_bar_height = @file_lookup_expand_bar.swt_widget.size.y
|
|
468
|
+
@file_explorer_expand_bar_height = @file_explorer_expand_bar.swt_widget.size.y
|
|
469
|
+
@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]
|
|
470
|
+
end
|
|
471
|
+
}
|
|
412
472
|
|
|
413
|
-
|
|
414
|
-
|
|
473
|
+
on_item_expanded {
|
|
474
|
+
@file_lookup_expand_item.swt_expand_item.height = @file_lookup_expand_item_height if @file_lookup_expand_item_height
|
|
475
|
+
@side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
|
|
476
|
+
}
|
|
477
|
+
|
|
415
478
|
}
|
|
416
479
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
480
|
+
@file_explorer_expand_bar = expand_bar {
|
|
481
|
+
layout_data :fill, :fill, true, true
|
|
482
|
+
font height: 17, style: :bold
|
|
483
|
+
foreground @default_foreground
|
|
484
|
+
|
|
485
|
+
on_swt_show {
|
|
486
|
+
@file_explorer_expand_item.swt_expand_item.height = @file_explorer_expand_bar.size.y - @file_explorer_expand_item.swt_expand_item.header_height
|
|
423
487
|
}
|
|
424
|
-
text 'File Explorer'
|
|
425
|
-
height display.bounds.height
|
|
426
488
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
transfer [TextTransfer.getInstance].to_java(Transfer)
|
|
434
|
-
on_drag_set_data { |event|
|
|
435
|
-
Gladiator.drag = true
|
|
436
|
-
tree = event.widget.getControl
|
|
437
|
-
tree_item = tree.getSelection.first
|
|
438
|
-
event.data = tree_item.getData.path
|
|
439
|
-
}
|
|
489
|
+
on_swt_Resize(&resize_expand_items)
|
|
490
|
+
|
|
491
|
+
@file_explorer_expand_item = expand_item {
|
|
492
|
+
grid_layout {
|
|
493
|
+
margin_width 0
|
|
494
|
+
margin_height 0
|
|
440
495
|
}
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
496
|
+
text 'File Explorer'
|
|
497
|
+
height display.bounds.height
|
|
498
|
+
|
|
499
|
+
@file_tree = tree(:virtual, :border, :h_scroll, :v_scroll) {
|
|
500
|
+
layout_data :fill, :fill, true, true
|
|
501
|
+
#visible bind(self, 'project_dir.filter') {|f| !f}
|
|
502
|
+
items bind(self, :project_dir), tree_properties(children: :children, text: :name)
|
|
503
|
+
foreground @default_foreground
|
|
504
|
+
drag_source(DND::DROP_COPY) {
|
|
505
|
+
transfer [TextTransfer.getInstance].to_java(Transfer)
|
|
506
|
+
on_drag_set_data { |event|
|
|
507
|
+
Gladiator.drag = true
|
|
508
|
+
tree = event.widget.getControl
|
|
509
|
+
tree_item = tree.getSelection.first
|
|
510
|
+
event.data = tree_item.getData.path
|
|
446
511
|
}
|
|
447
512
|
}
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
513
|
+
menu {
|
|
514
|
+
@open_menu_item = menu_item {
|
|
515
|
+
text 'Open'
|
|
516
|
+
on_widget_selected {
|
|
517
|
+
project_dir.selected_child_path = extract_tree_item_path(@file_tree.swt_widget.getSelection.first)
|
|
518
|
+
}
|
|
454
519
|
}
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
520
|
+
menu_item(:separator)
|
|
521
|
+
menu_item {
|
|
522
|
+
text 'Delete'
|
|
523
|
+
on_widget_selected {
|
|
524
|
+
tree_item = @file_tree.swt_widget.getSelection.first
|
|
525
|
+
delete_tree_item(tree_item)
|
|
526
|
+
}
|
|
460
527
|
}
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
528
|
+
menu_item {
|
|
529
|
+
text 'Refresh'
|
|
530
|
+
on_widget_selected {
|
|
531
|
+
project_dir.refresh
|
|
532
|
+
}
|
|
466
533
|
}
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
534
|
+
menu_item {
|
|
535
|
+
text 'Rename'
|
|
536
|
+
on_widget_selected {
|
|
537
|
+
rename_selected_tree_item
|
|
538
|
+
}
|
|
472
539
|
}
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
540
|
+
menu_item {
|
|
541
|
+
text 'New Directory'
|
|
542
|
+
on_widget_selected {
|
|
543
|
+
add_new_directory_to_selected_tree_item
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
menu_item {
|
|
547
|
+
text 'New File'
|
|
548
|
+
on_widget_selected {
|
|
549
|
+
add_new_file_to_selected_tree_item
|
|
550
|
+
}
|
|
478
551
|
}
|
|
479
552
|
}
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
553
|
+
on_swt_menudetect { |event|
|
|
554
|
+
path = extract_tree_item_path(@file_tree.swt_widget.getSelection.first)
|
|
555
|
+
@open_menu_item.swt_widget.setEnabled(!::Dir.exist?(path)) if path
|
|
556
|
+
}
|
|
557
|
+
on_mouse_up {
|
|
558
|
+
if Gladiator.drag_and_drop
|
|
559
|
+
Gladiator.drag_and_drop = false
|
|
560
|
+
else
|
|
561
|
+
project_dir.selected_child_path = extract_tree_item_path(@file_tree.swt_widget.getSelection&.first)
|
|
562
|
+
@current_text_editor&.text_widget&.setFocus
|
|
563
|
+
end
|
|
564
|
+
}
|
|
565
|
+
on_key_pressed { |key_event|
|
|
566
|
+
if Glimmer::SWT::SWTProxy.include?(key_event.keyCode, :cr)
|
|
567
|
+
project_dir.selected_child_path = extract_tree_item_path(@file_tree.swt_widget.getSelection&.first)
|
|
568
|
+
@current_text_editor&.text_widget&.setFocus
|
|
569
|
+
end
|
|
570
|
+
}
|
|
571
|
+
on_paint_control {
|
|
572
|
+
root_item = @file_tree.swt_widget.getItems.first
|
|
573
|
+
if root_item && !root_item.getExpanded
|
|
574
|
+
root_item.setExpanded(true)
|
|
575
|
+
end
|
|
576
|
+
}
|
|
504
577
|
}
|
|
505
578
|
}
|
|
506
|
-
|
|
579
|
+
|
|
580
|
+
on_item_collapsed { |event|
|
|
581
|
+
if @file_lookup_expand_item.swt_expand_item.get_expanded
|
|
582
|
+
@file_explorer_expand_item_height = @file_explorer_expand_item.swt_expand_item.height
|
|
583
|
+
@file_explorer_expand_item.swt_expand_item.height = 0
|
|
584
|
+
@file_explorer_expand_bar_height = @file_explorer_expand_bar.swt_widget.size.y
|
|
585
|
+
@file_lookup_expand_bar_height = @file_lookup_expand_bar.swt_widget.size.y
|
|
586
|
+
@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]
|
|
587
|
+
end
|
|
588
|
+
}
|
|
507
589
|
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
@
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
@file_lookup_expand_bar_height = @file_lookup_expand_bar.swt_widget.size.y
|
|
514
|
-
@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]
|
|
515
|
-
end
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
on_item_expanded {
|
|
519
|
-
@file_explorer_expand_item.swt_expand_item.height = @file_explorer_expand_item_height if @file_explorer_expand_item_height
|
|
520
|
-
@side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
|
|
590
|
+
on_item_expanded {
|
|
591
|
+
@file_explorer_expand_item.swt_expand_item.height = @file_explorer_expand_item_height if @file_explorer_expand_item_height
|
|
592
|
+
@side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
|
|
593
|
+
}
|
|
594
|
+
|
|
521
595
|
}
|
|
522
|
-
|
|
596
|
+
|
|
523
597
|
}
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
@file_tree_editor.minimumHeight = 20;
|
|
532
|
-
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
composite {
|
|
536
|
-
grid_layout(1, false) {
|
|
537
|
-
margin_width 0
|
|
538
|
-
margin_height 0
|
|
598
|
+
|
|
599
|
+
# TODO see if you could replace some of this with Glimmer DSL/API syntax
|
|
600
|
+
@file_tree_editor = TreeEditor.new(@file_tree.swt_widget);
|
|
601
|
+
@file_tree_editor.horizontalAlignment = swt(:left);
|
|
602
|
+
@file_tree_editor.grabHorizontal = true;
|
|
603
|
+
@file_tree_editor.minimumHeight = 20;
|
|
604
|
+
|
|
539
605
|
}
|
|
540
|
-
layout_data :fill, :fill, true, true
|
|
541
606
|
|
|
542
|
-
@
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
607
|
+
@editor_area_composite = composite {
|
|
608
|
+
grid_layout(1, false) {
|
|
609
|
+
margin_width 0
|
|
610
|
+
margin_height 0
|
|
611
|
+
}
|
|
546
612
|
|
|
547
|
-
@
|
|
548
|
-
|
|
549
|
-
height
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
stat_font = {name: 'Consolas', height: OS.mac? ? 15 : 12}
|
|
556
|
-
|
|
557
|
-
# row 1
|
|
558
|
-
|
|
559
|
-
label {
|
|
560
|
-
layout_data(:left, :center, false, false)
|
|
561
|
-
text 'File:'
|
|
562
|
-
foreground @default_foreground
|
|
563
|
-
}
|
|
613
|
+
@navigation_expand_bar = expand_bar {
|
|
614
|
+
layout_data :fill, :top, true, false
|
|
615
|
+
font height: 17, style: :bold
|
|
616
|
+
foreground @default_foreground
|
|
617
|
+
|
|
618
|
+
@navigation_expand_item = expand_item {
|
|
619
|
+
text 'Navigation'
|
|
620
|
+
height 115
|
|
564
621
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
horizontal_span 2
|
|
622
|
+
grid_layout(5, false) {
|
|
623
|
+
margin_right 5
|
|
568
624
|
}
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
625
|
+
|
|
626
|
+
stat_font = {name: 'Consolas', height: OS.mac? ? 15 : 12}
|
|
627
|
+
|
|
628
|
+
# row 1
|
|
629
|
+
|
|
630
|
+
label {
|
|
631
|
+
layout_data(:left, :center, false, false)
|
|
632
|
+
text 'File:'
|
|
633
|
+
foreground @default_foreground
|
|
576
634
|
}
|
|
577
|
-
|
|
578
|
-
|
|
635
|
+
|
|
636
|
+
@file_path_label = styled_text(:none) {
|
|
637
|
+
layout_data(:fill, :center, true, false) {
|
|
638
|
+
horizontal_span 2
|
|
639
|
+
}
|
|
640
|
+
background color(:widget_background)
|
|
641
|
+
foreground @default_foreground
|
|
642
|
+
editable false
|
|
643
|
+
caret nil
|
|
644
|
+
text bind(project_dir, 'selected_child.path')
|
|
645
|
+
on_mouse_up {
|
|
646
|
+
@file_path_label.swt_widget.selectAll
|
|
647
|
+
}
|
|
648
|
+
on_focus_lost {
|
|
649
|
+
@file_path_label.swt_widget.setSelection(0, 0)
|
|
650
|
+
}
|
|
579
651
|
}
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
foreground @default_foreground
|
|
586
|
-
}
|
|
587
|
-
label(:right) {
|
|
588
|
-
layout_data(:fill, :center, true, false)
|
|
589
|
-
text bind(project_dir, 'selected_child.caret_position')
|
|
590
|
-
foreground @default_foreground
|
|
591
|
-
font stat_font
|
|
592
|
-
}
|
|
593
|
-
|
|
594
|
-
# row 2
|
|
595
|
-
|
|
596
|
-
label {
|
|
597
|
-
layout_data(:left, :center, false, false)
|
|
598
|
-
text 'Line:'
|
|
599
|
-
foreground @default_foreground
|
|
600
|
-
}
|
|
601
|
-
@line_number_text = text {
|
|
602
|
-
layout_data(:fill, :center, true, false) {
|
|
603
|
-
minimum_width 400
|
|
652
|
+
|
|
653
|
+
label {
|
|
654
|
+
layout_data(:left, :center, false, false)
|
|
655
|
+
text 'Caret Position:'
|
|
656
|
+
foreground @default_foreground
|
|
604
657
|
}
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
@current_text_editor&.text_widget&.setFocus
|
|
611
|
-
end
|
|
658
|
+
label(:right) {
|
|
659
|
+
layout_data(:fill, :center, true, false)
|
|
660
|
+
text bind(project_dir, 'selected_child.caret_position')
|
|
661
|
+
foreground @default_foreground
|
|
662
|
+
font stat_font
|
|
612
663
|
}
|
|
613
|
-
|
|
614
|
-
|
|
664
|
+
|
|
665
|
+
# row 2
|
|
666
|
+
|
|
667
|
+
label {
|
|
668
|
+
layout_data(:left, :center, false, false)
|
|
669
|
+
text 'Line:'
|
|
670
|
+
foreground @default_foreground
|
|
615
671
|
}
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
# row 3
|
|
632
|
-
|
|
633
|
-
label {
|
|
634
|
-
layout_data(:left, :center, false, false)
|
|
635
|
-
text 'Find:'
|
|
636
|
-
foreground @default_foreground
|
|
637
|
-
}
|
|
638
|
-
@find_text = text {
|
|
639
|
-
layout_data(:fill, :center, true, false) {
|
|
640
|
-
minimum_width 400
|
|
672
|
+
@line_number_text = text {
|
|
673
|
+
layout_data(:fill, :center, true, false) {
|
|
674
|
+
minimum_width 400
|
|
675
|
+
}
|
|
676
|
+
text bind(project_dir, 'selected_child.line_number', on_read: :to_s, on_write: :to_i)
|
|
677
|
+
foreground @default_foreground
|
|
678
|
+
font stat_font
|
|
679
|
+
on_key_pressed { |key_event|
|
|
680
|
+
if key_event.keyCode == swt(:cr)
|
|
681
|
+
@current_text_editor&.text_widget&.setFocus
|
|
682
|
+
end
|
|
683
|
+
}
|
|
684
|
+
on_verify_text { |event|
|
|
685
|
+
event.doit = !event.text.match(/^\d*$/).to_a.empty?
|
|
686
|
+
}
|
|
641
687
|
}
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
project_dir.selected_child&.find_next
|
|
649
|
-
end
|
|
650
|
-
if key_event.keyCode == swt(:cr)
|
|
651
|
-
project_dir.selected_child&.find_next
|
|
652
|
-
end
|
|
688
|
+
label # filler
|
|
689
|
+
|
|
690
|
+
label {
|
|
691
|
+
layout_data(:left, :center, false, false)
|
|
692
|
+
text 'Line Position:'
|
|
693
|
+
foreground @default_foreground
|
|
653
694
|
}
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
margin_height 0
|
|
695
|
+
label(:right) {
|
|
696
|
+
layout_data(:fill, :center, true, false)
|
|
697
|
+
text bind(project_dir, 'selected_child.line_position')
|
|
698
|
+
foreground @default_foreground
|
|
699
|
+
font stat_font
|
|
660
700
|
}
|
|
661
|
-
|
|
662
|
-
|
|
701
|
+
|
|
702
|
+
# row 3
|
|
703
|
+
|
|
704
|
+
label {
|
|
705
|
+
layout_data(:left, :center, false, false)
|
|
706
|
+
text 'Find:'
|
|
707
|
+
foreground @default_foreground
|
|
708
|
+
}
|
|
709
|
+
@find_text = text {
|
|
710
|
+
layout_data(:fill, :center, true, false) {
|
|
711
|
+
minimum_width 400
|
|
712
|
+
}
|
|
713
|
+
text bind(project_dir, 'selected_child.find_text')
|
|
714
|
+
foreground @default_foreground
|
|
715
|
+
font stat_font
|
|
663
716
|
on_key_pressed { |key_event|
|
|
717
|
+
if key_event.stateMask == swt(COMMAND_KEY) && key_event.keyCode == swt(:cr)
|
|
718
|
+
project_dir.selected_child.case_sensitive = !project_dir.selected_child.case_sensitive
|
|
719
|
+
project_dir.selected_child&.find_next
|
|
720
|
+
end
|
|
664
721
|
if key_event.keyCode == swt(:cr)
|
|
665
722
|
project_dir.selected_child&.find_next
|
|
666
723
|
end
|
|
667
724
|
}
|
|
668
725
|
}
|
|
726
|
+
composite {
|
|
727
|
+
layout_data(:left, :center, true, false)
|
|
728
|
+
row_layout {
|
|
729
|
+
margin_width 0
|
|
730
|
+
margin_height 0
|
|
731
|
+
}
|
|
732
|
+
button(:check) {
|
|
733
|
+
selection bind(project_dir, 'selected_child.case_sensitive')
|
|
734
|
+
on_key_pressed { |key_event|
|
|
735
|
+
if key_event.keyCode == swt(:cr)
|
|
736
|
+
project_dir.selected_child&.find_next
|
|
737
|
+
end
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
label {
|
|
741
|
+
text 'Case-sensitive'
|
|
742
|
+
foreground @default_foreground
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
|
|
669
746
|
label {
|
|
670
|
-
|
|
747
|
+
layout_data(:left, :center, false, false)
|
|
748
|
+
text 'Selection Count:'
|
|
671
749
|
foreground @default_foreground
|
|
672
750
|
}
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
foreground @default_foreground
|
|
679
|
-
}
|
|
680
|
-
label(:right) {
|
|
681
|
-
layout_data(:fill, :center, true, false)
|
|
682
|
-
text bind(project_dir, 'selected_child.selection_count')
|
|
683
|
-
foreground @default_foreground
|
|
684
|
-
font stat_font
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
# row 4
|
|
688
|
-
|
|
689
|
-
label {
|
|
690
|
-
layout_data(:left, :center, false, false)
|
|
691
|
-
text 'Replace:'
|
|
692
|
-
foreground @default_foreground
|
|
693
|
-
}
|
|
694
|
-
@replace_text = text {
|
|
695
|
-
layout_data(:fill, :center, true, false) {
|
|
696
|
-
minimum_width 400
|
|
751
|
+
label(:right) {
|
|
752
|
+
layout_data(:fill, :center, true, false)
|
|
753
|
+
text bind(project_dir, 'selected_child.selection_count')
|
|
754
|
+
foreground @default_foreground
|
|
755
|
+
font stat_font
|
|
697
756
|
}
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
757
|
+
|
|
758
|
+
# row 4
|
|
759
|
+
|
|
760
|
+
label {
|
|
761
|
+
layout_data(:left, :center, false, false)
|
|
762
|
+
text 'Replace:'
|
|
763
|
+
foreground @default_foreground
|
|
703
764
|
}
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
765
|
+
@replace_text = text {
|
|
766
|
+
layout_data(:fill, :center, true, false) {
|
|
767
|
+
minimum_width 400
|
|
768
|
+
}
|
|
769
|
+
text bind(project_dir, 'selected_child.replace_text')
|
|
770
|
+
foreground @default_foreground
|
|
771
|
+
font stat_font
|
|
772
|
+
on_focus_gained {
|
|
773
|
+
project_dir.selected_child&.ensure_find_next
|
|
774
|
+
}
|
|
775
|
+
on_key_pressed { |key_event|
|
|
776
|
+
if key_event.keyCode == swt(:cr)
|
|
777
|
+
if project_dir.selected_child
|
|
778
|
+
Command.do(project_dir.selected_child, :replace_next!)
|
|
779
|
+
end
|
|
708
780
|
end
|
|
709
|
-
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
label # filler
|
|
784
|
+
label {
|
|
785
|
+
layout_data(:left, :center, false, false)
|
|
786
|
+
text 'Top Pixel:'
|
|
787
|
+
foreground @default_foreground
|
|
788
|
+
}
|
|
789
|
+
label(:right) {
|
|
790
|
+
layout_data(:fill, :center, true, false)
|
|
791
|
+
text bind(project_dir, 'selected_child.top_pixel')
|
|
792
|
+
foreground @default_foreground
|
|
793
|
+
font stat_font
|
|
710
794
|
}
|
|
711
795
|
}
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
text 'Top Pixel:'
|
|
716
|
-
foreground @default_foreground
|
|
717
|
-
}
|
|
718
|
-
label(:right) {
|
|
719
|
-
layout_data(:fill, :center, true, false)
|
|
720
|
-
text bind(project_dir, 'selected_child.top_pixel')
|
|
721
|
-
foreground @default_foreground
|
|
722
|
-
font stat_font
|
|
796
|
+
|
|
797
|
+
on_item_collapsed {
|
|
798
|
+
collapse_navigation_expand_bar_height
|
|
723
799
|
}
|
|
724
|
-
}
|
|
725
800
|
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
@navigation_expand_item.swt_expand_item.height = 0
|
|
729
|
-
async_exec {
|
|
730
|
-
body_root.pack_same_size
|
|
801
|
+
on_item_expanded {
|
|
802
|
+
expand_navigation_expand_bar
|
|
731
803
|
}
|
|
804
|
+
|
|
732
805
|
}
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
806
|
+
|
|
807
|
+
@tab_folder_sash_form = sash_form {
|
|
808
|
+
layout_data(:fill, :fill, true, true) {
|
|
809
|
+
width_hint 768
|
|
810
|
+
height_hint 576
|
|
811
|
+
minimum_width 768
|
|
812
|
+
minimum_height 576
|
|
738
813
|
}
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
drag_source(DND::DROP_COPY) {
|
|
754
|
-
transfer [TextTransfer.getInstance].to_java(Transfer)
|
|
755
|
-
event_data = nil
|
|
756
|
-
on_drag_start {|event|
|
|
757
|
-
Gladiator.drag = true
|
|
758
|
-
tab_folder = event.widget.getControl
|
|
759
|
-
tab_item = tab_folder.getItem(Point.new(event.x, event.y))
|
|
760
|
-
event_data = tab_item.getData('file_path')
|
|
761
|
-
}
|
|
762
|
-
on_drag_set_data { |event|
|
|
763
|
-
event.data = event_data
|
|
814
|
+
orientation bind(self, :split_orientation) {|value| async_exec { body_root.pack_same_size}; value}
|
|
815
|
+
self.current_tab_folder = self.tab_folder1 = tab_folder {
|
|
816
|
+
drag_source(DND::DROP_COPY) {
|
|
817
|
+
transfer [TextTransfer.getInstance].to_java(Transfer)
|
|
818
|
+
event_data = nil
|
|
819
|
+
on_drag_start {|event|
|
|
820
|
+
Gladiator.drag = true
|
|
821
|
+
tab_folder = event.widget.getControl
|
|
822
|
+
tab_item = tab_folder.getItem(Point.new(event.x, event.y))
|
|
823
|
+
event_data = tab_item.getData('file_path')
|
|
824
|
+
}
|
|
825
|
+
on_drag_set_data { |event|
|
|
826
|
+
event.data = event_data
|
|
827
|
+
}
|
|
764
828
|
}
|
|
765
829
|
}
|
|
830
|
+
@current_tab_folder.swt_widget.setData('proxy', @current_tab_folder)
|
|
766
831
|
}
|
|
767
|
-
@current_tab_folder.swt_widget.setData('proxy', @current_tab_folder)
|
|
768
832
|
}
|
|
769
|
-
}
|
|
833
|
+
} # end of sash form
|
|
770
834
|
}
|
|
771
835
|
}
|
|
772
836
|
|
|
@@ -792,7 +856,7 @@ module Glimmer
|
|
|
792
856
|
project_dir.ignore_paths ||= ['packages', 'tmp']
|
|
793
857
|
open_file_paths1 = @config[:open_file_paths1] || @config[:open_file_paths]
|
|
794
858
|
open_file_paths2 = @config[:open_file_paths2]
|
|
795
|
-
self.split_orientation = swt(@config[:split_orientation]
|
|
859
|
+
self.split_orientation = (swt(@config[:split_orientation]) rescue swt(:horizontal)) if @config[:split_orientation]
|
|
796
860
|
if @progress_bar_shell.nil?
|
|
797
861
|
@progress_bar_shell = shell(body_root, :title) {
|
|
798
862
|
text 'Gladiator'
|
|
@@ -869,16 +933,17 @@ module Glimmer
|
|
|
869
933
|
end
|
|
870
934
|
|
|
871
935
|
def save_config
|
|
872
|
-
return
|
|
936
|
+
return if !@loaded_config || body_root.disposed?
|
|
873
937
|
child = project_dir.selected_child
|
|
874
938
|
return if child.nil?
|
|
875
939
|
tab_folder1 = @tab_folder1 || @current_tab_folder
|
|
876
940
|
tab_folder2 = @tab_folder2
|
|
877
941
|
open_file_paths1 = tab_folder1&.swt_widget&.items.to_a.map {|i| i.get_data('file_path')}
|
|
878
942
|
open_file_paths2 = tab_folder2&.swt_widget&.items.to_a.map {|i| i.get_data('file_path')}
|
|
943
|
+
split_orientation_value = split_orientation == swt(:horizontal) ? 'horizontal' : (split_orientation == swt(:vertical) ? 'vertical' : nil)
|
|
879
944
|
@config = {
|
|
880
945
|
selected_child_path: child.path,
|
|
881
|
-
split_orientation:
|
|
946
|
+
split_orientation: split_orientation_value,
|
|
882
947
|
caret_position: child.caret_position,
|
|
883
948
|
top_pixel: child.top_pixel,
|
|
884
949
|
shell_width: swt_widget&.getBounds&.width,
|
|
@@ -894,23 +959,70 @@ module Glimmer
|
|
|
894
959
|
rescue => e
|
|
895
960
|
puts e.full_message
|
|
896
961
|
end
|
|
962
|
+
|
|
963
|
+
def navigate_to_next_tab_folder
|
|
964
|
+
if tab_folder2
|
|
965
|
+
self.maximized_pane = false
|
|
966
|
+
if current_tab_folder == tab_folder1
|
|
967
|
+
self.current_tab_folder = tab_folder2
|
|
968
|
+
else
|
|
969
|
+
self.current_tab_folder = tab_folder1
|
|
970
|
+
end
|
|
971
|
+
self.current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
|
972
|
+
self.project_dir.selected_child = current_tab_item&.swt_tab_item&.getData('file')
|
|
973
|
+
self.current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
|
974
|
+
current_tab_item&.swt_tab_item&.getData('text_editor')&.text_widget&.setFocus
|
|
975
|
+
end
|
|
976
|
+
end
|
|
897
977
|
|
|
898
|
-
def
|
|
978
|
+
def navigate_to_previous_tab_folder
|
|
979
|
+
if tab_folder2
|
|
980
|
+
self.maximized_pane = false
|
|
981
|
+
if current_tab_folder == tab_folder2
|
|
982
|
+
self.current_tab_folder = tab_folder1
|
|
983
|
+
else
|
|
984
|
+
self.current_tab_folder = tab_folder2
|
|
985
|
+
end
|
|
986
|
+
self.current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
|
987
|
+
self.project_dir.selected_child = current_tab_item&.swt_tab_item&.getData('file')
|
|
988
|
+
self.current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
|
989
|
+
current_tab_item&.swt_tab_item&.getData('text_editor')&.text_widget&.setFocus
|
|
990
|
+
end
|
|
991
|
+
end
|
|
992
|
+
|
|
993
|
+
def close_all_tabs(closing_tab_folder = nil)
|
|
994
|
+
closing_tab_folder ||= current_tab_folder
|
|
995
|
+
closing_tab_folder.swt_widget.getItems.each do |tab_item|
|
|
996
|
+
project_dir.selected_child_path_history.delete(tab_item.getData('file_path'))
|
|
997
|
+
tab_item.getData('proxy')&.dispose
|
|
998
|
+
end
|
|
999
|
+
close_tab_folder(closing_tab_folder)
|
|
1000
|
+
if self.current_tab_item.nil?
|
|
1001
|
+
filter_text.swt_widget.selectAll
|
|
1002
|
+
filter_text.swt_widget.setFocus
|
|
1003
|
+
end
|
|
1004
|
+
end
|
|
1005
|
+
|
|
1006
|
+
def close_tab_folder(closing_tab_folder = nil)
|
|
1007
|
+
closing_tab_folder ||= current_tab_folder
|
|
899
1008
|
if @tab_folder2 && !selected_tab_item
|
|
900
|
-
if
|
|
1009
|
+
if closing_tab_folder == @tab_folder2
|
|
901
1010
|
@tab_folder2.swt_widget.dispose
|
|
902
|
-
|
|
1011
|
+
self.current_tab_folder = @tab_folder1
|
|
903
1012
|
else
|
|
904
1013
|
@tab_folder1.swt_widget.dispose
|
|
905
|
-
|
|
1014
|
+
self.current_tab_folder = self.tab_folder1 = @tab_folder2
|
|
906
1015
|
end
|
|
907
|
-
|
|
1016
|
+
self.tab_folder2 = nil
|
|
1017
|
+
body_root.pack_same_size
|
|
908
1018
|
|
|
909
|
-
@current_tab_item =
|
|
1019
|
+
@current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
|
910
1020
|
@current_text_editor = @current_tab_item.swt_tab_item.getData('text_editor')
|
|
911
1021
|
project_dir.selected_child = @current_tab_item.swt_tab_item.getData('file')
|
|
912
|
-
|
|
913
|
-
async_exec {
|
|
1022
|
+
@current_text_editor&.text_widget&.setFocus
|
|
1023
|
+
async_exec { @current_text_editor&.text_widget&.setFocus }
|
|
1024
|
+
else
|
|
1025
|
+
self.current_tab_item = self.current_text_editor = project_dir.selected_child = nil
|
|
914
1026
|
end
|
|
915
1027
|
end
|
|
916
1028
|
|
|
@@ -925,6 +1037,23 @@ module Glimmer
|
|
|
925
1037
|
def other_tab_items
|
|
926
1038
|
@current_tab_folder.swt_widget.getItems.reject { |ti| ti.getData('file_path') == project_dir.selected_child&.path }
|
|
927
1039
|
end
|
|
1040
|
+
|
|
1041
|
+
def collapse_navigation_expand_bar_height
|
|
1042
|
+
@navigation_expand_item_height = @navigation_expand_item.swt_expand_item.height if @navigation_expand_item.swt_expand_item.height > 0
|
|
1043
|
+
@navigation_expand_item.swt_expand_item.height = 0
|
|
1044
|
+
body_root.pack_same_size
|
|
1045
|
+
async_exec {
|
|
1046
|
+
body_root.pack_same_size
|
|
1047
|
+
}
|
|
1048
|
+
end
|
|
1049
|
+
|
|
1050
|
+
def expand_navigation_expand_bar_height
|
|
1051
|
+
@navigation_expand_item.swt_expand_item.height = @navigation_expand_item_height if @navigation_expand_item_height
|
|
1052
|
+
body_root.pack_same_size
|
|
1053
|
+
async_exec {
|
|
1054
|
+
body_root.pack_same_size
|
|
1055
|
+
}
|
|
1056
|
+
end
|
|
928
1057
|
|
|
929
1058
|
def extract_tree_item_path(tree_item)
|
|
930
1059
|
return if tree_item.nil?
|
|
@@ -1018,22 +1147,24 @@ module Glimmer
|
|
|
1018
1147
|
file = edited_tree_item.getData
|
|
1019
1148
|
file_path = file.path
|
|
1020
1149
|
file.name
|
|
1021
|
-
if
|
|
1022
|
-
|
|
1023
|
-
else
|
|
1024
|
-
found_text_editor&.file = file
|
|
1025
|
-
found_tab_item&.setData('file', file)
|
|
1026
|
-
found_tab_item&.setData('file_path', file.path)
|
|
1027
|
-
found_tab_item&.setText(file.name)
|
|
1028
|
-
body_root.pack_same_size
|
|
1029
|
-
if current_file
|
|
1150
|
+
if ::File.file?(file_path)
|
|
1151
|
+
if new_file
|
|
1030
1152
|
project_dir.selected_child_path = file_path
|
|
1031
1153
|
else
|
|
1032
|
-
|
|
1154
|
+
found_text_editor&.file = file
|
|
1155
|
+
found_tab_item&.setData('file', file)
|
|
1156
|
+
found_tab_item&.setData('file_path', file.path)
|
|
1157
|
+
found_tab_item&.setText(file.name)
|
|
1158
|
+
body_root.pack_same_size
|
|
1159
|
+
if current_file
|
|
1160
|
+
project_dir.selected_child_path = file_path
|
|
1161
|
+
else
|
|
1162
|
+
selected_tab_item&.getData('text_editor')&.text_widget&.setFocus
|
|
1163
|
+
end
|
|
1164
|
+
async_exec {
|
|
1165
|
+
@file_tree.swt_widget.showItem(edited_tree_item)
|
|
1166
|
+
}
|
|
1033
1167
|
end
|
|
1034
|
-
async_exec {
|
|
1035
|
-
@file_tree.swt_widget.showItem(edited_tree_item)
|
|
1036
|
-
}
|
|
1037
1168
|
end
|
|
1038
1169
|
project_dir.resume_refresh
|
|
1039
1170
|
},
|
|
@@ -1115,29 +1246,20 @@ module Glimmer
|
|
|
1115
1246
|
find_action.call
|
|
1116
1247
|
else
|
|
1117
1248
|
@navigation_expand_item.swt_expand_item.set_expanded true
|
|
1118
|
-
@navigation_expand_item.swt_expand_item.height = @navigation_expand_item_height if @navigation_expand_item_height
|
|
1119
1249
|
async_exec {
|
|
1120
1250
|
body_root.pack_same_size
|
|
1251
|
+
find_action.call
|
|
1121
1252
|
}
|
|
1122
|
-
async_exec(&find_action)
|
|
1123
1253
|
end
|
|
1124
1254
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == 'c'
|
|
1125
1255
|
Clipboard.copy(project_dir.selected_child.path)
|
|
1126
1256
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == 'g'
|
|
1127
1257
|
project_dir.selected_child.find_previous
|
|
1128
|
-
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == '
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
project_dir.selected_child_path = '' # scratchpad
|
|
1258
|
+
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == 'o'
|
|
1259
|
+
self.maximized_pane = false
|
|
1260
|
+
self.split_orientation = split_pane? && split_orientation == swt(:horizontal) ? swt(:vertical) : swt(:horizontal)
|
|
1132
1261
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == 'w'
|
|
1133
|
-
|
|
1134
|
-
project_dir.selected_child_path_history.delete(tab_item.getData('file_path'))
|
|
1135
|
-
tab_item.getData('proxy')&.dispose
|
|
1136
|
-
end
|
|
1137
|
-
close_tab_folder
|
|
1138
|
-
self.current_tab_item = self.current_text_editor = project_dir.selected_child = nil
|
|
1139
|
-
filter_text.swt_widget.selectAll
|
|
1140
|
-
filter_text.swt_widget.setFocus
|
|
1262
|
+
close_all_tabs
|
|
1141
1263
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :alt) && extract_char(key_event) == 'w'
|
|
1142
1264
|
other_tab_items.each do |tab_item|
|
|
1143
1265
|
project_dir.selected_child_path_history.delete(tab_item.getData('file_path'))
|
|
@@ -1156,8 +1278,6 @@ module Glimmer
|
|
|
1156
1278
|
current_text_editor&.text_widget&.setFocus
|
|
1157
1279
|
end
|
|
1158
1280
|
end
|
|
1159
|
-
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == 'o'
|
|
1160
|
-
self.split_orientation = split_pane? && split_orientation == swt(:horizontal) ? swt(:vertical) : swt(:horizontal)
|
|
1161
1281
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == ']'
|
|
1162
1282
|
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
|
|
1163
1283
|
current_text_editor&.text_widget&.setFocus
|
|
@@ -1165,27 +1285,9 @@ module Glimmer
|
|
|
1165
1285
|
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
|
|
1166
1286
|
current_text_editor&.text_widget&.setFocus
|
|
1167
1287
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :ctrl) && extract_char(key_event) == ']'
|
|
1168
|
-
|
|
1169
|
-
if current_tab_folder == tab_folder1
|
|
1170
|
-
self.current_tab_folder = tab_folder2
|
|
1171
|
-
else
|
|
1172
|
-
self.current_tab_folder = tab_folder1
|
|
1173
|
-
end
|
|
1174
|
-
self.current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
|
1175
|
-
self.project_dir.selected_child = current_tab_item&.swt_tab_item&.getData('file')
|
|
1176
|
-
current_tab_item&.swt_tab_item&.getData('text_editor')&.text_widget&.setFocus
|
|
1177
|
-
end
|
|
1288
|
+
navigate_to_next_tab_folder
|
|
1178
1289
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :ctrl) && extract_char(key_event) == '['
|
|
1179
|
-
|
|
1180
|
-
if current_tab_folder == tab_folder2
|
|
1181
|
-
self.current_tab_folder = tab_folder1
|
|
1182
|
-
else
|
|
1183
|
-
self.current_tab_folder = tab_folder2
|
|
1184
|
-
end
|
|
1185
|
-
self.current_tab_item = current_tab_folder.swt_widget.getData('selected_tab_item')
|
|
1186
|
-
self.project_dir.selected_child = current_tab_item&.swt_tab_item&.getData('file')
|
|
1187
|
-
current_tab_item&.swt_tab_item&.getData('text_editor')&.text_widget&.setFocus
|
|
1188
|
-
end
|
|
1290
|
+
navigate_to_previous_tab_folder
|
|
1189
1291
|
elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY) && extract_char(key_event) == '1'
|
|
1190
1292
|
current_tab_folder.swt_widget.setSelection(0) if current_tab_folder.swt_widget.getItemCount >= 1
|
|
1191
1293
|
current_text_editor&.text_widget&.setFocus
|
|
@@ -1231,6 +1333,7 @@ module Glimmer
|
|
|
1231
1333
|
line_number_text.swt_widget.setFocus
|
|
1232
1334
|
end
|
|
1233
1335
|
elsif key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == 'r'
|
|
1336
|
+
self.maximized_editor = false
|
|
1234
1337
|
unless @file_lookup_expand_item.swt_expand_item.get_expanded
|
|
1235
1338
|
@file_lookup_expand_item.swt_expand_item.set_expanded true
|
|
1236
1339
|
@file_lookup_expand_item.swt_expand_item.height = @file_lookup_expand_item_height if @file_lookup_expand_item_height
|
|
@@ -1239,6 +1342,7 @@ module Glimmer
|
|
|
1239
1342
|
filter_text.swt_widget.selectAll
|
|
1240
1343
|
filter_text.swt_widget.setFocus
|
|
1241
1344
|
elsif key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == 't'
|
|
1345
|
+
self.maximized_editor = false
|
|
1242
1346
|
unless @file_explorer_expand_item.swt_expand_item.get_expanded
|
|
1243
1347
|
@file_explorer_expand_item.swt_expand_item.set_expanded true
|
|
1244
1348
|
@file_explorer_expand_item.swt_expand_item.height = @file_explorer_expand_item_height if @file_explorer_expand_item_height
|