glimmer-cs-gladiator 0.3.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,9 +3,14 @@ module Glimmer
3
3
  class TextEditor
4
4
  include Glimmer::UI::CustomWidget
5
5
 
6
- options :file
6
+ options :file, :project_dir
7
7
 
8
8
  attr_reader :text_proxy, :text_widget
9
+
10
+ before_body {
11
+ @is_code_file = file.scratchpad? || file.path.end_with?('.rb')
12
+ @text_widget = @is_code_file ? 'code_text' : 'styled_text'
13
+ }
9
14
 
10
15
  after_body {
11
16
  @text_widget = @text.swt_widget
@@ -16,13 +21,18 @@ module Glimmer
16
21
  composite {
17
22
  layout_data :fill, :fill, true, true
18
23
  grid_layout 2, false
19
- @line_numbers_text = text(:multi) {
24
+ @line_numbers_text = styled_text(:multi, :border) {
20
25
  layout_data(:right, :fill, false, true)
21
26
  font name: 'Consolas', height: OS.mac? ? 15 : 12
22
27
  background color(:widget_background)
23
- foreground rgb(75, 75, 75)
24
- text bind(file, 'line_numbers_content')
25
- top_index bind(file, 'top_index', read_only: true)
28
+ foreground rgb(0, 0, 250)
29
+ text bind(self, 'file.line_numbers_content')
30
+ top_pixel bind(self, 'file.top_pixel', read_only: true)
31
+ top_margin 5
32
+ right_margin 5
33
+ bottom_margin 5
34
+ left_margin 5
35
+ editable false
26
36
  on_focus_gained {
27
37
  @text&.swt_widget.setFocus
28
38
  }
@@ -33,15 +43,15 @@ module Glimmer
33
43
  @text&.swt_widget.setFocus
34
44
  }
35
45
  }
36
- @text = text(:multi, :border, :h_scroll, :v_scroll) {
46
+
47
+ @text = send(@text_widget) {
37
48
  layout_data :fill, :fill, true, true
38
49
  font name: 'Consolas', height: OS.mac? ? 15 : 12
39
50
  foreground rgb(75, 75, 75)
40
- text bind(file, :content)
51
+ text bind(self, 'file.content')
41
52
  focus true
42
- selection bind(file, 'selection')
43
- selection_count bind(file, 'selection_count')
44
- top_index bind(file, 'top_index')
53
+ selection bind(self, 'file.selection')
54
+ top_pixel bind(self, 'file.top_pixel')
45
55
  drop_target(DND::DROP_COPY) {
46
56
  transfer [TextTransfer.getInstance].to_java(Transfer)
47
57
  on_drag_enter { |event|
@@ -49,20 +59,30 @@ module Glimmer
49
59
  }
50
60
  on_drop { |event|
51
61
  Gladiator.drag_and_drop = true
52
- Dir.local_dir.selected_child = nil
53
- Dir.local_dir.selected_child_path = event.data
62
+ project_dir.selected_child = nil
63
+ project_dir.selected_child_path = event.data
54
64
  Gladiator.drag = false
55
65
  }
56
- }
66
+ }
57
67
 
58
68
  on_focus_lost {
59
69
  file&.write_dirty_content
60
70
  }
61
- on_key_pressed { |key_event|
62
- if (Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == 'z') || (key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == 'y')
71
+ on_verify_key { |key_event|
72
+ if (Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == 'z') || (key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == 'y')
63
73
  key_event.doit = !Command.redo(file)
74
+ elsif Glimmer::SWT::SWTProxy.include?(key_event.stateMask, COMMAND_KEY, :shift) && extract_char(key_event) == 'r'
75
+ project_dir.selected_child.run
64
76
  elsif key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == 'z'
65
77
  key_event.doit = !Command.undo(file)
78
+ elsif key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == 'a'
79
+ key_event.widget.selectAll
80
+ elsif !OS.windows? && key_event.stateMask == swt(:ctrl) && extract_char(key_event) == 'a'
81
+ Command.do(file, :start_of_line)
82
+ key_event.doit = false
83
+ elsif !OS.windows? && key_event.stateMask == swt(:ctrl) && extract_char(key_event) == 'e'
84
+ Command.do(file, :end_of_line)
85
+ key_event.doit = false
66
86
  elsif key_event.stateMask == swt(COMMAND_KEY) && extract_char(key_event) == '/'
67
87
  Command.do(file, :comment_line!)
68
88
  key_event.doit = false
@@ -105,13 +125,13 @@ module Glimmer
105
125
  end
106
126
  }
107
127
  on_verify_text { |verify_event|
108
- key_code = verify_event.keyCode
109
- case key_code
110
- when swt(:cr)
128
+ # TODO convert these into File commands to support Undo/Redo
129
+ case verify_event.text
130
+ when "\n"
111
131
  if file.selection_count.to_i == 0
112
132
  verify_event.text += file.current_line_indentation
113
133
  end
114
- when swt(:tab)
134
+ when "\t"
115
135
  if file.selection_count.to_i > 0
116
136
  Command.do(file, :indent!)
117
137
  verify_event.doit = false
@@ -123,8 +143,7 @@ module Glimmer
123
143
  }
124
144
  }
125
145
  }
126
-
127
-
146
+
128
147
  def extract_char(event)
129
148
  event.keyCode.chr
130
149
  rescue => e
metadata CHANGED
@@ -1,21 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-cs-gladiator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-11 00:00:00.000000000 Z
11
+ date: 2020-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 4.17.2.0
18
+ version: 4.17.8.1
19
19
  - - "<"
20
20
  - !ruby/object:Gem::Version
21
21
  version: 5.0.0.0
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 4.17.2.0
29
+ version: 4.17.8.1
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: 5.0.0.0